Index: topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java:1.12 topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java:1.13 --- topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java:1.12 Tue Jun 6 15:31:33 2006 +++ topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java Wed Jun 7 15:56:01 2006 @@ -24,21 +24,27 @@ * Created: 12 déc. 2005 * * @author Arnaud Thimel -* @version $Revision: 1.12 $ +* @version $Revision: 1.13 $ * -* Mise a jour: $Date: 2006/06/06 15:31:33 $ +* Mise a jour: $Date: 2006/06/07 15:56:01 $ * par : $Author: thimel $ */ package org.codelutin.topia.generator; import static org.codelutin.topia.generator.GeneratorUtil.hasUnidirectionalRelationOnAbstractType; +import static org.codelutin.topia.generator.GeneratorUtil.isBooleanType; +import static org.codelutin.topia.generator.GeneratorUtil.isDateType; +import static org.codelutin.topia.generator.GeneratorUtil.isNumericType; +import static org.codelutin.topia.generator.GeneratorUtil.isTextType; import java.io.File; import java.io.IOException; import java.io.Writer; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; +import java.util.List; import java.util.Set; import org.apache.commons.logging.Log; @@ -92,9 +98,56 @@ }*/ } + private String getStringRepresentation(List strings) { + StringBuffer result = new StringBuffer(); + String doubleQuote = "\""; + String comma = ","; + Iterator it = strings.iterator(); + while (it.hasNext()) { + result.append(doubleQuote); + result.append(it.next()); + result.append(doubleQuote); + if (it.hasNext()) { + result.append(comma); + } + } + return result.toString(); + } + + private void generateSearchFields(Writer output, ObjectModelClass clazz) throws IOException { + List txtFields = new ArrayList(); + List numFields = new ArrayList(); + List boolFields = new ArrayList(); + List dateFields = new ArrayList(); + List allAttrs = new ArrayList(); + allAttrs.addAll((Collection)clazz.getAttributes()); + allAttrs.addAll((Collection)clazz.getAllOtherAttributes()); + for (ObjectModelAttribute attr : allAttrs) { + String name = Util.toLowerCaseFirstLetter(attr.getName()); + if (isTextType(attr)) { + txtFields.add(name); + } else if (isNumericType(attr)) { + numFields.add(name); + } else if (isBooleanType(attr)) { + boolFields.add(name); + } else if (isDateType(attr)) { + dateFields.add(name); + } + } +/*{@SearchFields ( + txtFields={<%=getStringRepresentation(txtFields)%>}, + numFields={<%=getStringRepresentation(numFields)%>}, + boolFields={<%=getStringRepresentation(boolFields)%>}, + dateFields={<%=getStringRepresentation(dateFields)%>} +) +}*/ + } + private void generateInterfaceHeader(Writer output, ObjectModelClassifier classifier) throws IOException { /*{package <%=classifier.getPackageName()%>; +import org.codelutin.topia.persistence.SearchFields; + }*/ if (GeneratorUtil.hasDocumentation(classifier)) { /*{ @@ -103,6 +156,9 @@ *) }*/ } + if (classifier instanceof ObjectModelClass) { + generateSearchFields(output, (ObjectModelClass)classifier); + } /*{public interface <%=classifier.getName()%> extends }*/ String extendClass = ""; for (Iterator i=classifier.getInterfaces().iterator(); i.hasNext();) { Index: topia2/src/java/org/codelutin/topia/generator/DAOHelperGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/DAOHelperGenerator.java:1.8 topia2/src/java/org/codelutin/topia/generator/DAOHelperGenerator.java:1.9 --- topia2/src/java/org/codelutin/topia/generator/DAOHelperGenerator.java:1.8 Fri Mar 31 13:22:12 2006 +++ topia2/src/java/org/codelutin/topia/generator/DAOHelperGenerator.java Wed Jun 7 15:56:01 2006 @@ -25,25 +25,27 @@ * * @author Arnaud Thimel * - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ * - * Mise a jour: $Date: 2006/03/31 13:22:12 $ par : $Author: thimel $ + * Mise a jour: $Date: 2006/06/07 15:56:01 $ par : $Author: thimel $ */ package org.codelutin.topia.generator; +import static org.codelutin.topia.generator.GeneratorUtil.STEREOTYPE_ENTITY; + import java.io.File; import java.io.IOException; import java.io.Writer; import java.util.Iterator; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.codelutin.generator.Generator; import org.codelutin.generator.ObjectModelGenerator; import org.codelutin.generator.models.object.ObjectModel; import org.codelutin.generator.models.object.ObjectModelClass; -import static org.codelutin.topia.generator.GeneratorUtil.STEREOTYPE_ENTITY; - /** * Ce generateur permet d'avoir une classe permettant de recuperer les DAO * sans cast. @@ -52,6 +54,8 @@ */ public class DAOHelperGenerator extends ObjectModelGenerator { + private Log log = LogFactory.getLog(DAOHelperGenerator.class); + public DAOHelperGenerator(Generator parent) { super(parent); } @@ -77,13 +81,16 @@ public static final String entitiesList = "" + }*/ + String entitiesList = ""; for (Iterator i=model.getClasses().iterator(); i.hasNext();) { ObjectModelClass clazz = (ObjectModelClass)i.next(); if(/*!clazz.isAbstract() && */clazz.hasStereotype(STEREOTYPE_ENTITY)){ + entitiesList += GeneratorUtil.getDOType(clazz, model) + (i.hasNext()?",":""); /*{ "<%=GeneratorUtil.getDOType(clazz, model)%><%=(i.hasNext()?",\" +":"\";")%> }*/ } } + log.info("Full entities list : " + entitiesList); /*{ public static final Class [] entitiesClasses = new Class []{ }*/ Index: topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java diff -u topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java:1.13 topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java:1.14 --- topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java:1.13 Wed May 24 13:22:04 2006 +++ topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java Wed Jun 7 15:56:01 2006 @@ -25,19 +25,18 @@ * * @author Arnaud Thimel * - * @version $Revision: 1.13 $ + * @version $Revision: 1.14 $ * - * Mise a jour: $Date: 2006/05/24 13:22:04 $ par : $Author: thimel $ + * Mise a jour: $Date: 2006/06/07 15:56:01 $ par : $Author: thimel $ */ package org.codelutin.topia.generator; -import static org.codelutin.generator.Util.isNMultiplicity; -import static org.codelutin.topia.generator.GeneratorUtil.STEREOTYPE_ENTITY; - import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.Iterator; +import java.util.Set; import org.apache.commons.lang.StringUtils; import org.codelutin.generator.Generator; @@ -49,8 +48,6 @@ import org.codelutin.generator.models.object.ObjectModelInterface; import org.codelutin.generator.models.object.ObjectModelOperation; -import sun.util.logging.resources.logging; - /** * Classe regroupant divers méthodes utiles pour la génération des entités */ @@ -306,6 +303,45 @@ return type; } + private static Set numberTypes = new HashSet(); + static { + numberTypes.add("byte"); + numberTypes.add("java.lang.Byte"); + numberTypes.add("short"); + numberTypes.add("java.lang.Short"); + numberTypes.add("int"); + numberTypes.add("java.lang.Integer"); + numberTypes.add("long"); + numberTypes.add("java.lang.Long"); + numberTypes.add("float"); + numberTypes.add("java.lang.Float"); + numberTypes.add("double"); + numberTypes.add("java.lang.Double"); + } + + public static boolean isNumericType(ObjectModelAttribute attr) { + return numberTypes.contains(attr.getType()); + } + + private static Set textTypes = new HashSet(); + static { + textTypes.add("char"); + textTypes.add("java.lang.Char"); + textTypes.add("java.lang.String"); + } + + public static boolean isTextType(ObjectModelAttribute attr) { + return textTypes.contains(attr.getType()); + } + + public static boolean isDateType(ObjectModelAttribute attr) { + return "java.util.Date".equals(attr.getType()); + } + + public static boolean isBooleanType(ObjectModelAttribute attr) { + return ("boolean".equals(attr.getType()) || "java.lang.Boolean".equals(attr.getType())); + } + /** * Indique si la classe specifiee n'a aucune ou que des methodes abstraites * @param clazz l'instance de ObjectModelClass