Author: athimel Date: 2012-07-09 16:52:23 +0200 (Mon, 09 Jul 2012) New Revision: 2604 Url: http://nuiton.org/repositories/revision/topia/2604 Log: Fix JPA mapping generation about association classes Modified: trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.zargo trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityJPAMappingGenerator.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityJPAMappingGenerator.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityJPAMappingGenerator.java 2012-07-07 19:45:34 UTC (rev 2603) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityJPAMappingGenerator.java 2012-07-09 14:52:23 UTC (rev 2604) @@ -37,6 +37,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.object.ObjectModelAssociationClass; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelGenerator; @@ -370,6 +371,14 @@ for (ObjectModelAttribute attribute : manyToOneAttributes) { generateManyToOneAttribute(output, input, attribute, false); } + + if (input instanceof ObjectModelAssociationClass) { + ObjectModelAssociationClass inputAssoc = (ObjectModelAssociationClass)input; + for (ObjectModelAttribute attributeAssoc : inputAssoc.getParticipantsAttributes()) { + generateManyToOneAttribute(output, input, attributeAssoc, false); + } + } + // generate one-to-one attributes Collection<ObjectModelAttribute> oneToOneAttributes = attributesByType.get(PROPERTY_TYPE.ONE_TO_ONE); @@ -535,12 +544,15 @@ Map<String, String> xmlAttributes = Maps.newTreeMap(); Map<String, String> columnAttributes = Maps.newTreeMap(); - String attrName = getName(attr); + boolean isAssociationClass = input instanceof ObjectModelAssociationClass; + + String attrName = getName(attr, isAssociationClass); addAttribute(xmlAttributes, ATTRIBUTE_NAME, attrName); String attrColumn = TopiaGeneratorUtil.getDbName(attr); - if ("true".equals(TopiaGeneratorUtil.getNotNullTagValue(attr))) { + if ("true".equals(TopiaGeneratorUtil.getNotNullTagValue(attr)) + || (attr.hasAssociationClass() && isAssociationClass)) { // not-null property addAttribute(xmlAttributes, ATTRIBUTE_OPTIONAL, false); @@ -560,10 +572,11 @@ addAttribute(columnAttributes, ATTRIBUTE_NAME, attrColumn); //NOTUSED addAttribute(columnAttributes, ATTRIBUTE_REFERENCE_COLUMN_NAME, TopiaEntity.TOPIA_ID); - addAttribute(xmlAttributes, ATTRIBUTE_TARGET_ENTITY, getType(attr)); + String type = getType(attr, isAssociationClass); + addAttribute(xmlAttributes, ATTRIBUTE_TARGET_ENTITY, type); boolean withDeleteCascade = false; - if (attr.isComposite() || attr.hasAssociationClass()) { + if (attr.isComposite() || (attr.hasAssociationClass() && !isAssociationClass)) { withDeleteCascade = true; } Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2012-07-07 19:45:34 UTC (rev 2603) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2012-07-09 14:52:23 UTC (rev 2604) @@ -688,7 +688,7 @@ String collectionType = getCollectionType(attribute); if (collectionType != null) { - attrType = collectionType + "<" + attrType + ">"; + attrType = String.format("%s<%s>", collectionType, attrType); } //String attrVisibility = attr.getVisibility(); Modified: trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.zargo =================================================================== (Binary files differ)