This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository eugene. See http://git.nuiton.org/eugene.git commit 5a2895066afdb78fb2acb5522d5c0fefc0320afd Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Aug 19 09:08:59 2015 +0200 Generate a new object to init all beans of a model (fixes #3756) --- .../SimpleJavaBeanWithNoInterfaceTransformer.java | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java index 6207fb2..4734da7 100644 --- a/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java +++ b/eugene-java-templates/src/main/java/org/nuiton/eugene/java/SimpleJavaBeanWithNoInterfaceTransformer.java @@ -38,13 +38,16 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelInterface; import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelPackage; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; +import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -124,6 +127,67 @@ public class SimpleJavaBeanWithNoInterfaceTransformer extends AbstractJavaBeanTr beanNameTranslation = beanNameTranslationBuilder.build(); beanDefaultsNameTranslation = beanDefaultsNameTranslationBuilder.build(); + ImmutableMap<String, ObjectModelClass> beanClassesByFqn = Maps.uniqueIndex(beanClasses, new Function<ObjectModelClass, String>() { + + @Override + public String apply(ObjectModelClass input) { + return input.getQualifiedName(); + } + }); + ArrayList<String> beanClassesFqn = new ArrayList<>(beanClassesByFqn.keySet()); + Collections.sort(beanClassesFqn); + + String defaultPackageName = getDefaultPackageName(); + + String modelBeanInitializeClassName = model.getName() + "ModelInitializer"; + boolean generateModelInitializer = !isInClassPath(defaultPackageName + "." + modelBeanInitializeClassName); + if (generateModelInitializer) { + + ObjectModelInterface anInterface = createInterface(modelBeanInitializeClassName, defaultPackageName); + + addOperation(anInterface, "start", "void"); + addOperation(anInterface, "end", "void"); + + for (String fqn : beanClassesFqn) { + ObjectModelClass beanClass = beanClassesByFqn.get(fqn); + String beanName = beanNameTranslation.get(beanClass); + addImport(anInterface, beanName); + addOperation(anInterface, "init" + beanName, "void"); + + } + } + + String modelInitializerRunnerClassName = model.getName() + "ModelInitializerRunner"; + boolean generateInitializerRunnerClassName = !isInClassPath(defaultPackageName + "." + modelInitializerRunnerClassName); + if (generateInitializerRunnerClassName) { + + ObjectModelClass aClass = createClass(modelInitializerRunnerClassName, defaultPackageName); + + StringBuilder bodyBuilder = new StringBuilder(); + bodyBuilder.append("" +/*{ + initializer.start();}*/ + ); + for (String fqn : beanClassesFqn) { + ObjectModelClass beanClass = beanClassesByFqn.get(fqn); + String beanName = beanNameTranslation.get(beanClass); + addImport(aClass, beanName); + bodyBuilder.append("" +/*{ + initializer.init<%=beanName%>();}*/ + ); + + } + + bodyBuilder.append("" +/*{ + initializer.end();}*/ + ); + ObjectModelOperation operation = addOperation(aClass, "init", "void", ObjectModelJavaModifier.STATIC); + addParameter(operation, modelBeanInitializeClassName, "initializer"); + setOperationBody(operation, bodyBuilder.toString()); + } + } @Override -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.