Index: topia2/src/java/org/codelutin/topia/generator/ServiceInterfaceGenerator.java diff -u topia2/src/java/org/codelutin/topia/generator/ServiceInterfaceGenerator.java:1.4 topia2/src/java/org/codelutin/topia/generator/ServiceInterfaceGenerator.java:1.5 --- topia2/src/java/org/codelutin/topia/generator/ServiceInterfaceGenerator.java:1.4 Thu Jul 5 09:50:19 2007 +++ topia2/src/java/org/codelutin/topia/generator/ServiceInterfaceGenerator.java Tue Jul 17 15:58:55 2007 @@ -20,12 +20,17 @@ package org.codelutin.topia.generator; +import static org.codelutin.topia.generator.GeneratorUtil.hasUnidirectionalRelationOnAbstractType; + import java.io.File; import java.io.IOException; import java.io.Writer; +import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; +import java.util.List; import java.util.Set; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.generator.Generator; @@ -38,6 +43,7 @@ import org.codelutin.generator.models.object.ObjectModelInterface; import org.codelutin.generator.models.object.ObjectModelOperation; import org.codelutin.generator.models.object.ObjectModelParameter; +import org.codelutin.topia.service.TopiaApplicationService; /** * ServiceInterfaceGenerator.java @@ -45,18 +51,24 @@ * Created: 14 juin 2007 * * @author ndupont -* @version $Revision: 1.4 $ +* @version $Revision: 1.5 $ * * L'interface du service etend TopiaApplicationService * -* Genere les interfaces des services, genere les signatures de toutes les methodes -* des DAO utilises. Les signatures de methodes sont modifiees pour éviter les doublons, -* par exemple : findAllByAddress dans PersonDAO et EmployeeDAO deviennent findAllPersonByAddress -* et findAllEmployeeByAddress. +* Genere les interfaces des services, genere les signatures de toutes les methodes des +* DAO et des entites utilises. Les signatures de methodes sont modifiees pour eviter les +* doublons. +* +* Par exemple : +* +* findAllByAddress d'un PersonDAO et d'un EmployeeDAO deviennent respectivement +* findAllPersonByAddress et findAllEmployeeByAddress. +* +* getTask d'entites Cost et Bill deviennent respectivement getTaskOfBill, getTaskOfCost * * @see TopiaApplicationService * -* Mise a jour: $Date: 2007/07/05 09:50:19 $ +* Mise a jour: $Date: 2007/07/17 15:58:55 $ * par : $Author: ndupont $ */ public class ServiceInterfaceGenerator extends ObjectModelGenerator { @@ -67,8 +79,11 @@ private static final Log log = LogFactory .getLog(ServiceInterfaceGenerator.class); - private static final String DAO = "dao"; - + private static final String DAO = "dao"; + + // methodes du service + private List methods = new ArrayList(); + public ServiceInterfaceGenerator(Generator parent) { super(parent); } @@ -83,13 +98,32 @@ return; } + // générer l'entête de l'interface du service generateInterfaceHeader(output, interfacez); - + + // générer les signatures des méthodes métiers du service generateInterfaceOperations(output, interfacez); + // générer les signatures des méthodes des DAOs generateInheritedInterfaceOperations(output, interfacez); -/*{} //<%=interfacez.getName()%> + // générer les signatures des méthodes des entités (getter/setter) + generateMethodsGetter(output, interfacez); + + // générer les signatures des méthodes métier des entités (getter/setter) + generateAssociatedClassOperations(output, interfacez); + +/*{ + // methodes du service + public String[] methods = {}*/ + String vir=" "; + for(String m : methods){ + /*{ <%=vir%>"<%=m%>"}*/ + vir=", "; + } + /*{}; }*/ +/*{ + } //<%=interfacez.getName()%> }*/ } @@ -130,12 +164,23 @@ } /*{<%=extendClass%>org.codelutin.topia.service.TopiaApplicationService { + }*/ } + private void generateMethodsGetter(Writer output, ObjectModelClassifier classifier) throws IOException { +/*{ public abstract String[] getMethods(); + + // =====> methodes utilisant celles des entites <==== +}*/ + } + + private void generateInterfaceOperations(Writer output, ObjectModelClassifier classifier) throws IOException { for (Iterator it = classifier.getOperations().iterator(); it.hasNext();) { - ObjectModelOperation op = (ObjectModelOperation)it.next(); + ObjectModelOperation op = (ObjectModelOperation)it.next(); + + String method = op.getReturnType()+ " "+op.getName()+"("; /*{ /** * Methode metier @@ -154,6 +199,7 @@ <%=op.getVisibility()%> <%=op.getReturnType()%> <%=op.getName()%>(}*/ String vir = ""; for(ObjectModelParameter param : params){ + method += " " + param.getType()+" "+param.getName(); if(log.isTraceEnabled()) {log.trace("Param" + param + " vir" + vir);} /*{<%=vir%><%=param.getType()%> <%=param.getName()%>}*/ vir = ", "; @@ -169,11 +215,15 @@ /*{; }*/ + // ajout des methodes + methods.add(method+")"); } } private void generateInheritedInterfaceOperations(Writer output, ObjectModelClassifier classifier) throws IOException { - +/*{ + // =====> methodes utilisant celles des daos <==== + }*/ for (Iterator i=classifier.getInterfaces().iterator(); i.hasNext();) { ObjectModelClassifier parent = (ObjectModelClassifier)i.next(); // pour tous les DAOInterface @@ -188,6 +238,12 @@ if (!clazz.hasStereotype(GeneratorUtil.STEREOTYPE_ENTITY)) { return; } + + // ajouter les methodes à la liste + methods.add("void delete"+clazz.getName()+"("+clazz.getName()+" entity)"); + methods.add("List<"+clazz.getName()+"> findAll"+clazz.getName()+"()"); + methods.add(clazz.getName()+" find"+clazz.getName()+"ByTopiaId(String v)"); + /*{ /** * Supprime l'entite <%=clazz.getName()%> passee en parametre @@ -200,6 +256,12 @@ * @return une liste *) public abstract List<<%=clazz.getQualifiedName()%>> findAll<%=clazz.getName()%>() throws TopiaException; + + /** + * Retourne le <%=clazz.getName()%> par son TopiaId + * @return le <%=clazz.getName()%> + *) + public abstract <%=clazz.getQualifiedName()%> find<%=clazz.getName()%>ByTopiaId(String v) throws TopiaException; }*/ for (Iterator it = clazz.getAttributes().iterator(); it.hasNext();) { ObjectModelAttribute attr = (ObjectModelAttribute)it.next(); @@ -238,6 +300,10 @@ if (!isAssoc && attr.hasAssociationClass()) { propertyName = GeneratorUtil.toLowerCaseFirstLetter(attr.getAssociationClass().getName()) + "." + propertyName; } + + // ajouter les methodes à la liste + methods.add(clazz.getName()+" find"+clazz.getName()+"By"+GeneratorUtil.capitalize(attr.getName())+"("+attr.getType()+" v)"); + methods.add("List<"+clazz.getName()+"> findAll"+clazz.getName()+"By"+GeneratorUtil.capitalize(attr.getName())+"("+attr.getType()+" v)"); /*{ /** * Retourne le premier element trouve ayant comme valeur pour l'attribut @@ -255,6 +321,8 @@ public abstract List<<%=clazz.getQualifiedName()%>> findAll<%=clazz.getName()%>By<%=GeneratorUtil.capitalize(attr.getName())%>(<%=attr.getType()%> v) throws TopiaException; }*/ if (attr.hasAssociationClass()) { + methods.add(clazz.getName() +" find"+clazz.getName()+"By"+GeneratorUtil.capitalize(attr.getAssociationClass().getName())+"("+attr.getAssociationClass().getQualifiedName()+" value)"); + methods.add("List<"+clazz.getName()+"> findAll"+clazz.getName()+"By"+GeneratorUtil.capitalize(attr.getAssociationClass().getName())+"("+attr.getAssociationClass().getQualifiedName()+" value)"); /*{ /** * Retourne le premier element trouve ayant comme valeur pour l'attribut @@ -275,7 +343,9 @@ } protected void generateNMultiplicity(Writer output, ObjectModelAttribute attr, ObjectModelClass clazz, boolean isAssoc) throws IOException { -/*{ + methods.add(clazz.getName() + " find"+clazz.getName()+"Contains"+GeneratorUtil.capitalize(attr.getName())+"("+attr.getType()+" ... v)"); + methods.add("List<"+clazz.getName()+"> findAll"+clazz.getName()+"Contains"+GeneratorUtil.capitalize(attr.getName())+"("+attr.getType()+" ... v)"); +/*{ /** * Retourne le premier element trouve dont l'attribut * <%=attr.getName()%> contient le parametre @@ -292,5 +362,304 @@ public abstract List<<%=clazz.getQualifiedName()%>> findAll<%=clazz.getName()%>Contains<%=GeneratorUtil.capitalize(attr.getName())%>(<%=attr.getType()%> ... v) throws TopiaException; }*/ } + + private void generateAssociatedClassOperations(Writer output, ObjectModelClassifier classifier) throws IOException { + for (Iterator i=classifier.getInterfaces().iterator(); i.hasNext();) { + ObjectModelClassifier parent = (ObjectModelClassifier)i.next(); + // pour tous les DAOInterface + if(parent.hasStereotype(DAO)){ + // récupérer la classe de l'object model correspondant à la DAO + String entityClassName = null; + entityClassName = parent.getQualifiedName().replace("DAO", ""); + if(getModel().hasClass(entityClassName)){ + ObjectModelClass clazz = getModel().getClass(entityClassName); + generateFromClass(output, clazz); + + } + } + } + } + + public void generateFromClass(Writer output, ObjectModelClass clazz) throws IOException { + if (!clazz.hasStereotype(GeneratorUtil.STEREOTYPE_ENTITY)) { + return; + } -} //ServiceInterfaceGenerator + for (Iterator it = clazz.getAttributes().iterator(); it.hasNext();) { + ObjectModelAttribute attr = (ObjectModelAttribute)it.next(); + ObjectModelAttribute reverse = attr.getReverseAttribute(); + if (!attr.isNavigable() + && !hasUnidirectionalRelationOnAbstractType(reverse, model)) { + continue; + } + if (!Util.isNMultiplicity(attr)) { + if (!attr.hasAssociationClass()) { +/*{ /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { + methods.add("void set"+Util.capitalize(attr.getName())+"Of"+clazz.getName()+"(String topiaId, "+attr.getType()+ " "+Util.toLowerCaseFirstLetter(attr.getName())+")"); + +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> La valeur de l'attribut <%=attr.getName()%> à positionner. + *) + public abstract void set<%=Util.capitalize(attr.getName())%>Of<%=clazz.getName()%>(String topiaId, <%=attr.getType()%> <%=Util.toLowerCaseFirstLetter(attr.getName())%>) throws TopiaException; + +}*/ +/*{ /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { + methods.add(attr.getType()+" get"+Util.capitalize(attr.getName())+"Of"+clazz.getName()+"(String topiaId)"); +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @return La valeur de l'attribut <%=attr.getName()%>. + *) + public abstract <%=attr.getType()%> get<%=Util.capitalize(attr.getName())%>Of<%=clazz.getName()%>(String topiaId) throws TopiaException; + +}*/ + } else { + String assocAttrName = GeneratorUtil.getAssocAttrName(attr); + if (log.isTraceEnabled()) { log.trace("assocAttrName: " + assocAttrName); } + methods.add("void set"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"(String topiaId, "+attr.getAssociationClass().getName()+" "+Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())+")"); + methods.add(attr.getAssociationClass().getName()+" get"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"(String topiaId)"); + +/*{ /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> La valeur de l'attribut <%=attr.getAssociationClass().getName()%> à positionner. + *) + public abstract void set<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>(String topiaId, <%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>) throws TopiaException; + + /** + * @return La valeur de l'attribut <%=attr.getAssociationClass().getName()%>. + *) + public abstract <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>(String topiaId) throws TopiaException; + +}*/ + } + } else { //NMultiplicity + if (!attr.hasAssociationClass()) { //Méthodes remplacées par des add/set sur les classes d'assoc +/*{ /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { + methods.add("void add"+Util.capitalize(attr.getName())+"Of"+clazz.getName()+"(String topiaId, "+attr.getType()+" "+Util.toLowerCaseFirstLetter(attr.getName())+")"); +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> L'instance de <%=attr.getName()%> à ajouter. + *) + public abstract void add<%=Util.capitalize(attr.getName())%>Of<%=clazz.getName()%>(String topiaId, <%=attr.getType()%> <%=Util.toLowerCaseFirstLetter(attr.getName())%>) throws TopiaException; + + /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { + methods.add("void addAll"+Util.capitalize(attr.getName())+"Of"+clazz.getName()+"(String topiaId, "+(attr.isOrdered()?"java.util.List":"java.util.Collection")+"<"+attr.getType()+"> "+Util.toLowerCaseFirstLetter(attr.getName())+")");; + +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> Les instances de <%=attr.getName()%> à ajouter. + *) + public abstract void addAll<%=Util.capitalize(attr.getName())%>Of<%=clazz.getName()%>(String topiaId, <%=(attr.isOrdered()?"java.util.List":"java.util.Collection")%><<%=attr.getType()%>> <%=Util.toLowerCaseFirstLetter(attr.getName())%>) throws TopiaException; + + /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { + methods.add("void set"+Util.capitalize(attr.getName())+"Of"+clazz.getName()+"(String topiaId, "+ (attr.isOrdered()?"java.util.List":"java.util.Collection")+"<"+attr.getType()+"> "+Util.toLowerCaseFirstLetter(attr.getName())+")"); +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> La Collection de <%=attr.getName()%> à positionner. + *) + public abstract void set<%=Util.capitalize(attr.getName())%>Of<%=clazz.getName()%>(String topiaId, <%=(attr.isOrdered()?"java.util.List":"java.util.Collection")%><<%=attr.getType()%>> <%=Util.toLowerCaseFirstLetter(attr.getName())%>) throws TopiaException; + + /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { + methods.add("void remove"+Util.capitalize(attr.getName())+"Of"+clazz.getName()+"(String topiaId, "+attr.getType()+ " "+Util.toLowerCaseFirstLetter(attr.getName())+")"); +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @param <%=Util.toLowerCaseFirstLetter(attr.getName())%> L'instance de <%=attr.getName()%> à retirer. + *) + public abstract void remove<%=Util.capitalize(attr.getName())%>Of<%=clazz.getName()%>(String topiaId, <%=attr.getType()%> <%=Util.toLowerCaseFirstLetter(attr.getName())%>) throws TopiaException; + + /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { + methods.add("void clear"+Util.capitalize(attr.getName())+"Of"+clazz.getName()+"(String topiaId)"); +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * Vide la Collection de <%=attr.getName()%>. + *) + public abstract void clear<%=Util.capitalize(attr.getName())%>Of<%=clazz.getName()%>(String topiaId) throws TopiaException; + +}*/ + } else { + String assocAttrName = GeneratorUtil.getAssocAttrName(attr); + if (log.isTraceEnabled()) { log.trace("assocAttrName: " + assocAttrName); } + methods.add("void add"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"(String topiaId, "+attr.getAssociationClass().getName()+" "+Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())+")"); + methods.add("void addAll"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"(String topiaId, "+(attr.isOrdered()?"java.util.List":"java.util.Collection")+"<"+attr.getAssociationClass().getName()+"> "+Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())+")"); + methods.add("void set"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"(String topiaId, "+(attr.isOrdered()?"java.util.List":"java.util.Collection")+"<"+attr.getAssociationClass().getName()+"> "+Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())+")"); + methods.add("void remove"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"(String topiaId, "+attr.getAssociationClass().getName()+" "+Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())+")"); + methods.add("void clear"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"(String topiaId)"); +/*{ /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> L'instance de <%=attr.getAssociationClass().getName()%> à ajouter. + *) + public abstract void add<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>(String topiaId, <%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>) throws TopiaException; + + /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> Les instances de <%=attr.getAssociationClass().getName()%> à ajouter. + *) + public abstract void addAll<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>(String topiaId, <%=(attr.isOrdered()?"java.util.List":"java.util.Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>) throws TopiaException; + + /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> La Collection de <%=attr.getAssociationClass().getName()%> à positionner. + *) + public abstract void set<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>(String topiaId, <%=(attr.isOrdered()?"java.util.List":"java.util.Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>) throws TopiaException; + + /** + * @param <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%> L'instance de <%=attr.getAssociationClass().getName()%> à retirer. + *) + public abstract void remove<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>(String topiaId, <%=attr.getAssociationClass().getQualifiedName()%> <%=Util.toLowerCaseFirstLetter(attr.getAssociationClass().getName())%>) throws TopiaException; + + /** + * Vide la Collection de <%=attr.getAssociationClass().getName()%>. + *) + public abstract void clear<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>(String topiaId) throws TopiaException; + +}*/ + } + + if (!attr.hasAssociationClass()) { +/*{ /** +}*/ + if (GeneratorUtil.hasDocumentation(attr)) { + methods.add((attr.isOrdered()?"java.util.List":"java.util.Collection")+"<"+attr.getType()+"> get"+Util.capitalize(attr.getName())+"Of"+clazz.getName()+"(String topiaId)"); + methods.add("int size"+Util.capitalize(attr.getName())+"Of"+clazz.getName()+"(String topiaId)"); + +/*{ * <%=attr.getName()%> : <%=attr.getDocumentation()%> +}*/ + } +/*{ * @return La Liste de <%=attr.getName()%>. + *) + public abstract <%=(attr.isOrdered()?"java.util.List":"java.util.Collection")%><<%=attr.getType()%>> get<%=Util.capitalize(attr.getName())%>Of<%=clazz.getName()%>(String topiaId) throws TopiaException; + + /** + * @return Le nombre d'éléments de la collection <%=attr.getName()%>. + *) + public abstract int size<%=Util.capitalize(attr.getName())%>Of<%=clazz.getName()%>(String topiaId) throws TopiaException; + +}*/ + } else { + String assocAttrName = GeneratorUtil.getAssocAttrName(attr); + if (log.isTraceEnabled()) { log.trace("assocAttrName: " + assocAttrName); } + methods.add((attr.isOrdered()?"java.util.List":"java.util.Collection")+"<"+attr.getAssociationClass().getName()+"> get"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"Of"+clazz.getName()+"(String topiaId)"); + methods.add(attr.getAssociationClass().getName()+" get"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"(String topiaId, "+attr.getType()+" value)"); + methods.add("int size"+Util.capitalize(assocAttrName)+"Of"+clazz.getName()+"(String topiaId)"); +/*{ /** + * @return La liste des attributs <%=attr.getAssociationClass().getName()%>. + *) + public abstract <%=(attr.isOrdered()?"java.util.List":"java.util.Collection")%><<%=attr.getAssociationClass().getQualifiedName()%>> get<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>Of<%=clazz.getName()%>(String topiaId) throws TopiaException; + + /** + * @return L'attribut <%=attr.getAssociationClass().getName()%> associé à la valeur value de l'attribut <%=attr.getName()%>. + *) + public abstract <%=attr.getAssociationClass().getQualifiedName()%> get<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>(String topiaId, <%=attr.getType()%> value) throws TopiaException; + + /** + * @return Le nombre d'éléments de la collection <%=attr.getName()%>. + *) + public abstract int size<%=Util.capitalize(assocAttrName)%>Of<%=clazz.getName()%>(String topiaId) throws TopiaException; + +}*/ + } + } + } + + //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) { + String type = attr.getType(); + String name = attr.getName(); + generateAssociationAccessors(output, clazz, name, type); + if (attr.getReverseAttribute() == null) { + type = ((ObjectModelClassifier)attr.getDeclaringElement()).getQualifiedName(); + name = attr.getDeclaringElement().getName(); + generateAssociationAccessors(output, clazz, name, type); + } + } + } + } + + generateInterfaceOperationsOfClass(output, clazz); + + } + + private void generateInterfaceOperationsOfClass(Writer output, ObjectModelClassifier classifier) throws IOException { + for (Iterator it = classifier.getOperations().iterator(); it.hasNext();) { + ObjectModelOperation op = (ObjectModelOperation)it.next(); + String method = op.getReturnType()+ " "+op.getName()+"("; +/*{ /** +}*/ + if (GeneratorUtil.hasDocumentation(op)) { +/*{ * <%=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()%> + }*/ + } +/*{ *) + <%=op.getVisibility()%> abstract <%=op.getReturnType()%> <%=op.getName()%>Of<%=classifier.getName()%>(String topiaId}*/ + if(params.size()>0){ +/*{, }*/ + } + String vir = ""; + for(ObjectModelParameter param : params){ + if(log.isTraceEnabled()) {log.trace("Param" + param + " vir" + vir);} + method += " " + param.getType()+" "+param.getName(); +/*{<%=vir%><%=param.getType()%> <%=param.getName()%>}*/ + vir = ", "; + } +/*{)}*/ + Set exceptions = (Set)op.getExceptions(); + if(exceptions.isEmpty()){ +/*{throws TopiaException}*/ + } + vir = " throws "; + for (String exception : exceptions) { + if(log.isTraceEnabled()) {log.trace("exception" + exception + " vir" + vir);} +/*{<%=vir%><%=exception%>}*/ + vir = ", "; + } +/*{; + +}*/ + methods.add(method); + } + } + + private void generateAssociationAccessors(Writer output, ObjectModelClass clazz, String name, String type) throws IOException { + methods.add("=> "+"void set"+Util.capitalize(name)+"Of"+clazz.getName()+"(String topiaId, "+type+" value)"); + methods.add("=> "+type+" get"+Util.capitalize(name)+"Of"+clazz.getName()+"(String topiaId)"); +/*{ /** + * @param value La valeur de l'attribut <%=name%> à positionner. + *) + public abstract void set<%=Util.capitalize(name)%>Of<%=clazz.getName()%>(String topiaId, <%=type%> value) throws TopiaException; + + /** + * @return La valeur de l'attribut <%=name%>. + *) + public abstract <%=type%> get<%=Util.capitalize(name)%>Of<%=clazz.getName()%>(String topiaId) throws TopiaException; + +}*/ + } + +} //ServiceInterfaceGenerator \ No newline at end of file