...
Anchor | ||||
---|---|---|---|---|
|
Questa validazione controlla che esista almeno una unità organizzativa interna, se esiste un ruolo principale deve essere definito.
Ci deve essere uno e un solo ruolo Principale (Main)
Dal punto di vista del modello dati si tratta degli elementi di tipo internalOrganizationUnit
Per maggiori dettagli cfr. excel modello dati dell'entità Progetto
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
if (!Packages.java.lang.Boolean.TRUE.equals(wfItem.getBooleanMap().get("legacy"))){ var orgUnitSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getWfItemElementSet", "it.cilea.wf.model.WfItemElement", "internalOrganizationUnit", wfService); if (orgUnitSet.size()<1){ errors.reject("error.project.multipleInternalOrganization.atLeast1"); } else { var internalOrganizationUnitCoordinatorRole=Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("ap.prj.internalOrganizationUnit.role.main"); if (!internalOrganizationUnitCoordinatorRole){ throw "Configuration variable ap.prj.internalOrganizationUnit.role.main MUST BE DEFINED"; } else { internalOrganizationUnitCoordinatorRole=new Packages.java.lang.Integer(internalOrganizationUnitCoordinatorRole); } var orgUnitSetIterator=orgUnitSet.iterator(); var count=0; while (orgUnitSetIterator.hasNext()){ var element=orgUnitSetIterator.next(); var ouRole=element.getWfDictionaryMap().get("roleId"); if (ouRole!=null && internalOrganizationUnitCoordinatorRole.equals(ouRole.getId())){ count++; } } if (count==0){ errors.reject("error.project.multipleInternalOrganization.missingMain"); } else if (count>1) { errors.reject("error.project.multipleInternalOrganization.tooManyMain"); } } } |
Anchor | ||||
---|---|---|---|---|
|
Questa validazione controlla che esista almeno un responsabile con il ruolo che è configurato fra quelli utili
al calcolo del codice del Progetto.
Dal punto di vista del modello dati si tratta degli elementi di tipo owner
Per maggiori dettagli cfr. excel modello dati dell'entità Progetto
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
if (!Packages.java.lang.Boolean.TRUE.equals(wfItem.getBooleanMap().get("legacy"))){
if (WfUtil.getParametricConfiguration("ap.<itemType>.owner.role.enabled", object.getWfItemType()).equalsIgnoreCase("true")){
var ownerSet = FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getWfItemElementSet", "it.cilea.wf.model.WfItemElement", "owner", wfService);
var ownerRolesForIdentifier = WfUtil.getParametricConfiguration("ap.<itemType>.owner.identifier.roles", wfService.getWfItemType(wfItem.getWfItemTypeId()));
if (ownerRolesForIdentifier != null) {
var rolesArray = ownerRolesForIdentifier.split(",");
var ownerSetIterator = ownerSet.iterator();
var count = 0;
while (ownerSetIterator.hasNext()){
var element = ownerSetIterator.next();
var role = element.getWfDictionaryMap().get("roleId").getInternalSourceIdentifier();
if (Packages.java.util.Arrays.asList(rolesArray).contains(role)){
count++;
break;
}
}
if (count == 0){
var rolesError = rolesArray.join(",");
errors.reject("error.project.owner.missingRoleForIdentifier");
}
} else {
throw "Configuration variable ap.<itemType>.owner.identifier.roles MUST BE DEFINED";
}
}
}
|
Anchor | ||||
---|---|---|---|---|
|
Questa validazione controlla che esista per ogni responsabile scientifico del progetto, una unità organizzativa che sia interna nel momento della data di avvio del progetto (startDate) oppure se non c'è questa data in questo momento.
dal punto di vista del modello sono dei dati di tipo: internalOrganizationUnit, owner
Per maggiori dettagli cfr. excel modello dati dell'entità Progetto
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
if (!Packages.java.lang.Boolean.TRUE.equals(wfItem.getBooleanMap().get("legacy"))){ var orgUnitSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getWfItemElementSet", "it.cilea.wf.model.WfItemElement", "internalOrganizationUnit", wfService); var ownerSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getWfItemElementSet", "it.cilea.wf.model.WfItemElement", "owner", wfService); var ownerDepartmentSet=new Packages.java.util.HashSet(); var internalOrganizationUnitSet=new Packages.java.util.HashSet(); var startDateFromWfItem=wfItem.getDateMap().get("startDate"); if (startDateFromWfItem!=null){ startDateFromWfItem=startDateFromWfItem.getTime(); if (ownerSet.size()>0){ var ownerSetIterator=ownerSet.iterator(); while (ownerSetIterator.hasNext()){ var ownerElement=ownerSetIterator.next(); var person=ownerElement.getPersonMap().get("ownerId"); var ownerDepartmentPositionSearch = new Packages.it.cilea.ga.command.PositionSearchCommand(); ownerDepartmentPositionSearch.setPersonId(person.getId()); ownerDepartmentPositionSearch.setDate(startDateFromWfItem); ownerDepartmentPositionSearch.setOrganizationUnitTypeDescription("department"); ownerDepartmentPositionSearch.setDiscriminator("research"); var ownerDepartmentPositionSet = gaService.getPositionSearchList(ownerDepartmentPositionSearch, 0); var maxPriority = Packages.it.cilea.ga.util.GaUtil.getMaxPriority(ownerDepartmentPositionSet, "research", "department"); var ownerDepartmentPositionSetIterator=ownerDepartmentPositionSet.iterator(); while (ownerDepartmentPositionSetIterator.hasNext()){ var position=ownerDepartmentPositionSetIterator.next(); if (maxPriority == null || maxPriority.equals(position.getPriority())) { ownerDepartmentSet.add(position.getOrganizationUnit()); break; } } } } if (ownerDepartmentSet.size()>0){ if (orgUnitSet.size()>0){ var orgUnitSetIterator=orgUnitSet.iterator(); while (orgUnitSetIterator.hasNext()){ var wfItemElement=orgUnitSetIterator.next(); var orgUnit=wfItemElement.getOrganizationUnitMap().get("ouId"); internalOrganizationUnitSet.add(orgUnit); } } } if(!internalOrganizationUnitSet.containsAll(ownerDepartmentSet)){ var nonMatchedDepartmentCollection=Packages.org.apache.commons.collections.CollectionUtils.subtract(ownerDepartmentSet, internalOrganizationUnitSet); var nonMatchedDepartmentCollectionIterator=nonMatchedDepartmentCollection.iterator(); var nonMatchedDepartmentString=""; var counter=0; while(nonMatchedDepartmentCollectionIterator.hasNext()){ var nonMatchedDepartment=nonMatchedDepartmentCollectionIterator.next(); if (counter++>0) nonMatchedDepartmentString+=", "; nonMatchedDepartmentString+=nonMatchedDepartment.getDescription(); } var df = Packages.org.apache.commons.lang.time.FastDateFormat.getInstance("dd/MM/yyyy"); var dateAsString=df.format(startDateFromWfItem); errors.reject("error.project.multipleInternalOrganization.matchWithDepartmentOwnerNotFound", [dateAsString, nonMatchedDepartmentString], null); } } } |
...
Anchor | ||||
---|---|---|---|---|
|
Questa validazione opera sugli elementi owner (responsabile scientifico) figli dell'oggetto radice.
Viene verificato che per ogni owner, sia specificato il ruolo (attributo roleId) se attivato dalla configuration "ap.prj.owner.role.enabled"
Per maggiori dettagli cfr. modello dati dell'entità in questione
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
if (!Packages.java.lang.Boolean.TRUE.equals(wfItem.getBooleanMap().get("legacy"))){ if (Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValueWfUtil.getParametricConfiguration("ap.prj<itemType>.owner.role.enabled", wfService.getWfItemType(wfItem.getWfItemTypeId())).equalsIgnoreCase("true")){ var elementSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getWfItemElementSet", "it.cilea.wf.model.WfItemElement", "owner", wfService); if (elementSet.size() > 0){ var elementSetIterator = elementSet.iterator(); var elementToEdit = []; while (elementSetIterator.hasNext()){ var element = elementSetIterator.next(); var wfItemElementRoleId = element.getWfDictionaryMap().get("roleId"); if(wfItemElementRoleId == null && !wfItemElementRoleId){ var discriminator = element.getDiscriminator(); if(element.getDiscriminator().contains(".")){ discriminator = element.getDiscriminator().substring(0, element.getDiscriminator().indexOf(".")) } elementToEdit.push(element.getPersonMap().get("ownerId").getDisplayValue()); } } if (elementToEdit.length > 0){ errors.reject("error.owner.role.required", [elementToEdit.toString()], "error.owner.role.required"); } } } } |
...