r1699 - branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator
Author: tchemit Date: 2009-12-14 03:09:58 +0100 (Mon, 14 Dec 2009) New Revision: 1699 Added: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractTransformer.java branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOTransformer.java Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/BeanGenerator.java branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractGenerator.java branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOGenerator.java branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperGenerator.java branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityAbstractGenerator.java branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityInterfaceGenerator.java branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/ObjectModelTransformerToJavaBean.java branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java Log: - fix deprecated method Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/BeanGenerator.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/BeanGenerator.java 2009-12-14 02:01:14 UTC (rev 1698) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/BeanGenerator.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -32,6 +32,7 @@ package org.nuiton.topia.generator; +import org.apache.commons.lang.StringUtils; import static org.nuiton.topia.generator.TopiaGeneratorUtil.TAG_ANNOTATION; import java.io.File; @@ -63,7 +64,7 @@ /** * DTO generator - * @deprecated @since 2.0.0 Use {@link org.nuiton.topia.transformer.BeanTransformer} template instead + * @deprecated @since 2.3.0 Use {@link org.nuiton.topia.generator.BeanTransformer} template instead */ @Deprecated public class BeanGenerator extends ObjectModelGenerator { @@ -372,7 +373,7 @@ attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); attrType = attr.getAssociationClass().getName(); } - String attrNameCapitalized = GeneratorUtil.capitalize(attrName); + String attrNameCapitalized = StringUtils.capitalize(attrName); int dot = attrType.lastIndexOf("."); if (dot>-1) { attrType = attrType.substring(dot + 1); @@ -406,7 +407,7 @@ attrName = GeneratorUtil.toLowerCaseFirstLetter(assocAttrName); attrType = attr.getAssociationClass().getName(); } - String attrNameCapitalized = GeneratorUtil.capitalize(attrName); + String attrNameCapitalized = StringUtils.capitalize(attrName); int dot = attrType.lastIndexOf("."); if (dot>-1) { attrType = attrType.substring(dot + 1); @@ -429,7 +430,7 @@ for (ObjectModelAttribute attr : multipleAttr) { String attrName = attr.getName(); - String attrNameCapitalized = GeneratorUtil.capitalize(attrName); + String attrNameCapitalized = StringUtils.capitalize(attrName); String attrType = attr.getType(); int dot = attrType.lastIndexOf("."); if (dot>-1) { @@ -460,7 +461,7 @@ for (ObjectModelAttribute attr : multipleAttr) { String attrName = attr.getName(); - String attrNameCapitalized = GeneratorUtil.capitalize(attrName); + String attrNameCapitalized = StringUtils.capitalize(attrName); String attrType = attr.getType(); int dot = attrType.lastIndexOf("."); if (dot>-1) { @@ -479,7 +480,7 @@ protected void generateRemoveChild(Writer output, List<ObjectModelAttribute> multipleAttr) throws IOException { for (ObjectModelAttribute attr : multipleAttr) { String attrName = attr.getName(); - String attrNameCapitalized = GeneratorUtil.capitalize(attrName); + String attrNameCapitalized = StringUtils.capitalize(attrName); String attrType = attr.getType(); int dot = attrType.lastIndexOf("."); if (dot>-1) { Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractGenerator.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractGenerator.java 2009-12-14 02:01:14 UTC (rev 1698) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractGenerator.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -42,6 +42,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang.StringUtils; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.ObjectModelGenerator; import org.nuiton.eugene.models.object.ObjectModelAssociationClass; @@ -60,7 +61,10 @@ * @author poussin * + * @deprecated since 2.3.0, prefer use the corresponding {@link org.nuiton.eugene.Transformer} : + * {@link DAOAbstractTransformer}. */ +@Deprecated public class DAOAbstractGenerator extends ObjectModelGenerator { @Override @@ -154,7 +158,7 @@ /*{ public void delete(E entity) throws TopiaException { }*/ - String modelName = GeneratorUtil.capitalize(model.getName()); + String modelName = StringUtils.capitalize(model.getName()); String providerFQN = getProperty("defaultPackage") + "." + modelName + "DAOHelper.getImplementationClass"; for (ObjectModelAttribute attr : clazz.getAttributes()) { String attrType = attr.getType(); Added: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractTransformer.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractTransformer.java (rev 0) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractTransformer.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -0,0 +1,502 @@ +package org.nuiton.topia.generator; + +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.GeneratorUtil; +import org.nuiton.eugene.Template; +import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.models.object.*; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; +import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.TopiaContextImplementor; +import org.nuiton.topia.persistence.TopiaDAO; +import org.nuiton.topia.persistence.TopiaDAOImpl; +import org.nuiton.util.StringUtil; + +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +/*{generator option: parentheses = false}*/ + +/*{generator option: writeString = +}*/ + +/** + * Created: 13 déc. 2009 + * + * @author Tony Chemit <chemit@codelutin.com> Copyright Code Lutin + * @version $Revision$ + * <p/> + * Mise a jour: $Date$ par : + * $Author: tchemit $ + * @since 2.3.0 + */ +public class DAOAbstractTransformer extends ObjectModelTransformerToJava { + + /** + * Logger + */ + private static final Log log = LogFactory.getLog(DAOAbstractTransformer.class); + + @Override + public void transformFromClass(ObjectModelClass clazz) { + if (!clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)) { + return; + } + + String clazzName = clazz.getName(); + String clazzFQN = clazz.getQualifiedName(); + + //FIXME can not add a generic class ? +// ObjectModelClass result = createAbstractClass(clazzName + "DAOAbstract2", clazz.getPackageName()); + ObjectModelClass result = createAbstractClass(clazzName + "DAOAbstract2<E extends " + clazzName + ">", clazz.getPackageName()); + // super class + + String extendClass = ""; + for (ObjectModelClass parent : clazz.getSuperclasses()) { + extendClass += parent.getQualifiedName(); + if (parent.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)) { + extendClass += "DAOImpl<E>"; + break; + } +// if (i.hasNext()) { +// extendClass += ", "; +// } + } + if (extendClass.length() == 0) { + addImport(result, TopiaDAOImpl.class); + extendClass += "TopiaDAOImpl<E>"; + + } + if (log.isInfoEnabled()) { + log.info("super class = "+extendClass); + } + setSuperClass(result, extendClass); + + addInterface(result,"TopiaDAO<E>"); + + // imports + + Collection<ObjectModelOperation> DAOoperations = getDAOOperations(clazz); + if (isCollectionNeeded(DAOoperations)) { + addImport(result, Collection.class); + } + if (isSetNeeded(DAOoperations)) { + addImport(result, Set.class); + } + addImport(result, List.class); + addImport(result, Arrays.class); + addImport(result, TopiaDAO.class); + addImport(result, TopiaException.class); + addImport(result, TopiaContextImplementor.class); + + boolean enableSecurity = ( + clazz.hasTagValue(TopiaGeneratorUtil.TAG_SECURITY_CREATE) || + clazz.hasTagValue(TopiaGeneratorUtil.TAG_SECURITY_LOAD) || + clazz.hasTagValue(TopiaGeneratorUtil.TAG_SECURITY_UPDATE) || + clazz.hasTagValue(TopiaGeneratorUtil.TAG_SECURITY_DELETE) + ); + + if (enableSecurity) { + addImport(result, ArrayList.class); + addImport(result, java.security.Permission.class); + addImport(result, "org.nuiton.topia.taas.entities.TaasAuthorizationImpl"); + addImport(result, "org.nuiton.topia.taas.jaas.TaasPermission"); + addImport(result, "org.nuiton.topia.taas.TaasUtil"); + addImport(result, TopiaDAO.class); + + //FIXME : how to do static imports ? +//import static org.nuiton.topia.taas.TaasUtil.CREATE; +//import static org.nuiton.topia.taas.TaasUtil.DELETE; +//import static org.nuiton.topia.taas.TaasUtil.LOAD; +//import static org.nuiton.topia.taas.TaasUtil.UPDATE; + } + + ObjectModelOperation op; + + // getEntityClass + + op = addOperation(result,"getEntityClass","Class<E>", ObjectModelModifier.PUBLIC); + setOperationBody(op,"" +/*{ + return (Class<E>)<%=clazzName%>.class; +}*/ + ); + + + generateDAOOperations(result, DAOoperations); + + // delete + + op = addOperation(result, "delete", "void", ObjectModelModifier.PUBLIC); + addException(op, TopiaException.class); + addParameter(op, "E", "entity"); + StringBuilder body = new StringBuilder(); + String modelName = StringUtils.capitalize(model.getName()); + String providerFQN = getOutputProperties().getProperty(Template.PROP_DEFAULT_PACKAGE) + "." + modelName + "DAOHelper.getImplementationClass"; + for (ObjectModelAttribute attr : clazz.getAttributes()) { + String attrType = attr.getType(); + String reverseAttrName = attr.getReverseAttributeName(); + ObjectModelAttribute reverse = attr.getReverseAttribute(); + if (!attr.hasAssociationClass() && reverse != null && reverse.isNavigable() + && GeneratorUtil.isNMultiplicity(attr) && GeneratorUtil.isNMultiplicity(reverse)) { + // On doit absolument supprimer pour les relations many-to-many + // le this de la collection de l'autre cote + + String attrDBName = TopiaGeneratorUtil.getDBName(attr); + String attrClassifierDBName = TopiaGeneratorUtil.getDBName(attr.getClassifier()); + String attrJoinTableName = TopiaGeneratorUtil.getManyToManyTableName(attr); + String attrReverseDBName = TopiaGeneratorUtil.getReverseDBName(attr); + body.append("" +/*{ + { + List<<%=attrType%>> list = getContext().getHibernate().createSQLQuery( + "SELECT main.topiaid " + + "from <%=attrClassifierDBName%> main, <%=attrJoinTableName%> secondary " + + "where main.topiaid=secondary.<%=attrDBName%>" + + " and secondary.<%=attrReverseDBName%>='" + entity.getTopiaId() + "'") + .addEntity("main", <%=providerFQN%>(<%=attrType%>.class)).list(); + for (<%=attrType%> item : list) { + item.remove<%=TopiaGeneratorUtil.capitalize(reverseAttrName)%>(entity); + } + } +}*/ + ); + } else if (!attr.hasAssociationClass() && reverse != null + && reverse.isNavigable() && !GeneratorUtil.isNMultiplicity(reverse)) { + // On doit mettre a null les attributs qui ont cet objet sur les + // autres entites en one-to-* + // TODO peut-etre qu'hibernate est capable de faire ca tout seul ? + // THIMEL: J'ai remplacé reverse.getName() par reverseAttrName sans certitude + body.append("" + /*{ + { + List<<%=attrType%>> list = getContext() + .getDAO(<%=attrType%>.class) + .findAllByProperties("<%=reverseAttrName%>", entity); + for (<%=attrType%> item : list) { + item.set<%=GeneratorUtil.capitalize(reverseAttrName)%>(null); +}*/ + ); + if(attr.isAggregate()){ + body.append("" +/*{ + item.delete(); +}*/ + ); + } + body.append("" +/*{ + } + } + }*/ + ); + + } + } + body.append("" +/*{ + super.delete(entity); +}*/ + ); + setOperationBody(op,body.toString()); + + + for (ObjectModelAttribute attr : clazz.getAttributes()) { + if (!attr.isNavigable()) { + continue; + } + String attrName = attr.getName(); + + if (!GeneratorUtil.isNMultiplicity(attr)) { + generateNoNMultiplicity(result, attr, false); + } else { + generateNMultiplicity(result, attr); + } + } + + if (clazz instanceof ObjectModelAssociationClass) { + ObjectModelAssociationClass assocClass = (ObjectModelAssociationClass)clazz; + for (ObjectModelAttribute attr : assocClass.getParticipantsAttributes()) { + if (attr != null) { + if (!GeneratorUtil.isNMultiplicity(attr)) { + generateNoNMultiplicity(result, attr, true); + } else { + generateNMultiplicity(result, attr); + } + } + } + } + + if(enableSecurity) { + + // getRequestPermission + + op = addOperation(result,"getRequestPermission","List<Permission>",ObjectModelModifier.PUBLIC); + setDocumentation(op,"Retourne les permissions a verifier pour l'acces a l'entite pour le service Taas"); + addException(op, TopiaException.class); + addParameter(op,String.class,"topiaId"); + addParameter(op,int.class,"actions"); + StringBuilder buffer = new StringBuilder(); + buffer.append("" +/*{ + List<Permission> resultPermissions = new ArrayList<Permission>(); + if ((actions & TaasUtil.CREATE) == TaasUtil.CREATE) { +}*/ + ); + buffer.append(generateSecurity(result, clazz, TopiaGeneratorUtil.TAG_SECURITY_CREATE)); + buffer.append("" +/*{ + } + if ((actions & TaasUtil.LOAD) == TaasUtil.LOAD) { +}*/ + ); + buffer.append(generateSecurity(result, clazz, TopiaGeneratorUtil.TAG_SECURITY_LOAD)); + buffer.append("" +/*{ + } + if ((actions & TaasUtil.UPDATE) == TaasUtil.UPDATE) { +}*/ + ); + buffer.append(generateSecurity(result, clazz, TopiaGeneratorUtil.TAG_SECURITY_UPDATE)); + buffer.append("" +/*{ + } + if ((actions & TaasUtil.DELETE) == TaasUtil.DELETE) { +}*/ + ); + buffer.append(generateSecurity(result, clazz, TopiaGeneratorUtil.TAG_SECURITY_DELETE)); + buffer.append("" +/*{ + } + return resultPermissions;}*/ + ); + + setOperationBody(op,buffer.toString()); + + // THIMEL : Le code suivant doit pouvoir être déplacé dans DAODelegator ? + + // getRequestPermission + + + op = addOperation(result,"getRequestPermission","List<Permission>",ObjectModelModifier.PROTECTED); + addParameter(op,String.class,"topiaId"); + addParameter(op,int.class,"actions"); + addParameter(op,String.class,"query"); + addParameter(op,Class.class,"daoClass"); + addException(op,TopiaException.class); + setDocumentation(op,"Retourne les permissions a verifier pour l'acces a l'entite pour le service Taas"); + setOperationBody(op,"" +/*{ TopiaContextImplementor context = getContext(); + List<String> result = context.find(query, "id", topiaId); + + List<Permission> resultPermissions = new ArrayList<Permission>(); + for (String topiaIdPermission : result) { + TopiaDAO dao = context.getDAO(daoClass); + List<Permission> permissions = dao.getRequestPermission(topiaIdPermission, actions); + if(permissions != null) { + resultPermissions.addAll(permissions); + } else { + TaasPermission permission = new TaasPermission(topiaIdPermission, actions); + resultPermissions.add(permission); + } + } + return resultPermissions;}*/ + ); + } + } + + /** + * Generation of DAO operations signatures from class. + * These operations are abstract and identified by <<dao>> stereotype in the model. + * The developper must defined these methods in the DAOImpl associated to this DAOAbstract. + * @param result + * @param operations operations to generate + */ + private void generateDAOOperations(ObjectModelClass result, Collection<ObjectModelOperation> operations) { + for (ObjectModelOperation op : operations) { + + //TODO: add to transformer cloneOperation + + ObjectModelOperation op2; + op2 = addOperation(result, op.getName(), op.getReturnType(), ObjectModelModifier.ABSTRACT, ObjectModelModifier.toValue(op.getVisibility())); +// setOperationBody(op2, " "); + setDocumentation(op2, op.getDocumentation()); + + // parameters + + for (ObjectModelParameter param : op.getParameters()) { + ObjectModelParameter param2 = addParameter(op2, param.getType(), param.getName()); + setDocumentation(param2, param.getDocumentation()); + } + + // exceptions + Set<String> exceptions = op.getExceptions(); + exceptions.add(TopiaException.class.getName()); + for (String exception : exceptions) { + addException(op2,exception); + } + } + } + + + private String generateSecurity(ObjectModelClass result, ObjectModelClass clazz, String securityTagName) { + StringBuilder buffer = new StringBuilder(); + + if (clazz.hasTagValue(securityTagName)) { + String security = clazz.getTagValue(securityTagName); + Pattern propertiesPattern = Pattern + .compile("((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)attribute\\.(?:([_a-z0-9][_a-zA-Z0-9]*))#(?:(create|load|update|delete))"); + String[] valuesSecurity = security.split(":"); + + for (String valueSecurity : valuesSecurity) { + Matcher matcher = propertiesPattern.matcher(valueSecurity); + matcher.find(); + // className is fully qualified name of class + String className = matcher.group(1); + className = StringUtil.substring(className, 0, -1); // remove ended + // . + // target is class, attribute or operation + String attributeName = matcher.group(2); + String actions = matcher.group(3).toUpperCase(); + + String query = ""; + String daoClass = ""; + if(className.equals(clazz.getQualifiedName())) { + query = "select " + attributeName + ".topiaId from " + clazz.getQualifiedName() + " where topiaId = :id"; + daoClass = clazz.getAttribute(attributeName).getClassifier().getQualifiedName(); + } else { + query = "select at.topiaId from " + className + " at inner join at." + attributeName + " cl where cl.topiaId = :id"; + daoClass = className; + } + buffer.append("" +/*{ + resultPermissions.addAll(getRequestPermission(topiaId, + <%=actions%>, + "<%=query%>", + <%=daoClass%>.class)); +}*/ + ); + } + } else { + buffer.append("" +/*{ return null;}*/ + ); + } + return buffer.toString(); + } + + protected void generateNoNMultiplicity(ObjectModelClass result, ObjectModelAttribute attr, boolean isAssoc) { + String attrName = attr.getName(); + String attrType = attr.getType(); + String propertyName = attrName; + if (!isAssoc && attr.hasAssociationClass()) { + propertyName = TopiaGeneratorUtil.toLowerCaseFirstLetter(attr.getAssociationClass().getName()) + "." + propertyName; + } + ObjectModelOperation op; + op = addOperation(result, "findBy" + StringUtils.capitalize(attrName), "E", ObjectModelModifier.PUBLIC); + addException(op, TopiaException.class); + addParameter(op, attrType, "v"); + setDocumentation(op, "Retourne le premier élément trouvé ayant comme valeur pour l'attribut "+ attrName + " le paramètre."); + setOperationBody(op,"" +/*{ + E result = findByProperty("<%=propertyName%>", v); + return result;}*/ + ); + + op = addOperation(result, "findAllBy" + StringUtils.capitalize(attrName), "E", ObjectModelModifier.PUBLIC); + addException(op, TopiaException.class); + addParameter(op, attrType, "v"); + setDocumentation(op, "Retourne le premier élément trouvé ayant comme valeur pour l'attribut" + attrName + " le paramètre."); + setOperationBody(op,"" +/*{ + E result = findByProperty("<%=propertyName%>", v); + return result;}*/ + ); + + if (attr.hasAssociationClass()) { + String assocClassName = attr.getAssociationClass().getName(); + String assocClassFQN = attr.getAssociationClass().getQualifiedName(); + op = addOperation(result, "findBy" + StringUtils.capitalize(assocClassName), "E", ObjectModelModifier.PUBLIC); + addException(op, TopiaException.class); + addParameter(op, assocClassFQN, "value"); + setDocumentation(op, "Retourne le premier élément trouvé ayant comme valeur pour l'attribut " + TopiaGeneratorUtil.toLowerCaseFirstLetter(assocClassName) + " le paramètre\n"); + setOperationBody(op, "" +/*{ + E result = findByProperty("<%=TopiaGeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>", value); + return result;}*/ + ); + + op = addOperation(result, "findAllBy" + StringUtils.capitalize(assocClassName), "List<E>", ObjectModelModifier.PUBLIC); + addException(op, TopiaException.class); + addParameter(op, assocClassFQN, "value"); + setDocumentation(op, "Retourne les éléments ayant comme valeur pour l'attribut " + TopiaGeneratorUtil.toLowerCaseFirstLetter(assocClassName) + " le paramètre." + ); + setOperationBody(op,"" +/*{ + List<E> result = findAllByProperty("<%=TopiaGeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>", value); + return result;}*/ + ); + } + } + + protected void generateNMultiplicity(ObjectModelClass result, ObjectModelAttribute attr) { + String attrName = attr.getName(); + String attrType = attr.getType(); + ObjectModelOperation op; + + op = addOperation(result, "findContains" + StringUtils.capitalize(attrName), "E", ObjectModelModifier.PUBLIC); + addException(op, TopiaException.class); + addParameter(op, attrType + "...", "v"); + setDocumentation(op, "Retourne le premier élément trouvé dont l'attribut " +attrName + " contient le paramètre." ); + setOperationBody(op,"" +/*{ + E result = findContainsProperties("<%=TopiaGeneratorUtil.toLowerCaseFirstLetter(attrName)%>", Arrays.asList(v)); + return result;}*/ + ); + + op = addOperation(result, "findAllContains" + StringUtils.capitalize(attrName), "List<E>", ObjectModelModifier.PUBLIC); + addException(op, TopiaException.class); + addParameter(op, attrType + "...", "v"); + setDocumentation(op, "Retourne les éléments trouvé dont l'attribut " + attrName + " contient le paramètre."); + setOperationBody(op, "" +/*{ + List<E> results = findAllContainsProperties("<%=TopiaGeneratorUtil.toLowerCaseFirstLetter(attrName)%>", Arrays.asList(v)); + return results;}*/ + ); + } + + private boolean isCollectionNeeded(Collection<ObjectModelOperation> operations) { + return isImportNeeded(operations, "Collection"); + } + + private boolean isSetNeeded(Collection<ObjectModelOperation> operations) { + return isImportNeeded(operations, "Set"); + } + + private boolean isImportNeeded(Collection<ObjectModelOperation> operations, String importName) { + for (ObjectModelOperation op : operations) { + if (op.getReturnType().contains(importName)) { + return true; + } + for (ObjectModelParameter param : op.getParameters()) { + if (param.getType().contains(importName)) { + return true; + } + } + } + return false; + } + + public static Collection<ObjectModelOperation> getDAOOperations(ObjectModelClass clazz) { + Collection<ObjectModelOperation> results = new ArrayList<ObjectModelOperation>(); + for (ObjectModelOperation op : clazz.getOperations()) { + if (op.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_DAO)) { + results.add(op); + } + } + return results; + } +} Property changes on: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOAbstractTransformer.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOGenerator.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOGenerator.java 2009-12-14 02:01:14 UTC (rev 1698) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOGenerator.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -39,6 +39,12 @@ import org.nuiton.eugene.ObjectModelGenerator; import org.nuiton.eugene.models.object.ObjectModelClass; +/** + * + * @deprecated since 2.3.0, prefer use the corresponding {@link org.nuiton.eugene.Transformer} : + * {@link DAOTransformer}. + */ +@Deprecated public class DAOGenerator extends ObjectModelGenerator { Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperGenerator.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperGenerator.java 2009-12-14 02:01:14 UTC (rev 1698) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperGenerator.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -38,6 +38,7 @@ import java.util.Iterator; import java.util.List; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.GeneratorUtil; @@ -53,8 +54,8 @@ * d'avoir facilement les types d'entités gérées par ce dao. * * @author poussin - * @deprecated since 2.0.0, prefer use the corresponding {@link org.nuiton.eugene.Transformer} : - * {@link org.nuiton.topia.generator.DAOHelperTransformer}. + * @deprecated since 2.3.0, prefer use the corresponding {@link org.nuiton.eugene.Transformer} : + * {@link DAOHelperTransformer}. */ @Deprecated public class DAOHelperGenerator extends ObjectModelGenerator { @@ -64,7 +65,7 @@ @Override public String getFilenameForModel(ObjectModel model) { - String modelName = GeneratorUtil.capitalize(model.getName()); + String modelName = StringUtils.capitalize(model.getName()); return (getProperty("defaultPackage") + ".").replace('.', File.separatorChar) @@ -83,7 +84,7 @@ /*{package <%=packageName%>; }*/ - String modelName = GeneratorUtil.capitalize(model.getName()); + String modelName = StringUtils.capitalize(model.getName()); String modelVersion = model.getVersion(); String daoHelperClazzName = modelName+"DAOHelper"; String entityEnumName = modelName+"EntityEnum"; Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java 2009-12-14 02:01:14 UTC (rev 1698) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOHelperTransformer.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -11,7 +11,6 @@ import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; import org.nuiton.topia.framework.TopiaContextImplementor; -import org.nuiton.topia.generator.TopiaGeneratorUtil; import org.nuiton.topia.persistence.TopiaDAO; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaEntityEnum; Added: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOTransformer.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOTransformer.java (rev 0) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOTransformer.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -0,0 +1,40 @@ +package org.nuiton.topia.generator; + +import org.nuiton.eugene.java.ObjectModelTransformerToJava; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl; + +/*{generator option: parentheses = false}*/ + +/*{generator option: writeString = +}*/ +/** + * Created: 13 déc. 2009 + * + * @author Tony Chemit <chemit@codelutin.com> Copyright Code Lutin + * @version $Revision$ + * <p/> + * Mise a jour: $Date$ par : + * $Author: tchemit $ + * @since 2.3.0 + */ +public class DAOTransformer extends ObjectModelTransformerToJava { + + @Override + public void transformFromClass(ObjectModelClass clazz) { + if (!clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)) { + return; + } + String clazzName = clazz.getName(); + String clazzFQN = clazz.getQualifiedName(); + ObjectModelClass result = createClass(clazzName + "DAO", clazz.getPackageName()); + setDocumentation(result,"/**\n" + + " * Cette classe etend le DAOImpl pour parametrer la classe avec le bon type\n" + + " * Cette classe est marque finale car l'heritage entre les DAO se fait\n" + + " * sur les DOAImpl, c-a-d que DAOAbstract peut etendre le DAOImpl\n" + + " */"); + setSuperClass(result,clazzFQN+"DAOImpl<"+clazzName+">"); + } + + +} Property changes on: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/DAOTransformer.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityAbstractGenerator.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityAbstractGenerator.java 2009-12-14 02:01:14 UTC (rev 1698) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityAbstractGenerator.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -32,6 +32,7 @@ package org.nuiton.topia.generator; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.ObjectModelGenerator; @@ -113,7 +114,7 @@ } /*{ /** - * Implantation POJO pour l'entité {@link <%=TopiaGeneratorUtil.capitalize(clazzFQN)%>}. + * Implantation POJO pour l'entité {@link <%=StringUtils.capitalize(clazzFQN)%>}. }*/ { String dbName = clazz.getTagValue(TopiaGeneratorUtil.TAG_DB_NAME); @@ -335,7 +336,7 @@ if (attr.referenceClassifier() && attr.getClassifier().hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)) { if (attr.isAggregate()) { String attrName = attr.getName(); - String getterName = "get" + GeneratorUtil.capitalize(attrName); + String getterName = "get" + StringUtils.capitalize(attrName); if (GeneratorUtil.isNMultiplicity(attr)) { /*{ tmp.addAll(<%=getterName%>()); }*/ @@ -369,7 +370,7 @@ if (attr.referenceClassifier() && attr.getClassifier().hasStereotype(TopiaGeneratorUtil.STEREOTYPE_ENTITY)) { if (attr.isComposite()) { String attrName = attr.getName(); - String getterName = "get" + GeneratorUtil.capitalize(attrName); + String getterName = "get" + StringUtils.capitalize(attrName); if (GeneratorUtil.isNMultiplicity(attr)) { /*{ if (<%=getterName%>() != null) { tmp.addAll(<%=getterName%>()); @@ -444,10 +445,10 @@ if (!GeneratorUtil.isNMultiplicity(attr)) { if (!attr.hasAssociationClass()) { /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#set<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%>) + * @see <%=clazzFQN%>#set<%=StringUtils.capitalize(attrName)%>(<%=attrType%>) *) @Override - public void set<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%> value) { + public void set<%=StringUtils.capitalize(attrName)%>(<%=attrType%> value) { <%=attrType%> _oldValue = this.<%=attrName%>; fireOnPreWrite("<%=attrName%>", _oldValue, value); this.<%=attrName%> = value; @@ -455,10 +456,10 @@ } /* (non-Javadoc) - * @see <%=clazzFQN%>#get<%=GeneratorUtil.capitalize(attrName)%>() + * @see <%=clazzFQN%>#get<%=StringUtils.capitalize(attrName)%>() *) @Override - public <%=attrType%> get<%=GeneratorUtil.capitalize(attrName)%>() { + public <%=attrType%> get<%=StringUtils.capitalize(attrName)%>() { fireOnPreRead("<%=attrName%>", <%=attrName%>); <%=attrType%> result = this.<%=attrName%>; fireOnPostRead("<%=attrName%>", <%=attrName%>); @@ -470,10 +471,10 @@ String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); String assocClassFQN = TopiaGeneratorUtil.getSimpleName(attr.getAssociationClass().getQualifiedName()); /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#set<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=assocClassFQN%>) + * @see <%=clazzFQN%>#set<%=StringUtils.capitalize(assocAttrName)%>(<%=assocClassFQN%>) *) @Override - public void set<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=assocClassFQN%> association) { + public void set<%=StringUtils.capitalize(assocAttrName)%>(<%=assocClassFQN%> association) { <%=assocClassFQN%> _oldValue = this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>; fireOnPreWrite("<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>", _oldValue, association); this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%> = association; @@ -481,10 +482,10 @@ } /* (non-Javadoc) - * @see <%=clazzFQN%>#get<%=GeneratorUtil.capitalize(assocAttrName)%>() + * @see <%=clazzFQN%>#get<%=StringUtils.capitalize(assocAttrName)%>() *) @Override - public <%=assocClassFQN%> get<%=GeneratorUtil.capitalize(assocAttrName)%>() { + public <%=assocClassFQN%> get<%=StringUtils.capitalize(assocAttrName)%>() { return <%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>; } @@ -495,10 +496,10 @@ String collectionObject = TopiaGeneratorUtil.getSimpleName(TopiaGeneratorUtil.getNMultiplicityObjectType(attr)); if (!attr.hasAssociationClass()) { //Méthodes remplacées par des accesseurs sur les classes d'assoc /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#add<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%>) + * @see <%=clazzFQN%>#add<%=StringUtils.capitalize(attrName)%>(<%=attrType%>) *) @Override - public void add<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%> <%=attrName%>) { + public void add<%=StringUtils.capitalize(attrName)%>(<%=attrType%> <%=attrName%>) { fireOnPreWrite("<%=attrName%>", null, <%=attrName%>); if (this.<%=attrName%> == null) { this.<%=attrName%> = new <%=collectionObject%><<%=attrType%>>(); @@ -509,13 +510,13 @@ String reverseAttrName = reverse.getName(); String reverseAttrType = TopiaGeneratorUtil.getSimpleName(reverse.getType()); if (!GeneratorUtil.isNMultiplicity(reverse)) { -/*{ <%=attrName%>.set<%=GeneratorUtil.capitalize(reverseAttrName)%>(this); +/*{ <%=attrName%>.set<%=StringUtils.capitalize(reverseAttrName)%>(this); }*/ } else { -/*{ if (<%=attrName%>.get<%=GeneratorUtil.capitalize(reverseAttrName)%>() == null) { - <%=attrName%>.set<%=GeneratorUtil.capitalize(reverseAttrName)%>(new <%=collectionObject%><<%=reverseAttrType%>>()); +/*{ if (<%=attrName%>.get<%=StringUtils.capitalize(reverseAttrName)%>() == null) { + <%=attrName%>.set<%=StringUtils.capitalize(reverseAttrName)%>(new <%=collectionObject%><<%=reverseAttrType%>>()); } - <%=attrName%>.get<%=GeneratorUtil.capitalize(reverseAttrName)%>().add(this); + <%=attrName%>.get<%=StringUtils.capitalize(reverseAttrName)%>().add(this); }*/ } } @@ -524,35 +525,35 @@ } /* (non-Javadoc) - * @see <%=clazzFQN%>#addAll<%=GeneratorUtil.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>>) + * @see <%=clazzFQN%>#addAll<%=StringUtils.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>>) *) @Override - public void addAll<%=GeneratorUtil.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>> values) { + public void addAll<%=StringUtils.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>> values) { if (values == null) { return; } for (<%=attrType%> item : values) { - add<%=GeneratorUtil.capitalize(attrName)%>(item); + add<%=StringUtils.capitalize(attrName)%>(item); } } }*/ if (!isPrimitiveType(attr) && !isDateType(attr)) { /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#get<%=GeneratorUtil.capitalize(attrName)%>ByTopiaId(String) + * @see <%=clazzFQN%>#get<%=StringUtils.capitalize(attrName)%>ByTopiaId(String) *) @Override - public <%=attrType%> get<%=GeneratorUtil.capitalize(attrName)%>ByTopiaId(String topiaId) { + public <%=attrType%> get<%=StringUtils.capitalize(attrName)%>ByTopiaId(String topiaId) { return org.nuiton.topia.persistence.util.TopiaEntityHelper.getEntityByTopiaId(<%=attrName%>, topiaId); } }*/ } /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#set<%=GeneratorUtil.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>>) + * @see <%=clazzFQN%>#set<%=StringUtils.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>>) *) @Override - public void set<%=GeneratorUtil.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>> values) { + public void set<%=StringUtils.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>> values) { <%=collectionInterface%><<%=attrType%>> _oldValue = <%=attrName%>; fireOnPreWrite("<%=attrName%>", _oldValue, values); <%=attrName%> = values; @@ -560,10 +561,10 @@ } /* (non-Javadoc) - * @see <%=clazzFQN%>#remove<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%>) + * @see <%=clazzFQN%>#remove<%=StringUtils.capitalize(attrName)%>(<%=attrType%>) *) @Override - public void remove<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%> value) { + public void remove<%=StringUtils.capitalize(attrName)%>(<%=attrType%> value) { fireOnPreWrite("<%=attrName%>", value, null); if ((this.<%=attrName%> == null) || (!this.<%=attrName%>.remove(value))) { throw new IllegalArgumentException("List does not contain given element"); @@ -573,10 +574,10 @@ hasUnidirectionalRelationOnAbstractType(attr, model))) { String reverseAttrName = reverse.getName(); if (!GeneratorUtil.isNMultiplicity(reverse)) { -/*{ value.set<%=GeneratorUtil.capitalize(reverseAttrName)%>(null); +/*{ value.set<%=StringUtils.capitalize(reverseAttrName)%>(null); }*/ } else { -/*{ value.get<%=GeneratorUtil.capitalize(reverseAttrName)%>().remove(this); +/*{ value.get<%=StringUtils.capitalize(reverseAttrName)%>().remove(this); }*/ } } @@ -584,10 +585,10 @@ } /* (non-Javadoc) - * @see <%=clazzFQN%>#clear<%=GeneratorUtil.capitalize(attrName)%>() + * @see <%=clazzFQN%>#clear<%=StringUtils.capitalize(attrName)%>() *) @Override - public void clear<%=GeneratorUtil.capitalize(attrName)%>() { + public void clear<%=StringUtils.capitalize(attrName)%>() { if (this.<%=attrName%> == null) { return; } @@ -598,10 +599,10 @@ /*{ for (<%=attrType%> item : this.<%=attrName%>) { }*/ if (!GeneratorUtil.isNMultiplicity(reverse)) { -/*{ item.set<%=GeneratorUtil.capitalize(reverseAttrName)%>(null); +/*{ item.set<%=StringUtils.capitalize(reverseAttrName)%>(null); }*/ } else { -/*{ item.get<%=GeneratorUtil.capitalize(reverseAttrName)%>().remove(this); +/*{ item.get<%=StringUtils.capitalize(reverseAttrName)%>().remove(this); }*/ } /*{ } @@ -618,10 +619,10 @@ String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); String assocClassFQN = TopiaGeneratorUtil.getSimpleName(attr.getAssociationClass().getQualifiedName()); /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#add<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=assocClassFQN%>) + * @see <%=clazzFQN%>#add<%=StringUtils.capitalize(assocAttrName)%>(<%=assocClassFQN%>) *) @Override - public void add<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=assocClassFQN%> value) { + public void add<%=StringUtils.capitalize(assocAttrName)%>(<%=assocClassFQN%> value) { fireOnPreWrite("<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>", null, value); if (this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%> == null) { this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%> = new <%=collectionObject%><<%=assocClassFQN%>>(); @@ -630,7 +631,7 @@ if (reverse != null && (reverse.isNavigable() || hasUnidirectionalRelationOnAbstractType(attr, model))) { String reverseAttrName = reverse.getName(); -/*{ value.set<%=GeneratorUtil.capitalize(reverseAttrName)%>(this); +/*{ value.set<%=StringUtils.capitalize(reverseAttrName)%>(this); }*/ } /*{ this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>.add(value); @@ -640,35 +641,35 @@ if (!isPrimitiveType(attr) && !isDateType(attr)) { /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#get<%=GeneratorUtil.capitalize(attrName)%>ByTopiaId(String) + * @see <%=clazzFQN%>#get<%=StringUtils.capitalize(attrName)%>ByTopiaId(String) *) @Override - public <%=assocClassFQN%> get<%=GeneratorUtil.capitalize(assocAttrName)%>ByTopiaId(String topiaId) { + public <%=assocClassFQN%> get<%=StringUtils.capitalize(assocAttrName)%>ByTopiaId(String topiaId) { return org.nuiton.topia.persistence.util.TopiaEntityHelper.getEntityByTopiaId(<%=assocAttrName%>, topiaId); } }*/ } /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#addAll<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>>() + * @see <%=clazzFQN%>#addAll<%=StringUtils.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>>() *) @Override - public void addAll<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>> values) { + public void addAll<%=StringUtils.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>> values) { if (values == null) { return; } for (<%=assocClassFQN%> item : values) { - add<%=GeneratorUtil.capitalize(assocAttrName)%>(item); + add<%=StringUtils.capitalize(assocAttrName)%>(item); } } /* (non-Javadoc) - * @see <%=clazzFQN%>#set<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>>() + * @see <%=clazzFQN%>#set<%=StringUtils.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>>() *) @Override - public void set<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>> values) { -// clear<%=GeneratorUtil.capitalize(assocAttrName)%>(); -// addAll<%=GeneratorUtil.capitalize(assocAttrName)%>(values); + public void set<%=StringUtils.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>> values) { +// clear<%=StringUtils.capitalize(assocAttrName)%>(); +// addAll<%=StringUtils.capitalize(assocAttrName)%>(values); // FIXME <%=collectionInterface%><<%=assocClassFQN%>> _oldValue = <%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>; fireOnPreWrite("<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>", _oldValue, values); @@ -677,10 +678,10 @@ } /* (non-Javadoc) - * @see <%=clazzFQN%>#remove<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=assocClassFQN%>) + * @see <%=clazzFQN%>#remove<%=StringUtils.capitalize(assocAttrName)%>(<%=assocClassFQN%>) *) @Override - public void remove<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=assocClassFQN%> value) { + public void remove<%=StringUtils.capitalize(assocAttrName)%>(<%=assocClassFQN%> value) { fireOnPreWrite("<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>", value, null); if ((this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%> == null) || (!this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>.remove(value))) { throw new IllegalArgumentException("List does not contain given element"); @@ -689,17 +690,17 @@ if (reverse != null && (reverse.isNavigable() || hasUnidirectionalRelationOnAbstractType(attr, model))) { String reverseAttrName = reverse.getName(); -/*{ value.set<%=GeneratorUtil.capitalize(reverseAttrName)%>(null); +/*{ value.set<%=StringUtils.capitalize(reverseAttrName)%>(null); }*/ } /*{ fireOnPostWrite("<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>", this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>.size()+1, value, null); } /* (non-Javadoc) - * @see <%=clazzFQN%>#clear<%=GeneratorUtil.capitalize(assocAttrName)%>() + * @see <%=clazzFQN%>#clear<%=StringUtils.capitalize(assocAttrName)%>() *) @Override - public void clear<%=GeneratorUtil.capitalize(assocAttrName)%>() { + public void clear<%=StringUtils.capitalize(assocAttrName)%>() { if (this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%> == null) { return; } @@ -708,7 +709,7 @@ hasUnidirectionalRelationOnAbstractType(attr, model))) { String reverseAttrName = reverse.getName(); /*{ for (<%=assocClassFQN%> item : this.<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>) { - item.set<%=GeneratorUtil.capitalize(reverseAttrName)%>(null); + item.set<%=StringUtils.capitalize(reverseAttrName)%>(null); } }*/ } @@ -722,18 +723,18 @@ } if (!attr.hasAssociationClass()) { /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#get<%=GeneratorUtil.capitalize(attrName)%>() + * @see <%=clazzFQN%>#get<%=StringUtils.capitalize(attrName)%>() *) @Override - public <%=collectionInterface%><<%=attrType%>> get<%=GeneratorUtil.capitalize(attrName)%>() { + public <%=collectionInterface%><<%=attrType%>> get<%=StringUtils.capitalize(attrName)%>() { return <%=attrName%>; } /* (non-Javadoc) - * @see <%=clazzFQN%>#size<%=GeneratorUtil.capitalize(attrName)%>() + * @see <%=clazzFQN%>#size<%=StringUtils.capitalize(attrName)%>() *) @Override - public int size<%=GeneratorUtil.capitalize(attrName)%>() { + public int size<%=StringUtils.capitalize(attrName)%>() { if (<%=attrName%> == null) { return 0; } @@ -741,11 +742,11 @@ } /* (non-Javadoc) - * @see <%=clazzFQN%>#is<%=GeneratorUtil.capitalize(attrName)%>Empty() + * @see <%=clazzFQN%>#is<%=StringUtils.capitalize(attrName)%>Empty() *) @Override - public boolean is<%=GeneratorUtil.capitalize(attrName)%>Empty() { - int size = size<%=GeneratorUtil.capitalize(attrName)%>(); + public boolean is<%=StringUtils.capitalize(attrName)%>Empty() { + int size = size<%=StringUtils.capitalize(attrName)%>(); return size == 0; } @@ -754,23 +755,23 @@ String assocAttrName = TopiaGeneratorUtil.getAssocAttrName(attr); String assocClassFQN = TopiaGeneratorUtil.getSimpleName(attr.getAssociationClass().getQualifiedName()); /*{ /* (non-Javadoc) - * @see <%=clazzFQN%>#get<%=GeneratorUtil.capitalize(assocAttrName)%>() + * @see <%=clazzFQN%>#get<%=StringUtils.capitalize(assocAttrName)%>() *) @Override - public <%=collectionInterface%><<%=assocClassFQN%>> get<%=GeneratorUtil.capitalize(assocAttrName)%>() { + public <%=collectionInterface%><<%=assocClassFQN%>> get<%=StringUtils.capitalize(assocAttrName)%>() { return <%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>; } /* (non-Javadoc) - * @see <%=clazzFQN%>#get<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=attrType%>) + * @see <%=clazzFQN%>#get<%=StringUtils.capitalize(assocAttrName)%>(<%=attrType%>) *) @Override - public <%=assocClassFQN%> get<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=attrType%> value) { + public <%=assocClassFQN%> get<%=StringUtils.capitalize(assocAttrName)%>(<%=attrType%> value) { if (value == null || <%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%> == null) { return null; } for (<%=assocClassFQN%> item : <%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%>) { - if (value.equals(item.get<%=GeneratorUtil.capitalize(attrName)%>())) { + if (value.equals(item.get<%=StringUtils.capitalize(attrName)%>())) { return item; } } @@ -778,10 +779,10 @@ } /* (non-Javadoc) - * @see <%=clazzFQN%>#size<%=GeneratorUtil.capitalize(assocAttrName)%>() + * @see <%=clazzFQN%>#size<%=StringUtils.capitalize(assocAttrName)%>() *) @Override - public int size<%=GeneratorUtil.capitalize(assocAttrName)%>() { + public int size<%=StringUtils.capitalize(assocAttrName)%>() { if (<%=GeneratorUtil.toLowerCaseFirstLetter(assocAttrName)%> == null) { return 0; } @@ -789,11 +790,11 @@ } /* (non-Javadoc) - * @see <%=clazzFQN%>#is<%=GeneratorUtil.capitalize(assocAttrName)%>Empty() + * @see <%=clazzFQN%>#is<%=StringUtils.capitalize(assocAttrName)%>Empty() *) @Override - public boolean is<%=GeneratorUtil.capitalize(assocAttrName)%>Empty() { - int size = size<%=GeneratorUtil.capitalize(assocAttrName)%>(); + public boolean is<%=StringUtils.capitalize(assocAttrName)%>Empty() { + int size = size<%=StringUtils.capitalize(assocAttrName)%>(); return size == 0; } @@ -863,7 +864,7 @@ * @param value La valeur de l'attribut <%=name%> à positionner. *) @Override - public void set<%=GeneratorUtil.capitalize(name)%>(<%=type%> value) { + public void set<%=StringUtils.capitalize(name)%>(<%=type%> value) { <%=type%> _oldValue = this.<%=GeneratorUtil.toLowerCaseFirstLetter(name)%>; fireOnPreWrite("<%=name%>", _oldValue, value); this.<%=GeneratorUtil.toLowerCaseFirstLetter(name)%> = value; @@ -874,7 +875,7 @@ * @return La valeur de l'attribut <%=name%>. *) @Override - public <%=type%> get<%=GeneratorUtil.capitalize(name)%>() { + public <%=type%> get<%=StringUtils.capitalize(name)%>() { return <%=GeneratorUtil.toLowerCaseFirstLetter(name)%>; } Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityInterfaceGenerator.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityInterfaceGenerator.java 2009-12-14 02:01:14 UTC (rev 1698) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityInterfaceGenerator.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -59,11 +59,12 @@ import java.util.List; import java.util.Set; +import org.apache.commons.lang.StringUtils; + public class EntityInterfaceGenerator extends ObjectModelGenerator { /** Logger for this class */ - private static final Log log = LogFactory - .getLog(EntityInterfaceGenerator.class); + private static final Log log = LogFactory.getLog(EntityInterfaceGenerator.class); @Override public String getFilenameForClass(ObjectModelClass clazz) { @@ -243,7 +244,7 @@ } /*{ * @param <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%> La valeur de l'attribut <%=attrName%> à positionner. *) - public void set<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); + public void set<%=StringUtils.capitalize(attrName)%>(<%=attrType%> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); }*/ /*{ /** @@ -254,7 +255,7 @@ } /*{ * @return La valeur de l'attribut <%=attrName%>. *) - public <%=attrType%> get<%=GeneratorUtil.capitalize(attrName)%>(); + public <%=attrType%> get<%=StringUtils.capitalize(attrName)%>(); }*/ } else { @@ -267,7 +268,7 @@ } /*{ * @param <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%> L'instance de <%=attrName%> à ajouter. *) - public void add<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); + public void add<%=StringUtils.capitalize(attrName)%>(<%=attrType%> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); /** }*/ @@ -277,7 +278,7 @@ } /*{ * @param <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%> Les instances de <%=attrName%> à ajouter. *) - public void addAll<%=GeneratorUtil.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); + public void addAll<%=StringUtils.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); /** }*/ @@ -287,7 +288,7 @@ } /*{ * @param <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%> La Collection de <%=attrName%> à positionner. *) - public void set<%=GeneratorUtil.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); + public void set<%=StringUtils.capitalize(attrName)%>(<%=collectionInterface%><<%=attrType%>> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); /** }*/ @@ -297,7 +298,7 @@ } /*{ * @param <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%> L'instance de <%=attrName%> à retirer. *) - public void remove<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); + public void remove<%=StringUtils.capitalize(attrName)%>(<%=attrType%> <%=GeneratorUtil.toLowerCaseFirstLetter(attrName)%>); /** }*/ @@ -307,7 +308,7 @@ } /*{ * Vide la Collection de <%=attrName%>. *) - public void clear<%=GeneratorUtil.capitalize(attrName)%>(); + public void clear<%=StringUtils.capitalize(attrName)%>(); }*/ @@ -319,7 +320,7 @@ } /*{ * @return La Liste de <%=attrName%>. *) - public <%=collectionInterface%><<%=attrType%>> get<%=GeneratorUtil.capitalize(attrName)%>(); + public <%=collectionInterface%><<%=attrType%>> get<%=StringUtils.capitalize(attrName)%>(); }*/ if (!isPrimitiveType(attr) && !isDateType(attr)) { @@ -331,19 +332,19 @@ * * @return l'attribut recherché, ou <code>null</code> s'il n'existe pas. *) - public <%=attrType%> get<%=GeneratorUtil.capitalize(attrName)%>ByTopiaId(String topiaId); + public <%=attrType%> get<%=StringUtils.capitalize(attrName)%>ByTopiaId(String topiaId); }*/ } /*{ /** * @return Le nombre d'éléments de la collection <%=attrName%>. *) - public int size<%=GeneratorUtil.capitalize(attrName)%>(); + public int size<%=StringUtils.capitalize(attrName)%>(); /** * @return <code>true</code> si la collection <%=attrName%> est vide. *) - public boolean is<%=GeneratorUtil.capitalize(attrName)%>Empty(); + public boolean is<%=StringUtils.capitalize(attrName)%>Empty(); }*/ @@ -356,12 +357,12 @@ /*{ /** * @param <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%> La valeur de l'attribut <%=assocClassName%> à positionner. *) - public void set<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=assocClassFQN%> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); + public void set<%=StringUtils.capitalize(assocAttrName)%>(<%=assocClassFQN%> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); /** * @return La valeur de l'attribut <%=assocClassName%>. *) - public <%=assocClassFQN%> get<%=GeneratorUtil.capitalize(assocAttrName)%>(); + public <%=assocClassFQN%> get<%=StringUtils.capitalize(assocAttrName)%>(); }*/ } else { @@ -369,32 +370,32 @@ /*{ /** * @param <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%> L'instance de <%=assocClassName%> à ajouter. *) - public void add<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=assocClassFQN%> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); + public void add<%=StringUtils.capitalize(assocAttrName)%>(<%=assocClassFQN%> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); /** * @param <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%> Les instances de <%=assocClassName%> à ajouter. *) - public void addAll<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); + public void addAll<%=StringUtils.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); /** * @param <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%> La Collection de <%=assocClassName%> à positionner. *) - public void set<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); + public void set<%=StringUtils.capitalize(assocAttrName)%>(<%=collectionInterface%><<%=assocClassFQN%>> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); /** * @param <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%> L'instance de <%=assocClassName%> à retirer. *) - public void remove<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=assocClassFQN%> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); + public void remove<%=StringUtils.capitalize(assocAttrName)%>(<%=assocClassFQN%> <%=GeneratorUtil.toLowerCaseFirstLetter(assocClassName)%>); /** * Vide la Collection de <%=assocClassName%>. *) - public void clear<%=GeneratorUtil.capitalize(assocAttrName)%>(); + public void clear<%=StringUtils.capitalize(assocAttrName)%>(); /** * @return La liste des attributs <%=assocClassName%>. *) - public <%=collectionInterface%><<%=assocClassFQN%>> get<%=GeneratorUtil.capitalize(assocAttrName)%>(); + public <%=collectionInterface%><<%=assocClassFQN%>> get<%=StringUtils.capitalize(assocAttrName)%>(); }*/ if (!isPrimitiveType(attr) && !isDateType(attr)) { /*{ @@ -405,24 +406,24 @@ * * @return l'attribut recherché, ou <code>null</code> s'il n'existe pas. *) - public <%=assocClassFQN%> get<%=GeneratorUtil.capitalize(assocAttrName)%>ByTopiaId(String topiaId); + public <%=assocClassFQN%> get<%=StringUtils.capitalize(assocAttrName)%>ByTopiaId(String topiaId); }*/ } /*{ /** * @return L'attribut <%=assocClassName%> associé à la valeur <code>value</code> de l'attribut <%=attrName%>. *) - public <%=assocClassFQN%> get<%=GeneratorUtil.capitalize(assocAttrName)%>(<%=attrType%> value); + public <%=assocClassFQN%> get<%=StringUtils.capitalize(assocAttrName)%>(<%=attrType%> value); /** * @return Le nombre d'éléments de la collection <%=attrName%>. *) - public int size<%=GeneratorUtil.capitalize(assocAttrName)%>(); + public int size<%=StringUtils.capitalize(assocAttrName)%>(); /** * @return <code>true</code> si la collection <%=assocAttrName%> est vide. *) - public boolean is<%=GeneratorUtil.capitalize(assocAttrName)%>Empty(); + public boolean is<%=StringUtils.capitalize(assocAttrName)%>Empty(); }*/ } @@ -500,12 +501,12 @@ /*{ /** * @param value La valeur de l'attribut <%=attrName%> à positionner. *) - public void set<%=GeneratorUtil.capitalize(attrName)%>(<%=attrType%> value); + public void set<%=StringUtils.capitalize(attrName)%>(<%=attrType%> value); /** * @return La valeur de l'attribut <%=attrName%>. *) - public <%=attrType%> get<%=GeneratorUtil.capitalize(attrName)%>(); + public <%=attrType%> get<%=StringUtils.capitalize(attrName)%>(); }*/ } Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/ObjectModelTransformerToJavaBean.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/ObjectModelTransformerToJavaBean.java 2009-12-14 02:01:14 UTC (rev 1698) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/ObjectModelTransformerToJavaBean.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -56,7 +56,7 @@ return; } - ObjectModelClass resultClass = null; + ObjectModelClass resultClass; if (clazz.hasStereotype(TopiaGeneratorUtil.STEREOTYPE_BEAN)) { resultClass = createAbstractClass(clazz.getName(), clazz.getPackageName()); } else { @@ -75,8 +75,7 @@ } // Add interfaces from inputModel - for (Iterator<ObjectModelInterface> i = clazz.getInterfaces().iterator(); i.hasNext();) { - ObjectModelClassifier parentInterface = i.next(); + for (ObjectModelInterface parentInterface : clazz.getInterfaces()) { addInterface(resultClass, parentInterface.getQualifiedName()); } Modified: branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java =================================================================== --- branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2009-12-14 02:01:14 UTC (rev 1698) +++ branches/from2.2.2-eugene2-beta/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2009-12-14 02:09:58 UTC (rev 1699) @@ -153,23 +153,23 @@ return packageName; } - /** - * @see GeneratorUtil#hasDocumentation - * @deprecated - */ - @Deprecated - public static boolean hasDocumentation(ObjectModelElement element) { - return notEmpty(element.getDocumentation()); - } +// /** +// * @see GeneratorUtil#hasDocumentation +// * @deprecated +// */ +// @Deprecated +// public static boolean hasDocumentation(ObjectModelElement element) { +// return notEmpty(element.getDocumentation()); +// } - /** - * @see GeneratorUtil#notEmpty - * @deprecated - */ - @Deprecated - public static boolean notEmpty(String s) { - return (s != null && !"".equals(s)); - } +// /** +// * @see GeneratorUtil#notEmpty +// * @deprecated +// */ +// @Deprecated +// public static boolean notEmpty(String s) { +// return (s != null && !"".equals(s)); +// } /** * Renvoie l'interface DAO associée à la classe passée en paramètre @@ -367,27 +367,27 @@ return findTagValue(TAG_COPYRIGHT, null, model); } - /** - * @see GeneratorUtil#findTagValue - * @deprecated - */ - @Deprecated - public static String findTagValue(String tagName, - ObjectModelElement element, Model model) { - if (element == null) { - if (model != null) { - if (notEmpty(model.getTagValue(tagName))) { - return model.getTagValue(tagName); - } - } - return null; - } - if (notEmpty(element.getTagValue(tagName))) { - return element.getTagValue(tagName); - } - //On va chercher sur l'element declarant - return findTagValue(tagName, element.getDeclaringElement(), model); - } +// /** +// * @see GeneratorUtil#findTagValue +// * @deprecated +// */ +// @Deprecated +// public static String findTagValue(String tagName, +// ObjectModelElement element, Model model) { +// if (element == null) { +// if (model != null) { +// if (notEmpty(model.getTagValue(tagName))) { +// return model.getTagValue(tagName); +// } +// } +// return null; +// } +// if (notEmpty(element.getTagValue(tagName))) { +// return element.getTagValue(tagName); +// } +// //On va chercher sur l'element declarant +// return findTagValue(tagName, element.getDeclaringElement(), model); +// } public static <Type extends ObjectModelElement> Collection<Type> getElementsWithStereotype( Collection<Type> elements, String... stereotypes) {
participants (1)
-
tchemit@users.nuiton.org