From: Vance K. <va...@us...> - 2006-05-29 01:37:59
|
User: vancek Date: 06/05/28 18:37:57 Modified: andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades EJB3AssociationEndFacadeLogicImpl.java andromda-ejb3/src/main/resources/templates/ejb3 EntityEmbeddable.vsl Log: fixed EJB-25 - Many-To-Many JoinTable issue for name property of JoinColum annotation - set name property to foreign key constraint name. Revision Changes Path 1.9 +68 -0 cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3AssociationEndFacadeLogicImpl.java Index: EJB3AssociationEndFacadeLogicImpl.java =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/java/org/andromda/cartridges/ejb3/metafacades/EJB3AssociationEndFacadeLogicImpl.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -w -r1.8 -r1.9 --- EJB3AssociationEndFacadeLogicImpl.java 14 Mar 2006 06:22:21 -0000 1.8 +++ EJB3AssociationEndFacadeLogicImpl.java 29 May 2006 01:37:57 -0000 1.9 @@ -9,6 +9,8 @@ import org.andromda.cartridges.ejb3.EJB3Globals; import org.andromda.cartridges.ejb3.EJB3Profile; import org.andromda.metafacades.uml.ClassifierFacade; +import org.andromda.metafacades.uml.Entity; +import org.andromda.metafacades.uml.EntityMetafacadeUtils; import org.andromda.metafacades.uml.TaggedValueFacade; import org.andromda.metafacades.uml.TypeMappings; import org.andromda.metafacades.uml.UMLMetafacadeProperties; @@ -650,4 +652,70 @@ { return BooleanUtils.toBoolean(String.valueOf(this.getConfiguredProperty(HIBERNATE_ASSOCIATION_ENABLE_CACHE))); } + + /** + * @see org.andromda.cartridges.ejb3.metafacades.EJB3AssociationEndFacadeLogic# + * handleGetForeignKeyConstraintName(java.lang.String) + */ + protected String handleGetForeignKeyConstraintName(String suffix) + { + String constraintName; + + final Object taggedValueObject = findTaggedValue( + UMLProfile.TAGGEDVALUE_PERSISTENCE_FOREIGN_KEY_CONSTRAINT_NAME); + + /** + * Construct our own foreign key constraint name here + */ + StringBuffer buffer = new StringBuffer(); + + if (taggedValueObject == null) + { + final ClassifierFacade type = getOtherEnd().getType(); + if (type instanceof Entity) + { + Entity entity = (Entity)type; + buffer.append(entity.getTableName()); + } + else + { + // should not happen + buffer.append(type.getName().toUpperCase()); + } + } + else + { + // use the tagged value + buffer.append(taggedValueObject.toString()); + } + + buffer.append(this.getConfiguredProperty(UMLMetafacadeProperties.SQL_NAME_SEPARATOR)); + + /** + * Add the suffix - which is the name of the identifier pk column if not blank + * otherwise use the column name of the relationship + */ + if (StringUtils.isNotBlank(suffix)) + { + buffer.append(suffix); + } + else + { + buffer.append(this.getColumnName()); + } + constraintName = buffer.toString(); + + final String constraintSuffix = + ObjectUtils.toString(this.getConfiguredProperty(UMLMetafacadeProperties.CONSTRAINT_SUFFIX)).trim(); + + /** + * we take into consideration the maximum length allowed + */ + final String maxLengthString = (String)getConfiguredProperty(UMLMetafacadeProperties.MAX_SQL_NAME_LENGTH); + final short maxLength = (short)(Short.valueOf(maxLengthString).shortValue() - constraintSuffix.length()); + buffer = new StringBuffer( + EntityMetafacadeUtils.ensureMaximumNameLength(constraintName, new Short(maxLength))); + buffer.append(constraintSuffix); + return buffer.toString(); + } } \ No newline at end of file 1.29 +2 -2 cartridges/andromda-ejb3/src/main/resources/templates/ejb3/EntityEmbeddable.vsl Index: EntityEmbeddable.vsl =================================================================== RCS file: /cvsroot/andromdaplugins/cartridges/andromda-ejb3/src/main/resources/templates/ejb3/EntityEmbeddable.vsl,v retrieving revision 1.28 retrieving revision 1.29 diff -u -w -r1.28 -r1.29 --- EntityEmbeddable.vsl 15 May 2006 12:42:07 -0000 1.28 +++ EntityEmbeddable.vsl 29 May 2006 01:37:57 -0000 1.29 @@ -642,8 +642,8 @@ @javax.persistence.JoinTable ( name = "${associationEnd.association.tableName}", - joinColumns = {#set ($identifiers = $entity.getIdentifiers())#foreach ($attribute in $identifiers)@javax.persistence.JoinColumn(name = "${attribute.columnName}")#if($velocityCount != $identifiers.size()), #end#end#**#}, - inverseJoinColumns = {#set ($identifiers = $target.type.getIdentifiers())#foreach ($attribute in $identifiers)@javax.persistence.JoinColumn(name = "${attribute.columnName}")#if($velocityCount != $identifiers.size()), #end#end#**#} + joinColumns = {#set ($identifiers = $entity.getIdentifiers())#foreach ($attribute in $identifiers)@javax.persistence.JoinColumn(name = "$target.getForeignKeyConstraintName(${attribute.columnName})", referencedColumnName = "${attribute.columnName}")#if($velocityCount != $identifiers.size()), #end#end#**#}, + inverseJoinColumns = {#set ($identifiers = $target.type.getIdentifiers())#foreach ($attribute in $identifiers)@javax.persistence.JoinColumn(name = "$associationEnd.getForeignKeyConstraintName(${attribute.columnName})", referencedColumnName = "${attribute.columnName}")#if($velocityCount != $identifiers.size()), #end#end#**#} ) #* *##end #* *##end |