Author: tchemit Date: 2009-02-12 16:51:27 +0000 (Thu, 12 Feb 2009) New Revision: 1370 Modified: topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/generator/DAOHelperGenerator.java topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/generator/TopiaGeneratorUtil.java Log: generate DAOHelper with any fqn classes :) fix bug on cleanImports method (use a very weak test) Modified: topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/generator/DAOHelperGenerator.java =================================================================== --- topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/generator/DAOHelperGenerator.java 2009-02-12 15:00:55 UTC (rev 1369) +++ topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/generator/DAOHelperGenerator.java 2009-02-12 16:51:27 UTC (rev 1370) @@ -82,36 +82,45 @@ /*{<%=copyright%> }*/ } + String packageName = getProperty("defaultPackage"); +/*{package <%=packageName%>; + +}*/ String modelName = GeneratorUtil.capitalize(model.getName()); - String daoClazzName = modelName+"DAOHelper"; + String daoHelperClazzName = modelName+"DAOHelper"; String entityEnumName = modelName+"EntityEnum"; + List<ObjectModelClass> classes = TopiaGeneratorUtil.getEntityClasses(model,true); -/*{package <%=getProperty("defaultPackage")%>; + List<String> imports = computeImports(packageName, classes); + if (log.isDebugEnabled()) { + log.debug("imports for class <" + daoHelperClazzName + ">"); + } + for (String anImport : imports) { + if (log.isDebugEnabled()) { + log.debug("import " + anImport); + } +/*{import <%=anImport%>; +}*/ + } +/*{ +public class <%=daoHelperClazzName%> { -import org.codelutin.topia.TopiaContext; -import org.codelutin.topia.TopiaException; -import org.codelutin.topia.framework.TopiaContextImplementor; -import org.codelutin.topia.persistence.TopiaDAO; -import org.codelutin.topia.persistence.TopiaEntity; - -public class <%=daoClazzName%> { - }*/ - List<ObjectModelClass> classes = TopiaGeneratorUtil.getEntityClasses(model,true); + /*{ /** * no instance for this helper *) - protected <%=daoClazzName%>() { + protected <%=daoHelperClazzName%>() { } }*/ for (ObjectModelClass clazz : classes) { - String clazzFQN = clazz.getQualifiedName(); String clazzName = clazz.getName(); + String daoClazzName = clazzName + "DAO"; /*{ - public static <%=clazzFQN%>DAO get<%=clazzName%>DAO(TopiaContext context) throws TopiaException { + public static <%=daoClazzName%> get<%=daoClazzName%>(TopiaContext context) throws TopiaException { TopiaContextImplementor ci = (TopiaContextImplementor) context; - <%=clazzFQN%>DAO result = (<%=clazzFQN%>DAO) ci.getDAO(<%=clazzFQN%>.class); + <%=daoClazzName%> result = (<%=daoClazzName%>) ci.getDAO(<%=clazzName%>.class); return result; } }*/ @@ -127,7 +136,7 @@ @SuppressWarnings({"unchecked"}) public static <T extends TopiaEntity, D extends TopiaDAO<? super T>> D getDAO(TopiaContext context, T entity) throws TopiaException { - TopiaContextImplementor ci = (TopiaContextImplementor)context; + TopiaContextImplementor ci = (TopiaContextImplementor) context; <%=entityEnumName%> constant = <%=entityEnumName%>.valueOf(entity); D dao = (D) ci.getDAO(constant.getContractClass()); return dao; @@ -148,7 +157,7 @@ @SuppressWarnings({"unchecked"}) public static Class<? extends TopiaEntity>[] getContractClasses() { <%=entityEnumName%>[] values = <%=entityEnumName%>.values(); - Class<? extends TopiaEntity>[] result = (Class<? extends TopiaEntity>[]) java.lang.reflect.Array.newInstance(Class.class, values.length); + Class<? extends TopiaEntity>[] result = (Class<? extends TopiaEntity>[]) Array.newInstance(Class.class, values.length); for (int i = 0; i < values.length; i++) { result[i] = values[i].getContractClass(); } @@ -158,7 +167,7 @@ @SuppressWarnings({"unchecked"}) public static Class<? extends TopiaEntity>[] getImplementationClasses() { <%=entityEnumName%>[] values = <%=entityEnumName%>.values(); - Class<? extends TopiaEntity>[] result = (Class<? extends TopiaEntity>[]) java.lang.reflect.Array.newInstance(Class.class, values.length); + Class<? extends TopiaEntity>[] result = (Class<? extends TopiaEntity>[]) Array.newInstance(Class.class, values.length); for (int i = 0; i < values.length; i++) { result[i] = values[i].getImplementationClass(); } @@ -180,10 +189,9 @@ }*/ for (Iterator<ObjectModelClass> i=classes.iterator(); i.hasNext();) { ObjectModelClass clazz = i.next(); - String clazzFQN = clazz.getQualifiedName(); String clazzName = clazz.getName(); /*{ - <%=clazzName%>(<%=clazzFQN%>.class)<%=(i.hasNext() ? "," : ";")%>}*/ + <%=clazzName%>(<%=clazzName%>.class)<%=(i.hasNext() ? "," : ";")%>}*/ } /*{ @@ -235,7 +243,7 @@ return entityEnum; } } - throw new IllegalArgumentException("no entity defined for the class " + klass + " in : " + java.util.Arrays.toString(<%=entityEnumName%>.values())); + throw new IllegalArgumentException("no entity defined for the class " + klass + " in : " + Arrays.toString(<%=entityEnumName%>.values())); } } }*/ @@ -269,8 +277,27 @@ log.debug("Full entities list : " + entitiesList); } /*{ -} //<%=daoClazzName%> +} //<%=daoHelperClazzName%> }*/ } + protected List<String> computeImports(String packageName, List<ObjectModelClass> classes) { + java.util.Set<String> imports = new java.util.HashSet<String>(java.util.Arrays.asList( + java.lang.reflect.Array.class.getName(), + java.util.Arrays.class.getName(), + org.codelutin.topia.TopiaContext.class.getName(), + org.codelutin.topia.TopiaException.class.getName(), + org.codelutin.topia.framework.TopiaContextImplementor.class.getName(), + org.codelutin.topia.persistence.TopiaDAO.class.getName(), + org.codelutin.topia.persistence.TopiaEntity.class.getName())); + + for (ObjectModelClass clazz : classes) { + String clazzFQN = clazz.getQualifiedName(); + imports.add(clazzFQN); + imports.add(clazzFQN + "DAO"); + } + List<String> cleanImports = TopiaGeneratorUtil.cleanImports(packageName, imports); + java.util.Collections.sort(cleanImports); + return cleanImports; + } } //DAOHelperGenerator Modified: topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/generator/TopiaGeneratorUtil.java =================================================================== --- topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/generator/TopiaGeneratorUtil.java 2009-02-12 15:00:55 UTC (rev 1369) +++ topia/trunk/topia-persistence/src/main/java/org/codelutin/topia/generator/TopiaGeneratorUtil.java 2009-02-12 16:51:27 UTC (rev 1370) @@ -851,7 +851,7 @@ for (Iterator<String> it = fqns.iterator(); it.hasNext();) { String fqn = it.next(); int lastIndex = fqn.lastIndexOf("."); - if (lastIndex == packageLength) { + if (lastIndex == packageLength && fqn.startsWith(packageName)) { // same package it.remove(); continue;
participants (1)
-
tchemit@users.labs.libre-entreprise.org