r2597 - in trunk: topia-persistence/src/main/java/org/nuiton/topia/generator topia-persistence-tck/src/main/xmi
Author: athimel Date: 2012-07-03 14:24:04 +0200 (Tue, 03 Jul 2012) New Revision: 2597 Url: http://nuiton.org/repositories/revision/topia/2597 Log: Fix association class DAO generation Modified: trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.zargo trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2012-07-03 12:15:34 UTC (rev 2596) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityDAOTransformer.java 2012-07-03 12:24:04 UTC (rev 2597) @@ -947,11 +947,20 @@ boolean isAssoc) { String attrName = attr.getName(); String attrType = attr.getType(); - String propertyName = attrName; + String propertyName = clazzName + "." + getConstantName(attrName); if (!isAssoc && attr.hasAssociationClass()) { - propertyName = TopiaGeneratorUtil.toLowerCaseFirstLetter( - attr.getAssociationClass().getName()) + '.' + propertyName; + String assocClassName = attr.getAssociationClass().getName(); + String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); + // It is about transitivity : use the property to access the + // associationClass + '.' + the property to access the expected + // attribute + // <class>.<attrAssoc> + '.' + <assocClass>.<attr> + propertyName = + clazzName + '.' + getConstantName(assocAttrName) + + " + '.' + " + + assocClassName + '.' + getConstantName(attrName); } + ObjectModelOperation op; op = addOperation(result, getJavaBeanMethodName("findBy", attrName), @@ -961,7 +970,7 @@ addParameter(op, attrType, "v"); setOperationBody(op, "" /*{ - E result = findByProperty(<%=clazzName + "." + getConstantName(propertyName)%>, v); + E result = findByProperty(<%=propertyName%>, v); return result; }*/ ); @@ -974,14 +983,16 @@ addParameter(op, attrType, "v"); setOperationBody(op, "" /*{ - List<E> result = findAllByProperty(<%=clazzName + "." + getConstantName(propertyName)%>, v); + List<E> result = findAllByProperty(<%=propertyName%>, v); return result; }*/ ); - if (attr.hasAssociationClass()) { + if (!isAssoc && attr.hasAssociationClass()) { String assocClassName = attr.getAssociationClass().getName(); String assocClassFQN = attr.getAssociationClass().getQualifiedName(); + String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); + String assocPropertyConstantName = getConstantName(assocAttrName); op = addOperation(result, getJavaBeanMethodName("findBy", assocClassName), "E", @@ -990,7 +1001,7 @@ addParameter(op, assocClassFQN, "value"); setOperationBody(op, "" /*{ - E result = findByProperty(<%=clazzName + "." + getConstantName(TopiaGeneratorUtil.toLowerCaseFirstLetter(assocClassName))%>, value); + E result = findByProperty(<%=clazzName + "." + assocPropertyConstantName%>, value); return result; }*/ ); @@ -1003,7 +1014,7 @@ addParameter(op, assocClassFQN, "value"); setOperationBody(op, "" /*{ - List<E> result = findAllByProperty(<%=clazzName + "." + getConstantName(TopiaGeneratorUtil.toLowerCaseFirstLetter(assocClassName))%>, value); + List<E> result = findAllByProperty(<%=clazzName + "." + assocPropertyConstantName%>, value); return result; }*/ ); Modified: trunk/topia-persistence-tck/src/main/xmi/topia-tck-mapping.zargo =================================================================== (Binary files differ)
participants (1)
-
athimelï¼ users.nuiton.org