Author: bleny Date: 2010-08-13 17:21:26 +0200 (Fri, 13 Aug 2010) New Revision: 261 Url: http://nuiton.org/repositories/revision/wikitty/261 Log: update POM ; bug fixes in transformers Modified: branches/wikitty-eugene-migration/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/WikittyTransformerUtil.java Modified: branches/wikitty-eugene-migration/pom.xml =================================================================== --- branches/wikitty-eugene-migration/pom.xml 2010-08-13 13:40:59 UTC (rev 260) +++ branches/wikitty-eugene-migration/pom.xml 2010-08-13 15:21:26 UTC (rev 261) @@ -223,7 +223,7 @@ <projectId>wikitty</projectId> <!-- common versions used in sub-poms --> - <eugene.version>2.1.1</eugene.version> + <eugene.version>2.1.2-SNAPSHOT</eugene.version> <spring.version>3.0.1.RELEASE</spring.version> <jetty.version>6.1.22</jetty.version> 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 13:40:59 UTC (rev 260) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-08-13 15:21:26 UTC (rev 261) @@ -123,12 +123,12 @@ /*{ boolean result = true; }*/; - String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(clazz); + String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(clazz, true); for(ObjectModelAttribute attribute : clazz.getAttributes()) { if (attribute.isNavigable()) { // two variables needed below // String fieldVariableName = "FIELD_" + clazz.getName().toUpperCase() + "_" + attribute.getName().toUpperCase(); - String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute); + String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute, true); // considering field in equals body equalsBody += "" @@ -199,7 +199,7 @@ String requires = null; for (ObjectModelClass superClass : superClasses) { // using "for" but there will be 0 or 1 iteration - requires = superClass.getName() + "." + WikittyTransformerUtil.classToExtensionVariableName(superClass); + requires = WikittyTransformerUtil.classToExtensionVariableName(superClass, true); } String buildFieldMapExtensionParametersInLine = StringUtils.join(buildFieldMapExtensionParameters, ", \n"); @@ -238,7 +238,7 @@ for (ObjectModelAttribute attribute : clazz.getAttributes()) { if (attribute.isNavigable()) { // needed below, in templates - String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute); + String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute, true); String attributeType = WikittyTransformerUtil.generateResultType(attribute.getType()); String attributeName = attribute.getName(); @@ -247,7 +247,7 @@ attributeName = attribute.getTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME); } - if (attribute.getMaxMultiplicity() > 1 || attribute.getMaxMultiplicity() == -1) { + if (WikittyTransformerUtil.isAttributeCollection(attribute)) { // attributed is a collection, we will generate operations get, add, remove and clear String attributeTypeSimpleNameInSet = "Set<" + attributeType + ">"; 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 13:40:59 UTC (rev 260) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2010-08-13 15:21:26 UTC (rev 261) @@ -57,6 +57,8 @@ addImport(contract, java.util.Set.class); addImport(contract, java.util.Date.class); + setDocumentation(contract, clazz.getDocumentation()); + Collection<ObjectModelClass> superClasses = clazz.getSuperclasses(); if (! superClasses.isEmpty()) { for (ObjectModelClass superClass : superClasses) { @@ -72,12 +74,12 @@ "\"" + clazz.getName() + "\"", ObjectModelModifier.PUBLIC); - String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(clazz); + String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(clazz, false); for(ObjectModelAttribute attribute : clazz.getAttributes()) { if (attribute.isNavigable()) { // two variables needed below - String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute); + String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute, false); // adding constants to contract addConstant(contract, @@ -97,8 +99,8 @@ for (ObjectModelAttribute attribute : clazz.getAttributes()) { if (attribute.isNavigable()) { // needed below, in templates - String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute); - String attributeType = WikittyTransformerUtil.generateResultType(attribute.getType()); + String fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute, true); + String attributeType = WikittyTransformerUtil.generateResultType(attribute, false); String attributeName = attribute.getName(); if (attribute.hasTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME)) { @@ -106,15 +108,17 @@ attributeName = attribute.getTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME); } + ObjectModelOperation getter; + if (attribute.getMaxMultiplicity() > 1 || attribute.getMaxMultiplicity() == -1) { // attributed is a collection, we will generate operations get, add, remove and clear - String attributeTypeSimpleNameInSet = "Set<" + attributeType + ">"; + String attributeTypeSimpleNameInSet = WikittyTransformerUtil.generateResultType(attribute, true); // 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); + getter = addOperation(contract, getterName, attributeTypeSimpleNameInSet); String addName = "add" + StringUtils.capitalize(attributeName); ObjectModelOperation adder = addOperation(contract, addName, "void"); @@ -131,12 +135,14 @@ } else { // attribute is not a collection, we generate a getter and a setter String getterName = "get" + StringUtils.capitalize(attributeName); - addOperation(contract, getterName, attributeType); + getter = addOperation(contract, getterName, attributeType); String setterName = "set" + StringUtils.capitalize(attributeName); ObjectModelOperation setter = addOperation(contract, setterName, "void"); addParameter(setter, attributeType, attributeName); } + + setDocumentation(getter, attribute.getDocumentation()); } } } 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 13:40:59 UTC (rev 260) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-08-13 15:21:26 UTC (rev 261) @@ -39,41 +39,36 @@ addImport(helper, java.util.Collections.class); addImport(helper, java.util.Set.class); addImport(helper, java.util.Date.class); - - // provides interface constants for to the helper - setSuperClass(helper, clazz.getQualifiedName() + "Impl"); // making constructor for helper class (empty and private) ObjectModelOperation constructor = addConstructor(helper, ObjectModelModifier.PRIVATE); - setOperationBody(constructor, "\n// utility class\n"); // empty implementation - - + setDocumentation(constructor, "utility class all provided methods are accessible the static way"); + setOperationBody(constructor, "// empty\n"); // empty implementation - String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(clazz); + String extensionVariableName = WikittyTransformerUtil.classToExtensionVariableName(clazz, true); // 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 fieldVariableName = WikittyTransformerUtil.attributeToFielVariableName(attribute, true); + String attributeType = WikittyTransformerUtil.generateResultType(attribute, false); 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) { + + if (WikittyTransformerUtil.isAttributeCollection(attribute)) { // attributed is a collection, we will generate operations get, add, remove and clear - - String attributeTypeSimpleNameInSet = "Set<" + attributeType + ">"; - + + String attributeTypeSimpleNameInSet = WikittyTransformerUtil.generateResultType(attribute, true); + // 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 = "" /*{ @@ -81,36 +76,33 @@ 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, "Wikitty", "wikitty"); addParameter(adder, "String", "element"); String adderBody = "" /*{ - wikitty.addToField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, element); + wikitty.addToField(<%=extensionVariableName%>, <%=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, "Wikitty", "wikitty"); addParameter(remover, "String", "element"); String removerBody = "" /*{ - wikitty.removeFromField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, element); + wikitty.removeFromField(<%=extensionVariableName%>, <%=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"); + addParameter(clear, "Wikitty", "wikitty"); String clearBody = "" /*{ - wikitty.clearField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>); + wikitty.clearField(<%=extensionVariableName%>, <%=fieldVariableName%>); }*/; setOperationBody(clear, clearBody); @@ -121,7 +113,6 @@ // 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, "" /*{ @@ -131,12 +122,11 @@ String setterName = "set" + StringUtils.capitalize(attributeName); ObjectModelOperation setter = addOperation(helper, setterName, "void"); - addAnnotation(helper, setter, "Override"); - addParameter(getter, "Wikitty", "wikitty"); + addParameter(setter, "Wikitty", "wikitty"); addParameter(setter, attributeType, attributeName); setOperationBody(setter, "" /*{ - wikitty.setField(<%=extensionVariableName%>, <%=clazz.getName()%>.<%=fieldVariableName%>, <%=attribute.getName()%>); + wikitty.setField(<%=extensionVariableName%>, <%=fieldVariableName%>, <%=attribute.getName()%>); }*/); } } 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-13 13:40:59 UTC (rev 260) +++ branches/wikitty-eugene-migration/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyTransformerUtil.java 2010-08-13 15:21:26 UTC (rev 261) @@ -1,5 +1,8 @@ package org.nuiton.wikitty.generator; +import java.util.HashSet; +import java.util.Set; + import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; @@ -25,15 +28,28 @@ /** given a class called Client will return "EXT_CLIENT" * should be used as a variable name to store the extension name + * @param withClassNamePrefix add class name as prefix (will return "Client.EXT_CLIENT") */ - protected static String classToExtensionVariableName(ObjectModelClass clazz) { - String extensionVariableName = "EXT_" + clazz.getName().toUpperCase(); + protected static String classToExtensionVariableName(ObjectModelClass clazz, + boolean withClassNamePrefix) { + String extensionVariableName = ""; + if (withClassNamePrefix) { + extensionVariableName += clazz.getName() + "."; + } + extensionVariableName += "EXT_" + clazz.getName().toUpperCase(); return extensionVariableName; } - /** given the field name of the class client, will return FIELD_CLIENT_NAME */ - protected static String attributeToFielVariableName(ObjectModelAttribute attribute) { - String fieldVariableName = "FIELD_" + attribute.getDeclaringElement().getName().toUpperCase() + "_" + attribute.getName().toUpperCase(); + /** given the field name of the class Client, will return "FIELD_CLIENT_NAME" + * @param withClassNamePrefix add class name as prefix (ie "Client.FIELD_CLIENT_NAME") + */ + protected static String attributeToFielVariableName(ObjectModelAttribute attribute, + boolean withClassNamePrefix) { + String fieldVariableName = ""; + if (withClassNamePrefix) { + fieldVariableName += attribute.getDeclaringElement().getName() + "."; + } + fieldVariableName += "FIELD_" + attribute.getDeclaringElement().getName().toUpperCase() + "_" + attribute.getName().toUpperCase(); return fieldVariableName; } @@ -52,7 +68,7 @@ || clazz.hasStereotype(BUSINESS_ENTITY_STEREOTYPE_OLD_NAME); return result; } - + /** * wikitty interface provide getFieldAsString, getFieldAsDate etc. methods * this method returns the good name of the method to call depending the @@ -73,22 +89,45 @@ } return "getFieldAs" + asWhat; } - - protected static String generateResultType(String typeName) { - String asWhat = FQNtoSimpleName(typeName); - if ("boolean".equals(asWhat)) { - // asWhat = "boolean"; - } else if ("int".equals(asWhat) || "Integer".equals(asWhat)) { - // asWhat = "Int"; - } else if ("Date".equals(asWhat)) { - // asWhat = "Date"; + /** for a given type of attribute, the getter returned type must be... */ + protected static String generateResultType(ObjectModelAttribute attribute, + boolean considerMultiplicity) { + String type = FQNtoSimpleName(attribute.getType()); + + if ("boolean".equals(type) || "Boolean".equals(type)) { + // + } else if ("int".equals(type) || "Integer".equals(type)) { + // + } else if ("Date".equals(type)) { + // } else { - asWhat = "String"; + type = "String"; } - return asWhat; + + String result = type; + if (considerMultiplicity && isAttributeCollection(attribute)) { + result = "Collection<" + type + ">"; + if (attribute.isUnique()) { + if (attribute.isOrdered()) { + // FIXME 20100813 doesn't take isUnique into account + result = "List<" + type + ">"; + } else { + result = "Set<" + type + ">"; + } + } else { + result = "List<" + type + ">"; + } + } + + return result; } + public static boolean isAttributeCollection(ObjectModelAttribute attribute) { + return attribute.getMaxMultiplicity() == -1 // -1 is infinity + || attribute.getMaxMultiplicity() > 1; + } + protected static String typeToWikittyColumn(String type) { String simpleType = FQNtoSimpleName(type); String result = null; @@ -106,7 +145,6 @@ } return result; } - }
participants (1)
-
bleny@users.nuiton.org