Index: topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java:1.4 topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java:1.5 --- topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java:1.4 Tue Jan 10 19:55:08 2006 +++ topia2/src/java/org/codelutin/topia/generator/EntityInterfaceGenerator.java Wed Jan 11 17:57:53 2006 @@ -24,9 +24,9 @@ * Created: 12 déc. 2005 * * @author Arnaud Thimel -* @version $Revision: 1.4 $ +* @version $Revision: 1.5 $ * -* Mise a jour: $Date: 2006/01/10 19:55:08 $ +* Mise a jour: $Date: 2006/01/11 17:57:53 $ * par : $Author: thimel $ */ @@ -109,12 +109,13 @@ for (Iterator it = clazz.getAttributes().iterator(); it.hasNext();) { ObjectModelAttribute attr = (ObjectModelAttribute)it.next(); if (!Util.isNMultiplicity(attr)) { + if (!attr.hasAssociationClass()) { /*{ /** }*/ - if (GeneratorUtil.hasDocumentation(attr)) { + 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.capitalize(attr.getName())%>(<%=attr.getType()%> <%=Util.toLowerCaseFirstLetter(attr.getName())%>); @@ -122,25 +123,26 @@ }*/ /*{ /** }*/ - if (GeneratorUtil.hasDocumentation(attr)) { + if (GeneratorUtil.hasDocumentation(attr)) { /*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> }*/ - } + } /*{ * @return La valeur de l'attribut <%=attr.getName()%>. *) public <%=attr.getType()%> get<%=Util.capitalize(attr.getName())%>(); }*/ - if (attr.hasAssociationClass()) { + } else { + String assocAttrName = GeneratorUtil.getAssocAttrName(attr); /*{ /** * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> La valeur de l'attribut <%=attr.getAssociationClass().getName()%> à positionner. *) - public void set<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + public void set<%=Util.capitalize(assocAttrName)%>(<%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); /** * @return La valeur de l'attribut <%=attr.getAssociationClass().getName()%>. *) - public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(); + public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(assocAttrName)%>(); }*/ } @@ -198,55 +200,58 @@ }*/ } else { + String assocAttrName = GeneratorUtil.getAssocAttrName(attr); /*{ /** * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> L'instance de <%=attr.getAssociationClass().getName()%> à ajouter. *) - public void add<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + public void add<%=Util.capitalize(assocAttrName)%>(<%=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.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + public void addAll<%=Util.capitalize(assocAttrName)%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"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.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + public void set<%=Util.capitalize(assocAttrName)%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"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.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); + public void remove<%=Util.capitalize(assocAttrName)%>(<%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>); /** * Vide la Collection de <%=attr.getAssociationClass().getName()%>. *) - public void clear<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(); + public void clear<%=Util.capitalize(assocAttrName)%>(); }*/ } - + + if (!attr.hasAssociationClass()) { /*{ /** }*/ - if (GeneratorUtil.hasDocumentation(attr)) { + if (GeneratorUtil.hasDocumentation(attr)) { /*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> }*/ - } + } /*{ * @return La Liste de <%=attr.getName()%>. *) public <%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getType()%>> get<%=Util.capitalize(attr.getName())%>(); }*/ - if (attr.hasAssociationClass()) { + } else { + String assocAttrName = GeneratorUtil.getAssocAttrName(attr); /*{ /** * @return La liste des attributs <%=attr.getAssociationClass().getName()%>. *) - public <%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> get<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(); + public <%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> get<%=Util.capitalize(assocAttrName)%>(); /** * @return L'attribut <%=attr.getAssociationClass().getName()%> associé à la valeur value de l'attribut <%=attr.getName()%>. *) - public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getType()%> value); + public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(assocAttrName)%>(<%=attr.getType()%> value); }*/ } @@ -259,27 +264,14 @@ for (Iterator i = assoc.getParticipantsAttributes().iterator(); i.hasNext(); ) { ObjectModelAttribute attr = (ObjectModelAttribute) i.next(); if (attr != null) { -/*{ /** -}*/ - if (GeneratorUtil.hasDocumentation(attr)) { -/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> -}*/ + String type = attr.getType(); + String name = attr.getName(); + generateAssociationAccessors(output, name, type); + if (attr.getReverseAttribute() == null) { + type = ((ObjectModelClassifier)attr.getDeclaringElement()).getQualifiedName(); + name = attr.getDeclaringElement().getName(); + generateAssociationAccessors(output, name, type); } -/*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> La valeur de l'attribut <%=attr.getName()%> à positionner. - *) - public void set<%=Util.capitalize(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.capitalize(attr.getName())%>(); - -}*/ } } } @@ -315,4 +307,18 @@ }*/ } + private void generateAssociationAccessors(Writer output, String name, String type) throws IOException { +/*{ /** + * @param value La valeur de l'attribut <%=name%> à positionner. + *) + public void set<%=Util.capitalize(name)%>(<%=type%> value); + + /** + * @return La valeur de l'attribut <%=name%>. + *) + public <%=type%> get<%=Util.capitalize(name)%>(); + +}*/ + } + } //EntityGenerator Index: topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java diff -u topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java:1.2 topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java:1.3 --- topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java:1.2 Tue Jan 10 19:55:08 2006 +++ topia2/src/java/org/codelutin/topia/generator/GeneratorUtil.java Wed Jan 11 17:57:53 2006 @@ -25,9 +25,9 @@ * * @author Arnaud Thimel * - * @version $Revision: 1.2 $ + * @version $Revision: 1.3 $ * - * Mise a jour: $Date: 2006/01/10 19:55:08 $ par : $Author: thimel $ + * Mise a jour: $Date: 2006/01/11 17:57:53 $ par : $Author: thimel $ */ package org.codelutin.topia.generator; @@ -186,6 +186,14 @@ return tag; } + public static String getReverseDBName(ObjectModelAttribute attr) { + if (attr.getReverseAttribute() != null) { + return getDBName(attr.getReverseAttribute()); + } else { + return getDBName(attr) + "_id"; + } + } + /** * Renvoie le nom BD de l'élement passé en paramètre. Elle se base sur le * tag associé si il existe, sinon sur le nom de l'élément @@ -250,4 +258,12 @@ return (attr.getReverseAttribute() != null) && (attr.getDeclaringElement().equals(attr.getReverseAttribute().getDeclaringElement())) && (!Util.isFirstAttribute(attr)); } + public static String getAssocAttrName(ObjectModelAttribute attr) { + String typeName = attr.getType().substring(attr.getType().lastIndexOf(".") + 1); + if (attr.getName().equalsIgnoreCase(typeName)) { + return attr.getName() + GeneratorUtil.capitalize(attr.getAssociationClass().getName()); + } + return attr.getName(); + } + } // GeneratorUtil Index: topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java:1.6 topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java:1.7 --- topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java:1.6 Wed Jan 11 14:07:23 2006 +++ topia2/src/java/org/codelutin/topia/generator/EntityHibernateMappingGenerator.java Wed Jan 11 17:57:53 2006 @@ -24,10 +24,10 @@ * Created: 12 déc. 2005 * * @author Arnaud Thimel -* @version $Revision: 1.6 $ +* @version $Revision: 1.7 $ * -* Mise a jour: $Date: 2006/01/11 14:07:23 $ -* par : $Author: bpoussin $ +* Mise a jour: $Date: 2006/01/11 17:57:53 $ +* par : $Author: thimel $ */ package org.codelutin.topia.generator; @@ -46,6 +46,7 @@ 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; /** * FIXME mettre les attributs node="..." sur tous les attributs @@ -105,9 +106,9 @@ if (reverse != null && Util.isNMultiplicity(reverse)) { generateHibernateManyToOne(output, attr); } else if (reverse != null) { - generateHibernateOneToOne(output, attr, false); + generateHibernateOneToOne(output, attr); } else { - generateHibernateProperty(output, attr); + generateHibernateOneToOne(output, attr); } } else { generateHibernateProperty(output, attr); @@ -118,9 +119,9 @@ if (reverse != null && Util.isNMultiplicity(reverse)) { generateHibernateManyToMany(output, attr); } else if (reverse != null) { - generateHibernateOneToMany(output, attr, false); + generateHibernateOneToMany(output, attr); } else { - generateHibernateMany(output, attr); + generateHibernateOneToMany(output, attr); } } else { generateHibernateMany(output, attr); @@ -132,14 +133,27 @@ 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); - } - } + ObjectModelAttribute attr = (ObjectModelAttribute) i.next(); + if (attr != null) { + if (attr.getReverseAttribute() == null || !Util.isNMultiplicity(attr.getReverseAttribute())) { +/*{ <%=(attr.isComposite()?" cascade=\"delete\"":"")%>/> +}*/ + } else { +/*{ +}*/ + } + if (attr.getReverseAttribute() == null) { + String type = ((ObjectModelClassifier)attr.getDeclaringElement()).getQualifiedName(); + String name = Util.toLowerCaseFirstLetter(attr.getDeclaringElement().getName()); + if (!Util.isNMultiplicity(attr)) { +/*{ +}*/ + } else { +/*{ +}*/ + } + } + } } } @@ -164,7 +178,7 @@ private String getName(ObjectModelAttribute attr, boolean isAssoc) { String result = Util.toLowerCaseFirstLetter(attr.getName()); if (attr.hasAssociationClass() && !isAssoc) { - result += Util.capitalize(attr.getAssociationClass().getName()); + result = GeneratorUtil.getAssocAttrName(attr); } return result; } @@ -182,22 +196,22 @@ }*/ } - private void generateHibernateOneToOne(Writer output, ObjectModelAttribute attr, boolean isAssoc) throws IOException { -/*{ <%=(attr.isComposite()?" cascade=\"delete\"":"")%>/> + private void generateHibernateOneToOne(Writer output, ObjectModelAttribute attr) throws IOException { +/*{ <%=(attr.isComposite()?" cascade=\"delete\"":"")%>/> }*/ } - private void generateHibernateOneToMany(Writer output, ObjectModelAttribute attr, boolean isAssoc) throws IOException { - if (isAssoc && attr.getReverseAttribute() == null) { - // FIXME URGENT genere un nom d'attribut en fonction de la classe - // faire la meme chose sur l'entity (Interface, Abstract) - } else { -/*{ > - - + private void generateHibernateOneToMany(Writer output, ObjectModelAttribute attr) throws IOException { +// if (isAssoc && attr.getReverseAttribute() == null) { +// // FIXME URGENT genere un nom d'attribut en fonction de la classe +// // faire la meme chose sur l'entity (Interface, Abstract) +// } else { +/*{ > + + }*/ - } +// } } private void generateHibernateMany(Writer output, ObjectModelAttribute attr) throws IOException { @@ -218,7 +232,7 @@ // Dans le cas contraire, les modifications dans la relation ne seront // pas sauvegardées /*{ lazy="true"> - + }*/ Index: topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java:1.5 topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java:1.6 --- topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java:1.5 Tue Jan 10 19:55:08 2006 +++ topia2/src/java/org/codelutin/topia/generator/EntityAbstractGenerator.java Wed Jan 11 17:57:53 2006 @@ -24,9 +24,9 @@ * Created: 12 déc. 2005 * * @author Arnaud Thimel -* @version $Revision: 1.5 $ +* @version $Revision: 1.6 $ * -* Mise a jour: $Date: 2006/01/10 19:55:08 $ +* Mise a jour: $Date: 2006/01/11 17:57:53 $ * par : $Author: thimel $ */ @@ -138,6 +138,13 @@ /*{ <%=attr.getVisibility()%> <%=attr.getType()%> <%=Util.toLowerCaseFirstLetter(attr.getName())%>; }*/ + if (attr.getReverseAttribute() == null) { + String type = ((ObjectModelClassifier)attr.getDeclaringElement()).getQualifiedName(); + String name = attr.getDeclaringElement().getName(); +/*{ <%=attr.getVisibility()%> <%=type%> <%=Util.toLowerCaseFirstLetter(name)%>; + +}*/ + } } } } @@ -161,48 +168,35 @@ for (Iterator it = clazz.getAttributes().iterator(); it.hasNext();) { ObjectModelAttribute attr = (ObjectModelAttribute)it.next(); if (!Util.isNMultiplicity(attr)) { + if (!attr.hasAssociationClass()) { /*{ /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#set<%=Util.capitalize(attr.getName())%>(<%=attr.getType()%>) *) public void set<%=Util.capitalize(attr.getName())%>(<%=attr.getType()%> value) { -}*/ - if (!attr.hasAssociationClass()) { -/*{ this.<%=attr.getName()%> = value; -}*/ - } else { -/*{ this.<%=Util.toLowerCaseFirstLetter(attr.getName())%>.set<%=Util.capitalize(attr.getName())%>(value); -}*/ - } -/*{ } + this.<%=attr.getName()%> = value; + } /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(attr.getName())%>() *) public <%=attr.getType()%> get<%=Util.capitalize(attr.getName())%>() { -}*/ - if (!attr.hasAssociationClass()) { -/*{ return <%=attr.getName()%>; -}*/ - } else { -/*{ return <%=attr.getName()%>.get<%=Util.capitalize(attr.getName())%>(); -}*/ - } -/*{ + return <%=attr.getName()%>; } }*/ - if (attr.hasAssociationClass()) { + } else { + String assocAttrName = GeneratorUtil.getAssocAttrName(attr); /*{ /* (non-Javadoc) - * @see <%=clazz.getQualifiedName()%>#set<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%>) + * @see <%=clazz.getQualifiedName()%>#set<%=Util.capitalize(assocAttrName)%>(<%=attr.getAssociationClass().getQualifiedName()%>) *) - public void set<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> association) { + public void set<%=Util.capitalize(assocAttrName)%>(<%=attr.getAssociationClass().getQualifiedName()%> association) { this.<%=Util.toLowerCaseFirstLetter(attr.getName())%> = association; } /* (non-Javadoc) - * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>() + * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(assocAttrName)%>() *) - public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>() { + public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(assocAttrName)%>() { return <%=Util.toLowerCaseFirstLetter(attr.getName())%>; } @@ -233,8 +227,11 @@ /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#addAll<%=Util.capitalize(attr.getName())%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getType()%>>) *) - public void addAll<%=Util.capitalize(attr.getName())%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getType()%>> <%=Util.toLowerCaseFirstLetter(attr.getName())%>) { - for (<%=attr.getType()%> item : <%=Util.toLowerCaseFirstLetter(attr.getName())%>) { + public void addAll<%=Util.capitalize(attr.getName())%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getType()%>> values) { + if (values == null) { + return; + } + for (<%=attr.getType()%> item : values) { add<%=Util.capitalize(attr.getName())%>(item); } } @@ -270,14 +267,17 @@ * @see <%=clazz.getQualifiedName()%>#clear<%=Util.capitalize(attr.getName())%>() *) public void clear<%=Util.capitalize(attr.getName())%>() { + if (this.<%=attr.getName()%> == null) { + return; + } for (<%=attr.getType()%> item : this.<%=attr.getName()%>) { }*/ if (attr.getReverseAttribute() != null) { if (!Util.isNMultiplicity(attr.getReverseAttribute())) { -/*{ item.set<%=Util.capitalize(attr.getReverseAttribute().getName())%>(null); +/*{ item.set<%=Util.capitalize(attr.getReverseAttribute().getName())%>(null); }*/ } else { -/*{ item.get<%=Util.capitalize(attr.getReverseAttribute().getName())%>().remove(this); +/*{ item.get<%=Util.capitalize(attr.getReverseAttribute().getName())%>().remove(this); }*/ } } @@ -287,10 +287,11 @@ }*/ } else { + String assocAttrName = GeneratorUtil.getAssocAttrName(attr); /*{ /* (non-Javadoc) - * @see <%=clazz.getQualifiedName()%>#add<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%>) + * @see <%=clazz.getQualifiedName()%>#add<%=Util.capitalize(assocAttrName)%>(<%=attr.getAssociationClass().getQualifiedName()%>) *) - public void add<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> value) { + public void add<%=Util.capitalize(assocAttrName)%>(<%=attr.getAssociationClass().getQualifiedName()%> value) { if (this.<%=Util.toLowerCaseFirstLetter(attr.getName())%> == null) { this.<%=Util.toLowerCaseFirstLetter(attr.getName())%> = new ArrayList<<%=attr.getAssociationClass().getQualifiedName()%>>(); } @@ -303,26 +304,29 @@ } /* (non-Javadoc) - * @see <%=clazz.getQualifiedName()%>#addAll<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>>() + * @see <%=clazz.getQualifiedName()%>#addAll<%=Util.capitalize(assocAttrName)%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>>() *) - public void addAll<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> values) { + public void addAll<%=Util.capitalize(assocAttrName)%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> values) { + if (values == null) { + return; + } for (<%=attr.getAssociationClass().getQualifiedName()%> item : values) { - add<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(item); + add<%=Util.capitalize(assocAttrName)%>(item); } } /* (non-Javadoc) - * @see <%=clazz.getQualifiedName()%>#set<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>>() + * @see <%=clazz.getQualifiedName()%>#set<%=Util.capitalize(assocAttrName)%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>>() *) - public void set<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> values) { - clear<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(); - addAll<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(values); + public void set<%=Util.capitalize(assocAttrName)%>(<%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> values) { + clear<%=Util.capitalize(assocAttrName)%>(); + addAll<%=Util.capitalize(assocAttrName)%>(values); } /* (non-Javadoc) - * @see <%=clazz.getQualifiedName()%>#remove<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%>) + * @see <%=clazz.getQualifiedName()%>#remove<%=Util.capitalize(assocAttrName)%>(<%=attr.getAssociationClass().getQualifiedName()%>) *) - public void remove<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getAssociationClass().getQualifiedName()%> value) { + public void remove<%=Util.capitalize(assocAttrName)%>(<%=attr.getAssociationClass().getQualifiedName()%> value) { if ((this.<%=Util.toLowerCaseFirstLetter(attr.getName())%> == null) || (!this.<%=Util.toLowerCaseFirstLetter(attr.getName())%>.remove(value))) { throw new IllegalArgumentException("List does not contain given element"); } @@ -334,9 +338,12 @@ /*{ } /* (non-Javadoc) - * @see <%=clazz.getQualifiedName()%>#clear<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>() + * @see <%=clazz.getQualifiedName()%>#clear<%=Util.capitalize(assocAttrName)%>() *) - public void clear<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>() { + public void clear<%=Util.capitalize(assocAttrName)%>() { + if (this.<%=Util.toLowerCaseFirstLetter(attr.getName())%> == null) { + return; + } }*/ if (attr.getReverseAttribute() != null) { /*{ for (<%=attr.getAssociationClass().getQualifiedName()%> item : this.<%=Util.toLowerCaseFirstLetter(attr.getName())%>) { @@ -349,42 +356,28 @@ }*/ } - + if (!attr.hasAssociationClass()) { /*{ /* (non-Javadoc) * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(attr.getName())%>() *) public <%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getType()%>> get<%=Util.capitalize(attr.getName())%>() { -}*/ - if (!attr.hasAssociationClass()) { -/*{ return <%=attr.getName()%>; -}*/ - } else { -/*{ if (this.<%=Util.toLowerCaseFirstLetter(attr.getName())%> == null) { - return null; - } - List<<%=attr.getType()%>> results = new ArrayList<<%=attr.getType()%>>(this.<%=Util.toLowerCaseFirstLetter(attr.getName())%>.size()); - for (<%=attr.getAssociationClass().getQualifiedName()%> item : this.<%=Util.toLowerCaseFirstLetter(attr.getName())%>) { - results.add(item.get<%=Util.capitalize(attr.getName())%>()); - } - return results; -}*/ - } -/*{ } - + return <%=attr.getName()%>; + } }*/ - if (attr.hasAssociationClass()) { + } else { + String assocAttrName = GeneratorUtil.getAssocAttrName(attr); /*{ /* (non-Javadoc) - * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>() + * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(assocAttrName)%>() *) - public <%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> get<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>() { + public <%=(attr.hasStereotype(STEREOTYPE_ORDERED)?"List":"Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> get<%=Util.capitalize(assocAttrName)%>() { return <%=Util.toLowerCaseFirstLetter(attr.getName())%>; } /* (non-Javadoc) - * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getType()%>) + * @see <%=clazz.getQualifiedName()%>#get<%=Util.capitalize(assocAttrName)%>(<%=attr.getType()%>) *) - public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(attr.getName()) + Util.capitalize(attr.getAssociationClass().getName())%>(<%=attr.getType()%> value) { + public <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(assocAttrName)%>(<%=attr.getType()%> value) { if (value == null) { return null; } @@ -407,31 +400,14 @@ 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.capitalize(attr.getName())%>(<%=attr.getType()%> value) { - this.<%=Util.toLowerCaseFirstLetter(attr.getName())%> = value; - } - - /** -}*/ - if (GeneratorUtil.hasDocumentation(attr)) { -/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> -}*/ + String type = attr.getType(); + String name = attr.getName(); + generateAssociationAccessors(output, name, type); + if (attr.getReverseAttribute() == null) { + type = ((ObjectModelClassifier)attr.getDeclaringElement()).getQualifiedName(); + name = attr.getDeclaringElement().getName(); + generateAssociationAccessors(output, name, type); } -/*{ * @return La valeur de l'attribut <%=attr.getName()%>. - *) - public <%=attr.getType()%> get<%=Util.capitalize(attr.getName())%>() { - return <%=Util.toLowerCaseFirstLetter(attr.getName())%>; - } - -}*/ } } } @@ -463,4 +439,22 @@ }*/ } + private void generateAssociationAccessors(Writer output, String name, String type) throws IOException { +/*{ /** + * @param value La valeur de l'attribut <%=name%> à positionner. + *) + public void set<%=Util.capitalize(name)%>(<%=type%> value) { + this.<%=Util.toLowerCaseFirstLetter(name)%> = value; + } + + /** + * @return La valeur de l'attribut <%=name%>. + *) + public <%=type%> get<%=Util.capitalize(name)%>() { + return <%=Util.toLowerCaseFirstLetter(name)%>; + } + +}*/ + } + } //EntityAbstractGenerator