Author: bleny Date: 2010-08-18 18:18:44 +0200 (Wed, 18 Aug 2010) New Revision: 271 Url: http://nuiton.org/repositories/revision/wikitty/271 Log: adding missing methods in helpers (equals, hasExtension, addExtension), centralizing generation of classses names in util Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java =================================================================== --- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-18 15:56:12 UTC (rev 270) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-18 16:18:44 UTC (rev 271) @@ -52,7 +52,8 @@ for (ObjectModelClass businessEntity : modelBusinessEntities) { - ObjectModelClass abstractClass = createAbstractClass(businessEntity.getName() + "Abstract", businessEntity.getPackageName()); + ObjectModelClass abstractClass = createAbstractClass(WikittyTransformerUtil.businessEntityToAbstractName(businessEntity), + businessEntity.getPackageName()); processedClasses.put(businessEntity, abstractClass); setSuperClass(abstractClass, "BusinessEntityWikitty"); addInterface(abstractClass, businessEntity.getQualifiedName()); @@ -237,7 +238,7 @@ protected void addOperations(ObjectModelClass businessEntity, ObjectModelClass abstractClass) { String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(businessEntity, true); - String helperClassName = businessEntity.getName() + "Helper"; + String helperClassName = WikittyTransformerUtil.businessEntityToHelperName(businessEntity); // generating operations with bodies to realize contract for (ObjectModelAttribute attribute : businessEntity.getAttributes()) { @@ -336,9 +337,8 @@ // other business entities for (ObjectModelClass superClass : businessEntity.getSuperclasses()) { - addInterface(abstractClass, superClass.getQualifiedName()); // extends ? - // setSuperClass(abstractClass, superClass.getQualifiedName() + "Impl"); if (WikittyTransformerUtil.isBusinessEntity(superClass)) { + addInterface(abstractClass, WikittyTransformerUtil.businessEntityToContractName(superClass)); // extends // getting the signatures and bodies of those operations for (ObjectModelOperation operation : processedClasses.get(superClass).getOperations()) { @@ -347,6 +347,8 @@ // XXX 20100816 bleny should be a call to cloneOperation(operation, abstractClass, true); } + } else { + addInterface(abstractClass, superClass.getQualifiedName()); // extends } } Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java =================================================================== --- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-18 15:56:12 UTC (rev 270) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-18 16:18:44 UTC (rev 271) @@ -57,7 +57,8 @@ protected void processEntity(ObjectModelClass businessEntity) { log.info("will process " + businessEntity.getPackageName() + ".." + businessEntity.getName()); - ObjectModelInterface contract = createInterface(businessEntity.getName(), businessEntity.getPackageName()); + ObjectModelInterface contract = createInterface(WikittyTransformerUtil.businessEntityToContractName(businessEntity), + businessEntity.getPackageName()); addInterface(contract, WikittyTransformerUtil.BUSINESS_ENTITY_CLASS_FQN); // TODO 20100811 bleny remove unused imports Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java =================================================================== --- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-08-18 15:56:12 UTC (rev 270) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-08-18 16:18:44 UTC (rev 271) @@ -23,7 +23,8 @@ return ; } - ObjectModelClass helper = createClass(clazz.getName() + "Helper", clazz.getPackageName()); + ObjectModelClass helper = createClass(WikittyTransformerUtil.businessEntityToHelperName(clazz), + clazz.getPackageName()); // TODO 20100811 bleny remove unused imports addImport(helper, WikittyTransformerUtil.BUSINESS_ENTITY_CLASS_FQN); @@ -139,5 +140,59 @@ } } } + + + ObjectModelOperation equals = addOperation(helper, "equals", "boolean", ObjectModelModifier.STATIC); + addParameter(equals, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "w1"); + addParameter(equals, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "w2"); + + // the body of the equals method, will be assembled while reading attributes + String equalsBody = "" +/*{ + boolean result = true; +}*/; + + for(ObjectModelAttribute attribute : clazz.getAttributes()) { + if (attribute.isNavigable()) { + // two variables needed below + String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute, true); + + // considering field in equals body + equalsBody += "" +/*{ + if (result) { + Object f1 = w1.getFieldAsObject(<%= extensionVariableName %>, <%= fieldVariableName %>); + Object f2 = w2.getFieldAsObject(<%= extensionVariableName %>, <%= fieldVariableName %>); + result = f1 == f2 || (f1 != null && f1.equals(f2)); + }; +}*/; + } + } + + // finishing equals body + equalsBody += "" +/*{ + return result; +}*/; + setOperationBody(equals, equalsBody); + + ObjectModelOperation isExtension = addOperation(helper, "isExtension", "boolean", ObjectModelModifier.STATIC); + addParameter(isExtension, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty"); + setDocumentation(isExtension, "Check if wikitty has current extension"); + setOperationBody(isExtension, "" +/*{ + return wikitty.hasExtension(<%=extensionVariableName%>); +}*/); + + ObjectModelOperation addExtension = addOperation(helper, "addExtension", "void", ObjectModelModifier.STATIC); + addParameter(addExtension, WikittyTransformerUtil.WIKITTY_CLASS_FQN, "wikitty"); + setDocumentation(addExtension, "ajout les extensions static de cette classe au wikitty en argument"); + String contractName = WikittyTransformerUtil.businessEntityToAbstractName(clazz); + setOperationBody(addExtension, "" +/*{ + for (WikittyExtension ext : <%=contractName%>.extensions) { + wikitty.addExtension(ext); + } +}*/); } } Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java =================================================================== --- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2010-08-18 15:56:12 UTC (rev 270) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2010-08-18 16:18:44 UTC (rev 271) @@ -23,7 +23,8 @@ return ; } - ObjectModelClass implementation = createClass(clazz.getName() + "Impl", clazz.getPackageName()); + ObjectModelClass implementation = createClass(WikittyTransformerUtil.businessEntityToImplementationName(clazz), + clazz.getPackageName()); // TODO 20100811 bleny remove unused imports addImport(implementation, WikittyTransformerUtil.BUSINESS_ENTITY_CLASS_FQN); @@ -45,7 +46,7 @@ addImport(implementation, java.util.Date.class); addImport(implementation, java.util.LinkedHashSet.class); - setSuperClass(implementation, clazz.getQualifiedName() + "Abstract"); + setSuperClass(implementation, WikittyTransformerUtil.businessEntityToAbstractName(clazz)); // adding constructor ObjectModelOperation constructor = addConstructor(implementation, ObjectModelModifier.PUBLIC); Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java =================================================================== --- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java 2010-08-18 15:56:12 UTC (rev 270) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java 2010-08-18 16:18:44 UTC (rev 271) @@ -170,4 +170,20 @@ commonTypes.add("Boolean"); commonTypes.add("Date"); } + + public static String businessEntityToContractName(ObjectModelClass clazz) { + return clazz.getName(); + } + + public static String businessEntityToAbstractName(ObjectModelClass clazz) { + return clazz.getName() + "Abstract"; + } + + public static String businessEntityToImplementationName(ObjectModelClass clazz) { + return clazz.getName() + "Impl"; + } + + public static String businessEntityToHelperName(ObjectModelClass clazz) { + return clazz.getName() + "Helper"; + } }