Author: bleny Date: 2010-08-13 11:33:35 +0200 (Fri, 13 Aug 2010) New Revision: 258 Url: http://nuiton.org/repositories/revision/wikitty/258 Log: complete migration to transformers Modified: branches/wikitty-eugene-migration/wikitty-generators/pom.xml 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/WikittyMetaTransformer.java branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyPurifierTransformer.java Modified: branches/wikitty-eugene-migration/wikitty-generators/pom.xml =================================================================== --- branches/wikitty-eugene-migration/wikitty-generators/pom.xml 2010-08-13 08:30:55 UTC (rev 257) +++ branches/wikitty-eugene-migration/wikitty-generators/pom.xml 2010-08-13 09:33:35 UTC (rev 258) @@ -22,6 +22,10 @@ <artifactId>eugene</artifactId> <scope>provided</scope> </dependency> + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> </dependencies> <!-- ************************************************************* --> 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-13 08:30:55 UTC (rev 257) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-13 09:33:35 UTC (rev 258) @@ -5,6 +5,7 @@ import java.util.List; import java.util.Random; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.Transformer; @@ -201,6 +202,7 @@ requires = superClass.getName() + "." + WikittyTransformerUtil.classToExtensionVariableName(superClass); } + String buildFieldMapExtensionParametersInLine = StringUtils.join(buildFieldMapExtensionParameters, ", \n"); String staticInitializationBody = "" /*{ extension<%=clazz.getName()%> = @@ -208,7 +210,7 @@ "<%=extensionVersion%>", // version <%= requires %>, WikittyUtil.buildFieldMapExtension( // building field map -<%=StringUtils.join(buildFieldMapExtensionParameters, ", \n")%>)); +<%=buildFieldMapExtensionParametersInLine%>)); // init extensions List<WikittyExtension> exts = new ArrayList<WikittyExtension>(); @@ -230,6 +232,96 @@ }*/; setOperationBody(staticInitialization, staticInitializationBody); + + + // generating operations with bodies to realize contract + for (ObjectModelAttribute attribute : clazz.getAttributes()) { + if (attribute.isNavigable()) { + // needed below, in templates + String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute); + String attributeType = WikittyTransformerUtil.generateResultType(attribute.getType()); + + String attributeName = attribute.getName(); + if (attribute.hasTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME)) { + // there is a conflict, purifier transformer give as the right name to use + attributeName = attribute.getTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME); + } + + if (attribute.getMaxMultiplicity() > 1 || attribute.getMaxMultiplicity() == -1) { + // attributed is a collection, we will generate operations get, add, remove and clear + + String attributeTypeSimpleNameInSet = "Set<" + attributeType + ">"; + + // now, for this attribute, we will generate add, remove and clear methods + // adding operations to contract + String getterName = "get" + StringUtils.capitalize(attributeName); + ObjectModelOperation getter = addOperation(abstractClass, getterName, attributeTypeSimpleNameInSet); + addAnnotation(abstractClass, getter, "Override"); + String getterBody = "" +/*{ + <%= attributeTypeSimpleNameInSet %> result = getWikitty().getFieldAsSet(<%= extensionVariableName %>, <%= fieldVariableName %>, <%= attributeType %>.class); + return result; +}*/; + setOperationBody(getter, getterBody); + + String addName = "add" + StringUtils.capitalize(attributeName); + ObjectModelOperation adder = addOperation(abstractClass, addName, "void"); + addAnnotation(abstractClass, adder, "Override"); + addParameter(adder, "String", "element"); + String adderBody = "" +/*{ + getWikitty().addToField(<%=extensionVariableName%>, <%=fieldVariableName%>, element); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%= getter.getName() %>()); +}*/; + setOperationBody(adder, adderBody); + + String removeName = "remove" + StringUtils.capitalize(attributeName); + ObjectModelOperation remover = addOperation(abstractClass, removeName, "void"); + addAnnotation(abstractClass, remover, "Override"); + addParameter(remover, "String", "element"); + String removerBody = "" +/*{ + getWikitty().removeFromField(<%=extensionVariableName%>, <%=fieldVariableName%>, element); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); +}*/; + setOperationBody(remover, removerBody); + + String clearName = "clear" + StringUtils.capitalize(attributeName); + ObjectModelOperation clear = addOperation(abstractClass, clearName, "void"); + addAnnotation(abstractClass, clear, "Override"); + String clearBody = "" +/*{ + getWikitty().clearField(<%=extensionVariableName%>, <%=fieldVariableName%>); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); +}*/; + setOperationBody(clear, clearBody); + + + } else { + String getFieldMethodName = WikittyTransformerUtil.generateGetFieldAsCall(attribute.getType()); + + // adding getter and setter to contract + String getterName = "get" + StringUtils.capitalize(attributeName); + ObjectModelOperation getter = addOperation(abstractClass, getterName, attributeType); + addAnnotation(abstractClass, getter, "Override"); + setOperationBody(getter, "" +/*{ + <%=attributeType%> result = getWikitty().<%=getFieldMethodName%>(<%=extensionVariableName%>, <%=fieldVariableName%>); + return result; +}*/); + + String setterName = "set" + StringUtils.capitalize(attributeName); + ObjectModelOperation setter = addOperation(abstractClass, setterName, "void"); + addAnnotation(abstractClass, setter, "Override"); + addParameter(setter, attributeType, attributeName); + setOperationBody(setter, "" +/*{ + Object oldValue = getField(<%=extensionVariableName%>, <%=fieldVariableName%>); + getWikitty().setField(<%=extensionVariableName%>, <%=fieldVariableName%>, <%=attribute.getName()%>); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, oldValue, <%=attribute.getName()%>); +}*/); + } + } + } } - } 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-13 08:30:55 UTC (rev 257) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-13 09:33:35 UTC (rev 258) @@ -2,6 +2,7 @@ import java.util.Collection; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.Transformer; @@ -12,6 +13,8 @@ import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.util.StringUtil; /*{generator option: writeString = }*/ /*{generator option: parentheses = false}*/ @@ -89,6 +92,52 @@ extensionVariableName + " + \"." + attribute.getName() + "\"", ObjectModelModifier.PUBLIC); } - } + } + + for (ObjectModelAttribute attribute : clazz.getAttributes()) { + if (attribute.isNavigable()) { + // needed below, in templates + String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute); + String attributeType = WikittyTransformerUtil.generateResultType(attribute.getType()); + + String attributeName = attribute.getName(); + if (attribute.hasTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME)) { + // there is a conflict, purifier transformer give as the right name to use + attributeName = attribute.getTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME); + } + + if (attribute.getMaxMultiplicity() > 1 || attribute.getMaxMultiplicity() == -1) { + // attributed is a collection, we will generate operations get, add, remove and clear + + String attributeTypeSimpleNameInSet = "Set<" + attributeType + ">"; + + // now, for this attribute, we will generate add, remove and clear methods + // adding operations to contract + String getterName = "get" + StringUtils.capitalize(attributeName); + addOperation(contract, getterName, attributeTypeSimpleNameInSet); + + String addName = "add" + StringUtils.capitalize(attributeName); + ObjectModelOperation adder = addOperation(contract, addName, "void"); + addParameter(adder, "String", "element"); + + String removeName = "remove" + StringUtils.capitalize(attributeName); + ObjectModelOperation remover = addOperation(contract, removeName, "void"); + addParameter(remover, "String", "element"); + + String clearName = "clear" + StringUtils.capitalize(attributeName); + addOperation(contract, clearName, "void"); + + + } else { + // attribute is not a collection, we generate a getter and a setter + String getterName = "get" + StringUtils.capitalize(attributeName); + addOperation(contract, getterName, attributeType); + + String setterName = "set" + StringUtils.capitalize(attributeName); + ObjectModelOperation setter = addOperation(contract, setterName, "void"); + addParameter(setter, attributeType, attributeName); + } + } + } } } 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-13 08:30:55 UTC (rev 257) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-08-13 09:33:35 UTC (rev 258) @@ -1,6 +1,8 @@ package org.nuiton.wikitty.generator; +import org.apache.commons.lang.StringUtils; import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; @@ -44,5 +46,100 @@ // making constructor for helper class (empty and private) ObjectModelOperation constructor = addConstructor(helper, ObjectModelModifier.PRIVATE); setOperationBody(constructor, "\n// utility class\n"); // empty implementation + + + + String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(clazz); + + // generating operations with bodies to realize contract + for (ObjectModelAttribute attribute : clazz.getAttributes()) { + if (attribute.isNavigable()) { + // needed below, in templates + String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute); + String attributeType = WikittyTransformerUtil.generateResultType(attribute.getType()); + + String attributeName = attribute.getName(); + if (attribute.hasTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME)) { + // there is a conflict, purifier transformer give as the right name to use + attributeName = attribute.getTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME); + } + + if (attribute.getMaxMultiplicity() > 1 || attribute.getMaxMultiplicity() == -1) { + // attributed is a collection, we will generate operations get, add, remove and clear + + String attributeTypeSimpleNameInSet = "Set<" + attributeType + ">"; + + // now, for this attribute, we will generate add, remove and clear methods + // adding operations to contract + String getterName = "get" + StringUtils.capitalize(attributeName); + ObjectModelOperation getter = addOperation(helper, getterName, attributeTypeSimpleNameInSet); + addAnnotation(helper, getter, "Override"); + addParameter(getter, "Wikitty", "wikitty"); + String getterBody = "" +/*{ + <%=attributeTypeSimpleNameInSet%> result = wikitty.getFieldAsSet(<%=extensionVariableName%>, <%=fieldVariableName%>, <%=attributeType%>.class); + return result; +}*/; + setOperationBody(getter, getterBody); + + String addName = "add" + StringUtils.capitalize(attributeName); + ObjectModelOperation adder = addOperation(helper, addName, "void"); + addAnnotation(helper, adder, "Override"); + addParameter(getter, "Wikitty", "wikitty"); + addParameter(adder, "String", "element"); + String adderBody = "" +/*{ + wikitty.addToField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, element); +}*/; + setOperationBody(adder, adderBody); + + String removeName = "remove" + StringUtils.capitalize(attributeName); + ObjectModelOperation remover = addOperation(helper, removeName, "void"); + addAnnotation(helper, remover, "Override"); + addParameter(getter, "Wikitty", "wikitty"); + addParameter(remover, "String", "element"); + String removerBody = "" +/*{ + wikitty.removeFromField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, element); +}*/; + setOperationBody(remover, removerBody); + + String clearName = "clear" + StringUtils.capitalize(attributeName); + ObjectModelOperation clear = addOperation(helper, clearName, "void"); + addAnnotation(helper, clear, "Override"); + addParameter(getter, "Wikitty", "wikitty"); + String clearBody = "" +/*{ + wikitty.clearField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>); +}*/; + setOperationBody(clear, clearBody); + + + } else { + String getFieldMethodName = WikittyTransformerUtil.generateGetFieldAsCall(attribute.getType()); + + // adding getter and setter to contract + String getterName = "get" + StringUtils.capitalize(attributeName); + ObjectModelOperation getter = addOperation(helper, getterName, attributeType); + addAnnotation(helper, getter, "Override"); + addParameter(getter, "Wikitty", "wikitty"); + setOperationBody(getter, "" +/*{ + <%=attributeType%> result = wikitty.<%=getFieldMethodName%>(<%=extensionVariableName%>, <%=fieldVariableName%>); + return result; +}*/); + + String setterName = "set" + StringUtils.capitalize(attributeName); + ObjectModelOperation setter = addOperation(helper, setterName, "void"); + addAnnotation(helper, setter, "Override"); + addParameter(getter, "Wikitty", "wikitty"); + addParameter(setter, attributeType, attributeName); + setOperationBody(setter, "" +/*{ + wikitty.setField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, <%=attribute.getName()%>); +}*/); + } + } + } } } Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java =================================================================== --- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java 2010-08-13 08:30:55 UTC (rev 257) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java 2010-08-13 09:33:35 UTC (rev 258) @@ -1,24 +1,10 @@ package org.nuiton.wikitty.generator; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Random; - -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.AbstractMetaTransformer; -import org.nuiton.eugene.TemplateConfiguration; -import org.nuiton.eugene.Transformer; -import org.nuiton.eugene.java.ObjectModelTransformerToJava; import org.nuiton.eugene.models.object.ObjectModel; -import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.ObjectModelModifier; -import org.nuiton.eugene.models.object.ObjectModelOperation; /** * @@ -49,13 +35,12 @@ private static final Log log = LogFactory.getLog(WikittyMetaTransformer.class); - - public WikittyMetaTransformer() { super(WikittyContractGenerator.class, WikittyAbstractGenerator.class, WikittyImplementationGenerator.class, - WikittyHelperGenerator.class); + WikittyHelperGenerator.class + ); } /** */ @@ -67,10 +52,6 @@ } for (ObjectModelClass clazz : model.getClasses()) { - if (clazz.getSuperclasses().size() > 1) { - log.error("multiple inheritance for class " + clazz.getName()); - return false; - } if (clazz.getStereotypes().contains(WikittyTransformerUtil.BUSINESS_ENTITY_STEREOTYPE_OLD_NAME)) { log.warn(clazz.getQualifiedName() + " uses deprecated \"" + @@ -89,182 +70,4 @@ return true; } -// will be moved soon -// protected void processAttribute(ObjectModelAttribute attribute) { -// // two variables needed below -// String extensionVariableName = WikittyGeneratorUtil.classToExtensionVariableName(clazz); -// String fieldVariableName = WikittyGeneratorUtil.attributeToFielVariableName(attribute); -// -// -// -// // let's find a name for the getter -// String getterName = getMethodName("get", contract, attribute, attribute.getTagValue("getter")); -// -// // let's find a name for the setter -// String setterName = getMethodName("set", contract, attribute, attribute.getTagValue("setter")); -// -// // attribute type simple name as it should be in signature -// String attributeTypeSimpleName = WikittyGeneratorUtil.FQNtoSimpleName(attribute.getType()); -// if ("boolean".equals(attributeTypeSimpleName)) { -// attributeTypeSimpleName = "Boolean"; -// } else if ("int".equals(attributeTypeSimpleName)) { -// attributeTypeSimpleName = "Integer"; -// } -// -// if (attribute.getMaxMultiplicity() > 1 || attribute.getMaxMultiplicity() == -1) { -// // attributed is a collection, we will generate operations get, add, remove and clear -// String attributeTypeSimpleNameInSet = "Set<" + attributeTypeSimpleName + ">"; -// -// // now, for this attribute, we will generate add, remove and clear methods -// -// // adding operations to contract -// ObjectModelOperation getter = addOperation(contract, getterName, attributeTypeSimpleNameInSet); -// -// String addName = getMethodName("add", contract, attribute, attribute.getTagValue("adder")); -// ObjectModelOperation adder = addOperation(contract, addName, "void"); -// addParameter(adder, "String", "element"); -// -// String removeName = getMethodName("remove", contract, attribute, attribute.getTagValue("remover")); -// ObjectModelOperation remover = addOperation(contract, removeName, "void"); -// addParameter(remover, "String", "element"); -// -// String clearName = getMethodName("clear", contract, attribute, attribute.getTagValue("clear")); -// ObjectModelOperation clear = addOperation(contract, clearName, "void"); -// -// // adding operations to abstract with bodies -// getter = cloneOperationSignature(getter, abstractClass, true, ObjectModelModifier.PUBLIC); -// String getterBody = "" -///*{ -// <%= attributeTypeSimpleNameInSet %> result = getWikitty().getFieldAsSet(<%= extensionVariableName %>, <%= fieldVariableName %>, <%= attributeTypeSimpleName %>.class); -// return result; -//}*/; -// setOperationBody(getter, getterBody); -// -// adder = cloneOperationSignature(adder, abstractClass, true, ObjectModelModifier.PUBLIC); -// 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 = "" -///*{ -// getWikitty().removeFromField(<%=extensionVariableName%>, <%=fieldVariableName%>, element); -// getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%=getter.getName()%>()); -//}*/; -// setOperationBody(remover, removerBody); -// -// clear = cloneOperationSignature(clear, abstractClass, true, ObjectModelModifier.PUBLIC); -// 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"); -// 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"); -// 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"); -// setOperationBody(remover, "" -///*{ -// wikitty.removeFromField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, element); -//}*/); -// -// clear = addOperation(helper, clearName, "void", ObjectModelModifier.STATIC); -// addParameter(clear, WIKITTY_CLASS_FQN, "wikitty"); -// setOperationBody(clear, "" -///*{ -// wikitty.clearField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>); -//}*/); -// -// } else { -// // attribute is not a collection, we generate a getter and a setter -// String getFieldMethodName = WikittyGeneratorUtil.generateGetFieldAsCall(attribute.getType()); -// String resultType = WikittyGeneratorUtil.generateResultType(attribute.getType()); -// attributeTypeSimpleName = resultType; -// -// // adding getter and setter to contract -// ObjectModelOperation getter = addOperation(contract, getterName, attributeTypeSimpleName); -// ObjectModelOperation setter = addOperation(contract, setterName, "void"); -// addParameter(setter, attributeTypeSimpleName, attribute.getName()); -// -// // adding getter and setter to abstract with bodies -// getter = cloneOperationSignature(getter, abstractClass, true, ObjectModelModifier.PUBLIC); -// setOperationBody(getter, "" -///*{ -// <%=resultType%> result = getWikitty().<%=getFieldMethodName%>(<%=extensionVariableName%>, <%=fieldVariableName%>); -// return result; -//}*/); -// -// setter = cloneOperationSignature(setter, abstractClass, true, ObjectModelModifier.PUBLIC); -// 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"); -// 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()); -// setOperationBody(setter, "" -///*{ -// wikitty.setField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, <%=attribute.getName()%>); -//}*/); -// } -// } - - /** getMethodName("add", contract, attribute, "myNameForThisAdder") - * will return "myNameForThisAdder" if not already defined in contract ; - * if already defined, will try add<attributeName>. If it already exists - * will return add<attributeName>From<ExtensionName> */ - protected String getMethodName(String operatorName, - ObjectModelClassifier classifier, - ObjectModelAttribute attribute, - String claimedValue) { - String methodName = claimedValue; - if (methodName != null) { - if (! classifier.getOperations(methodName).isEmpty()) { - log.warn(methodName + " operation already exists in " + attribute.getDeclaringElement().getName() + " ignoring tagValue"); - methodName = null; - } - } - - if (methodName == null) { - methodName = operatorName + StringUtils.capitalize(attribute.getName()); - if (! classifier.getOperations(methodName).isEmpty()) { - methodName += "From" + attribute.getDeclaringElement().getName(); - } - } - return methodName; - } } Modified: branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyPurifierTransformer.java =================================================================== --- branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyPurifierTransformer.java 2010-08-13 08:30:55 UTC (rev 257) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyPurifierTransformer.java 2010-08-13 09:33:35 UTC (rev 258) @@ -23,8 +23,10 @@ private static final Log log = LogFactory.getLog(WikittyPurifierTransformer.class); + /** for a given class, store all the names used by this class and subClasses */ Map<ObjectModelClass, List<String>> namesUsedByClass = new HashMap<ObjectModelClass, List<String>>(); + /** class of the original model that are already processed */ List<ObjectModelClass> processedClasses = new ArrayList<ObjectModelClass>(); /**