Return-Path: Delivered-To: apmail-db-ojb-dev-archive@www.apache.org Received: (qmail 18013 invoked from network); 28 Jan 2004 23:28:50 -0000 Received: from daedalus.apache.org (HELO mail.apache.org) (208.185.179.12) by minotaur-2.apache.org with SMTP; 28 Jan 2004 23:28:50 -0000 Received: (qmail 93336 invoked by uid 500); 28 Jan 2004 23:28:32 -0000 Delivered-To: apmail-db-ojb-dev-archive@db.apache.org Received: (qmail 93302 invoked by uid 500); 28 Jan 2004 23:28:32 -0000 Mailing-List: contact ojb-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "OJB Developers List" Reply-To: "OJB Developers List" Delivered-To: mailing list ojb-dev@db.apache.org Received: (qmail 93275 invoked by uid 500); 28 Jan 2004 23:28:31 -0000 Received: (qmail 93268 invoked from network); 28 Jan 2004 23:28:31 -0000 Received: from unknown (HELO minotaur.apache.org) (209.237.227.194) by daedalus.apache.org with SMTP; 28 Jan 2004 23:28:31 -0000 Received: (qmail 17712 invoked by uid 1797); 28 Jan 2004 23:28:38 -0000 Date: 28 Jan 2004 23:28:38 -0000 Message-ID: <20040128232838.17711.qmail@minotaur.apache.org> From: tomdz@apache.org To: db-ojb-cvs@apache.org Subject: cvs commit: db-ojb/src/xdoclet/java/src/xdoclet/modules/ojb/constraints ModelConstraints.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N tomdz 2004/01/28 15:28:38 Modified: src/xdoclet/java/src/xdoclet/modules/ojb/model TorqueModelDef.java src/xdoclet/test/xdoclet/modules/ojb/tests CollectionTagIndirectionTableAttributeTests.java RunAllTests.java src/xdoclet/java/src/xdoclet/modules/ojb/constraints ModelConstraints.java Log: Changed torque foreignkey generation for collections with indirection tables. Foreignkeys are now generated only when the collections are not inherited. Revision Changes Path 1.2 +27 -15 db-ojb/src/xdoclet/java/src/xdoclet/modules/ojb/model/TorqueModelDef.java Index: TorqueModelDef.java =================================================================== RCS file: /home/cvs/db-ojb/src/xdoclet/java/src/xdoclet/modules/ojb/model/TorqueModelDef.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TorqueModelDef.java 25 Jan 2004 12:47:33 -0000 1.1 +++ TorqueModelDef.java 28 Jan 2004 23:28:38 -0000 1.2 @@ -320,18 +320,21 @@ CommaListIterator localKeys = new CommaListIterator(collDef.getProperty(PropertyHelper.OJB_PROPERTY_FOREIGNKEY)); CommaListIterator remoteKeys = new CommaListIterator(collDef.getProperty(PropertyHelper.OJB_PROPERTY_REMOTE_FOREIGNKEY)); FieldDescriptorDef fieldDef; - ForeignkeyDef foreignkey; + ForeignkeyDef foreignkey = null; ColumnDef columnDef; String relationName; String name; int idx; - relationName = collDef.getProperty(PropertyHelper.TORQUE_PROPERTY_RELATION_NAME); - foreignkey = tableDef.getForeignkey(relationName, ownerTable); - if (foreignkey != null) - { - foreignkey = new ForeignkeyDef(relationName, ownerTable); - tableDef.addForeignkey(foreignkey); + relationName = collDef.getProperty(PropertyHelper.TORQUE_PROPERTY_RELATION_NAME); + if (relationName != null) + { + foreignkey = tableDef.getForeignkey(relationName, ownerTable); + if (foreignkey == null) + { + foreignkey = new ForeignkeyDef(relationName, ownerTable); + tableDef.addForeignkey(foreignkey); + } } for (idx = 0; localKeys.hasNext(); idx++) { @@ -347,15 +350,21 @@ columnDef.setProperty(PropertyHelper.TORQUE_PROPERTY_TYPE, fieldDef.getProperty(PropertyHelper.OJB_PROPERTY_JDBC_TYPE)); columnDef.setProperty(PropertyHelper.TORQUE_PROPERTY_SIZE, fieldDef.getSizeConstraint()); - foreignkey.addColumnPair(name, fieldDef.getProperty(PropertyHelper.OJB_PROPERTY_COLUMN)); + if (foreignkey != null) + { + foreignkey.addColumnPair(name, fieldDef.getProperty(PropertyHelper.OJB_PROPERTY_COLUMN)); + } } - relationName = collDef.getProperty(PropertyHelper.TORQUE_PROPERTY_INV_RELATION_NAME); - foreignkey = tableDef.getForeignkey(relationName, elementTable); - if (foreignkey == null) - { - foreignkey = new ForeignkeyDef(relationName, elementTable); - tableDef.addForeignkey(foreignkey); + relationName = collDef.getProperty(PropertyHelper.TORQUE_PROPERTY_INV_RELATION_NAME); + if (relationName != null) + { + foreignkey = tableDef.getForeignkey(relationName, elementTable); + if (foreignkey == null) + { + foreignkey = new ForeignkeyDef(relationName, elementTable); + tableDef.addForeignkey(foreignkey); + } } for (idx = 0; remoteKeys.hasNext(); idx++) { @@ -371,7 +380,10 @@ columnDef.setProperty(PropertyHelper.TORQUE_PROPERTY_TYPE, fieldDef.getProperty(PropertyHelper.OJB_PROPERTY_JDBC_TYPE)); columnDef.setProperty(PropertyHelper.TORQUE_PROPERTY_SIZE, fieldDef.getSizeConstraint()); - foreignkey.addColumnPair(name, fieldDef.getProperty(PropertyHelper.OJB_PROPERTY_COLUMN)); + if (foreignkey != null) + { + foreignkey.addColumnPair(name, fieldDef.getProperty(PropertyHelper.OJB_PROPERTY_COLUMN)); + } } } 1.5 +0 -6 db-ojb/src/xdoclet/test/xdoclet/modules/ojb/tests/CollectionTagIndirectionTableAttributeTests.java Index: CollectionTagIndirectionTableAttributeTests.java =================================================================== RCS file: /home/cvs/db-ojb/src/xdoclet/test/xdoclet/modules/ojb/tests/CollectionTagIndirectionTableAttributeTests.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- CollectionTagIndirectionTableAttributeTests.java 25 Jan 2004 12:47:33 -0000 1.4 +++ CollectionTagIndirectionTableAttributeTests.java 28 Jan 2004 23:28:38 -0000 1.5 @@ -938,12 +938,6 @@ " type=\"VARCHAR\"\n"+ " size=\"24\"\n"+ " />\n"+ - " \n"+ - " \n"+ - " \n"+ - " \n"+ - " \n"+ - " \n"+ " \n"+ " \n"+ " null if the field is not * used in this way */ - private CollectionDescriptorDef usedByCollection(ModelDef modelDef, FieldDescriptorDef fieldDef) + private CollectionDescriptorDef usedByCollection(ModelDef modelDef, FieldDescriptorDef fieldDef, boolean elementClassSuffices) { - ClassDescriptorDef ownerClass = (ClassDescriptorDef)fieldDef.getOwner(); - String name = fieldDef.getName(); + ClassDescriptorDef ownerClass = (ClassDescriptorDef)fieldDef.getOwner(); + String name = fieldDef.getName(); ClassDescriptorDef classDef; CollectionDescriptorDef collDef; @@ -523,11 +564,20 @@ collDef = (CollectionDescriptorDef)collIt.next(); // if the owner class of the field is the element class of a normal collection // and the field is a foreignkey of this collection - if (ownerClass.getName().equals(collDef.getProperty(PropertyHelper.OJB_PROPERTY_ELEMENT_CLASS_REF)) && - !collDef.hasProperty(PropertyHelper.OJB_PROPERTY_INDIRECTION_TABLE) && - new CommaListIterator(collDef.getProperty(PropertyHelper.OJB_PROPERTY_FOREIGNKEY)).contains(name)) + if (ownerClass.getName().equals(collDef.getProperty(PropertyHelper.OJB_PROPERTY_ELEMENT_CLASS_REF))) { - return collDef; + if (collDef.hasProperty(PropertyHelper.OJB_PROPERTY_INDIRECTION_TABLE)) + { + if (elementClassSuffices) + { + return collDef; + } + } + else if (new CommaListIterator(collDef.getProperty(PropertyHelper.OJB_PROPERTY_FOREIGNKEY)).contains(name)) + { + // if the field is a foreignkey of this normal 1:n collection + return collDef; + } } } } --------------------------------------------------------------------- To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For additional commands, e-mail: ojb-dev-help@db.apache.org