Author: fdesbois Date: 2010-06-24 18:33:55 +0200 (Thu, 24 Jun 2010) New Revision: 2026 Url: http://nuiton.org/repositories/revision/topia/2026 Log: Add managment for sub entity Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/QueryHelperTransformer.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/QueryHelperTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/QueryHelperTransformer.java 2010-06-24 14:13:08 UTC (rev 2025) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/QueryHelperTransformer.java 2010-06-24 16:33:55 UTC (rev 2026) @@ -285,6 +285,8 @@ // Create methods to instantiate the inner class createNewOperations(entityPropertyClass); + + addExtraForSubEntity(clazz); } protected String getPropertyClassName(ObjectModelClassifier entityClass) { @@ -505,6 +507,34 @@ ); } + protected void addExtraForSubEntity(ObjectModelClass entityClass) { + for (ObjectModelAttribute attr : entityClass.getAttributes()) { + + if (attr.isNavigable() && attr.referenceClassifier() && + attr.getClassifier().getName().equals(entityClass.getName())) { + // Same entity + + String propertyClassName = getPropertyClassName(entityClass); + + String subEntityName = entityClass.getName() + StringUtils.capitalize(attr.getName()); + String aliasConstant = createAliasConstant(subEntityName); + + ObjectModelOperation newEntityProperty = + addOperation(helperClass, "new" + subEntityName + "Property", propertyClassName, + ObjectModelModifier.PUBLIC, ObjectModelModifier.STATIC); + + String callMethodName = "new" + propertyClassName; + + setOperationBody(newEntityProperty, "" + /*{ + return <%=callMethodName%>(<%=aliasConstant%>); + }*/ + ); + + } + } + } + // For tests protected void setBuilder(JavaBuilder builder) { this.builder = builder;