r519 - trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator
Author: jcouteau Date: 2010-11-25 17:24:27 +0100 (Thu, 25 Nov 2010) New Revision: 519 Url: http://nuiton.org/repositories/revision/wikitty/519 Log: Manage copyFrom method on DTOs Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java 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-25 16:01:04 UTC (rev 518) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java 2010-11-25 16:24:27 UTC (rev 519) @@ -186,16 +186,22 @@ if (WikittyTransformerUtil.isAttributeCollection(attribute)) { // attribute is a collection, we will generate operations // get, add, remove and clear + + //calculate template parameters + String attributeTypeInSet = WikittyTransformerUtil.generateResultType(attribute, true); + String attributeTypeInSetImpl = null; String collectionType = WikittyTransformerUtil.getCollectionTypeName(attribute); if (collectionType.equals("Set")){ addImport(abstractClass, Set.class); + addImport(abstractClass, "java.util.HashSet"); + attributeTypeInSetImpl = "HashSet<String>"; } if (collectionType.equals("List")){ addImport(abstractClass, List.class); - + addImport(abstractClass, "java.util.ArrayList"); + attributeTypeInSetImpl = "ArrayList<String>"; } - String attributeTypeInSet = WikittyTransformerUtil.generateResultType(attribute, true); //adding the attribute ObjectModelAttribute modelAttribute = addAttribute(abstractClass, attributeName, attributeTypeInSet); @@ -221,7 +227,11 @@ addParameter(setter, attributeTypeInSet, attributeName); String setterBody = "" /*{ - this.<%=attributeName%>=<%=attributeName%>; + if (<%=attributeName%> == null){ + this.<%=attributeName%> = new <%=attributeTypeInSetImpl%>(); + } else { + this.<%=attributeName%>=<%=attributeName%>; + } }*/; setOperationBody(setter, setterBody); @@ -232,6 +242,9 @@ addParameter(adder, attributeType, "element"); String adderBody = "" /*{ + if (<%=attributeName%> == null){ + this.<%=attributeName%> = new <%=attributeTypeInSetImpl%>(); + } <%=attributeName%>.add(element); }*/; setOperationBody(adder, adderBody); @@ -547,77 +560,81 @@ <%=entityName%> sourceCopy = (<%=entityName%>)source; - this.setWikittyVersion(sourceCopy.getWikittyVersion()); + setWikittyVersion(sourceCopy.getWikittyVersion()); }*/; - copyFromBody = addCopyFromAttributes(entity, dtoClass, copyFromBody); + copyFromBody = addCopyFromAttributes(entity, copyFromBody); addImport(dtoClass, "org.nuiton.wikitty.WikittyException"); setOperationBody(copyFrom, copyFromBody); } + /** + * Generate the copyFrom method. This method set all fields of the class + * from all the fields of another instance of the same class. + * @param businessEntity + * @param methodBody + * @return + */ protected String addCopyFromAttributes(ObjectModelClass businessEntity, - ObjectModelClass dtoClass, String methodBody){ - // generating operations with bodies to realize contract + methodBody=copyFromAttributesOfClass(businessEntity, methodBody); + + // add attributes inherited from super classes + for (ObjectModelClass superClass : businessEntity.getSuperclasses()) { + + // process super classes first (for multi-level inheritance) + methodBody=copyFromAttributesOfClass(superClass, methodBody); + + if (WikittyTransformerUtil.isBusinessEntity(superClass)) { + + methodBody=copyFromAttributesOfClass(businessEntity, methodBody); + } + } + + return methodBody; + + } + + protected String copyFromAttributesOfClass(ObjectModelClass businessEntity, + String methodBody){ for (ObjectModelAttribute attribute : businessEntity.getAttributes()) { if (attribute.isNavigable()) { // needed below, in templates String attributeType = WikittyTransformerUtil.generateResultType(attribute, false); String attributeName = attribute.getName(); + String attributeTypeInSetImpl = null; + String collectionType = WikittyTransformerUtil.getCollectionTypeName(attribute); + if (collectionType.equals("Set")) { + attributeTypeInSetImpl = "HashSet<String>"; + } + if (collectionType.equals("List")) { + attributeTypeInSetImpl = "ArrayList<String>"; + } - //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 += "" + + if (WikittyTransformerUtil.isAttributeCollection(attribute)) { + methodBody += "" /*{ - this.set<%=capitalizedAttributeName%>(sourceCopy.get<%=capitalizedAttributeName%>()); + set<%=capitalizedAttributeName%>(new <%=attributeTypeInSetImpl%>(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+="" + } else { + methodBody += "" /*{ - this.set<%=capitalizedAttributeName%>(source.get<%=capitalizedAttributeName%>()); + set<%=capitalizedAttributeName%>(sourceCopy.get<%=capitalizedAttributeName%>()); }*/; - } } } } - return methodBody; - } protected void addModelOperations(ObjectModelClass businessEntity, ObjectModelClass dtoClass){
participants (1)
-
jcouteau@users.nuiton.org