Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Anchor
selfLinkedWorkgroupValidator-anchor
selfLinkedWorkgroupValidator-anchor
selfLinkedWorkgroupValidator
Questa validazione controlla che, il gruppo non venga collegato in un rapporto padre-figlio a se stesso
Dal punto di vista del modello dati si tratta degli elementi di tipo workgroupLink
Per maggiori dettagli cfr. modello dati dell'entità Gruppi di Lavoro
Code Block
languagejs
linenumberstrue
collapsetrue
            
            //ricavo dal fragment dei workgroup
            var workgroupSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getChildWfItemLinkSet", "it.cilea.wf.model.WfItemLink", "workgroupLink", wfService);
            //controllo banale, controllo che ci sia almeno un link, sennò non vado avanti
            if(workgroupSet.size()>0){
            
                //ricavo l'iteratore lo uso per ciclare il set
                var workgroupSetIterator = workgroupSet.iterator();
                while( workgroupSetIterator.hasNext() ){
                
                    //ricavo il singolo link e prendo il child che è il workgroup collegato
                    var workgroupLinkElement = workgroupSetIterator.next();
                    var workgroup= workgroupLinkElement.getChild();
                    
                    if(object.getWfItemId()==workgroup.getWfItemId()){
                        //se sono uguali allora lancia l'errore
                        errors.reject("error.workgroup.workgroupLink.linkedToItself");
                    }
                }
            }            
        

Anchor
approvedWorkgroupValidator-anchorapprovedWorkgroupValidator-anchor
selfLinkedWorkgroupParentValidator-anchor
selfLinkedWorkgroupParentValidator-anchor
selfLinkedWorkgroupParentValidator
Questa validazione controlla che, il gruppo non venga collegato in un rapporto figlio-padre a se stesso
Dal punto di vista del modello dati si tratta degli elementi di tipo workgroupLink
Per maggiori dettagli cfr. modello dati dell'entità Gruppi di Lavoro
Code Block
languagejs
linenumberstrue
collapsetrue
            
            //ricavo dal fragment dei workgroup
            var workgroupSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getParentWfItemLinkSet", "it.cilea.wf.model.WfItemLink", "workgroupLink", wfService);
            //controllo banale, controllo che ci sia almeno un link, sennò non vado avanti
            if(workgroupSet.size()>0){
            
                //ricavo l'iteratore lo uso per ciclare il set
                var workgroupSetIterator = workgroupSet.iterator();
                while( workgroupSetIterator.hasNext() ){
                
                    //ricavo il singolo link e prendo il child che è il workgroup collegato
                    var workgroupLinkElement = workgroupSetIterator.next();
                    var workgroup= workgroupLinkElement.getParent();
                    
                    if(object.getWfItemId()==workgroup.getWfItemId()){
                        //se sono uguali allora lancia l'errore
                        errors.reject("error.workgroup.workgroupLinkParent.linkedToItself");
                    }
                }
            }            
        

Anchor
approvedWorkgroupValidator-anchor
approvedWorkgroupValidator-anchor
approvedWorkgroupValidator
Validazione che controlla che, mentre viene collegato ad altri gruppi di lavoro in un rapporto padre-figlio, il Gruppo non venga collegato a Gruppi che non siano in stato "approved" o "reopened",
Dal punto di vista del modello dati si tratta degli elementi di tipo workgroupLink
Per maggiori dettagli cfr. modello dati dell'entità Gruppi di Lavoro
Code Block
languagejs
linenumberstrue
collapsetrue
            
            //ricavo dal fragment dei workgroup
            var workgroupSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getChildWfItemLinkSet", "it.cilea.wf.model.WfItemLink", "workgroupLink", wfService);
            //controllo banale, controllo che ci sia almeno un link, sennò non vado avanti
            if(workgroupSet.size()>0){
            
                //ricavo l'iteratore lo uso per ciclare il set
                var workgroupSetIterator = workgroupSet.iterator();
                while( workgroupSetIterator.hasNext() ){
                
                    //ricavo il singolo link e prendo il child che è il workgroup collegato
                    var workgroupLinkElement = workgroupSetIterator.next();
                    var workgroup= workgroupLinkElement.getChild();
                   //poi ricavo il suo stato e controllo che sia in approved o reopened
                    var workgroupState= workgroup.getWfState().getDescription();
                    
                    if(!(Packages.org.apache.commons.lang.StringUtils.equals("approved", workgroupState) || Packages.org.apache.commons.lang.StringUtils.equals("reopened", workgroupState))){
						//se non è approved o reopened allora lancia l'errore
						errors.reject("error.workgroup.workgroupLink.mustBeApproved");
					}
                }
            }            
        

Anchor
approvedWorkgroupParentValidator-anchor
approvedWorkgroupParentValidator-anchor
approvedWorkgroupParentValidator approvedWorkgroupValidator
Validazione che controlla che, mentre viene collegato ad altri gruppi di lavoro in un rapporto figlio-padre, il Gruppo non venga collegato a Gruppi che non siano in stato "approved" o "reopened",
Dal punto di vista del modello dati si tratta degli elementi di tipo workgroupLink
Per maggiori dettagli cfr. modello dati dell'entità Gruppi di Lavoro
Code Block
languagejs
linenumberstrue
collapsetrue
            
            //ricavo dal fragment dei workgroup
            var workgroupSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getChildWfItemLinkSetgetParentWfItemLinkSet", "it.cilea.wf.model.WfItemLink", "workgroupLink", wfService);
            //controllo banale, controllo che ci sia almeno un link, sennò non vado avanti
            if(workgroupSet.size()>0){
            
                //ricavo l'iteratore lo uso per ciclare il set
                var workgroupSetIterator = workgroupSet.iterator();
                while( workgroupSetIterator.hasNext() ){
                
                    //ricavo il singolo link e prendo il childparent che è il workgroup collegato
                    var workgroupLinkElement = workgroupSetIterator.next();
                    var workgroup= workgroupLinkElement.getChildgetParent();
                   //poi ricavo il suo stato e controllo che sia in approved o reopened
                    var workgroupState= workgroup.getWfState().getDescription();
                    
                    if(!(Packages.org.apache.commons.lang.StringUtils.equals("approved", workgroupState) || Packages.org.apache.commons.lang.StringUtils.equals("reopened", workgroupState))){
						//se non è approved o reopened allora lancia l'errore
						errors.reject("error.workgroup.workgroupLinkworkgroupLinkParent.mustBeApproved");
					}
                }
            }            
        

Anchor
projectValidatorWorkgroup-anchor
projectValidatorWorkgroup-anchor
projectValidatorWorkgroup
Questa validazione controlla che per ogni progetto collegato al gruppo di lavoro, questo sia in uno stato che è contenuto nella variabile ap.wkg.workgroupProjectLink.csvAllowedProjectState altrimenti solleva un errore.
Questa variabile di configurazione deve essere popolata con elenco (separato da virgola) degli stati accettabili per i progetti aggaciabili.
Gli stati configurati di default sono operative, concluded
Dal punto di vista del modello dati si tratta degli elementi di tipo workgroupProjectLink
Per maggiori dettagli cfr. modello dati dell'entità Gruppi di Lavoro
Code Block
languagejs
linenumberstrue
collapsetrue
			
			//ricavo dal fragment dei project
			var projectSet = Packages.it.cilea.core.fragment.util.FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "getChildWfItemLinkSet", "it.cilea.wf.model.WfItemLink", "workgroupProjectLink", wfService);
			//controllo banale, controllo che ci sia almeno un link, sennò non vado avanti
			if(projectSet.size()>0){
				
				//variabile che mi servirà più tardi
				var configStatesArray=[];
				
				//controllo per vedere se è definita la variabile di configurazione con gli stati accettati
				var csvAllowedProjectState=Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("ap.wkg.workgroupProjectLink.csvAllowedProjectState");
				if (!csvAllowedProjectState){
					//nel caso non sia definita
					throw "Configuration variable ap.wkg.workgroupProjectLink.csvAllowedProjectState MUST BE DEFINED";
				}else{
					//vado a immettere in una lista tutti gli stati ricavati
					configStatesArray = csvAllowedProjectState.split(',');
				}
				
				//ricavo l'iteratore lo uso per ciclare il set
				var projectSetIterator = projectSet.iterator();
				while( projectSetIterator.hasNext() ){
				
					//ricavo il singolo link e prendo il child che è il project
					var projectLinkElement = projectSetIterator.next();
					var project = projectLinkElement.getChild();
					//poi ricavo il suo stato e controllo che sia in uno degli stati ricavati dalla config
					var projectState = project.getWfState().getDescription();
					
					//vado a confrontare lo stato del progetto con tutti quelli ricavati
					//se non è tra quelli in configurazione, scateno il messaggio di errore
					//variabile per controllo, viene rigenerata per ogni progetto collegato
					var isPermited=false;
					for(var i=0; i<configStatesArray.length; i++){
						if(Packages.org.apache.commons.lang.StringUtils.equals(configStatesArray[i], projectState))
							isPermited=true;
					}
					
					if(isPermited==false){
						//uso questo stratagemma visto che non conosco quanti stati possano essere accettati
						var arrayStatesNamesAllArray = [];
						var arrayStatesNamesAllString="";
						
						//ciclo i nomi degli stati permessi e vado a ricavare il loro nome 'normale'
						for(var i=0; i<configStatesArray.length; i++){
							if(i>0)
								arrayStatesNamesAllString+=", ";
							
							arrayStatesNamesAllString += Packages.it.cilea.core.util.MessageUtilConstant.messageUtil.findMessage("wfState." + configStatesArray[i]);
						}
						arrayStatesNamesAllArray.push(arrayStatesNamesAllString);
						errors.reject("error.workgroup.project.stateMustBeAccepted", arrayStatesNamesAllArray, null);
					}
				}
			}
		

...