r1180 - trunk/eugene/src/main/java/org/nuiton/eugene/java
Author: tchemit Date: 2012-10-24 21:03:21 +0200 (Wed, 24 Oct 2012) New Revision: 1180 Url: http://nuiton.org/repositories/revision/eugene/1180 Log: fixes #2371: Improve java eugene generator when inheritance is used fixes #2372: Add isXXXEmpty and sizeXXX method in bean for properties (with multiplicity>1) Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2012-10-11 02:47:54 UTC (rev 1179) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2012-10-24 19:03:21 UTC (rev 1180) @@ -24,6 +24,7 @@ */ package org.nuiton.eugene.java; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -86,6 +87,18 @@ return; } + // test if a super class has bean stereotype + boolean superClassIsBean = false; + Collection<ObjectModelClass> superclasses = input.getSuperclasses(); + if(CollectionUtils.isNotEmpty(superclasses)) { + for (ObjectModelClass superclass : superclasses) { + if (JavaGeneratorUtil.hasBeanStereotype(superclass)) { + superClassIsBean = true; + break; + } + } + } + ObjectModelClass output = createAbstractClass(input.getName(), input.getPackageName()); @@ -116,6 +129,10 @@ boolean serializableFound = addInterfaces(input, output); + if (superClassIsBean) { + serializableFound = true; + } + addSerializable(input, output, serializableFound); Set<String> constantNames = addConstantsFromDependency(input, output); @@ -138,17 +155,20 @@ // Add operations createAbstractOperations(output, input.getOperations()); - if (usePCS) { - - // Add property change support - createPropertyChangeSupport(output); - } + if (!superClassIsBean) { - boolean hasAMultipleProperty = containsMutiple(properties); + if (usePCS) { - // Add helper operations - if (hasAMultipleProperty) { - createGetChildMethod(output); + // Add property change support + createPropertyChangeSupport(output); + } + + boolean hasAMultipleProperty = containsMutiple(properties); + + // Add helper operations + if (hasAMultipleProperty) { + createGetChildMethod(output); + } } } @@ -250,6 +270,14 @@ simpleType ); + createIsEmptyMethod(output, + attrName + ); + + createSizeMethod(output, + attrName + ); + createAddChildMethod(output, attrName, attrType, @@ -405,6 +433,35 @@ ); } + protected void createIsEmptyMethod(ObjectModelClass output, + String attrName) { + ObjectModelOperation getChild = addOperation( + output, + getJavaBeanMethodName("is", attrName)+"Empty", + boolean.class, + ObjectModelJavaModifier.PUBLIC + ); + setOperationBody(getChild, "" + /*{ + return <%=attrName%> != null && !<%=attrName%>.isEmpty(); + }*/ + ); + } + + protected void createSizeMethod(ObjectModelClass output, + String attrName) { + ObjectModelOperation getChild = addOperation( + output, + getJavaBeanMethodName("size", attrName), + int.class, + ObjectModelJavaModifier.PUBLIC + ); + setOperationBody(getChild, "" + /*{ + return <%=attrName%> == null ? 0 : <%=attrName%>.size(); + }*/ + ); + } protected void createAddChildMethod(ObjectModelClass output, String attrName, String attrType,
participants (1)
-
tchemit@users.nuiton.org