Author: sletellier Date: 2011-10-27 11:27:34 +0200 (Thu, 27 Oct 2011) New Revision: 1244 Url: http://nuiton.org/repositories/revision/wikitty/1244 Log: - Dont generate impl if already in class path or if operations is found - Clean pom Modified: trunk/pom.xml trunk/wikitty-api/src/test/xmi/wikittytest.zargo trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-10-27 09:27:06 UTC (rev 1243) +++ trunk/pom.xml 2011-10-27 09:27:34 UTC (rev 1244) @@ -34,6 +34,36 @@ </modules> + <name>Wikitty</name> + + <description>Wikitty multi-module project</description> + <inceptionYear>2009</inceptionYear> + <url>http://maven-site.nuiton.org/wikitty</url> + + <properties> + <platform>nuiton.org</platform> + <projectId>wikitty</projectId> + + <maven3Version>3.0.3</maven3Version> + + <!-- common versions used in sub-poms --> + <eugeneVersion>2.4.1-SNAPSHOT</eugeneVersion> + <nuitonUtilsVersion>2.2</nuitonUtilsVersion> + <nuitonI18nVersion>2.4.1</nuitonI18nVersion> + <processPluginVersion>1.1</processPluginVersion> + <jettyVersion>7.4.2.v20110526</jettyVersion> + <struts2jqueryVersion>3.1.0</struts2jqueryVersion> + <struts2Version>2.2.3</struts2Version> + <javassistVersion>3.8.0.GA</javassistVersion> + <jspapiversion>2.1</jspapiversion> + + <nuitonProcessessorVersion>1.2.2</nuitonProcessessorVersion> + <nuiton-struts2>1.3</nuiton-struts2> + <!--Multilanguage maven-site --> + <locales>fr,en</locales> + + </properties> + <dependencyManagement> <dependencies> <!-- pour la communication client/serveur et la notification sur protocole cajo --> @@ -746,12 +776,6 @@ <!-- *** Project Information ************************************* --> <!-- ************************************************************* --> - <name>Wikitty</name> - - <description>Wikitty multi-module project</description> - <inceptionYear>2009</inceptionYear> - <url>http://maven-site.nuiton.org/wikitty</url> - <developers> <developer> <name>Benjamin Poussin</name> @@ -895,30 +919,6 @@ <packaging>pom</packaging> - <properties> - <platform>nuiton.org</platform> - <projectId>wikitty</projectId> - - <maven3Version>3.0.3</maven3Version> - - <!-- common versions used in sub-poms --> - <eugeneVersion>2.3.5</eugeneVersion> - <nuitonUtilsVersion>2.2</nuitonUtilsVersion> - <nuitonI18nVersion>2.4.1</nuitonI18nVersion> - <processPluginVersion>1.1</processPluginVersion> - <jettyVersion>7.4.2.v20110526</jettyVersion> - <struts2jqueryVersion>3.1.0</struts2jqueryVersion> - <struts2Version>2.2.3</struts2Version> - <javassistVersion>3.8.0.GA</javassistVersion> - <jspapiversion>2.1</jspapiversion> - - <nuitonProcessessorVersion>1.2.2</nuitonProcessessorVersion> - <nuiton-struts2>1.3</nuiton-struts2> - <!--Multilanguage maven-site --> - <locales>fr,en</locales> - - </properties> - <!-- ************************************************************* --> <!-- *** Build Environment ************************************** --> <!-- ************************************************************* --> Modified: trunk/wikitty-api/src/test/xmi/wikittytest.zargo =================================================================== (Binary files differ) Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java =================================================================== --- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2011-10-27 09:27:06 UTC (rev 1243) +++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2011-10-27 09:27:34 UTC (rev 1244) @@ -35,6 +35,8 @@ import java.util.Random; import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.java.ObjectModelTransformerToJava; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelModifier; @@ -49,12 +51,15 @@ */ public class WikittyImplementationGenerator extends ObjectModelTransformerToJava { + /** Logger */ + private static final Log log = LogFactory.getLog(WikittyImplementationGenerator.class); + protected Map<ObjectModelClass, ObjectModelClass> processedClasses = new HashMap<ObjectModelClass, ObjectModelClass>(); @Override public void transformFromClass(ObjectModelClass clazz) { - if (clazz.getOperations().isEmpty()) { + if (isGenerateImpl(clazz)) { if (WikittyTransformerUtil.isBusinessEntity(clazz)) { ObjectModelClass implementation = prepareImplementation(clazz); @@ -68,6 +73,36 @@ } } + protected boolean isGenerateImpl(ObjectModelClass clazz) { + + Collection<ObjectModelOperation> operations = clazz.getOperations(); + String fqn = clazz.getQualifiedName() + "Impl"; + + boolean alreadyInClassPath = isInClassPath(fqn); + if (alreadyInClassPath) { + + return false; + } + + // On ne génère pas le impl si l'entité a des opérations + if (!operations.isEmpty()) { + + log.info("Will not generate [" + fqn + "], there is some operations to manually implement"); + return false; + } + + //De même, on ne génère pas le impl si il y a des opérations venant des + // superclasses non implémentées + for (ObjectModelOperation otherOp : clazz.getAllOtherOperations(false)) { + if (otherOp.isAbstract()) { + log.info("Will not generate [" + fqn + "], there is an abstract operation [" + otherOp.getName() + "] in allOtherOperations."); + return false; + } + } + + return true; + } + protected ObjectModelClass prepareImplementation(ObjectModelClass clazz) { ObjectModelClass implementation = processedClasses.get(clazz);