Author: bleny Date: 2010-08-10 19:24:01 +0200 (Tue, 10 Aug 2010) New Revision: 243 Url: http://nuiton.org/repositories/revision/wikitty/243 Log: using templates for bodies trough processor Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaGenerator.java Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaGenerator.java =================================================================== --- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaGenerator.java 2010-08-10 15:41:25 UTC (rev 242) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaGenerator.java 2010-08-10 17:24:01 UTC (rev 243) @@ -20,11 +20,16 @@ * * @author bleny * - * FIXME 20100609 bleny plexus registering is only for generators, isn't it ? * @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.wikitty.generator.WikittyMetaGenerator" */ -// FIXME 20100609 bleny update name to WikittyEntity + +// TODO 20100610 use filter with /*[]*/ +/*{generator option: writeString = }*/ +/*{generator option: parentheses = false}*/ +/*{generator option: writeString = +}*/ + +// TODO 20100609 bleny break this transformer in more specialized transformer, WikittyMetaGenerator will manage all those transformers public class WikittyMetaGenerator extends ObjectModelTransformerToJava { private static final Log log = LogFactory.getLog(WikittyMetaGenerator.class); @@ -81,7 +86,7 @@ abstractClass = createAbstractClass(clazz.getName() + "Abstract", clazz.getPackageName()); implementation = createClass(clazz.getName() + "Impl", clazz.getPackageName()); helper = createClass(clazz.getName() + "Helper", clazz.getPackageName()); - + addImports(contract); addImports(abstractClass); addImports(implementation); @@ -144,7 +149,10 @@ // ... and a getter ObjectModelOperation getStaticExtensions = addOperation(abstractClass, "getStaticExtensions", "Collection<WikittyExtension>", ObjectModelModifier.PUBLIC); - setOperationBody(getStaticExtensions, "\nreturn extensions;\n"); + setOperationBody(getStaticExtensions, "" +/*{ + return extensions; +}*/); addAnnotation(abstractClass, getStaticExtensions, "Override"); // preparing a static block to initialize those constants @@ -158,7 +166,10 @@ ObjectModelOperation equals = addOperation(abstractClass, "equals", "boolean", ObjectModelModifier.STATIC); addParameter(equals, WIKITTY_CLASS_FQN, "w1"); addParameter(equals, WIKITTY_CLASS_FQN, "w2"); - equalsBody = "\nboolean result = true;\n"; + equalsBody = "" +/*{ + boolean result = true; +}*/; // now process attributes for(ObjectModelAttribute attribute : clazz.getAttributes()) { @@ -167,11 +178,15 @@ // equalsBody will be updated in processAttribute buildFieldMapExtensionParameters.add("\"" + attribute.getType() + " " + attribute.getName() + "\""); + } } // finishing equals body - equalsBody += "\nreturn result;\n"; + equalsBody += "" +/*{ + return result; +}*/; setOperationBody(equals, equalsBody); // finishing static block @@ -180,10 +195,6 @@ extensionVersion = "0.1"; log.warn("no version specified in model for " + clazz.getQualifiedName() + " using " + extensionVersion); } - - String staticInitializationBody = "\n\nextension" + clazz.getName() + " = new WikittyExtension(" - + "EXT_" + clazz.getName().toUpperCase() + ", " - + "\"" + extensionVersion + "\"" + ", "; // a piece of code used in the static block String requires = null; @@ -191,21 +202,33 @@ // using "for" but there will be 0 or 1 iteration requires = superClass.getName() + ".EXT_" + superClass.getName().toUpperCase(); } - - staticInitializationBody += requires + ", " - + "WikittyUtil.buildFieldMapExtension(" - + StringUtils.join(buildFieldMapExtensionParameters, ", \n") + "));"; - staticInitializationBody += "\n\n// init extensions\nList<WikittyExtension> exts = new ArrayList<WikittyExtension>();"; + String staticInitializationBody = "" + /*{ + extension<%=clazz.getName()%> = + new WikittyExtension(EXT_<%=clazz.getName().toUpperCase()%>, + "<%=extensionVersion%>", // version + <%= requires %>, // + WikittyUtil.buildFieldMapExtension(<%=StringUtils.join(buildFieldMapExtensionParameters, ", \n")%>)); + + // init extensions + List<WikittyExtension> exts = new ArrayList<WikittyExtension>(); + }*/; for (ObjectModelClass superClass : superClasses) { // using "for" but there will be 0 or 1 iteration - staticInitializationBody += "\nexts.addAll(" + superClass.getName() + "Abstract.extensions);\n" - + "// current after requires ones\n"; + staticInitializationBody += "" +/*{ + exts.addAll(<%=superClass.getName()%>Abstract.extensions); + // current after requires ones +}*/; } - staticInitializationBody += "exts.add(extension" + clazz.getName()+ ");\n" - + "extensions = Collections.unmodifiableList(exts);\n"; - + + staticInitializationBody += "" +/*{ + exts.add(extension<%=clazz.getName()%>); + extensions = Collections.unmodifiableList(exts); +}*/; setOperationBody(staticInitialization, staticInitializationBody); } } @@ -233,15 +256,24 @@ /** add three constructors : empty, from business entity wikitty, from wikitty */ protected void addConstructors(ObjectModelClass clazz) { ObjectModelOperation constructor = addConstructor(clazz, ObjectModelModifier.PUBLIC); - setOperationBody(constructor, "\nsuper();\n"); + setOperationBody(constructor, "" +/*{ + super(); +}*/); constructor = addConstructor(clazz, ObjectModelModifier.PUBLIC); - addParameter(constructor, BUSINESS_ENTITY_WIKITTY_CLASS_FQN, "businessEntityWikitty"); - setOperationBody(constructor, "\nsuper(businessEntityWikitty.getWikitty());\n"); + addParameter(constructor, WIKITTY_CLASS_FQN, "wikitty"); + setOperationBody(constructor, "" +/*{ + super(wikitty); +}*/); constructor = addConstructor(clazz, ObjectModelModifier.PUBLIC); - addParameter(constructor, WIKITTY_CLASS_FQN, "wikitty"); - setOperationBody(constructor, "\nsuper(wikitty);\n"); + addParameter(constructor, BUSINESS_ENTITY_WIKITTY_CLASS_FQN, "businessEntityWikitty"); + setOperationBody(constructor, "" +/*{ + super(businessEntityWikitty.getWikitty()); +}*/); } @@ -264,14 +296,17 @@ extensionVariableName + " + \"." + attribute.getName() + "\"", ObjectModelModifier.PUBLIC); } - + // considering field in equals body { - equalsBody += "\nif (result) {\n" - + "Object f1 = w1.getFieldAsObject(" + extensionVariableName + ", " + fieldVariableName + ");\n" - + "Object f2 = w2.getFieldAsObject(" + extensionVariableName + ", " + fieldVariableName + ");\n" - + "result = f1 == f2 || (f1 != null && f1.equals(f2));\n" - + "}"; + equalsBody += "" +/*{ + if (result) { + Object f1 = w1.getFieldAsObject(<%= extensionVariableName %>, <%= fieldVariableName %>); + Object f2 = w2.getFieldAsObject(<%= extensionVariableName %>, <%= fieldVariableName %>); + result = f1 == f2 || (f1 != null && f1.equals(f2)); + }; +}*/; } // let's find a name for the getter @@ -296,13 +331,6 @@ // adding operations to contract ObjectModelOperation getter = addOperation(contract, getterName, attributeTypeSimpleNameInSet); - - - /* no setter for collections - ObjectModelOperation setter = addOperation(contract, setterName, "void"); - addParameter(setter, attributeTypeSimpleNameInSet, attribute.getName()); - */ - String addName = getMethodName("add", contract, attribute, attribute.getTagValue("adder")); ObjectModelOperation adder = addOperation(contract, addName, "void"); addParameter(adder, "String", "element"); @@ -316,54 +344,69 @@ // adding operations to abstract with bodies getter = cloneOperationSignature(getter, abstractClass, true, ObjectModelModifier.PUBLIC); - String getterBody = "\n" + attributeTypeSimpleNameInSet + " result = getWikitty().getFieldAsSet("+extensionVariableName+", "+fieldVariableName+", " + attributeTypeSimpleName + ".class);\n"; - getterBody += "return result;\n"; + String getterBody = "" +/*{ + <%= attributeTypeSimpleNameInSet %> result = getWikitty().getFieldAsSet(<%= extensionVariableName %>, <%= fieldVariableName %>, <%= attributeTypeSimpleName %>.class); + return result; +}*/; setOperationBody(getter, getterBody); - /* no setter for collections - setter = addOperation(abstractClass, setterName, "void"); - addParameter(setter, attributeTypeSimpleNameInSet, attribute.getName()); - setOperationBody(setter, setterBody); - */ - adder = cloneOperationSignature(adder, abstractClass, true, ObjectModelModifier.PUBLIC); - String adderBody = "\ngetWikitty().addToField("+extensionVariableName+", "+fieldVariableName+", element);" - + "\ngetPropertyChangeSupport().firePropertyChange("+fieldVariableName+", null, " + getter.getName() + "());\n"; + String adderBody = "" +/*{ + getWikitty().addToField(<%=extensionVariableName%>, <%=fieldVariableName%>, element); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%= getter.getName() %>()); +}*/; setOperationBody(adder, adderBody); remover = cloneOperationSignature(remover, abstractClass, true, ObjectModelModifier.PUBLIC); - String removerBody = "\ngetWikitty().removeFromField("+extensionVariableName+", "+fieldVariableName+", element);" - + "\ngetPropertyChangeSupport().firePropertyChange("+fieldVariableName+", null, " + getter.getName() + "());\n"; + String removerBody = "" +/*{ + getWikitty().removeFromField(<%=extensionVariableName%>, <%=fieldVariableName%>, element); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); +}*/; setOperationBody(remover, removerBody); clear = cloneOperationSignature(clear, abstractClass, true, ObjectModelModifier.PUBLIC); - String clearBody = "\ngetWikitty().clearField("+extensionVariableName+", "+fieldVariableName+");" - + "\ngetPropertyChangeSupport().firePropertyChange("+fieldVariableName+", null, " + getter.getName() + "());\n"; + String clearBody = "" +/*{ + getWikitty().clearField(<%=extensionVariableName%>, <%=fieldVariableName%>); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); +}*/; setOperationBody(clear, clearBody); // adding operations to Helper with bodies getter = addOperation(helper, getterName, attributeTypeSimpleNameInSet, ObjectModelModifier.STATIC); addParameter(getter, WIKITTY_CLASS_FQN, "wikitty"); - String helperBody = "\n" + attributeTypeSimpleNameInSet + " result = wikitty.getFieldAsSet("+extensionVariableName+", "+fieldVariableName+", "+attributeTypeSimpleName+".class);" - + "return result;\n"; - setOperationBody(getter, helperBody); + setOperationBody(getter, "" +/*{ + <%=attributeTypeSimpleNameInSet%> result = wikitty.getFieldAsSet(<%=extensionVariableName%>, <%=fieldVariableName%>, <%=attributeTypeSimpleName%>.class); + return result; +}*/); adder = addOperation(helper, addName, "void", ObjectModelModifier.STATIC); addParameter(adder, WIKITTY_CLASS_FQN, "wikitty"); addParameter(adder, attributeTypeSimpleName, "element"); - adderBody = "\nwikitty.addToField("+extensionVariableName+", "+clazz.getName() + "."+fieldVariableName+", element);\n"; - setOperationBody(adder, adderBody); + setOperationBody(adder, "" +/*{ + wikitty.addToField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, element); +}*/ +); remover = addOperation(helper, removeName, "void", ObjectModelModifier.STATIC); addParameter(remover, WIKITTY_CLASS_FQN, "wikitty"); addParameter(remover, attributeTypeSimpleName, "element"); - removerBody = "\nwikitty.removeFromField("+extensionVariableName+", "+clazz.getName() + "."+fieldVariableName+", element);\n"; - setOperationBody(remover, removerBody); + setOperationBody(remover, "" +/*{ + wikitty.removeFromField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, element); +}*/); clear = addOperation(helper, clearName, "void", ObjectModelModifier.STATIC); addParameter(clear, WIKITTY_CLASS_FQN, "wikitty"); - clearBody = "\nwikitty.clearField("+extensionVariableName+", "+clazz.getName() + "."+fieldVariableName+");\n"; - setOperationBody(clear, clearBody); + setOperationBody(clear, "" +/*{ + wikitty.clearField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>); +}*/); } else { String getFieldMethodName = generateGetFieldAsCall(attribute.getType()); @@ -377,29 +420,36 @@ // adding getter and setter to abstract with bodies getter = cloneOperationSignature(getter, abstractClass, true, ObjectModelModifier.PUBLIC); - String getterBody = "\n" + resultType + - " result = getWikitty()." + getFieldMethodName + - "(" + extensionVariableName + ", " + fieldVariableName + ");\n" - + "return result;\n"; - setOperationBody(getter, getterBody); + setOperationBody(getter, "" +/*{ + <%=resultType%> result = getWikitty().<%=getFieldMethodName%>(<%=extensionVariableName%>, <%=fieldVariableName%>); + return result; +}*/); setter = cloneOperationSignature(setter, abstractClass, true, ObjectModelModifier.PUBLIC); - String setterBody = "\nObject oldValue = getField("+extensionVariableName+", " + fieldVariableName + ");\n" - + "getWikitty().setField("+extensionVariableName+", " + fieldVariableName + ", "+attribute.getName()+");\n" - + "getPropertyChangeSupport().firePropertyChange(" + fieldVariableName + ", oldValue, "+attribute.getName()+");\n"; - setOperationBody(setter, setterBody); + setOperationBody(setter, "" +/*{ + Object oldValue = getField(<%=extensionVariableName%>, <%=fieldVariableName%>); + getWikitty().setField(<%=extensionVariableName%>, <%=fieldVariableName%>, <%=attribute.getName()%>); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, oldValue, <%=attribute.getName()%>); +}*/); // adding getter and setter to Helper with bodies getter = addOperation(helper, getterName, attributeTypeSimpleName, ObjectModelModifier.STATIC); - addParameter(getter, WIKITTY_CLASS_FQN, "wikitty"); - String helperGetterBody = "\n" + resultType + " result = wikitty." + getFieldMethodName + "(" + extensionVariableName + ", " + fieldVariableName + ");\n" + "return result;\n"; - setOperationBody(getter, helperGetterBody); + addParameter(getter, WIKITTY_CLASS_FQN, "wikitty"); + setOperationBody(getter, "" +/*{ + <%=resultType%> result = wikitty.<%=getFieldMethodName%>(<%=extensionVariableName%>, <%=fieldVariableName%>); + return result; +}*/); setter = addOperation(helper, setterName, "void", ObjectModelModifier.STATIC); addParameter(setter, WIKITTY_CLASS_FQN, "wikitty"); addParameter(setter, attributeTypeSimpleName, attribute.getName()); - String helperSetterBody = "wikitty.setField("+extensionVariableName+", " + clazz.getName() + "."+fieldVariableName+", " + attribute.getName() + ");\n"; - setOperationBody(setter, helperSetterBody); + setOperationBody(setter, "" +/*{ + wikitty.setField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, <%=attribute.getName()%>); +}*/); } }
participants (1)
-
bleny@users.nuiton.org