Index: topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java:1.2 topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java:1.3 --- topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java:1.2 Wed Jan 4 13:21:51 2006 +++ topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java Fri Jan 6 18:38:34 2006 @@ -24,10 +24,10 @@ * Created: 12 déc. 2005 * * @author Arnaud Thimel -* @version $Revision: 1.2 $ +* @version $Revision: 1.3 $ * -* Mise a jour: $Date: 2006/01/04 13:21:51 $ -* par : $Author: bpoussin $ +* Mise a jour: $Date: 2006/01/06 18:38:34 $ +* par : $Author: thimel $ */ package org.codelutin.topia.generator; @@ -44,6 +44,7 @@ import org.codelutin.generator.Generator; import org.codelutin.generator.ObjectModelGenerator; import org.codelutin.generator.Util; +import org.codelutin.generator.models.object.ObjectModelAssociationClass; import org.codelutin.generator.models.object.ObjectModelAttribute; import org.codelutin.generator.models.object.ObjectModelClass; import org.codelutin.generator.models.object.ObjectModelClassifier; @@ -100,7 +101,7 @@ extendClass += ", "; } - /*{<%=extendClass%>org.codelutin.topia.persistence.TopiaEntity { +/*{<%=extendClass%>org.codelutin.topia.persistence.TopiaEntity { }*/ for (Iterator it = clazz.getAttributes().iterator(); it.hasNext();) { @@ -127,97 +128,184 @@ public <%=attr.getType()%> get<%=Util.toUpperCaseFirstLetter(attr.getName())%>(); }*/ - } else { + if (attr.hasAssociationClass()) { /*{ /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> La valeur de l'attribut <%=attr.getAssociationClass().getName()%> à positionner. + *) + public void set<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + + /** + * @return La valeur de l'attribut <%=attr.getAssociationClass().getName()%>. + *) + public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(); + }*/ - if (GeneratorUtil.hasDocumentation(attr)) { + } + } else { //NMultiplicity + if (!attr.hasAssociationClass()) { //Méthodes remplacées par des add/set sur les classes d'assoc +/*{ /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { /*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> }*/ - } + } /*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> L'instance de <%=attr.getName()%> à ajouter. *) public void add<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%> <%=Util.toLowerCaseFirstLetter(attr.getName())%>); /** }*/ - if (GeneratorUtil.hasDocumentation(attr)) { + if (GeneratorUtil.hasDocumentation(attr)) { /*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> }*/ - } + } /*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> Les instances de <%=attr.getName()%> à ajouter. *) public void addAll<%=Util.toUpperCaseFirstLetter(attr.getName())%>(Collection<<%=attr.getType()%>> <%=Util.toLowerCaseFirstLetter(attr.getName())%>); /** }*/ - if (GeneratorUtil.hasDocumentation(attr)) { + if (GeneratorUtil.hasDocumentation(attr)) { /*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> }*/ - } + } /*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> La Collection de <%=attr.getName()%> à positionner. *) public void set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(Collection<<%=attr.getType()%>> <%=Util.toLowerCaseFirstLetter(attr.getName())%>); /** }*/ - if (GeneratorUtil.hasDocumentation(attr)) { + if (GeneratorUtil.hasDocumentation(attr)) { /*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> }*/ - } + } /*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> L'instance de <%=attr.getName()%> à retirer. *) public void remove<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%> <%=Util.toLowerCaseFirstLetter(attr.getName())%>); /** }*/ - if (GeneratorUtil.hasDocumentation(attr)) { + if (GeneratorUtil.hasDocumentation(attr)) { /*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> }*/ - } + } /*{ * Vide la Collection de <%=attr.getName()%>. *) public void clear<%=Util.toUpperCaseFirstLetter(attr.getName())%>(); +}*/ + } else { +/*{ /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> L'instance de <%=attr.getAssociationClass().getName()%> à ajouter. + *) + public void add<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> Les instances de <%=attr.getAssociationClass().getName()%> à ajouter. + *) + public void addAll<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(Collection<<%=attr.getAssociationClass().getQualifiedName()%>> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + + /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> La Collection de <%=attr.getAssociationClass().getName()%> à positionner. + *) + public void set<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(Collection<<%=attr.getAssociationClass().getQualifiedName()%>> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + + /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> L'instance de <%=attr.getAssociationClass().getName()%> à retirer. + *) + public void remove<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + + /** + * Vide la Collection de <%=attr.getAssociationClass().getName()%>. + *) + public void clear<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(); + +}*/ + } + +/*{ /** }*/ if (GeneratorUtil.hasDocumentation(attr)) { /*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> }*/ } -/*{ * @return La List de <%=attr.getName()%>. +/*{ * @return La Liste de <%=attr.getName()%>. *) public List<<%=attr.getType()%>> get<%=Util.toUpperCaseFirstLetter(attr.getName())%>(); }*/ + if (attr.hasAssociationClass()) { +/*{ /** + * @return La liste des attributs <%=attr.getAssociationClass().getName()%>. + *) + public Collection<<%=attr.getAssociationClass().getQualifiedName()%>> get<%=Util.capitalize(attr.getAssociationClass().getName())%>(); + + /** + * @return L'attribut <%=attr.getAssociationClass().getName()%> associé à la valeur value de l'attribut <%=attr.getName()%>. + *) + public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getType()%> value); + +}*/ + } } - } - + } + + //Méthodes d'accès aux attributs d'une classe d'associations + if (clazz instanceof ObjectModelAssociationClass) { + ObjectModelAssociationClass assoc = (ObjectModelAssociationClass)clazz; + for (Iterator i = assoc.getParticipantsAttributes().iterator(); i.hasNext(); ) { + ObjectModelAttribute attr = (ObjectModelAttribute) i.next(); + if (attr != null) { +/*{ /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> La valeur de l'attribut <%=attr.getName()%> à positionner. + *) + public void set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%> <%=Util.toLowerCaseFirstLetter(attr.getName())%>); + + /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @return La valeur de l'attribut <%=attr.getName()%>. + *) + public <%=attr.getType()%> get<%=Util.toUpperCaseFirstLetter(attr.getName())%>(); + +}*/ + } + } + } + for (Iterator it = clazz.getOperations().iterator(); it.hasNext();) { ObjectModelOperation op = (ObjectModelOperation)it.next(); - /*{ /** - }*/ +/*{ /** +}*/ if (GeneratorUtil.hasDocumentation(op)) { - /*{ * <%=op.getName()%> : <%=op.getDocumentation()%> - }*/ +/*{ * <%=op.getName()%> : <%=op.getDocumentation()%> +}*/ } Collection params = (Collection)op.getParameters(); for(ObjectModelParameter param : params) { if(log.isTraceEnabled()) {log.trace("Param" + param);} - /*{ * @param <%=param.getName()%> <%=param.getDocumentation()%> - }*/ +/*{ * @param <%=param.getName()%> <%=param.getDocumentation()%> + }*/ } - /*{ - *) - <%=op.getVisibility()%> <%=op.getReturnType()%> <%=op.getName()%>(}*/ +/*{ *) + <%=op.getVisibility()%> <%=op.getReturnType()%> <%=op.getName()%>(}*/ String vir = ""; for(ObjectModelParameter param : params){ if(log.isTraceEnabled()) {log.trace("Param" + param + " vir" + vir);} - /*{<%=vir%><%=param.getType()%> <%=param.getName()%>}*/ +/*{<%=vir%><%=param.getType()%> <%=param.getName()%>}*/ vir = ", "; } - /*{); +/*{); - }*/ +}*/ } /*{} //<%=clazz.getName()%> Index: topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java:1.2 topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java:1.3 --- topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java:1.2 Wed Jan 4 13:21:51 2006 +++ topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java Fri Jan 6 18:38:34 2006 @@ -24,10 +24,10 @@ * Created: 12 déc. 2005 * * @author Arnaud Thimel -* @version $Revision: 1.2 $ +* @version $Revision: 1.3 $ * -* Mise a jour: $Date: 2006/01/04 13:21:51 $ -* par : $Author: bpoussin $ +* Mise a jour: $Date: 2006/01/06 18:38:34 $ +* par : $Author: thimel $ */ package org.codelutin.topia.generator; @@ -43,6 +43,7 @@ import org.codelutin.generator.Generator; import org.codelutin.generator.ObjectModelGenerator; import org.codelutin.generator.Util; +import org.codelutin.generator.models.object.ObjectModelAssociationClass; import org.codelutin.generator.models.object.ObjectModelAttribute; import org.codelutin.generator.models.object.ObjectModelClass; @@ -84,7 +85,7 @@ ObjectModelClass superClass = (ObjectModelClass)clazz.getSuperclasses().iterator().next(); String superClassname = superClass.getQualifiedName(); log.debug("superClass for " + clazz.getQualifiedName() + " is " + superClassname); -/*{ +/*{ }*/ } else { /*{ @@ -104,7 +105,7 @@ if (reverse != null && Util.isNMultiplicity(reverse)) { generateHibernateManyToOne(output, attr); } else if (reverse != null) { - generateHibernateOneToOne(output, attr); + generateHibernateOneToOne(output, attr, false); } else { generateHibernateProperty(output, attr); } @@ -117,7 +118,7 @@ if (reverse != null && Util.isNMultiplicity(reverse)) { generateHibernateManyToMany(output, attr); } else if (reverse != null) { - generateHibernateOneToMany(output, attr); + generateHibernateOneToMany(output, attr, false); } else { generateHibernateMany(output, attr); } @@ -126,47 +127,80 @@ } } } -/*{ + + //Attributs pour les classes d'association + if (clazz instanceof ObjectModelAssociationClass) { + ObjectModelAssociationClass assoc = (ObjectModelAssociationClass)clazz; + for (Iterator i = assoc.getParticipantsAttributes().iterator(); i.hasNext(); ) { + ObjectModelAttribute attr = (ObjectModelAttribute) i.next(); + if (attr != null) { + if (!Util.isNMultiplicity(attr)) { + generateHibernateOneToOne(output, attr, true); + } else { + generateHibernateOneToMany(output, attr, true); + } + } + } + + } + +/*{ }*/ if (haveSuper) { -/*{ +/*{ }*/ } else { -/*{ +/*{ }*/ } /*{ }*/ } + private String getName(ObjectModelAttribute attr) { + return getName(attr, false); + } + + private String getName(ObjectModelAttribute attr, boolean isAssoc) { + return ((attr.hasAssociationClass() && !isAssoc) ? Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName()) : attr.getName()); + } + + private String getType(ObjectModelAttribute attr) { + return getType(attr, false); + } + + private String getType(ObjectModelAttribute attr, boolean isAssoc) { + return ((attr.hasAssociationClass() && !isAssoc) ? Util.toLowerCaseFirstLetter(attr.getAssociationClass().getQualifiedName()) : attr.getType()); + } + private void generateHibernateProperty(Writer output, ObjectModelAttribute attr) throws IOException { -/*{ /> +/*{ /> }*/ } - private void generateHibernateOneToOne(Writer output, ObjectModelAttribute attr) throws IOException { -/*{ /> + private void generateHibernateOneToOne(Writer output, ObjectModelAttribute attr, boolean isAssoc) throws IOException { +/*{ /> }*/ } - private void generateHibernateOneToMany(Writer output, ObjectModelAttribute attr) throws IOException { -/*{ + private void generateHibernateOneToMany(Writer output, ObjectModelAttribute attr, boolean isAssoc) throws IOException { +/*{ - + }*/ } private void generateHibernateMany(Writer output, ObjectModelAttribute attr) throws IOException { -/*{ +/*{ - + }*/ } private void generateHibernateManyToOne(Writer output, ObjectModelAttribute attr) throws IOException { -/*{ +/*{ }*/ } @@ -174,9 +208,9 @@ // On ne met le inverse="true" uniquement pour un seul coté de la relation. // Dans le cas contraire, les modifications dans la relation ne seront // pas sauvegardées -/*{ lazy="true"> +/*{ lazy="true"> - + }*/ } Index: topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java:1.3 topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java:1.4 --- topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java:1.3 Thu Jan 5 04:50:47 2006 +++ topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java Fri Jan 6 18:38:34 2006 @@ -24,10 +24,10 @@ * Created: 12 déc. 2005 * * @author Arnaud Thimel -* @version $Revision: 1.3 $ +* @version $Revision: 1.4 $ * -* Mise a jour: $Date: 2006/01/05 04:50:47 $ -* par : $Author: bpoussin $ +* Mise a jour: $Date: 2006/01/06 18:38:34 $ +* par : $Author: thimel $ */ package org.codelutin.topia.generator; @@ -40,6 +40,7 @@ import org.codelutin.generator.Generator; import org.codelutin.generator.ObjectModelGenerator; import org.codelutin.generator.Util; +import org.codelutin.generator.models.object.ObjectModelAssociationClass; import org.codelutin.generator.models.object.ObjectModelAttribute; import org.codelutin.generator.models.object.ObjectModelClass; import org.codelutin.generator.models.object.ObjectModelClassifier; @@ -88,7 +89,7 @@ if (extendClass.length() == 0) { extendClass += "org.codelutin.topia.persistence.TopiaEntityAbstract"; } - + /*{<%=extendClass%> implements Serializable, <%=clazz.getQualifiedName()%> { }*/ @@ -104,13 +105,38 @@ *) }*/ if (!Util.isNMultiplicity(attr)) { + if (!attr.hasAssociationClass()) { /*{ <%=attr.getVisibility()%> <%=attr.getType()%> <%=attr.getName()%>; }*/ + } else { +/*{ <%=attr.getVisibility()%> <%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>; + +}*/ + } } else { + if (!attr.hasAssociationClass()) { /*{ <%=attr.getVisibility()%> List<<%=attr.getType()%>> <%=attr.getName()%>; }*/ + } else { +/*{ <%=attr.getVisibility()%> List<<%=attr.getAssociationClass().getQualifiedName()%>> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>; + +}*/ + } + } + } + + //Déclaration des attributs d'une classe d'associations + if (clazz instanceof ObjectModelAssociationClass) { + ObjectModelAssociationClass assoc = (ObjectModelAssociationClass)clazz; + for (Iterator i = assoc.getParticipantsAttributes().iterator(); i.hasNext(); ) { + ObjectModelAttribute attr = (ObjectModelAttribute) i.next(); + if (attr != null) { +/*{ <%=attr.getVisibility()%> <%=attr.getType()%> <%=Util.toLowerCaseFirstLetter(attr.getName())%>; + +}*/ + } } } @@ -123,7 +149,7 @@ public void update() throws TopiaException { ((TopiaContextImplementor)getTopiaContext()).getDAO(<%=clazz.getName()%>.class).update(this); } - + public void delete() throws TopiaException { ((TopiaContextImplementor)getTopiaContext()).getDAO(<%=clazz.getName()%>.class).delete(this); } @@ -136,19 +162,51 @@ /*{ /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%>) *) - public void set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%> <%=attr.getName()%>) { - this.<%=attr.getName()%> = <%=attr.getName()%>; - } + public void set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%> value) { +}*/ + if (!attr.hasAssociationClass()) { +/*{ this.<%=attr.getName()%> = value; +}*/ + } else { +/*{ this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>.set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(value); +}*/ + } +/*{ } /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#get<%=Util.toUpperCaseFirstLetter(attr.getName())%>() *) public <%=attr.getType()%> get<%=Util.toUpperCaseFirstLetter(attr.getName())%>() { - return <%=attr.getName()%>; +}*/ + if (!attr.hasAssociationClass()) { +/*{ return <%=attr.getName()%>; +}*/ + } else { +/*{ return this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>.get<%=Util.toUpperCaseFirstLetter(attr.getName())%>(); +}*/ + } +/*{ } + +}*/ + if (attr.hasAssociationClass()) { +/*{ /* (non-Javadoc) + * @see <%=clazz.getQualifiedName()%>#set<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%>) + *) + public void set<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> association) { + this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> = association; + } + + /* (non-Javadoc) + * @see <%=clazz.getQualifiedName()%>#get<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>() + *) + public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>() { + return <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>; } }*/ - } else { + } + } else { //NMultiplicity + if (!attr.hasAssociationClass()) { //Méthodes remplacées par des accesseurs sur les classes d'assoc /*{ /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#add<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%>) *) @@ -157,15 +215,15 @@ this.<%=attr.getName()%> = new ArrayList<<%=attr.getType()%>>(); } }*/ - if (attr.getReverseAttribute() != null) { - if (!Util.isNMultiplicity(attr.getReverseAttribute())) { + if (attr.getReverseAttribute() != null) { + if (!Util.isNMultiplicity(attr.getReverseAttribute())) { /*{ <%=attr.getName()%>.set<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>(this); }*/ - } else { + } else { /*{ <%=attr.getName()%>.get<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>().add(this); }*/ + } } - } /*{ this.<%=attr.getName()%>.add(<%=attr.getName()%>); } @@ -181,28 +239,28 @@ /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(Collection<<%=attr.getType()%>>) *) - public void set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(Collection<<%=attr.getType()%>> v) { + public void set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(Collection<<%=attr.getType()%>> values) { clear<%=Util.toUpperCaseFirstLetter(attr.getName())%>(); - addAll<%=Util.toUpperCaseFirstLetter(attr.getName())%>(v); + addAll<%=Util.toUpperCaseFirstLetter(attr.getName())%>(values); } /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#remove<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%>) *) - public void remove<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%> v) { - if ((this.<%=attr.getName()%> == null) || (!this.<%=attr.getName()%>.remove(v))) { + public void remove<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%> value) { + if ((this.<%=attr.getName()%> == null) || (!this.<%=attr.getName()%>.remove(value))) { throw new IllegalArgumentException("List does not contain given element"); } }*/ - if (attr.getReverseAttribute() != null) { - if (!Util.isNMultiplicity(attr.getReverseAttribute())) { -/*{ v.set<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>(null); + if (attr.getReverseAttribute() != null) { + if (!Util.isNMultiplicity(attr.getReverseAttribute())) { +/*{ value.set<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>(null); }*/ - } else { -/*{ v.get<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>().remove(this); + } else { +/*{ value.get<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>().remove(this); }*/ + } } - } /*{ } /* (non-Javadoc) @@ -210,23 +268,171 @@ *) public void clear<%=Util.toUpperCaseFirstLetter(attr.getName())%>() { for (<%=attr.getType()%> item : this.<%=attr.getName()%>) { - remove<%=Util.toUpperCaseFirstLetter(attr.getName())%>(item); +}*/ + if (attr.getReverseAttribute() != null) { + if (!Util.isNMultiplicity(attr.getReverseAttribute())) { +/*{ item.set<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>(null); +}*/ + } else { +/*{ item.get<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>().remove(this); +}*/ + } + } +/*{ } + this.<%=attr.getName()%>.clear(); + } + +}*/ + } else { +/*{ /* (non-Javadoc) + * @see <%=clazz.getQualifiedName()%>#add<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%>) + *) + public void add<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> value) { + if (this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> == null) { + this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> = new ArrayList<<%=attr.getAssociationClass().getQualifiedName()%>>(); + } +}*/ + if (attr.getReverseAttribute() != null) { +/*{ value.set<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>(this); +}*/ + } +/*{ this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>.add(value); + } + + /* (non-Javadoc) + * @see <%=clazz.getQualifiedName()%>#addAll<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(Collection<<%=attr.getAssociationClass().getQualifiedName()%>>() + *) + public void addAll<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(Collection<<%=attr.getAssociationClass().getQualifiedName()%>> values) { + for (<%=attr.getAssociationClass().getQualifiedName()%> item : values) { + add<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(item); } } /* (non-Javadoc) + * @see <%=clazz.getQualifiedName()%>#set<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(Collection<<%=attr.getAssociationClass().getQualifiedName()%>>() + *) + public void set<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(Collection<<%=attr.getAssociationClass().getQualifiedName()%>> values) { + clear<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(); + addAll<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(values); + } + + /* (non-Javadoc) + * @see <%=clazz.getQualifiedName()%>#remove<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%>) + *) + public void remove<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> value) { + if ((this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> == null) || (!this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>.remove(value))) { + throw new IllegalArgumentException("List does not contain given element"); + } +}*/ + if (attr.getReverseAttribute() != null) { +/*{ value.set<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>(null); +}*/ + } +/*{ } + + /* (non-Javadoc) + * @see <%=clazz.getQualifiedName()%>#clear<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>() + *) + public void clear<%=Util.toUpperCaseFirstLetter(attr.getAssociationClass().getName())%>() { +}*/ + if (attr.getReverseAttribute() != null) { +/*{ for (<%=attr.getAssociationClass().getQualifiedName()%> item : this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>) { + item.set<%=Util.toUpperCaseFirstLetter(attr.getReverseAttribute().getName())%>(null); + } +}*/ + } +/*{ this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>.clear(); + } + +}*/ + } + +/*{ /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#get<%=Util.toUpperCaseFirstLetter(attr.getName())%>() *) public List<<%=attr.getType()%>> get<%=Util.toUpperCaseFirstLetter(attr.getName())%>() { - return <%=attr.getName()%>; +}*/ + if (!attr.hasAssociationClass()) { +/*{ return <%=attr.getName()%>; +}*/ + } else { +/*{ if (this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> == null) { + return null; + } + List<<%=attr.getType()%>> results = new ArrayList<<%=attr.getType()%>>(this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>.size()); + for (<%=attr.getAssociationClass().getQualifiedName()%> item : this.<%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>) { + results.add(item.get<%=Util.toUpperCaseFirstLetter(attr.getName())%>()); + } + return results; +}*/ + } +/*{ } + +}*/ + if (attr.hasAssociationClass()) { +/*{ /* (non-Javadoc) + * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(attr.getAssociationClass().getName())%>() + *) + public Collection<<%=attr.getAssociationClass().getQualifiedName()%>> get<%=Util.capitalize(attr.getAssociationClass().getName())%>() { + return <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>; + } + + /* (non-Javadoc) + * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getType()%>) + *) + public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getType()%> value) { + if (value == null) { + return null; + } + for (<%=attr.getAssociationClass().getQualifiedName()%> item : <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>) { + if (value.equals(item.get<%=Util.capitalize(attr.getName())%>())) { + return item; + } + } + return null; } }*/ + } } } -/*{ - /* (non-Javadoc) + //Méthodes d'accès aux attributs d'une classe d'associations + if (clazz instanceof ObjectModelAssociationClass) { + ObjectModelAssociationClass assoc = (ObjectModelAssociationClass)clazz; + for (Iterator i = assoc.getParticipantsAttributes().iterator(); i.hasNext(); ) { + ObjectModelAttribute attr = (ObjectModelAttribute) i.next(); + if (attr != null) { +/*{ /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @param value La valeur de l'attribut <%=attr.getName()%> à positionner. + *) + public void set<%=Util.toUpperCaseFirstLetter(attr.getName())%>(<%=attr.getType()%> value) { + this.<%=Util.toLowerCaseFirstLetter(attr.getName())%> = value; + } + + /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @return La valeur de l'attribut <%=attr.getName()%>. + *) + public <%=attr.getType()%> get<%=Util.toUpperCaseFirstLetter(attr.getName())%>() { + return <%=Util.toLowerCaseFirstLetter(attr.getName())%>; + } + +}*/ + } + } + } + +/*{ /* (non-Javadoc) * @see java.lang.Object#toString() *) public String toString() { @@ -248,9 +454,8 @@ /*{ toString(); return result; } -}*/ -/*{} //<%=clazz.getName()%>Abstract +} //<%=clazz.getName()%>Abstract }*/ }