<%@ jet package="cruise.ui.jsf.templates.impl" imports="java.util.* cruise.model.abstractObjects.BackingObject cruise.umple.compiler.* cruise.ui.jsf.* " class="BckBean" skeleton="../skeleton/IGenerator.skeleton" %> <% BackingObject bckObject = (BackingObject) argument; String voName= bckObject.getClassName()+"VO"; String preffix=JSFProvider.properties.getProperty(cruise.model.Constants.PACKAGE_PREFIX); String suffix=JSFProvider.properties.getProperty(cruise.model.Constants.BCK_OBJECT_SUFFIX); String className=bckObject.getClassName()+suffix; List mergeList= new ArrayList(); mergeList.addAll( bckObject.getConstructorOneAsociations()); mergeList.addAll(bckObject.getZeroOrOneAsociations()); List multipleZeroManyToOptionalAssociations=bckObject.getZeroManyToOptionalAssociations(); List multipleNManyToOptionalAssociations=bckObject.getNManyToOptionalAssociations(); List multipleManyToOneAsociations =bckObject.getManyToOneAssociations(); List mandatoryToSingletonAssociations=bckObject.getMandatoryToSingletonAssociations(); List optionalToSingletonAssociations=bckObject.getOptionalToSingletonAssociations(); %> /** * */ package <%=preffix + "." + bckObject.getPackageName()%>; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import java.util.List; import java.util.Set; import java.util.ResourceBundle; import java.util.ArrayList; import java.util.Calendar; import <%=preffix%>.control.BeanLinker; import <%=preffix%>.utils.PageFlowUtils; import dao.keys.<%=bckObject.getPackageName()%>.*; import <%=bckObject.getPackageName()%>.<%=bckObject.getClassName()%>; <% for (Iterator i = bckObject.getImports().iterator(); i.hasNext(); ) { %> import <%=i.next().toString()%>; <% } %> public class <%=className%> implements java.io.Serializable { private static final long serialVersionUID = 1L; java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); private ResourceBundle resourceBundle = ResourceBundle.getBundle("bundles.<%=(bckObject.getPackageName()!=null?(bckObject.getPackageName()+"."):"" )+bckObject.getClassName()%>" ); private <%=bckObject.getClassName()%> a<%=voName%>; <% for (AttributeVariable attVar: bckObject.getAttVariables()) { %> <%=bckObject.getFragmentProvider().getDeclarationFragment(attVar)%> <% } %> <% for (AttributeVariable attVar: bckObject.getKeysAttributes()) { %> <%=bckObject.getFragmentProvider().getDeclarationFragment(attVar)%> <% } %> <%@ include file="includes/OneAssociations.javapart" %> <%@ include file="includes/ZeroManyToOptionalAssociations.javapart" %> <%@ include file="includes/NManyToOptionalAssociations.javapart" %> <%@ include file="includes/ManyToOneAssociations.javapart" %> <%@ include file="includes/OneSingletonAssociations.javapart" %> public <%=bckObject.getClassName()%> get<%=voName%>(){ return a<%=voName%>; } public void set<%=voName%>(<%=bckObject.getClassName() + " a"+voName%> ){ this.a<%=voName%>=a<%=voName%>; } <% for (AttributeVariable attVar: bckObject.getAttVariables()) { %> <%=bckObject.getFragmentProvider().getGetFragment(attVar)%> <%=bckObject.getFragmentProvider().getSetFragment(attVar)%> <% } %> <% for (AttributeVariable attVar: bckObject.getKeysAttributes()) { %> <%=bckObject.getFragmentProvider().getGetFragment(attVar)%> <%=bckObject.getFragmentProvider().getSetFragment(attVar)%> <% } %> public String cancel() { <% for (AttributeVariable attVar: bckObject.getAttVariables()) { Object obj= attVar.getValue(); if (obj!=null && !"Date".equals(attVar.getType()) ){ %> <%=bckObject.getFragmentProvider().getAsignationFragment(attVar, obj.toString()) %> <% }else if ("Date".equals(attVar.getType()) ){ %> <%=bckObject.getFragmentProvider().getAsignationFragment(attVar, "getInitial"+attVar.getUpperCaseName()+"()") %> <% }else{ %> <%=bckObject.getFragmentProvider().getAsignationFragment(attVar, "null") %> <% } } %> <% for (AttributeVariable attVar: bckObject.getKeysAttributes()) { Object obj= attVar.getValue(); if (obj!=null && !"Date".equals(attVar.getType()) ){ %> <%=bckObject.getFragmentProvider().getAsignationFragment(attVar, obj.toString()) %> <% }else if ("Date".equals(attVar.getType()) ){ %> <%=bckObject.getFragmentProvider().getAsignationFragment(attVar, "getInitial"+attVar.getUpperCaseName()+"()") %> <% }else{ %> <%=bckObject.getFragmentProvider().getAsignationFragment(attVar, "null") %> <% } } %> <% for (AssociationVariable assocVar: mergeList) { %> removeSelected<%=assocVar.getUpperCaseName()%>(); <% } %> <% for (AssociationVariable assocVar: multipleZeroManyToOptionalAssociations) { %> removeSelected<%=assocVar.getUpperCaseName()%>List(); <% } %> <% for (AssociationVariable assocVar: multipleNManyToOptionalAssociations) { %> removeSelected<%=assocVar.getUpperCaseName()%>List(); <% } %> <% for (AssociationVariable assocVar: optionalToSingletonAssociations) { %> removeSelected<%=assocVar.getUpperCaseName()%>(); <% } %> removeEdited<%=voName%>(); return ""; } public String createOrEdit() { try{ if (!isEditing()) { <% for (AssociationVariable assocVar: bckObject.getConstructorOneAsociations()) { %> <%=assocVar.getType()%> a<%=assocVar.getUpperCaseName()%>=get<%=assocVar.getUpperCaseName()%>(); <% } %> <% for (AssociationVariable assocVar: mandatoryToSingletonAssociations) { %> <%=assocVar.getType()%> a<%=assocVar.getUpperCaseName()%>=<%=assocVar.getType()%>.getInstance(); <% } %> <% for (AssociationVariable assocVar: multipleNManyToOptionalAssociations) { %> <%=assocVar.getType()%>[] all<%=assocVar.getUpperCaseName()%>s=null; if (getSelected<%=assocVar.getUpperCaseName()%>List() !=null){ all<%=assocVar.getUpperCaseName()%>s =getSelected<%=assocVar.getUpperCaseName()%>List().toArray(new <%=assocVar.getType()%>[getSelected<%=assocVar.getUpperCaseName()%>List().size()]); }else{ all<%=assocVar.getUpperCaseName()%>s = new <%=assocVar.getType()%>[0]; } <% } %> <%=bckObject.getClassName()%> <%=bckObject.getClassName().toLowerCase()%>=null; <% for (AttributeVariable attVar: bckObject.getAttVariables()) { %> <%=bckObject.getFragmentProvider().getPreConstructorFragment(attVar) %> <% } %> <% for (AttributeVariable attVar: bckObject.getKeysAttributes()) { %> <%=bckObject.getFragmentProvider().getPreConstructorFragment(attVar) %> <% } %> <% Iterator keyIter=bckObject.getKeysAttributes().iterator(); String signature=""; while (keyIter.hasNext()){ AttributeVariable att=keyIter.next(); signature=signature+" a"+ att.getUpperCaseName(); if(keyIter.hasNext()) signature=signature+", "; } %> <%=bckObject.getClassName()%>Key <%=bckObject.getClassName().toLowerCase()%>Key= new <%=bckObject.getClassName()%>Key(<%=signature%>); if(PageFlowUtils.getDAOFactory().get<%=bckObject.getClassName()%>DAO().findById(<%=bckObject.getClassName().toLowerCase()%>Key)!=null) throw new RuntimeException("An entity with the same key field(s) exists!"); <%=bckObject.getClassName().toLowerCase()%> = new <%=bckObject.getClassName()%>(<%=bckObject.getConstructorSignature()%>); <% for (AssociationVariable assocVar: bckObject.getZeroOrOneAsociations()) { %> <%=bckObject.getClassName().toLowerCase()%>.set<%=assocVar.getUpperCaseName()%>(this.getSelected<%=assocVar.getUpperCaseName()%>()); <% } %> <% for (AssociationVariable assocVar: optionalToSingletonAssociations) { %> <%=bckObject.getClassName().toLowerCase()%>.set<%=assocVar.getUpperCaseName()%>(this.getSelected<%=assocVar.getUpperCaseName()%>()); <% } %> <% for (AssociationVariable assocVar: multipleZeroManyToOptionalAssociations) { %> if (getSelected<%=assocVar.getUpperCaseName()%>List() !=null) for ( <%=assocVar.getType()%> obj : getSelected<%=assocVar.getUpperCaseName()%>List()){ <%=bckObject.getClassName().toLowerCase()%>.add<%=assocVar.getUpperCaseName()%>(obj); } <% } %> PageFlowUtils.getDAOFactory().get<%=bckObject.getClassName()%>DAO().save(<%=bckObject.getClassName().toLowerCase()%>, <%=bckObject.getClassName().toLowerCase()%>Key); } else { if(!validate()) return ""; <% for (AttributeVariable attVar: bckObject.getAttVariables()) { %> <%=bckObject.getFragmentProvider().getCopyFragment(attVar,"this.getEdited"+voName+"()") %><% } %> <% for (AttributeVariable attVar: bckObject.getKeysAttributes()) { %> <%=bckObject.getFragmentProvider().getCopyFragment(attVar,"this.getEdited"+voName+"()") %><% } %> <% for (AssociationVariable assocVar: mergeList) { %> this.getEdited<%=voName%>().set<%=assocVar.getUpperCaseName()%>(this.getSelected<%=assocVar.getUpperCaseName()%>()); <% } %> <% for (AssociationVariable assocVar: optionalToSingletonAssociations) { %> this.getEdited<%=voName%>().set<%=assocVar.getUpperCaseName()%>(this.getSelected<%=assocVar.getUpperCaseName()%>()); <% } %> <% for (AssociationVariable assocVar: multipleZeroManyToOptionalAssociations) { %> if (getSelected<%=assocVar.getUpperCaseName()%>List() !=null) for ( <%=assocVar.getType()%> obj : getSelected<%=assocVar.getUpperCaseName()%>List()){ if(this.getEdited<%=voName%>().indexOf<%=assocVar.getUpperCaseName()%>(obj)<0) this.getEdited<%=voName%>().add<%=assocVar.getUpperCaseName()%>(obj); } if (this.getEdited<%=voName%>().get<%=assocVar.getUpperCaseName()%>s()!=null){ ArrayList<<%=assocVar.getType()%>> toRemove =new ArrayList<<%=assocVar.getType()%>>(); for ( <%=assocVar.getType()%> obj : this.getEdited<%=voName%>().get<%=assocVar.getUpperCaseName()%>s()){ if(getSelected<%=assocVar.getUpperCaseName()%>List()!=null && !getSelected<%=assocVar.getUpperCaseName()%>List().contains(obj)) toRemove.add(obj); } for ( <%=assocVar.getType()%> obj : toRemove){ this.getEdited<%=voName%>().remove<%=assocVar.getUpperCaseName()%>(obj); } } <% } %> <% for (AssociationVariable assocVar: multipleNManyToOptionalAssociations) { %> if (getSelected<%=assocVar.getUpperCaseName()%>List() !=null) for ( <%=assocVar.getType()%> obj : getSelected<%=assocVar.getUpperCaseName()%>List()){ if(this.getEdited<%=voName%>().indexOf<%=assocVar.getUpperCaseName()%>(obj)<0) this.getEdited<%=voName%>().add<%=assocVar.getUpperCaseName()%>(obj); } if (this.getEdited<%=voName%>().get<%=assocVar.getUpperCaseName()%>s()!=null){ ArrayList<<%=assocVar.getType()%>> toRemove =new ArrayList<<%=assocVar.getType()%>>(); for ( <%=assocVar.getType()%> obj : this.getEdited<%=voName%>().get<%=assocVar.getUpperCaseName()%>s()){ if(getSelected<%=assocVar.getUpperCaseName()%>List()!=null && !getSelected<%=assocVar.getUpperCaseName()%>List().contains(obj)) toRemove.add(obj); } for ( <%=assocVar.getType()%> obj : toRemove){ this.getEdited<%=voName%>().remove<%=assocVar.getUpperCaseName()%>(obj); } } <% } %> } }catch(RuntimeException e){ FacesMessage fm = new FacesMessage(e.getMessage()); fm.setSeverity(FacesMessage.SEVERITY_ERROR); FacesContext.getCurrentInstance().addMessage(e.getMessage(), fm); return ""; } cancel(); return ""; } public String delete() { PageFlowUtils.getDAOFactory().get<%=bckObject.getClassName()%>DAO().deleteTree(getEdited<%=voName%>()); this.removeEdited<%=voName%>(); cancel(); return ""; } public String prepareForEdit() { <% for (AttributeVariable attVar: bckObject.getAttVariables()) { %> <%=bckObject.getFragmentProvider().getReverseCopyFragment(attVar,"this.getEdited"+voName+"()") %><% } %> <% for (AttributeVariable attVar: bckObject.getKeysAttributes()) { %> <%=bckObject.getFragmentProvider().getReverseCopyFragment(attVar,"this.getEdited"+voName+"()") %><% } %> <% for (AssociationVariable assocVar: mergeList) { %> this.setSelected<%=assocVar.getUpperCaseName()%>(this.getEdited<%=voName%>().get<%=assocVar.getUpperCaseName()%>()); <% } %> <% for (AssociationVariable assocVar: multipleZeroManyToOptionalAssociations) { %> this.setSelected<%=assocVar.getUpperCaseName()%>List(new ArrayList(this.getEdited<%=voName%>().get<%=assocVar.getUpperCaseName()%>s())); <% } %> <% for (AssociationVariable assocVar: multipleNManyToOptionalAssociations) { %> this.setSelected<%=assocVar.getUpperCaseName()%>List(new ArrayList(this.getEdited<%=voName%>().get<%=assocVar.getUpperCaseName()%>s())); <% } %> <% for (AssociationVariable assocVar: optionalToSingletonAssociations) { %> this.setSelected<%=assocVar.getUpperCaseName()%>(this.getEdited<%=voName%>().get<%=assocVar.getUpperCaseName()%>()); <% } %> return ""; } public boolean isEditing(){ return this.getEdited<%=voName%>() != null; } public void removeEdited<%=voName%>() { PageFlowUtils.getPageFlow().remove("edited<%=voName%>"); } @SuppressWarnings("unchecked") public void setEdited<%=voName%>(<%=bckObject.getClassName()%> edited<%=voName%>) { PageFlowUtils.getPageFlow().put("edited<%=voName%>", edited<%=voName%>); } public <%=bckObject.getClassName()%> getEdited<%=voName%>() { return (<%=bckObject.getClassName()%>) PageFlowUtils.getPageFlow().get("edited<%=voName%>"); } public List<<%=bckObject.getClassName()%>> getEdited<%=voName%>List() { if ( PageFlowUtils.peekBeanLinker().getLinkerCollection() instanceof List ) return (List<<%=bckObject.getClassName()%>>) PageFlowUtils.peekBeanLinker() .getLinkerCollection(); return null; } public List> get<%=bckObject.getClassName()%>s() { <% for (AssociationVariable assocVar: mergeList) { if(assocVar.getRelatedAssociation().getMaxBound() > 1 || assocVar.getRelatedAssociation().getMaxBound() == -1){ %> if (isFrom<%=assocVar.getUpperCaseName()%>()) { return linked<%=assocVar.getUpperCaseName()%>().get<%=assocVar.getRelatedAssociation().getUpperCaseName()%>s(); } <% } %> <% } %> return PageFlowUtils.getDAOFactory().get<%=bckObject.getClassName()%>DAO().findAll(<%=bckObject.hasParent()?(bckObject.getClassName()+".class"):""%>); } public String bind() { PageFlowUtils.peekBeanLinker().setLinker(getSelected<%=voName%>()); return ""; } public String bindCollection() { if(PageFlowUtils.peekBeanLinker().getLinkerCollection()==null) PageFlowUtils.peekBeanLinker().setLinkerCollection(new ArrayList<<%=bckObject.getClassName()%>>()); if(!PageFlowUtils.peekBeanLinker().getLinkerCollection().contains(getSelected<%=voName%>())) PageFlowUtils.peekBeanLinker().getLinkerCollection().add(getSelected<%=voName%>()); return ""; } public String removeFromLinker() { getEdited<%=voName%>List().remove(getEdited<%=voName%>List().indexOf(getSelected<%=voName%>())); return ""; } public String removeLinker() { PageFlowUtils.peekBeanLinker().setLinker(null); return ""; } public boolean isSingleSelection(){ return PageFlowUtils.peekBeanLinker().isSingleSelection(); } public <%=bckObject.getClassName()%> getSelected<%=voName%>() { if(PageFlowUtils.peekBeanLinker().getLinker() instanceof <%=bckObject.getClassName()%>) return (<%=bckObject.getClassName()%>) PageFlowUtils.peekBeanLinker().getLinker(); return null; } public void setSelected<%=voName%>(<%=bckObject.getClassName()%> selected<%=voName%>) { PageFlowUtils.peekBeanLinker().setLinker(selected<%=voName%>); } <%=(new Validation()).generate(bckObject)%> }