ConfigurazionePluginsTipoPluginUtils.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.config;

  21. import java.util.ArrayList;
  22. import java.util.List;

  23. import org.apache.commons.lang.StringUtils;
  24. import org.openspcoop2.core.commons.Filtri;
  25. import org.openspcoop2.core.commons.ISearch;
  26. import org.openspcoop2.core.commons.SearchUtils;
  27. import org.openspcoop2.core.config.constants.PluginCostanti;
  28. import org.openspcoop2.core.plugins.Plugin;
  29. import org.openspcoop2.core.plugins.PluginProprietaCompatibilita;
  30. import org.openspcoop2.core.plugins.constants.TipoPlugin;
  31. import org.openspcoop2.pdd.core.dynamic.DynamicHelperCostanti;
  32. import org.openspcoop2.web.ctrlstat.costanti.CostantiControlStation;
  33. import org.openspcoop2.web.lib.mvc.DataElement;
  34. import org.openspcoop2.web.lib.mvc.DataElementInfo;
  35. import org.openspcoop2.web.lib.mvc.DataElementType;
  36. import org.openspcoop2.web.lib.mvc.PageData;
  37. import org.slf4j.Logger;

  38. /**    
  39.  * ConfigurazionePluginsTipoPluginUtils
  40.  *
  41.  * @author Poli Andrea (poli@link.it)
  42.  * @author $Author$
  43.  * @version $Rev$, $Date$
  44.  */
  45. public class ConfigurazionePluginsTipoPluginUtils {
  46.    
  47.     private ConfigurazionePluginsTipoPluginUtils() {}

  48.     public static final boolean ADD_TRANSAZIONI = false;
  49.     public static final boolean ADD_RICERCHE = false;
  50.     public static final boolean ADD_STATISTICHE = false;
  51.    
  52.     public static List<String> getValuesTipoPlugin(boolean addAllarmi) {
  53.         List<String> valori = new ArrayList<>();
  54.        
  55.         valori.add(TipoPlugin.AUTENTICAZIONE.toString());
  56.        
  57.         valori.add(TipoPlugin.AUTORIZZAZIONE.toString());
  58.         valori.add(TipoPlugin.AUTORIZZAZIONE_CONTENUTI.toString());
  59.        
  60.         valori.add(TipoPlugin.RATE_LIMITING.toString());
  61.        
  62.         if(addAllarmi) {
  63.             valori.add(TipoPlugin.ALLARME.toString());
  64.         }
  65.        
  66.         valori.add(TipoPlugin.INTEGRAZIONE.toString());
  67.        
  68.         valori.add(TipoPlugin.CONNETTORE.toString());
  69.        
  70.         valori.add(TipoPlugin.BEHAVIOUR.toString());
  71.        
  72.         valori.add(TipoPlugin.MESSAGE_HANDLER.toString());
  73.         valori.add(TipoPlugin.SERVICE_HANDLER.toString());
  74.        
  75.         valori.add(TipoPlugin.TOKEN_DYNAMIC_DISCOVERY.toString());
  76.        
  77.         valori.add(TipoPlugin.TOKEN_VALIDAZIONE.toString());
  78.        
  79.         valori.add(TipoPlugin.TOKEN_NEGOZIAZIONE.toString());
  80.        
  81.         valori.add(TipoPlugin.ATTRIBUTE_AUTHORITY.toString());
  82.        
  83.         if(ADD_RICERCHE) {
  84.             valori.add(TipoPlugin.RICERCA.toString());
  85.         }
  86.         if(ADD_STATISTICHE) {
  87.             valori.add(TipoPlugin.STATISTICA.toString());
  88.         }
  89.         if(ADD_TRANSAZIONI) {
  90.             valori.add(TipoPlugin.TRANSAZIONE.toString());
  91.         }
  92.                
  93.         return valori;
  94.     }
  95.    
  96.     public static List<String> getLabelsTipoPlugin(boolean addAllarmi) {
  97.         List<String> labels = new ArrayList<>();
  98.         List<String> values = getValuesTipoPlugin(addAllarmi);
  99.        
  100.         for (String value : values) {
  101.             String label = tipoPluginToLabel(TipoPlugin.toEnumConstant(value));
  102.             if(label != null) {
  103.                 labels.add(label);
  104.             }
  105.         }
  106.        
  107.         return labels;
  108.     }

  109.     public static String tipoPluginToLabel(TipoPlugin value) {
  110.         switch (value) {
  111.         case ALLARME:
  112.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_ALLARME;
  113.         case AUTENTICAZIONE:
  114.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_AUTENTICAZIONE;
  115.         case AUTORIZZAZIONE:
  116.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_AUTORIZZAZIONE;
  117.         case AUTORIZZAZIONE_CONTENUTI:
  118.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_AUTORIZZAZIONE_CONTENUTI;
  119.         case BEHAVIOUR:
  120.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_BEHAVIOUR;
  121.         case CONNETTORE:
  122.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_CONNETTORE;
  123.         case INTEGRAZIONE:
  124.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_INTEGRAZIONE;
  125.         case MESSAGE_HANDLER:
  126.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_MESSAGE_HANDLER;
  127.         case RATE_LIMITING:
  128.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_RATE_LIMITING;
  129.         case RICERCA:
  130.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_RICERCA;
  131.         case SERVICE_HANDLER:
  132.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_SERVICE_HANDLER;
  133.         case STATISTICA:
  134.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_STATISTICA;
  135.         case TRANSAZIONE:
  136.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_TRANSAZIONE;
  137.         case TOKEN_DYNAMIC_DISCOVERY:
  138.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_TOKEN_DYNAMIC_DISCOVERY;
  139.         case TOKEN_VALIDAZIONE:
  140.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_TOKEN_VALIDAZIONE;
  141.         case TOKEN_NEGOZIAZIONE:
  142.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_TOKEN_NEGOZIAZIONE;
  143.         case ATTRIBUTE_AUTHORITY:
  144.             return ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_ARCHIVI_CLASSI_PLUGIN_SELEZIONATE_ATTRIBUTE_AUTHORITY;
  145.         }
  146.         return null;
  147.     }
  148.        
  149.     public static String getApplicabilitaClassePlugin(Plugin plugin) {
  150.         if(plugin.sizePluginProprietaCompatibilitaList() > 0) {
  151.             TipoPlugin tipoPlugin = TipoPlugin.toEnumConstant(plugin.getTipoPlugin());
  152.            
  153.             StringBuilder sb = new StringBuilder();
  154.            
  155.             switch (tipoPlugin) {
  156.             case AUTENTICAZIONE:
  157.             case AUTORIZZAZIONE:
  158.             case AUTORIZZAZIONE_CONTENUTI:
  159.             case INTEGRAZIONE:
  160.                 // una property con nome = Ruolo
  161.                 for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
  162.                     if(sb.length() > 0)
  163.                         sb.append(", ");
  164.                    
  165.                     if(PluginCostanti.FILTRO_RUOLO_VALORE_ENTRAMBI.equals(prop.getValore())) {
  166.                         sb.append(PluginCostanti.FILTRO_RUOLO_LABEL_ENTRAMBI);
  167.                     }
  168.                     else {
  169.                         sb.append(prop.getValore());
  170.                     }
  171.                 }
  172.                 return sb.toString();
  173.             case SERVICE_HANDLER:
  174.                 // nome handler
  175.                 for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
  176.                     if(sb.length() > 0)
  177.                         sb.append(", ");
  178.                    
  179.                     if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INIT.equalsIgnoreCase(prop.getValore())) {
  180.                         sb.append(PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_INIT);
  181.                     }
  182.                     else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_EXIT.equalsIgnoreCase(prop.getValore())) {
  183.                         sb.append(PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_EXIT);
  184.                     }
  185.                     else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INTEGRATION_MANAGER_REQUEST.equalsIgnoreCase(prop.getValore())) {
  186.                         sb.append(PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_INTEGRATION_MANAGER_REQUEST);
  187.                     }
  188.                     else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INTEGRATION_MANAGER_RESPONSE.equalsIgnoreCase(prop.getValore())) {
  189.                         sb.append(PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_INTEGRATION_MANAGER_RESPONSE);
  190.                     }
  191.                     else {
  192.                         sb.append(prop.getValore());
  193.                     }
  194.                 }
  195.                 return sb.toString();
  196.             case MESSAGE_HANDLER:
  197.                 // message handler e ruolo messa ge handler
  198.                 String tipoMessaggio = null;
  199.                 String faseProcessamento = null;
  200.                 for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
  201.                     if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_NOME.equalsIgnoreCase(prop.getNome())) {
  202.                         if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_PRE_IN.equalsIgnoreCase(prop.getValore())) {
  203.                             faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_PRE_IN_SHORT;
  204.                         }
  205.                         else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN.equalsIgnoreCase(prop.getValore())) {
  206.                             faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_IN_SHORT;
  207.                         }
  208.                         else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN_PROTOCOL_INFO.equalsIgnoreCase(prop.getValore())) {
  209.                             faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_IN_PROTOCOL_INFO_SHORT;
  210.                         }
  211.                         else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_OUT.equalsIgnoreCase(prop.getValore())) {
  212.                             faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_OUT_SHORT;
  213.                         }
  214.                         else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_POST_OUT.equalsIgnoreCase(prop.getValore())) {
  215.                             faseProcessamento =PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_POST_OUT_SHORT;
  216.                         }
  217.                         else {
  218.                             faseProcessamento =prop.getValore();
  219.                         }
  220.                     }
  221.                     else {
  222.                         if(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RICHIESTA.equals(prop.getValore())) {
  223.                             tipoMessaggio = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABEL_RICHIESTA;
  224.                         }
  225.                         else {
  226.                             tipoMessaggio = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABEL_RISPOSTA;
  227.                         }
  228.                     }
  229.                 }
  230.                 if(sb.length() > 0)
  231.                     sb.append(", ");
  232.                    
  233.                 sb.append(tipoMessaggio).append(" (").append(faseProcessamento).append(")");
  234.                 return sb.toString();
  235.             case ALLARME:
  236.                 // una property con nome = Applicabilita
  237.                 for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
  238.                     if(sb.length() > 0)
  239.                         sb.append(", ");
  240.                    
  241.                     if(PluginCostanti.FILTRO_APPLICABILITA_VALORE_IMPLEMENTAZIONE_API.equals(prop.getValore())) {
  242.                         sb.append(PluginCostanti.FILTRO_APPLICABILITA_LABEL_IMPLEMENTAZIONE_API);
  243.                     }
  244.                     else {
  245.                         sb.append(prop.getValore());
  246.                     }
  247.                 }
  248.                 return sb.toString();
  249.             case BEHAVIOUR:
  250.             case CONNETTORE:
  251.             case RATE_LIMITING:
  252.             case RICERCA:
  253.             case STATISTICA:
  254.             case TRANSAZIONE:
  255.             case TOKEN_DYNAMIC_DISCOVERY:
  256.             case TOKEN_VALIDAZIONE:
  257.             case TOKEN_NEGOZIAZIONE:
  258.             case ATTRIBUTE_AUTHORITY:
  259.                 return null;
  260.             }
  261.         }
  262.        
  263.         return null;
  264.     }
  265.    
  266.     public static TipoPlugin getTipoPluginDefault() {
  267.         return null;
  268.     }
  269.    
  270.     public static List<PluginProprietaCompatibilita> getApplicabilitaClassePlugin(TipoPlugin tipoPlugin, String ruolo, String shTipo, String mhTipo, String mhRuolo, String applicabilita) {
  271.         List<PluginProprietaCompatibilita> lista = new ArrayList<>();
  272.            
  273.             switch (tipoPlugin) {
  274.             case AUTENTICAZIONE:
  275.             case AUTORIZZAZIONE:
  276.             case AUTORIZZAZIONE_CONTENUTI:
  277.             case INTEGRAZIONE:
  278.                 PluginProprietaCompatibilita propRuolo = new PluginProprietaCompatibilita();

  279.                 propRuolo.setNome(PluginCostanti.FILTRO_RUOLO_NOME);
  280.                 propRuolo.setValore(ruolo);
  281.                
  282.                 lista.add(propRuolo);
  283.                 break;
  284.             case SERVICE_HANDLER:
  285.                 PluginProprietaCompatibilita propShTipo = new PluginProprietaCompatibilita();
  286.                
  287.                 propShTipo.setNome(PluginCostanti.FILTRO_SERVICE_HANDLER_NOME);
  288.                 propShTipo.setValore(shTipo);
  289.                
  290.                 lista.add(propShTipo);
  291.                 break;
  292.             case MESSAGE_HANDLER:
  293.                 PluginProprietaCompatibilita propMhTipo = new PluginProprietaCompatibilita();
  294.                
  295.                 propMhTipo.setNome(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_NOME);
  296.                 propMhTipo.setValore(mhTipo);
  297.                
  298.                 lista.add(propMhTipo);
  299.                
  300.                 PluginProprietaCompatibilita propMhRuolo = new PluginProprietaCompatibilita();
  301.                
  302.                 propMhRuolo.setNome(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_NOME);
  303.                 propMhRuolo.setValore(mhRuolo);
  304.                
  305.                 lista.add(propMhRuolo);
  306.                 break;
  307.             case ALLARME:
  308.                 PluginProprietaCompatibilita propApplicabilita = new PluginProprietaCompatibilita();

  309.                 propApplicabilita.setNome(PluginCostanti.FILTRO_APPLICABILITA_NOME);
  310.                 propApplicabilita.setValore(applicabilita);
  311.                
  312.                 lista.add(propApplicabilita);
  313.                 break;
  314.             case BEHAVIOUR:
  315.             case CONNETTORE:
  316.             case RATE_LIMITING:
  317.             case RICERCA:
  318.             case STATISTICA:
  319.             case TRANSAZIONE:
  320.             case TOKEN_DYNAMIC_DISCOVERY:
  321.             case TOKEN_VALIDAZIONE:
  322.             case TOKEN_NEGOZIAZIONE:
  323.             case ATTRIBUTE_AUTHORITY:
  324.                 break;
  325.             }
  326.            
  327.         return lista;
  328.     }
  329.    
  330.     public static void addInfoClassePlugin(DataElement de, TipoPlugin tipoPlugin, String ruolo, String shTipo, String mhTipo, String mhRuolo,
  331.             boolean integrationManagerEnabled) {
  332.        
  333.         String titolo = ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_CLASS_NAME;
  334.         DataElementInfo info = new DataElementInfo(titolo);
  335.        
  336.         String infoSingola = DynamicHelperCostanti.PLUGIN_CLASSNAME_INFO_SINGOLA;
  337.         String infoMultiplaAnd = DynamicHelperCostanti.PLUGIN_CLASSNAME_INFO_MULTIPLA_AND;
  338.         String infoMultiplaOr = DynamicHelperCostanti.PLUGIN_CLASSNAME_INFO_MULTIPLA_OR;
  339.        
  340.         List<String> listBody = new ArrayList<>();
  341.        
  342.         switch (tipoPlugin) {
  343.         case AUTENTICAZIONE:
  344.            
  345.             if(ruolo==null || StringUtils.isEmpty(ruolo) || !PluginCostanti.FILTRO_RUOLO_VALORI.contains(ruolo)) {
  346.                 ruolo = PluginCostanti.FILTRO_RUOLO_VALORI.get(0);
  347.             }
  348.            
  349.             if(Filtri.FILTRO_RUOLO_VALORE_EROGAZIONE.equals(ruolo)) {
  350.                 info.setHeaderBody(infoSingola);
  351.                 listBody.add(org.openspcoop2.pdd.core.autenticazione.pa.IAutenticazionePortaApplicativa.class.getName());
  352.             }
  353.             else if(Filtri.FILTRO_RUOLO_VALORE_FRUIZIONE.equals(ruolo)) {
  354.                 info.setHeaderBody(infoSingola);
  355.                 listBody.add(org.openspcoop2.pdd.core.autenticazione.pd.IAutenticazionePortaDelegata.class.getName());
  356.             }
  357.             else {
  358.                 info.setHeaderBody(infoMultiplaAnd);
  359.                 listBody.add(org.openspcoop2.pdd.core.autenticazione.pa.IAutenticazionePortaApplicativa.class.getName());
  360.                 listBody.add(org.openspcoop2.pdd.core.autenticazione.pd.IAutenticazionePortaDelegata.class.getName());
  361.             }
  362.             break;
  363.         case AUTORIZZAZIONE:
  364.            
  365.             if(ruolo==null || StringUtils.isEmpty(ruolo) || !PluginCostanti.FILTRO_RUOLO_VALORI.contains(ruolo)) {
  366.                 ruolo = PluginCostanti.FILTRO_RUOLO_VALORI.get(0);
  367.             }
  368.            
  369.             if(Filtri.FILTRO_RUOLO_VALORE_EROGAZIONE.equals(ruolo)) {
  370.                 info.setHeaderBody(infoSingola);
  371.                 listBody.add(org.openspcoop2.pdd.core.autorizzazione.pa.IAutorizzazionePortaApplicativa.class.getName());
  372.             }
  373.             else if(Filtri.FILTRO_RUOLO_VALORE_FRUIZIONE.equals(ruolo)) {
  374.                 info.setHeaderBody(infoSingola);
  375.                 listBody.add(org.openspcoop2.pdd.core.autorizzazione.pd.IAutorizzazionePortaDelegata.class.getName());
  376.             }
  377.             else {
  378.                 info.setHeaderBody(infoMultiplaAnd);
  379.                 listBody.add(org.openspcoop2.pdd.core.autorizzazione.pa.IAutorizzazionePortaApplicativa.class.getName());
  380.                 listBody.add(org.openspcoop2.pdd.core.autorizzazione.pd.IAutorizzazionePortaDelegata.class.getName());
  381.             }
  382.             break;
  383.         case AUTORIZZAZIONE_CONTENUTI:
  384.            
  385.             if(ruolo==null || StringUtils.isEmpty(ruolo) || !PluginCostanti.FILTRO_RUOLO_VALORI.contains(ruolo)) {
  386.                 ruolo = PluginCostanti.FILTRO_RUOLO_VALORI.get(0);
  387.             }
  388.            
  389.             if(Filtri.FILTRO_RUOLO_VALORE_EROGAZIONE.equals(ruolo)) {
  390.                 info.setHeaderBody(infoSingola);
  391.                 listBody.add(org.openspcoop2.pdd.core.autorizzazione.pa.IAutorizzazioneContenutoPortaApplicativa.class.getName());
  392.             }
  393.             else if(Filtri.FILTRO_RUOLO_VALORE_FRUIZIONE.equals(ruolo)) {
  394.                 info.setHeaderBody(infoSingola);
  395.                 listBody.add(org.openspcoop2.pdd.core.autorizzazione.pd.IAutorizzazioneContenutoPortaDelegata.class.getName());
  396.             }
  397.             else {
  398.                 info.setHeaderBody(infoMultiplaAnd);
  399.                 listBody.add(org.openspcoop2.pdd.core.autorizzazione.pa.IAutorizzazioneContenutoPortaApplicativa.class.getName());
  400.                 listBody.add(org.openspcoop2.pdd.core.autorizzazione.pd.IAutorizzazioneContenutoPortaDelegata.class.getName());
  401.             }
  402.             break;
  403.         case INTEGRAZIONE:
  404.            
  405.             if(ruolo==null || StringUtils.isEmpty(ruolo) || !PluginCostanti.FILTRO_RUOLO_VALORI.contains(ruolo)) {
  406.                 ruolo = PluginCostanti.FILTRO_RUOLO_VALORI.get(0);
  407.             }
  408.            
  409.             if(Filtri.FILTRO_RUOLO_VALORE_EROGAZIONE.equals(ruolo)) {
  410.                 info.setHeaderBody(infoMultiplaOr);
  411.                 listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePA.class.getName());
  412.                 listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePASoap.class.getName());
  413.             }
  414.             else if(Filtri.FILTRO_RUOLO_VALORE_FRUIZIONE.equals(ruolo)) {
  415.                 info.setHeaderBody(infoMultiplaOr);
  416.                 listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePD.class.getName());
  417.                 listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePDSoap.class.getName());
  418.             }
  419.             else {
  420.                 info.setHeaderBody(infoMultiplaAnd);
  421.                 listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePA.class.getName() + "(o versione Soap)");
  422.                 listBody.add(org.openspcoop2.pdd.core.integrazione.IGestoreIntegrazionePD.class.getName() + "(o versione Soap)");
  423.             }
  424.             break;
  425.         case RATE_LIMITING:
  426.             info.setHeaderBody(infoSingola);
  427.             listBody.add(org.openspcoop2.pdd.core.controllo_traffico.plugins.IRateLimiting.class.getName());
  428.             break;
  429.         case CONNETTORE:
  430.             info.setHeaderBody(infoSingola);
  431.             listBody.add(org.openspcoop2.pdd.core.connettori.IConnettore.class.getName());
  432.             break;
  433.         case ALLARME:
  434.             info.setHeaderBody(infoSingola);
  435.             listBody.add(org.openspcoop2.monitor.sdk.plugins.IAlarmProcessing.class.getName());
  436.             break;
  437.         case BEHAVIOUR:
  438.             info.setHeaderBody(infoSingola);
  439.             listBody.add(org.openspcoop2.pdd.core.behaviour.IBehaviour.class.getName());
  440.             break;
  441.         case SERVICE_HANDLER:{
  442.            
  443.             List<String> values = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_SENZA_INTEGRATION_MANAGER;
  444.             if(shTipo==null || StringUtils.isEmpty(shTipo) || !values.contains(shTipo)) {
  445.                 shTipo = values.get(0);
  446.             }
  447.            
  448.             if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INIT.equals(shTipo)) {
  449.                 info.setHeaderBody(infoSingola);
  450.                 listBody.add(org.openspcoop2.pdd.core.handlers.InitHandler.class.getName());
  451.             }
  452.             else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_EXIT.equals(shTipo)) {
  453.                 info.setHeaderBody(infoSingola);
  454.                 listBody.add(org.openspcoop2.pdd.core.handlers.ExitHandler.class.getName());
  455.             }
  456.             else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INTEGRATION_MANAGER_REQUEST.equals(shTipo)) {
  457.                 info.setHeaderBody(infoSingola);
  458.                 listBody.add(org.openspcoop2.pdd.core.handlers.IntegrationManagerRequestHandler.class.getName());
  459.             }
  460.             else if(PluginCostanti.FILTRO_SERVICE_HANDLER_VALORE_INTEGRATION_MANAGER_RESPONSE.equals(shTipo)) {
  461.                 info.setHeaderBody(infoSingola);
  462.                 listBody.add(org.openspcoop2.pdd.core.handlers.IntegrationManagerResponseHandler.class.getName());
  463.             }
  464.             break;
  465.         }
  466.         case MESSAGE_HANDLER:{
  467.            
  468.             if(mhRuolo==null || StringUtils.isEmpty(mhRuolo) || !PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORI.contains(mhRuolo)) {
  469.                 mhRuolo = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORI.get(0);
  470.             }
  471.             boolean isRisposta = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RISPOSTA.equals(mhRuolo);
  472.             List<String> values = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RICHIESTA;
  473.             if(mhTipo==null || StringUtils.isEmpty(mhTipo) || !values.contains(mhTipo)) {
  474.                 mhTipo = values.get(0);
  475.             }
  476.            
  477.             if(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RICHIESTA.equals(mhRuolo)) {
  478.                 if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_PRE_IN.equals(mhTipo)) {
  479.                     info.setHeaderBody(infoSingola);
  480.                     listBody.add(org.openspcoop2.pdd.core.handlers.PreInRequestHandler.class.getName());
  481.                 }
  482.                 else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN.equals(mhTipo)) {
  483.                     info.setHeaderBody(infoSingola);
  484.                     listBody.add(org.openspcoop2.pdd.core.handlers.InRequestHandler.class.getName());
  485.                 }
  486.                 else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN_PROTOCOL_INFO.equals(mhTipo)) {
  487.                     info.setHeaderBody(infoSingola);
  488.                     listBody.add(org.openspcoop2.pdd.core.handlers.InRequestProtocolHandler.class.getName());
  489.                 }
  490.                 else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_OUT.equals(mhTipo)) {
  491.                     info.setHeaderBody(infoSingola);
  492.                     listBody.add(org.openspcoop2.pdd.core.handlers.OutRequestHandler.class.getName());
  493.                 }
  494.                 else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_POST_OUT.equals(mhTipo)) {
  495.                     info.setHeaderBody(infoSingola);
  496.                     listBody.add(org.openspcoop2.pdd.core.handlers.PostOutRequestHandler.class.getName());
  497.                 }
  498.             }
  499.             else {
  500.                 if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_PRE_IN.equals(mhTipo)) {
  501.                     info.setHeaderBody(infoSingola);
  502.                     listBody.add(org.openspcoop2.pdd.core.handlers.PreInResponseHandler.class.getName());
  503.                 }
  504.                 else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_IN.equals(mhTipo)) {
  505.                     info.setHeaderBody(infoSingola);
  506.                     listBody.add(org.openspcoop2.pdd.core.handlers.InResponseHandler.class.getName());
  507.                 }
  508.                 else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_OUT.equals(mhTipo)) {
  509.                     info.setHeaderBody(infoSingola);
  510.                     listBody.add(org.openspcoop2.pdd.core.handlers.OutResponseHandler.class.getName());
  511.                 }
  512.                 else if(PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORE_POST_OUT.equals(mhTipo)) {
  513.                     info.setHeaderBody(infoSingola);
  514.                     listBody.add(org.openspcoop2.pdd.core.handlers.PostOutResponseHandler.class.getName());
  515.                 }
  516.             }
  517.             break;
  518.         }
  519.         case RICERCA:
  520.         case STATISTICA:
  521.         case TRANSAZIONE:
  522.             break;
  523.         case TOKEN_DYNAMIC_DISCOVERY:
  524.             info.setHeaderBody(infoSingola);
  525.             listBody.add(org.openspcoop2.pdd.core.token.parser.IDynamicDiscoveryParser.class.getName());
  526.             break;
  527.         case TOKEN_VALIDAZIONE:
  528.             info.setHeaderBody(infoSingola);
  529.             listBody.add(org.openspcoop2.pdd.core.token.parser.ITokenParser.class.getName());
  530.             break;
  531.         case TOKEN_NEGOZIAZIONE:
  532.             info.setHeaderBody(infoSingola);
  533.             listBody.add(org.openspcoop2.pdd.core.token.parser.INegoziazioneTokenParser.class.getName());
  534.             break;
  535.         case ATTRIBUTE_AUTHORITY:
  536.             info.setHeaderBody(infoSingola);
  537.             listBody.add(org.openspcoop2.pdd.core.token.attribute_authority.IRetrieveAttributeAuthorityResponseParser.class.getName());
  538.             break;
  539.         }
  540.        
  541.         if(!listBody.isEmpty()) {
  542.             info.setListBody(listBody);
  543.             de.setInfo(info);
  544.         }
  545.        
  546.     }
  547.    
  548.     public static List<DataElement> getSezioneDinamicaClassePlugin(List<DataElement> dati, TipoPlugin tipoPlugin, String ruolo, String shTipo, String mhTipo, String mhRuolo, String applicabilita,
  549.             boolean integrationManagerEnabled) {
  550.             switch (tipoPlugin) {
  551.             case AUTENTICAZIONE:
  552.             case AUTORIZZAZIONE:
  553.             case AUTORIZZAZIONE_CONTENUTI:
  554.             case INTEGRAZIONE:
  555.                 DataElement deRuolo = new DataElement();
  556.                 deRuolo.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_RUOLO);
  557.                 deRuolo.setLabels(PluginCostanti.FILTRO_RUOLO_LABELS);
  558.                 deRuolo.setValues(PluginCostanti.FILTRO_RUOLO_VALORI);
  559.                 deRuolo.setType(DataElementType.SELECT);
  560.                 deRuolo.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_RUOLO);
  561.                 deRuolo.setSelected(ruolo);
  562.                 deRuolo.setPostBack(true); // serve per 'info' del className
  563.                 dati.add(deRuolo);
  564.                
  565.                 break;
  566.             case SERVICE_HANDLER:{
  567.                 DataElement deShTipo = new DataElement();
  568.                 deShTipo.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_SERVICE_HANDLER);
  569.                 List<String> values = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_SENZA_INTEGRATION_MANAGER;
  570.                 List<String> labels = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_SENZA_INTEGRATION_MANAGER;
  571.                 deShTipo.setLabels(labels);
  572.                 deShTipo.setValues(values);
  573.                 deShTipo.setType(DataElementType.SELECT);
  574.                 deShTipo.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_SERVICE_HANDLER);
  575.                 deShTipo.setSelected(shTipo);
  576.                 deShTipo.setPostBack(true); // serve per 'info' del className
  577.                 dati.add(deShTipo);
  578.                 break;
  579.             }
  580.             case MESSAGE_HANDLER:{
  581.                
  582.                 DataElement deMhRuolo = new DataElement();
  583.                
  584.                 deMhRuolo.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_RUOLO_MESSAGE_HANDLER);
  585.                 deMhRuolo.setLabels(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABELS);
  586.                 deMhRuolo.setValues(PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORI);
  587.                 deMhRuolo.setType(DataElementType.SELECT);
  588.                 deMhRuolo.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_RUOLO_MESSAGE_HANDLER);
  589.                 deMhRuolo.setSelected(mhRuolo);
  590.                 deMhRuolo.setPostBack(true); // serve per 'info' del className
  591.                 dati.add(deMhRuolo);
  592.                
  593.                 DataElement deMhTipo = new DataElement();
  594.                 deMhTipo.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_FASE_MESSAGE_HANDLER);
  595.                 boolean isRisposta = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RISPOSTA.equals(mhRuolo);
  596.                 List<String> values = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RICHIESTA;
  597.                 List<String> labels = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_RICHIESTA;
  598.                 deMhTipo.setLabels(labels);
  599.                 deMhTipo.setValues(values);
  600.                 deMhTipo.setType(DataElementType.SELECT);
  601.                 deMhTipo.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_FASE_MESSAGE_HANDLER);
  602.                 deMhTipo.setSelected(mhTipo);
  603.                 deMhTipo.setPostBack(true); // serve per 'info' del className
  604.                 dati.add(deMhTipo);
  605.                
  606.                 break;
  607.             }
  608.             case ALLARME:
  609.                
  610.                 DataElement deApplicabilita = new DataElement();
  611.                 deApplicabilita.setLabel(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_APPLICABILITA);
  612.                 deApplicabilita.setLabels(PluginCostanti.FILTRO_APPLICABILITA_LABELS);
  613.                 deApplicabilita.setValues(PluginCostanti.FILTRO_APPLICABILITA_VALORI);
  614.                 deApplicabilita.setType(DataElementType.SELECT);
  615.                 deApplicabilita.setName(ConfigurazioneCostanti.PARAMETRO_CONFIGURAZIONE_PLUGINS_CLASSI_FILTRO_APPLICABILITA);
  616.                 deApplicabilita.setSelected(applicabilita);
  617.                 deApplicabilita.setPostBack(false); // non serve per 'info' del className, non cambia
  618.                 dati.add(deApplicabilita);
  619.                
  620.                 break;
  621.                
  622.             case BEHAVIOUR:
  623.             case CONNETTORE:
  624.             case RATE_LIMITING:
  625.             case RICERCA:
  626.             case STATISTICA:
  627.             case TRANSAZIONE:
  628.             case TOKEN_DYNAMIC_DISCOVERY:
  629.             case TOKEN_VALIDAZIONE:
  630.             case TOKEN_NEGOZIAZIONE:
  631.             case ATTRIBUTE_AUTHORITY:
  632.                 break;
  633.             }
  634.            
  635.         return dati;
  636.     }
  637.    
  638.     public static String getValoreProprieta(Plugin plugin, String nome) {
  639.         if(plugin.sizePluginProprietaCompatibilitaList() > 0) {
  640.             TipoPlugin tipoPlugin = TipoPlugin.toEnumConstant(plugin.getTipoPlugin());
  641.            
  642.             switch (tipoPlugin) {
  643.             case AUTENTICAZIONE:
  644.             case AUTORIZZAZIONE:
  645.             case AUTORIZZAZIONE_CONTENUTI:
  646.             case INTEGRAZIONE:
  647.             case SERVICE_HANDLER:
  648.             case MESSAGE_HANDLER:
  649.             case ALLARME:
  650.                 // una property con nome = Ruolo
  651.                 for (PluginProprietaCompatibilita prop : plugin.getPluginProprietaCompatibilitaList()) {
  652.                     if(prop.getNome().equals(nome))
  653.                         return prop.getValore();
  654.                 }
  655.                 return null;
  656.             case BEHAVIOUR:
  657.             case CONNETTORE:
  658.             case RATE_LIMITING:
  659.             case RICERCA:
  660.             case STATISTICA:
  661.             case TRANSAZIONE:
  662.             case TOKEN_DYNAMIC_DISCOVERY:
  663.             case TOKEN_VALIDAZIONE:
  664.             case TOKEN_NEGOZIAZIONE:
  665.             case ATTRIBUTE_AUTHORITY:
  666.                 return null;
  667.             }
  668.         }
  669.        
  670.         return null;
  671.     }
  672.    
  673.     public static void addFiltriSpecificiTipoPlugin(PageData pd, Logger log, ISearch ricerca, int idLista, String valoreTipoPlugin , int size,
  674.             boolean integrationManagerEnabled) throws Exception {
  675.         TipoPlugin tipoPlugin = TipoPlugin.toEnumConstant(valoreTipoPlugin);
  676.        
  677.         switch (tipoPlugin) {
  678.         case AUTENTICAZIONE:
  679.         case AUTORIZZAZIONE:
  680.         case AUTORIZZAZIONE_CONTENUTI:
  681.         case INTEGRAZIONE:
  682.             String filtroRuolo = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_RUOLO_NOME);
  683.             addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_RUOLO_NOME, PluginCostanti.FILTRO_RUOLO_LABEL, filtroRuolo,
  684.                     PluginCostanti.FILTRO_RUOLO_VALORI_SENZA_ENTRAMBI, PluginCostanti.FILTRO_RUOLO_LABELS_SENZA_ENTRAMBI, false, size);
  685.             break;
  686.         case SERVICE_HANDLER:{
  687.            
  688.             List<String> values = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_VALORI_SENZA_INTEGRATION_MANAGER;
  689.             List<String> labels = integrationManagerEnabled ? PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_CON_INTEGRATION_MANAGER : PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL_SENZA_INTEGRATION_MANAGER;
  690.            
  691.             String filtroShTipo = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_SERVICE_HANDLER_NOME);
  692.             addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_SERVICE_HANDLER_NOME, PluginCostanti.FILTRO_SERVICE_HANDLER_LABEL, filtroShTipo,
  693.                     values, labels, false, size);
  694.             break;
  695.         }
  696.         case MESSAGE_HANDLER:{
  697.             // message handler e ruolo
  698.            
  699.             String filtroMhRuolo = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_NOME);
  700.             addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_NOME, PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABEL, filtroMhRuolo,
  701.                     PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORI, PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_LABELS, true, size);
  702.                    
  703.             boolean isRisposta = PluginCostanti.FILTRO_RUOLO_MESSAGE_HANDLER_VALORE_RISPOSTA.equals(filtroMhRuolo);
  704.            
  705.             List<String> values = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_VALORI_RICHIESTA;
  706.             List<String> labels = isRisposta ? PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_RISPOSTA : PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL_RICHIESTA;
  707.            
  708.             String filtroMhTipo = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_NOME);
  709.             addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_NOME, PluginCostanti.FILTRO_FASE_MESSAGE_HANDLER_LABEL, filtroMhTipo,
  710.                     values, labels, false, size);
  711.            
  712.             break;
  713.         }
  714.         case ALLARME:
  715.             String filtroApplicabilita = SearchUtils.getFilter(ricerca, idLista, PluginCostanti.FILTRO_APPLICABILITA_NOME);
  716.             addFilterTipoPlugin(pd, log, PluginCostanti.FILTRO_APPLICABILITA_NOME, PluginCostanti.FILTRO_APPLICABILITA_LABEL, filtroApplicabilita,
  717.                     PluginCostanti.FILTRO_APPLICABILITA_VALORI_SENZA_QUALSIASI, PluginCostanti.FILTRO_APPLICABILITA_LABELS_SENZA_QUALSIASI, false, size);
  718.             break;
  719.         case BEHAVIOUR:
  720.         case CONNETTORE:
  721.         case RATE_LIMITING:
  722.         case RICERCA:
  723.         case STATISTICA:
  724.         case TRANSAZIONE:
  725.         case TOKEN_DYNAMIC_DISCOVERY:
  726.         case TOKEN_VALIDAZIONE:
  727.         case TOKEN_NEGOZIAZIONE:
  728.         case ATTRIBUTE_AUTHORITY:
  729.             break;
  730.         }
  731.        
  732.     }
  733.    
  734.     public static void addFilterTipoPlugin(PageData pd, Logger log, String nomeFiltro, String labelFiltro, String valoreFiltro, List<String> valuesFiltro, List<String> labelsFiltro, boolean postBack, int size) throws Exception{
  735.         try {
  736.            
  737.             int length = 1;
  738.             if(valuesFiltro!=null && !valuesFiltro.isEmpty()) {
  739.                 length+=valuesFiltro.size();
  740.             }
  741.             String [] values = new String[length];
  742.             String [] labels = new String[length];
  743.             labels[0] = CostantiControlStation.LABEL_PARAMETRO_RUOLO_QUALSIASI;
  744.             values[0] = CostantiControlStation.DEFAULT_VALUE_PARAMETRO_RUOLO_QUALSIASI;
  745.             if(valuesFiltro!=null && valuesFiltro.size()>0) {
  746.                 for (int i =0; i < valuesFiltro.size() ; i ++) {
  747.                     labels[i+1] = labelsFiltro.get(i);
  748.                     values[i+1] = valuesFiltro.get(i);
  749.                 }
  750.             }
  751.            
  752.             pd.addFilter(nomeFiltro, labelFiltro, valoreFiltro, values, labels, postBack, size);
  753.            
  754.         } catch (Exception e) {
  755.             log.error("Exception: " + e.getMessage(), e);
  756.             throw new Exception(e);
  757.         }
  758.     }
  759. }