r515 - trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator
Author: jcouteau Date: 2010-11-24 18:21:14 +0100 (Wed, 24 Nov 2010) New Revision: 515 Url: http://nuiton.org/repositories/revision/wikitty/515 Log: Generate copyFrom method Improve generated abstract and helper Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-11-24 17:05:48 UTC (rev 514) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2010-11-24 17:21:14 UTC (rev 515) @@ -313,6 +313,8 @@ attributeName = attribute.getTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME); } + String capitalizedAttributeName = StringUtils.capitalize(attributeName); + String getterName; if (WikittyTransformerUtil.isAttributeCollection(attribute)) { @@ -333,18 +335,19 @@ }*/; setOperationBody(getter, getterBody); - String setterName = "set" + StringUtils.capitalize(attributeName); + String setterName = "set" + capitalizedAttributeName; ObjectModelOperation setter = addOperation(abstractClass, setterName, "void"); addAnnotation(abstractClass, setter, "Override"); addParameter(setter, attributeTypeSimpleNameInSet, attributeName); String setterBody = "" /*{ + <%=attributeTypeSimpleNameInSet%> oldValue = get<%=capitalizedAttributeName%>(); <%=helperClassName%>.<%=setterName%>(getWikitty(), <%=attributeName%>); - getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, null, <%= getter.getName() %>()); + getPropertyChangeSupport().firePropertyChange(<%=fieldVariableName%>, oldValue, <%= getter.getName() %>()); }*/; setOperationBody(setter, setterBody); - String addName = "add" + StringUtils.capitalize(attributeName); + String addName = "add" + capitalizedAttributeName; ObjectModelOperation adder = addOperation(abstractClass, addName, "void"); addAnnotation(abstractClass, adder, "Override"); addParameter(adder, "String", "element"); Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java 2010-11-24 17:05:48 UTC (rev 514) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java 2010-11-24 17:21:14 UTC (rev 515) @@ -131,7 +131,7 @@ ObjectModelClass abstractClassForThisEntity = processedClasses.get(clazz); addConstructors(abstractClassForThisEntity); addToString(clazz, abstractClassForThisEntity); - addBusinessEntityMethods(abstractClassForThisEntity); + addBusinessEntityMethods(clazz, abstractClassForThisEntity); addModelOperations(clazz, abstractClassForThisEntity); } @@ -400,8 +400,12 @@ return clazz.getName() + "DTO"; } - protected void addBusinessEntityMethods(ObjectModelClass dtoClass) { + protected void addBusinessEntityMethods(ObjectModelClass entity, ObjectModelClass dtoClass) { + //needed in templates + String entityName = entity.getName(); + String dtoClassName = businessEntityToDTOName(entity); + //adding wikittyId attribute addAttribute(dtoClass, "wikittyId", "String"); @@ -530,8 +534,92 @@ throw new UnsupportedOperationException("Not supported yet."); }*/); + //adding copyFrom method + ObjectModelOperation copyFrom = addOperation(dtoClass, "copyFrom", "void"); + addAnnotation(dtoClass, copyFrom, "Override"); + addParameter(copyFrom, "BusinessEntity", "source"); + String copyFromBody = "" +/*{ + if (source instanceof <%=entityName%>){ + throw new WikittyException("Can't copy source object " + source + + ". They are not of the same type"); + } + + <%=dtoClassName%> sourceCopy = (<%=dtoClassName%>)source; + + this.setWikittyVersion(sourceCopy.getWikittyVersion()); +}*/; + + copyFromBody = addCopyFromAttributes(entity, dtoClass, copyFromBody); + + addImport(dtoClass, "org.nuiton.wikitty.WikittyException"); + + setOperationBody(copyFrom, copyFromBody); } + protected String addCopyFromAttributes(ObjectModelClass businessEntity, + ObjectModelClass dtoClass, + String methodBody){ + + // generating operations with bodies to realize contract + for (ObjectModelAttribute attribute : businessEntity.getAttributes()) { + if (attribute.isNavigable()) { + // needed below, in templates + String attributeType = WikittyTransformerUtil.generateResultType(attribute, false); + String attributeName = attribute.getName(); + + + //If alternative name, use it + if (attribute.hasTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME)) { + attributeName = attribute.getTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME); + } + + String capitalizedAttributeName = StringUtils.capitalize(attributeName); + + methodBody += "" +/*{ + this.set<%=capitalizedAttributeName%>(sourceCopy.get<%=capitalizedAttributeName%>()); +}*/; + } + } + + + // add attributes and methods inherited from super classes + for (ObjectModelClass superClass : businessEntity.getSuperclasses()) { + + // process super classes first, so we will get inherited operations from superclass + addCopyFromAttributes(superClass, dtoClass, methodBody); + + if (WikittyTransformerUtil.isBusinessEntity(superClass)) { + + // generating operations with bodies to realize contract + for (ObjectModelAttribute attribute : businessEntity.getAttributes()) { + if (attribute.isNavigable()) { + // needed below, in templates + String attributeType = WikittyTransformerUtil.generateResultType(attribute, false); + String attributeName = attribute.getName(); + + + //If alternative name, use it + if (attribute.hasTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME)) { + attributeName = attribute.getTagValue(WikittyTransformerUtil.TAG_ALTERNATIVE_NAME); + } + + String capitalizedAttributeName = StringUtils.capitalize(attributeName); + + methodBody+="" +/*{ + this.set<%=capitalizedAttributeName%>(source.get<%=capitalizedAttributeName%>()); +}*/; + } + } + } + } + + return methodBody; + + } + protected void addModelOperations(ObjectModelClass businessEntity, ObjectModelClass dtoClass){ Collection<ObjectModelOperation> operations = businessEntity.getOperations(); Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-11-24 17:05:48 UTC (rev 514) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2010-11-24 17:21:14 UTC (rev 515) @@ -126,8 +126,10 @@ addParameter(setter, attributeTypeSimpleNameInSet, attributeName); String setterBody = "" /*{ - for (String id:<%=attributeName%>){ - add<%=attributeNameCapitalized%>(wikitty, id); + if(<%=attributeName%> != null){ + for (String id:<%=attributeName%>){ + add<%=attributeNameCapitalized%>(wikitty, id); + } } }*/; setOperationBody(setter, setterBody);
participants (1)
-
jcouteau@users.nuiton.org