Author: tchemit Date: 2010-05-07 23:57:37 +0200 (Fri, 07 May 2010) New Revision: 883 Url: http://nuiton.org/repositories/revision/eugene/883 Log: - Evolution #581: Do not generates modifiers on a constant for an Interface - Evolution #582: Add dependency 'constants' Enumeration to attach constants to an Interface Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2010-05-04 12:49:54 UTC (rev 882) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2010-05-07 21:57:37 UTC (rev 883) @@ -394,6 +394,14 @@ String attrType = GeneratorUtil.getSimpleName(attr.getType()); String attrStatic = attr.isStatic() ? " static" : ""; String attrFinal = attr.isFinal() ? " final" : ""; + if (clazz instanceof ObjectModelInterface) { + + //tchemit 20100507 no modifier for constants in interfaces + attrFinal = ""; + attrStatic = ""; + attrVisibility = ""; + } + String attrValue = StringUtils.isNotEmpty(attr.getDefaultValue()) ? // ANO#474 FD-20100408 : Don't do any simplification for // defaultValue, must be managed when the attribute is added Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2010-05-04 12:49:54 UTC (rev 882) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2010-05-07 21:57:37 UTC (rev 883) @@ -42,6 +42,15 @@ public static final String STEREOTYPE_BEAN = "bean"; /** + * dependency to add constants in interfaces via an enumeration. + * + * The literals of enumeration will be the value, and constant names will + * be generated by transformers. + * @since 2.0.2 + */ + public static final String DEPENDENCIES_CONSTANTS = "constants"; + + /** * Duplicates in the {@code target} classifier the given {@code operations} * using a {@code transformer} to modify model. * Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java 2010-05-04 12:49:54 UTC (rev 882) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java 2010-05-07 21:57:37 UTC (rev 883) @@ -29,9 +29,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelDependency; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelModifier; +import java.util.Collection; import java.util.Iterator; /*{generator option: parentheses = false}*/ @@ -81,16 +85,52 @@ // only static attribut with value if (!attr.isStatic() && StringUtils.isNotEmpty(attr.getDefaultValue())) { - addConstant(resultInterface, attr.getName(), attr.getType(), - attr.getDefaultValue(), ObjectModelModifier.PUBLIC); + addConstant(resultInterface, + attr.getName(), + attr.getType(), + attr.getDefaultValue(), + ObjectModelModifier.PUBLIC + ); } } + // constant attributes via 'constants' enumeration dependency + // literals of enumeration will be values and constant name will be generated + ObjectModelDependency constantsDependencies = + interfacez.getDependency(JavaGeneratorUtil.DEPENDENCIES_CONSTANTS); + if (constantsDependencies != null) { + + ObjectModelClassifier classifier = constantsDependencies.getSupplier(); + + log.info("constantsDependencies = " + classifier); + if (classifier instanceof ObjectModelEnumeration) { + + ObjectModelEnumeration constants = + (ObjectModelEnumeration) classifier; + + // add all literal of dependency as constants in interface + Collection<String> literals = constants.getLiterals(); + for (String literal : literals) { + + String constantName = getConstantName(literal); + + addConstant(resultInterface, + constantName, + String.class, + "\"" + literal + "\"", + ObjectModelModifier.PUBLIC + ); + } + } + } else { + log.info("No constantsDependencies for " + interfacez); + } + // interface operations JavaGeneratorUtil.cloneOperations(this, - interfacez.getOperations(), - resultInterface, - false + interfacez.getOperations(), + resultInterface, + false ); } }
participants (1)
-
tchemit@users.nuiton.org