Author: fdesbois Date: 2010-01-14 19:02:45 +0100 (Thu, 14 Jan 2010) New Revision: 1758 Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/beangen/ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/beangen/RoueImpl.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/BeanTransformer.java trunk/topia-persistence/src/test/xmi/topiatest.zargo Log: - [TopiaQuery] add method to get main alias - [BeanTransformer] Evol #203 : manage Impl generation Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java 2010-01-13 18:33:02 UTC (rev 1757) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/framework/TopiaQuery.java 2010-01-14 18:02:45 UTC (rev 1758) @@ -387,6 +387,15 @@ } /** + * Return the mainAlias set from constructor. + * + * @return a String or null if no alias is set + */ + public String getMainAlias() { + return mainAlias; + } + + /** * Add a property to load when query is executed. * Used to avoid LazyInitializationException for property needed after closing context. * The property is a string like those in HQL query. Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/BeanTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/BeanTransformer.java 2010-01-13 18:33:02 UTC (rev 1757) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/BeanTransformer.java 2010-01-14 18:02:45 UTC (rev 1758) @@ -20,6 +20,7 @@ */ package org.nuiton.topia.generator; +import java.net.URL; import org.apache.commons.lang.StringUtils; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.java.ObjectModelTransformerToJava; @@ -59,21 +60,46 @@ } ObjectModelClass resultClass; + boolean isSuperClassSet = false; if (clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_BEAN)) { resultClass = createAbstractClass(clazz.getName(), clazz.getPackageName()); + + // Get name for Impl class + String implQualifiedName = clazz.getQualifiedName() + "Impl"; + String resourceName = "/" + implQualifiedName.replaceAll("\\.", "/"); + + // Do not generate Impl if operations exist : must have an Impl class in Resource created by developper + boolean hasOperations = !clazz.getAllOtherOperations(true).isEmpty() || !clazz.getOperations().isEmpty(); + + // Generate the Impl class if not already exist in classpath and no operation is defined in model + if(getClass().getResource(resourceName) == null && !hasOperations) { + String implName = clazz.getName() + "Impl"; + ObjectModelClass resultClassImpl = createClass(implName, clazz.getPackageName()); + // set the abstract resulClass as the resultClassImpl super class + setSuperClass(resultClassImpl, resultClass.getQualifiedName()); + isSuperClassSet = true; + } } else { resultClass = createClass(clazz.getName(), clazz.getPackageName()); } - + List<ObjectModelAttribute> attributes = (List<ObjectModelAttribute>) clazz.getAttributes(); createForDTO(resultClass, clazz, attributes); // Set superclass - Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator(); - if (j.hasNext()) { - ObjectModelClass p = j.next(); - setSuperClass(resultClass, p.getQualifiedName()); + if (!isSuperClassSet) { + Iterator<ObjectModelClass> j = clazz.getSuperclasses().iterator(); + if (j.hasNext()) { + ObjectModelClass p = j.next(); + String qualifiedName = p.getQualifiedName(); + // We want to set the inheritance to the implementation class of the father + // Ex for model : A -> B (a inherits B) we want : A -> BImpl -> B + if (clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_BEAN)) { + qualifiedName = p.getQualifiedName() + "Impl"; + } + setSuperClass(resultClass, qualifiedName); + } } // Add interfaces from inputModel Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/beangen/RoueImpl.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topiatest/beangen/RoueImpl.java (rev 0) +++ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/beangen/RoueImpl.java 2010-01-14 18:02:45 UTC (rev 1758) @@ -0,0 +1,29 @@ + +package org.nuiton.topiatest.beangen; + +import org.nuiton.topiatest.Product; + +/** + * RoueImpl + * + * Created: 14 janv. 2010 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class RoueImpl extends Roue { + + @Override + public void mount() { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Product getModel(String id) { + throw new UnsupportedOperationException("Not supported yet."); + } + +} Property changes on: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/beangen/RoueImpl.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Modified: trunk/topia-persistence/src/test/xmi/topiatest.zargo =================================================================== (Binary files differ)
participants (1)
-
fdesbois@users.nuiton.org