User: dsundstrom Date: 02/01/15 13:16:24 Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata JDBCRelationshipRoleMetaData.java Log: Added support for read ahead metadata. Changed auto generated column name to be just cmr field name unless there are more then one key column. In that case it uses the old cmrFieldName_keyFieldName, format. Revision Changes Path 1.12 +67 -18 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata/JDBCRelationshipRoleMetaData.java Index: JDBCRelationshipRoleMetaData.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata/JDBCRelationshipRoleMetaData.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- JDBCRelationshipRoleMetaData.java 2001/12/12 19:49:42 1.11 +++ JDBCRelationshipRoleMetaData.java 2002/01/15 21:16:24 1.12 @@ -8,6 +8,7 @@ import java.util.Collection; import java.util.Collections; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -22,7 +23,7 @@ * the ejb-jar.xml file's ejb-relation elements. * * @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a> - * @version $Revision: 1.11 $ + * @version $Revision: 1.12 $ */ public final class JDBCRelationshipRoleMetaData { /** @@ -65,6 +66,11 @@ */ private final String cmrFieldType; + /** + * Type of the cmr field (i.e., collection or set) + */ + private final JDBCReadAheadMetaData readAhead; + private final Map tableKeyFields = new HashMap(); private final Map foreignKeyFields = new HashMap(); @@ -81,6 +87,7 @@ multiplicityOne = relationshipRole.isMultiplicityOne(); cascadeDelete = relationshipRole.isCascadeDelete(); foreignKeyConstraint = false; + readAhead = null; String tempCmrFieldName = relationshipRole.getCMRFieldName(); if(tempCmrFieldName == null) { @@ -134,6 +141,16 @@ foreignKeyConstraint = defaultValues.hasForeignKeyConstraint(); } + // read-ahead + Element readAheadElement = + MetaData.getOptionalChild(element, "read-ahead"); + if(readAheadElement != null) { + readAhead = new JDBCReadAheadMetaData( + readAheadElement, entity.getReadAhead()); + } else { + readAhead = entity.getReadAhead(); + } + if(relationMetaData.isTableMappingStyle()) { if("defaults".equals(element.getTagName())) { loadTableKeyFields(); @@ -244,9 +261,16 @@ */ public JDBCRelationshipRoleMetaData getRelatedRole() { return relationMetaData.getOtherRelationshipRole(this); - } + } /** + * Gets the read ahead meta data + */ + public JDBCReadAheadMetaData getReadAhead() { + return readAhead; + } + + /** * Gets the foreign key fields of this role. The foreign key fields hold the * primary keys of the related entity. A relationship role has foreign key * fields if the relation mapping style is foreign key and the other side of @@ -279,20 +303,33 @@ "for: " + relationshipRoleName); } + ArrayList pkFields = new ArrayList(); + for(Iterator i = relatedEntity.getCMPFields().iterator(); i.hasNext();) { JDBCCMPFieldMetaData cmpField = (JDBCCMPFieldMetaData)i.next(); if(cmpField.isPrimaryKeyMember()) { - cmpField = new JDBCCMPFieldMetaData( - entity, - cmpField, - getCMRFieldName() + "_" + cmpField.getFieldName(), - false, - relationMetaData.isReadOnly(), - relationMetaData.getReadTimeOut()); - foreignKeyFields.put(cmpField.getFieldName(), cmpField); + pkFields.add(cmpField); } } + + for(Iterator i = pkFields.iterator(); i.hasNext(); ) { + JDBCCMPFieldMetaData cmpField = (JDBCCMPFieldMetaData)i.next(); + + String columnName = getCMRFieldName(); + if(pkFields.size() > 1) { + columnName += "_" + cmpField.getFieldName(); + } + + cmpField = new JDBCCMPFieldMetaData( + entity, + cmpField, + columnName, + false, + relationMetaData.isReadOnly(), + relationMetaData.getReadTimeOut()); + foreignKeyFields.put(cmpField.getFieldName(), cmpField); + } } /** @@ -349,20 +386,32 @@ * this entity. */ private void loadTableKeyFields() { + ArrayList pkFields = new ArrayList(); for(Iterator i = entity.getCMPFields().iterator(); i.hasNext(); ) { JDBCCMPFieldMetaData cmpField = (JDBCCMPFieldMetaData)i.next(); if(cmpField.isPrimaryKeyMember()) { - cmpField = new JDBCCMPFieldMetaData( - entity, - cmpField, - getCMRFieldName() + "_" + cmpField.getFieldName(), - false, - relationMetaData.isReadOnly(), - relationMetaData.getReadTimeOut()); - tableKeyFields.put(cmpField.getFieldName(), cmpField); + pkFields.add(cmpField); } + } + + for(Iterator i = pkFields.iterator(); i.hasNext(); ) { + JDBCCMPFieldMetaData cmpField = (JDBCCMPFieldMetaData)i.next(); + + String columnName = entity.getName(); + if(pkFields.size() > 1) { + columnName += "_" + cmpField.getFieldName(); + } + + cmpField = new JDBCCMPFieldMetaData( + entity, + cmpField, + columnName, + false, + relationMetaData.isReadOnly(), + relationMetaData.getReadTimeOut()); + tableKeyFields.put(cmpField.getFieldName(), cmpField); } }
_______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development