RuoliHelper.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.web.ctrlstat.servlet.ruoli;

  21. import java.text.MessageFormat;
  22. import java.util.ArrayList;
  23. import java.util.Iterator;
  24. import java.util.List;

  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpSession;

  27. import org.apache.commons.lang.StringUtils;
  28. import org.openspcoop2.core.commons.Filtri;
  29. import org.openspcoop2.core.commons.ISearch;
  30. import org.openspcoop2.core.commons.Liste;
  31. import org.openspcoop2.core.commons.SearchUtils;
  32. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  33. import org.openspcoop2.core.registry.Ruolo;
  34. import org.openspcoop2.core.registry.constants.RuoloContesto;
  35. import org.openspcoop2.core.registry.constants.RuoloTipologia;
  36. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  37. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  38. import org.openspcoop2.web.ctrlstat.costanti.InUsoType;
  39. import org.openspcoop2.web.ctrlstat.servlet.ConsoleHelper;
  40. import org.openspcoop2.web.ctrlstat.servlet.archivi.ExporterUtils;
  41. import org.openspcoop2.web.lib.mvc.AreaBottoni;
  42. import org.openspcoop2.web.lib.mvc.Costanti;
  43. import org.openspcoop2.web.lib.mvc.DataElement;
  44. import org.openspcoop2.web.lib.mvc.DataElementType;
  45. import org.openspcoop2.web.lib.mvc.PageData;
  46. import org.openspcoop2.web.lib.mvc.Parameter;
  47. import org.openspcoop2.web.lib.mvc.ServletUtils;
  48. import org.openspcoop2.web.lib.mvc.TipoOperazione;

  49. /**
  50.  * RuoliHelper
  51.  *
  52.  * @author Poli Andrea (apoli@link.it)
  53.  * @author $Author$
  54.  * @version $Rev$, $Date$
  55.  */
  56. public class RuoliHelper extends ConsoleHelper{

  57.     public RuoliHelper(HttpServletRequest request, PageData pd,
  58.             HttpSession session) throws Exception {
  59.         super(request, pd,  session);
  60.     }
  61.     public RuoliHelper(ControlStationCore core, HttpServletRequest request, PageData pd,
  62.             HttpSession session) throws Exception {
  63.         super(core, request, pd,  session);
  64.     }

  65.     public List<DataElement> addRuoloToDati(TipoOperazione tipoOP, Long ruoloId, String nome, String descrizione, String tipologia,
  66.             String nomeEsterno, String contesto, List<DataElement> dati, String oldNomeRuolo) throws DriverConfigurazioneException {
  67.        
  68.         Ruolo ruolo = null;
  69.         if(TipoOperazione.CHANGE.equals(tipoOP) && oldNomeRuolo!=null && StringUtils.isNotEmpty(oldNomeRuolo)){
  70.             ruolo = this.ruoliCore.getRuolo(oldNomeRuolo);
  71.         }
  72.        
  73.         if(TipoOperazione.CHANGE.equals(tipoOP)){
  74.        
  75.             List<Parameter> listaParametriChange = new ArrayList<>();
  76.             Parameter pId = new Parameter(RuoliCostanti.PARAMETRO_RUOLO_ID, ruoloId+"");
  77.             listaParametriChange.add(pId);
  78.            
  79.             // In Uso Button
  80.             this.addComandoInUsoButton(nome,
  81.                     nome,
  82.                     InUsoType.RUOLO);
  83.            
  84.            
  85.             // se e' abilitata l'opzione reset cache per elemento, visualizzo il comando nell'elenco dei comandi disponibili nella lista
  86.             if(this.core.isElenchiVisualizzaComandoResetCacheSingoloElemento()){
  87.                 listaParametriChange.add(new Parameter(CostantiControlStation.PARAMETRO_ELIMINA_ELEMENTO_DALLA_CACHE, "true"));
  88.                 this.pd.addComandoResetCacheElementoButton(RuoliCostanti.SERVLET_NAME_RUOLI_CHANGE, listaParametriChange);
  89.             }      
  90.                    
  91.             // Proprieta Button
  92.             if(ruolo!=null && this.existsProprietaOggetto(ruolo.getProprietaOggetto(), ruolo.getDescrizione())) {
  93.                 this.addComandoProprietaOggettoButton(nome,
  94.                         nome, InUsoType.RUOLO);
  95.             }
  96.         }
  97.        
  98.        
  99.         DataElement de = new DataElement();
  100.         de.setLabel(RuoliCostanti.LABEL_RUOLO);
  101.         de.setType(DataElementType.TITLE);
  102.         dati.add(de);
  103.        
  104.         if(ruoloId!=null){
  105.             de = new DataElement();
  106.             de.setLabel(RuoliCostanti.PARAMETRO_RUOLO_ID);
  107.             de.setValue(ruoloId.longValue()+"");
  108.             de.setType(DataElementType.HIDDEN);
  109.             de.setName(RuoliCostanti.PARAMETRO_RUOLO_ID);
  110.             de.setSize( getSize());
  111.             dati.add(de);
  112.         }
  113.        
  114.         de = new DataElement();
  115.         de.setLabel(RuoliCostanti.LABEL_PARAMETRO_RUOLO_NOME);
  116.         de.setValue(nome);
  117.         de.setType(DataElementType.TEXT_EDIT);
  118.         de.setName(RuoliCostanti.PARAMETRO_RUOLO_NOME);
  119.         de.setSize( getSize());
  120.         de.setRequired(true);
  121.         dati.add(de);

  122.         de = new DataElement();
  123.         de.setLabel(RuoliCostanti.LABEL_PARAMETRO_RUOLO_DESCRIZIONE);
  124.         de.setValue(descrizione);
  125.         de.setType(DataElementType.TEXT_AREA);
  126.         de.setRows(2);
  127.         de.setName(RuoliCostanti.PARAMETRO_RUOLO_DESCRIZIONE);
  128.         de.setSize( getSize());
  129.         dati.add(de);

  130.         de = new DataElement();
  131.         de.setLabel(RuoliCostanti.LABEL_PARAMETRO_RUOLO_TIPOLOGIA);
  132.         de.setType(DataElementType.SELECT);
  133.         de.setName(RuoliCostanti.PARAMETRO_RUOLO_TIPOLOGIA);
  134.         de.setLabels(RuoliCostanti.getRuoliTipologiaLabel());
  135.         de.setValues(RuoliCostanti.getRuoliTipologia());
  136.         de.setSelected(tipologia);
  137.         de.setPostBack(true);
  138.         dati.add(de);
  139.        
  140.         RuoloTipologia ruoloTipologia = null;
  141.         if(tipologia!=null) {
  142.             try {
  143.                 ruoloTipologia = RuoloTipologia.toEnumConstant(tipologia,false);
  144.             }catch(Exception e) {
  145.                 // ignore
  146.             }
  147.         }
  148.         de = new DataElement();
  149.         de.setLabel(RuoliCostanti.LABEL_PARAMETRO_RUOLO_NOME_ESTERNO);
  150.         de.setValue(nomeEsterno);
  151.         if(ruoloTipologia!=null && (RuoloTipologia.QUALSIASI.equals(ruoloTipologia) || RuoloTipologia.ESTERNO.equals(ruoloTipologia))) {
  152.             de.setType(DataElementType.TEXT_EDIT);
  153.         }
  154.         else{
  155.             de.setType(DataElementType.HIDDEN);
  156.         }
  157.         de.setName(RuoliCostanti.PARAMETRO_RUOLO_NOME_ESTERNO);
  158.         de.setSize( getSize());
  159.         dati.add(de);

  160.         de = new DataElement();
  161.         de.setLabel(RuoliCostanti.LABEL_PARAMETRO_RUOLO_CONTESTO);
  162.         de.setType(DataElementType.SELECT);
  163.         de.setName(RuoliCostanti.PARAMETRO_RUOLO_CONTESTO);
  164.         de.setLabels(RuoliCostanti.getRuoliContestoUtilizzoLabel());
  165.         de.setValues(RuoliCostanti.getRuoliContestoUtilizzo());
  166.         de.setSelected(contesto);
  167.         dati.add(de);
  168.    
  169.         return dati;
  170.     }
  171.    
  172.    
  173.     // Controlla i dati del registro
  174.     public boolean ruoloCheckData(TipoOperazione tipoOp, Ruolo ruolo) throws Exception {

  175.         try{

  176.             String nome = this.getParameter(RuoliCostanti.PARAMETRO_RUOLO_NOME);
  177.             String descrizione = this.getParameter(RuoliCostanti.PARAMETRO_RUOLO_DESCRIZIONE);
  178.             String nomeEsterno = this.getParameter(RuoliCostanti.PARAMETRO_RUOLO_NOME_ESTERNO);
  179.            
  180.             // Campi obbligatori
  181.             if (nome.equals("")) {
  182.                 String tmpElenco = "";
  183.                 if (nome.equals("")) {
  184.                     tmpElenco = RuoliCostanti.LABEL_PARAMETRO_RUOLO_NOME;
  185.                 }
  186.                 this.pd.setMessage("Dati incompleti. &Egrave; necessario indicare: " + tmpElenco);
  187.                 return false;
  188.             }

  189.             // Controllo che non ci siano spazi nei campi di testo
  190.             if ((nome.indexOf(" ") != -1) ) {
  191.                 this.pd.setMessage("Non inserire spazi nel campo '"+RuoliCostanti.LABEL_PARAMETRO_RUOLO_NOME+"'");
  192.                 return false;
  193.             }
  194.             if(!this.checkNCName(nome, RuoliCostanti.LABEL_PARAMETRO_RUOLO_NOME)){
  195.                 return false;
  196.             }
  197.             if(!this.checkLength255(nome, RuoliCostanti.LABEL_PARAMETRO_RUOLO_NOME)) {
  198.                 return false;
  199.             }
  200.            
  201.             if(descrizione!=null && !"".equals(descrizione) &&
  202.                 !this.checkLength4000(descrizione, RuoliCostanti.LABEL_PARAMETRO_RUOLO_DESCRIZIONE)) {
  203.                 return false;
  204.             }
  205.             if(nomeEsterno!=null && !"".equals(nomeEsterno) &&
  206.                 !this.checkLength255(nomeEsterno, RuoliCostanti.LABEL_PARAMETRO_RUOLO_NOME_ESTERNO)) {
  207.                 return false;
  208.             }

  209.             // Se tipoOp = add, controllo che il registro non sia gia' stato
  210.             // registrata
  211.             if (tipoOp.equals(TipoOperazione.ADD)) {
  212.                
  213.                 if(this.ruoliCore.existsRuolo(nome)){
  214.                     this.pd.setMessage("Un ruolo con nome '" + nome + "' risulta gi&agrave; stato registrato");
  215.                     return false;
  216.                 }
  217.                
  218.             }
  219.             else{
  220.                
  221.                 if(!ruolo.getNome().equals(nome) &&
  222.                     this.ruoliCore.existsRuolo(nome)){ // e' stato modificato ilnome
  223.                     this.pd.setMessage("Un ruolo con nome '" + nome + "' risulta gi&agrave; stato registrato");
  224.                     return false;
  225.                 }
  226.                
  227.             }
  228.                
  229.             return true;

  230.         } catch (Exception e) {
  231.             this.log.error("Exception: " + e.getMessage(), e);
  232.             throw new Exception(e);
  233.         }
  234.     }
  235.    
  236.    
  237.     // Prepara la lista di ruoli
  238.    
  239.     public static final int POSIZIONE_FILTRO_PROTOCOLLO = 3; // parte da 0, e' alla quarta posizione se visualizzato
  240.    
  241.     public void prepareRuoliList(ISearch ricerca, List<Ruolo> lista) throws Exception {
  242.         try {
  243.             ServletUtils.addListElementIntoSession(this.request, this.session, RuoliCostanti.OBJECT_NAME_RUOLI);
  244.            
  245.             boolean modalitaCompleta = this.isModalitaCompleta();
  246.            
  247.             if(!modalitaCompleta) {
  248.                 this.pd.setCustomListViewName(RuoliCostanti.RUOLI_NOME_VISTA_CUSTOM_LISTA);
  249.             }

  250.             int idLista = Liste.RUOLI;
  251.             int limit = ricerca.getPageSize(idLista);
  252.             int offset = ricerca.getIndexIniziale(idLista);
  253.             String search = ServletUtils.getSearchFromSession(ricerca, idLista);

  254.                        
  255.             String filterRuoloTipologia = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_RUOLO_TIPOLOGIA);
  256.             this.addFilterRuoloTipologia(filterRuoloTipologia, false);
  257.            
  258.             String filterRuoloContesto = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_RUOLO_CONTESTO);
  259.             this.addFilterRuoloContesto(filterRuoloContesto, false);
  260.                        
  261.             String filterApiContesto = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_API_CONTESTO);
  262.             this.addFilterApiContestoRuoli(filterApiContesto, true);
  263.                        
  264.             // NOTA: ATTENZIONE!!! se sei agggiunge o elimina un filtro prima del protocollo indicato sotto, correggere la variabile POSIZIONE_FILTRO_PROTOCOLLO in questa classe
  265.            
  266.             String filterProtocollo = null;
  267.             String filterSoggetto = null;
  268.             boolean profiloSelezionato = false;
  269.             if(filterApiContesto!=null &&
  270.                     //!"".equals(filterApiContesto) &&
  271.                     !CostantiControlStation.DEFAULT_VALUE_PARAMETRO_API_CONTESTO_QUALSIASI.equals(filterApiContesto)) {
  272.                
  273.                 filterProtocollo = addFilterProtocol(ricerca, idLista, true);

  274.                 String protocollo = filterProtocollo;
  275.                 if(protocollo==null) {
  276.                     // significa che e' stato selezionato un protocollo nel menu in alto a destra
  277.                     List<String> protocolli = this.core.getProtocolli(this.request, this.session);
  278.                     if(protocolli!=null && protocolli.size()==1) {
  279.                         protocollo = protocolli.get(0);
  280.                     }
  281.                 }
  282.                
  283.                 if( (filterProtocollo!=null &&
  284.                         //!"".equals(filterProtocollo) &&
  285.                         !CostantiControlStation.DEFAULT_VALUE_PARAMETRO_PROTOCOLLO_QUALSIASI.equals(filterProtocollo))
  286.                         ||
  287.                     (filterProtocollo==null && protocollo!=null)
  288.                         ) {
  289.                     profiloSelezionato = true;
  290.                 }
  291.                
  292.                 if(Filtri.FILTRO_API_CONTESTO_VALUE_SOGGETTI.equals(filterApiContesto)) {
  293.                     filterSoggetto = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SOGGETTO);
  294.                     boolean soloSoggettiOperativi = false;
  295.                     this.addFilterSoggetto(filterSoggetto,protocollo,soloSoggettiOperativi,true);
  296.                 }
  297.                 else {
  298.                     if( profiloSelezionato &&
  299.                             (!this.isSoggettoMultitenantSelezionato())) {
  300.                        
  301.                         filterSoggetto = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SOGGETTO);
  302.                         boolean soloSoggettiOperativi = true;
  303.                         this.addFilterSoggetto(filterSoggetto,protocollo,soloSoggettiOperativi,true);
  304.                     }
  305.                     else {
  306.                         filterSoggetto=this.getSoggettoMultitenantSelezionato();
  307.                     }
  308.                 }
  309.             }
  310.            
  311.             String filterGruppo = null;
  312.             if(filterApiContesto!=null &&
  313.                     //!"".equals(filterApiContesto) &&
  314.                     !CostantiControlStation.DEFAULT_VALUE_PARAMETRO_API_CONTESTO_QUALSIASI.equals(filterApiContesto) &&
  315.                     !Filtri.FILTRO_API_CONTESTO_VALUE_APPLICATIVI.equals(filterApiContesto) &&
  316.                     !Filtri.FILTRO_API_CONTESTO_VALUE_SOGGETTI.equals(filterApiContesto)) {
  317.                
  318.                 filterGruppo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_GRUPPO);
  319.                 addFilterGruppo(filterProtocollo, filterGruppo, true);
  320.                
  321.             }
  322.             else {
  323.                 SearchUtils.clearFilter(ricerca, idLista, Filtri.FILTRO_GRUPPO);
  324.             }
  325.            
  326.             if(profiloSelezionato &&
  327.                     filterApiContesto!=null &&
  328.                     //!"".equals(filterApiContesto) &&
  329.                     !CostantiControlStation.DEFAULT_VALUE_PARAMETRO_API_CONTESTO_QUALSIASI.equals(filterApiContesto)  &&
  330.                     !Filtri.FILTRO_API_CONTESTO_VALUE_APPLICATIVI.equals(filterApiContesto)) {
  331.                 String filterApiImplementazione = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_API_IMPLEMENTAZIONE);
  332.                 this.addFilterApiImplementazione(filterProtocollo, filterSoggetto, filterGruppo, filterApiContesto, filterApiImplementazione, false);
  333.             }
  334.             else {
  335.                 SearchUtils.clearFilter(ricerca, idLista, Filtri.FILTRO_API_IMPLEMENTAZIONE);
  336.             }
  337.            
  338.             if(profiloSelezionato &&
  339.                     filterApiContesto!=null &&
  340.                     //!"".equals(filterApiContesto) &&
  341.                     !CostantiControlStation.DEFAULT_VALUE_PARAMETRO_API_CONTESTO_QUALSIASI.equals(filterApiContesto)  &&
  342.                     Filtri.FILTRO_API_CONTESTO_VALUE_APPLICATIVI.equals(filterApiContesto)) {
  343.                 String filterApplicativo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SERVIZIO_APPLICATIVO);
  344.                 this.addFilterApplicativo(filterProtocollo, filterSoggetto, filterApplicativo, false);
  345.             }
  346.             else {
  347.                 SearchUtils.clearFilter(ricerca, idLista, Filtri.FILTRO_SERVIZIO_APPLICATIVO);
  348.             }
  349.            
  350.             this.pd.setIndex(offset);
  351.             this.pd.setPageSize(limit);
  352.             this.pd.setNumEntries(ricerca.getNumEntries(idLista));

  353.             // setto la barra del titolo
  354.             if (search.equals("")) {
  355.                 this.pd.setSearchDescription("");
  356.                 ServletUtils.setPageDataTitle(this.pd,
  357.                         new Parameter(RuoliCostanti.LABEL_RUOLI, RuoliCostanti.SERVLET_NAME_RUOLI_LIST));
  358.             }
  359.             else{
  360.                 ServletUtils.setPageDataTitle(this.pd,
  361.                         new Parameter(RuoliCostanti.LABEL_RUOLI, RuoliCostanti.SERVLET_NAME_RUOLI_LIST),
  362.                         new Parameter(Costanti.PAGE_DATA_TITLE_LABEL_RISULTATI_RICERCA, null));
  363.             }

  364.             // controllo eventuali risultati ricerca
  365.             this.pd.setSearchLabel(RuoliCostanti.LABEL_PARAMETRO_RUOLO_NOME);
  366.             if (!search.equals("")) {
  367.                 ServletUtils.enabledPageDataSearch(this.pd, RuoliCostanti.LABEL_RUOLI, search);
  368.             }

  369.             // setto le label delle colonne
  370.             this.setLabelColonne(modalitaCompleta);

  371.             // preparo i dati
  372.             List<List<DataElement>> dati = new ArrayList<>();

  373.             if (lista != null) {
  374.                 Iterator<Ruolo> it = lista.iterator();
  375.                 while (it.hasNext()) {
  376.                     List<DataElement> e = modalitaCompleta ? this.creaEntry(it) : this.creaEntryCustom(it);
  377.                     dati.add(e);
  378.                 }
  379.             }

  380.             this.pd.setDati(dati);
  381.             this.pd.setAddButton(true);
  382.            
  383.             // preparo bottoni
  384.             if(lista!=null && !lista.isEmpty() &&
  385.                 this.core.isShowPulsantiImportExport()) {

  386.                 ExporterUtils exporterUtils = new ExporterUtils(this.archiviCore);
  387.                 if(exporterUtils.existsAtLeastOneExportMode(org.openspcoop2.protocol.sdk.constants.ArchiveType.RUOLO, this.request, this.session)){

  388.                     List<AreaBottoni> bottoni = new ArrayList<>();

  389.                     AreaBottoni ab = new AreaBottoni();
  390.                     List<DataElement> otherbott = new ArrayList<>();
  391.                     DataElement de = new DataElement();
  392.                     de.setValue(RuoliCostanti.LABEL_RUOLI_ESPORTA_SELEZIONATI);
  393.                     de.setOnClick(RuoliCostanti.LABEL_RUOLI_ESPORTA_SELEZIONATI_ONCLICK);
  394.                     de.setDisabilitaAjaxStatus();
  395.                     otherbott.add(de);
  396.                     ab.setBottoni(otherbott);
  397.                     bottoni.add(ab);

  398.                     this.pd.setAreaBottoni(bottoni);

  399.                 }

  400.             }
  401.            
  402.         } catch (Exception e) {
  403.             this.log.error("Exception: " + e.getMessage(), e);
  404.             throw new Exception(e);
  405.         }
  406.     }
  407.    
  408.     private List<DataElement> creaEntry(Iterator<Ruolo> it) {
  409.         Ruolo ruolo = it.next();
  410.         List<DataElement> e = new ArrayList<>();

  411.         DataElement de = new DataElement();
  412.         Parameter pId = new Parameter(RuoliCostanti.PARAMETRO_RUOLO_ID, ruolo.getId()+"");
  413.         de.setUrl(
  414.                 RuoliCostanti.SERVLET_NAME_RUOLI_CHANGE , pId);
  415.         de.setToolTip(ruolo.getDescrizione());
  416.         de.setValue(ruolo.getNome());
  417.         de.setIdToRemove(ruolo.getNome());
  418.         de.setToolTip(ruolo.getDescrizione());
  419.         de.setSize(this.core.getElenchiMenuIdentificativiLunghezzaMassima());
  420.         e.add(de);

  421.         de = new DataElement();
  422.         if(RuoloTipologia.INTERNO.getValue().equals(ruolo.getTipologia().getValue())){
  423.             de.setValue(RuoliCostanti.RUOLI_TIPOLOGIA_LABEL_INTERNO);
  424.         }
  425.         else if(RuoloTipologia.ESTERNO.getValue().equals(ruolo.getTipologia().getValue())){
  426.             de.setValue(RuoliCostanti.RUOLI_TIPOLOGIA_LABEL_ESTERNO);
  427.         }
  428.         else{
  429.             de.setValue(RuoliCostanti.RUOLI_TIPOLOGIA_LABEL_QUALSIASI);
  430.         }
  431.        
  432.         e.add(de);
  433.        
  434.         de = new DataElement();
  435.         if(RuoloContesto.PORTA_APPLICATIVA.getValue().equals(ruolo.getContestoUtilizzo().getValue())){
  436.             de.setValue(RuoliCostanti.RUOLI_CONTESTO_UTILIZZO_LABEL_EROGAZIONE);
  437.         }
  438.         else if(RuoloContesto.PORTA_DELEGATA.getValue().equals(ruolo.getContestoUtilizzo().getValue())){
  439.             de.setValue(RuoliCostanti.RUOLI_CONTESTO_UTILIZZO_LABEL_FRUIZIONE);
  440.         }
  441.         else{
  442.             de.setValue(RuoliCostanti.RUOLI_CONTESTO_UTILIZZO_LABEL_QUALSIASI);
  443.         }
  444.         e.add(de);
  445.         return e;
  446.     }
  447.    
  448.     private List<DataElement> creaEntryCustom(Iterator<Ruolo> it) {
  449.         Ruolo ruolo = it.next();
  450.         List<DataElement> e = new ArrayList<>();

  451.         // TITOLO (nome)

  452.         DataElement de = new DataElement();
  453.         Parameter pId = new Parameter(RuoliCostanti.PARAMETRO_RUOLO_ID, ruolo.getId()+"");
  454.         de.setUrl(
  455.                 RuoliCostanti.SERVLET_NAME_RUOLI_CHANGE , pId);
  456.         de.setToolTip(ruolo.getDescrizione());
  457.         de.setValue(ruolo.getNome());
  458.         de.setIdToRemove(ruolo.getNome());
  459.         de.setToolTip(ruolo.getDescrizione());
  460.         de.setType(DataElementType.TITLE);
  461.         e.add(de);
  462.        
  463.         // Metadati (tipologia e contesto)

  464.         de = new DataElement();
  465.        
  466.         String tipologiaRuoloLabel = "";
  467.         if(RuoloTipologia.INTERNO.getValue().equals(ruolo.getTipologia().getValue())){
  468.             tipologiaRuoloLabel = RuoliCostanti.RUOLI_TIPOLOGIA_LABEL_INTERNO;
  469.         }
  470.         else if(RuoloTipologia.ESTERNO.getValue().equals(ruolo.getTipologia().getValue())){
  471.             tipologiaRuoloLabel = RuoliCostanti.RUOLI_TIPOLOGIA_LABEL_ESTERNO;
  472.         }
  473.         else{
  474.             tipologiaRuoloLabel = RuoliCostanti.RUOLI_TIPOLOGIA_LABEL_QUALSIASI;
  475.         }
  476.        
  477.         String contestoRuoloLabel = "";
  478.         if(RuoloContesto.PORTA_APPLICATIVA.getValue().equals(ruolo.getContestoUtilizzo().getValue())){
  479.             contestoRuoloLabel = RuoliCostanti.RUOLI_CONTESTO_UTILIZZO_LABEL_EROGAZIONE;
  480.         }
  481.         else if(RuoloContesto.PORTA_DELEGATA.getValue().equals(ruolo.getContestoUtilizzo().getValue())){
  482.             contestoRuoloLabel = RuoliCostanti.RUOLI_CONTESTO_UTILIZZO_LABEL_FRUIZIONE;
  483.         }
  484.         else{
  485.             contestoRuoloLabel = RuoliCostanti.RUOLI_CONTESTO_UTILIZZO_LABEL_QUALSIASI;
  486.         }
  487.        
  488.         String identificativoEsternoLabelPrefix = "";
  489.         if(ruolo.getNomeEsterno()!=null) {
  490.             identificativoEsternoLabelPrefix = MessageFormat.format(RuoliCostanti.MESSAGE_METADATI_RUOLO_IDENTIFICATIVO_ESTERNO, ruolo.getNomeEsterno());
  491.         }
  492.        
  493.         de.setValue(identificativoEsternoLabelPrefix+MessageFormat.format(RuoliCostanti.MESSAGE_METADATI_RUOLO_TIPO_E_CONTESTO, tipologiaRuoloLabel, contestoRuoloLabel));
  494.         de.setType(DataElementType.SUBTITLE);
  495.         e.add(de);
  496.        
  497.         List<Parameter> listaParametriChange = new ArrayList<>();
  498.         listaParametriChange.add(pId);
  499.         listaParametriChange.add(new Parameter(CostantiControlStation.PARAMETRO_RESET_CACHE_FROM_LISTA, "true"));
  500.        
  501.         // In Uso Button
  502.         this.addInUsoButton(e, ruolo.getNome(), ruolo.getNome(), InUsoType.RUOLO);
  503.        
  504.         // se e' abilitata l'opzione reset cache per elemento, visualizzo il comando nell'elenco dei comandi disponibili nella lista
  505.         if(this.core.isElenchiVisualizzaComandoResetCacheSingoloElemento()){
  506.             this.addComandoResetCacheButton(e, ruolo.getNome(), RuoliCostanti.SERVLET_NAME_RUOLI_CHANGE, listaParametriChange);
  507.         }
  508.        
  509.         // Proprieta Button
  510.         /**if(this.existsProprietaOggetto(ruolo.getProprietaOggetto(), ruolo.getDescrizione())) {
  511.          * ** la lista non riporta le proprietà. Ma esistono e poi sarà la servlet a gestirlo
  512.          */
  513.         this.addProprietaOggettoButton(e, ruolo.getNome(), ruolo.getNome(), InUsoType.RUOLO);
  514.                
  515.         return e;
  516.     }
  517.    
  518.     private void setLabelColonne(boolean modalitaCompleta) {

  519.         if(!modalitaCompleta) {
  520.             String[] labels = {
  521.                     RuoliCostanti.LABEL_RUOLI
  522.             };
  523.             this.pd.setLabels(labels);
  524.         } else {
  525.             String[] labels = {
  526.                     RuoliCostanti.LABEL_PARAMETRO_RUOLO_NOME,
  527.                     RuoliCostanti.LABEL_PARAMETRO_RUOLO_TIPOLOGIA,
  528.                     RuoliCostanti.LABEL_PARAMETRO_RUOLO_CONTESTO,
  529.             };
  530.             this.pd.setLabels(labels);
  531.         }
  532.     }
  533. }