DBOggettiInUsoUtils_plugins.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.protocol.engine.utils;

  21. import java.sql.Connection;
  22. import java.sql.PreparedStatement;
  23. import java.sql.ResultSet;
  24. import java.text.MessageFormat;
  25. import java.util.ArrayList;
  26. import java.util.List;
  27. import java.util.Map;
  28. import java.util.Set;

  29. import org.openspcoop2.core.allarmi.constants.RuoloPorta;
  30. import org.openspcoop2.core.commons.DBUtils;
  31. import org.openspcoop2.core.commons.ErrorsHandlerCostant;
  32. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  33. import org.openspcoop2.core.constants.CostantiDB;
  34. import org.openspcoop2.core.controllo_traffico.constants.TipoFiltroApplicativo;
  35. import org.openspcoop2.utils.UtilsException;
  36. import org.openspcoop2.utils.jdbc.JDBCParameterUtilities;
  37. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  38. import org.openspcoop2.utils.sql.ISQLQueryObject;
  39. import org.openspcoop2.utils.sql.LikeConfig;
  40. import org.openspcoop2.utils.sql.SQLObjectFactory;

  41. /**
  42.  * DBOggettiInUsoUtils_plugins
  43.  *
  44.  * @author Andrea Poli (apoli@link.it)
  45.  * @author $Author$
  46.  * @version $Rev$, $Date$
  47.  *
  48.  */
  49. public class DBOggettiInUsoUtils_plugins {

  50.     protected static boolean isPluginInUso(Connection con, String tipoDB, String className, String label, String tipoPlugin, String tipo,
  51.             Map<ErrorsHandlerCostant, List<String>> whereIsInUso, boolean normalizeObjectIds) throws UtilsException {

  52.         String nomeMetodo = "isPluginInUso";

  53.         PreparedStatement stmt = null;
  54.         ResultSet risultato = null;
  55.         PreparedStatement stmt2 = null;
  56.         ResultSet risultato2 = null;
  57.         String queryString;
  58.         try {
  59.             boolean isInUso = false;

  60.             long idPluginLong = DBUtils.getIdPlugin(className, label, tipoPlugin, tipo, con, tipoDB);
  61.             if(idPluginLong<=0){
  62.                 throw new UtilsException("Plugin con Label ["+label+"] non trovato");
  63.             }

  64.             if("CONNETTORE".equals(tipoPlugin)) {
  65.                
  66.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  67.                 sqlQueryObject.addFromTable(CostantiDB.CONNETTORI);
  68.                 sqlQueryObject.addSelectField("id");
  69.                 sqlQueryObject.setANDLogicOperator(true);
  70.                 sqlQueryObject.addWhereCondition("endpointtype=?");
  71.                 sqlQueryObject.addWhereCondition("custom=?");
  72.                 queryString = sqlQueryObject.createSQLQuery();
  73.                 stmt = con.prepareStatement(queryString);
  74.                 stmt.setString(1, tipo);
  75.                 stmt.setInt(2, CostantiDB.TRUE);
  76.                 risultato = stmt.executeQuery();
  77.                 List<Long> idConnettori = new ArrayList<Long>();
  78.                 while (risultato.next()){
  79.                     long idConnettore = risultato.getLong("id");
  80.                     idConnettori.add(idConnettore);
  81.                 }
  82.                 risultato.close();
  83.                 stmt.close();
  84.                
  85.                 if(idConnettori!=null && !idConnettori.isEmpty()) {
  86.                    
  87.                     isInUso = true; // già è in uso... anche se fallisse sotto il mapping
  88.                
  89.                 }
  90.                
  91.                 /*
  92.                  * Le seguenti liste vengono inizializzate dentro il metodo.
  93.                  *
  94.                  * List<String> connettorePA_list = whereIsInUso.get(ErrorsHandlerCostant.CONNETTORE_PA);
  95.                  * List<String> connettorePD_list = whereIsInUso.get(ErrorsHandlerCostant.CONNETTORE_PD);
  96.                  * List<String> mapping_connettorePA_list = whereIsInUso.get(ErrorsHandlerCostant.CONNETTORE_MAPPING_PA);
  97.                  * List<String> mapping_connettorePD_list = whereIsInUso.get(ErrorsHandlerCostant.CONNETTORE_MAPPING_PD);
  98.                  **/
  99.                 DBOggettiInUsoUtils.formatConnettori(idConnettori,whereIsInUso, con, normalizeObjectIds, tipoDB);
  100.             }
  101.            
  102.             else if("AUTENTICAZIONE".equals(tipoPlugin) ||
  103.                     "AUTORIZZAZIONE".equals(tipoPlugin) ||
  104.                     "AUTORIZZAZIONE_CONTENUTI".equals(tipoPlugin) ||
  105.                     "INTEGRAZIONE".equals(tipoPlugin) ||
  106.                     "BEHAVIOUR".equals(tipoPlugin)) {
  107.                
  108.                 boolean autenticazione = "AUTENTICAZIONE".equals(tipoPlugin);
  109.                 boolean autorizzazione = "AUTORIZZAZIONE".equals(tipoPlugin);
  110.                 boolean autorizzazione_contenuti = "AUTORIZZAZIONE_CONTENUTI".equals(tipoPlugin);
  111.                 boolean integrazione = "INTEGRAZIONE".equals(tipoPlugin);
  112.                 boolean behaviour = "BEHAVIOUR".equals(tipoPlugin);
  113.                
  114.                
  115.                 ErrorsHandlerCostant PD_tipoControllo_mapping = null;
  116.                 ErrorsHandlerCostant PD_tipoControllo = null;
  117.                 ErrorsHandlerCostant PA_tipoControllo_mapping = null;
  118.                 ErrorsHandlerCostant PA_tipoControllo = null;
  119.                 String colonna = "";
  120.                 if(autenticazione){
  121.                     PD_tipoControllo_mapping = ErrorsHandlerCostant.AUTENTICAZIONE_MAPPING_PD;
  122.                     PD_tipoControllo = ErrorsHandlerCostant.AUTENTICAZIONE_PD;
  123.                     PA_tipoControllo_mapping = ErrorsHandlerCostant.AUTENTICAZIONE_MAPPING_PA;
  124.                     PA_tipoControllo = ErrorsHandlerCostant.AUTENTICAZIONE_PA;
  125.                     colonna = "autenticazione";
  126.                 }
  127.                 else if(autorizzazione){
  128.                     PD_tipoControllo_mapping = ErrorsHandlerCostant.AUTORIZZAZIONE_MAPPING_PD;
  129.                     PD_tipoControllo = ErrorsHandlerCostant.AUTORIZZAZIONE_PD;
  130.                     PA_tipoControllo_mapping = ErrorsHandlerCostant.AUTORIZZAZIONE_MAPPING_PA;
  131.                     PA_tipoControllo = ErrorsHandlerCostant.AUTORIZZAZIONE_PA;
  132.                     colonna = "autorizzazione";
  133.                 }
  134.                 else if(autorizzazione_contenuti){
  135.                     PD_tipoControllo_mapping = ErrorsHandlerCostant.AUTORIZZAZIONE_CONTENUTI_MAPPING_PD;
  136.                     PD_tipoControllo = ErrorsHandlerCostant.AUTORIZZAZIONE_CONTENUTI_PD;
  137.                     PA_tipoControllo_mapping = ErrorsHandlerCostant.AUTORIZZAZIONE_CONTENUTI_MAPPING_PA;
  138.                     PA_tipoControllo = ErrorsHandlerCostant.AUTORIZZAZIONE_CONTENUTI_PA;
  139.                     colonna = "autorizzazione_contenuto";
  140.                 }
  141.                 else if(integrazione) {
  142.                     PD_tipoControllo_mapping = ErrorsHandlerCostant.INTEGRAZIONE_MAPPING_PD;
  143.                     PD_tipoControllo = ErrorsHandlerCostant.INTEGRAZIONE_PD;
  144.                     PA_tipoControllo_mapping = ErrorsHandlerCostant.INTEGRAZIONE_MAPPING_PA;
  145.                     PA_tipoControllo = ErrorsHandlerCostant.INTEGRAZIONE_PA;
  146.                     colonna = "integrazione";
  147.                 }
  148.                 else if(behaviour) {
  149.                     PA_tipoControllo_mapping = ErrorsHandlerCostant.BEHAVIOUR_MAPPING_PA;
  150.                     PA_tipoControllo = ErrorsHandlerCostant.BEHAVIOUR_PA;
  151.                     colonna = "behaviour";
  152.                 }
  153.                
  154.                 List<String> PD_mapping_list = null;
  155.                 List<String> PD_list = null;
  156.                 if(!behaviour) {
  157.                     PD_mapping_list = whereIsInUso.get(PD_tipoControllo_mapping);
  158.                     PD_list = whereIsInUso.get(PD_tipoControllo);
  159.                 }
  160.                 List<String> PA_mapping_list = whereIsInUso.get(PA_tipoControllo_mapping);
  161.                 List<String> PA_list = whereIsInUso.get(PA_tipoControllo);
  162.                
  163.                 if(!behaviour) {
  164.                     if (PD_mapping_list == null) {
  165.                         PD_mapping_list = new ArrayList<>();
  166.                         whereIsInUso.put(PD_tipoControllo_mapping, PD_mapping_list);
  167.                     }
  168.                     if (PD_list == null) {
  169.                         PD_list = new ArrayList<>();
  170.                         whereIsInUso.put(PD_tipoControllo, PD_list);
  171.                     }
  172.                 }
  173.                 if (PA_mapping_list == null) {
  174.                     PA_mapping_list = new ArrayList<>();
  175.                     whereIsInUso.put(PA_tipoControllo_mapping, PA_mapping_list);
  176.                 }
  177.                 if (PA_list == null) {
  178.                     PA_list = new ArrayList<>();
  179.                     whereIsInUso.put(PA_tipoControllo, PA_list);
  180.                 }
  181.                
  182.                 int i = 0;
  183.                 if(behaviour) {
  184.                     i=1;
  185.                 }
  186.                 for (; i < 2; i++) {
  187.                    
  188.                     String table = CostantiDB.PORTE_DELEGATE;
  189.                     if(i==1) {
  190.                         table = CostantiDB.PORTE_APPLICATIVE;
  191.                     }
  192.                    
  193.                     ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  194.                     sqlQueryObject.addFromTable(table);
  195.                     sqlQueryObject.addSelectField("nome_porta");
  196.                     sqlQueryObject.setANDLogicOperator(true);
  197.                     if(integrazione) {
  198.                         // condizione di controllo
  199.                         ISQLQueryObject sqlQueryObjectOr = SQLObjectFactory.createSQLQueryObject(tipoDB);
  200.                         sqlQueryObjectOr.setANDLogicOperator(false);
  201.                         // (integrazione == 'NOME') OR (integrazione like 'NOME,%') OR (integrazione like '%,NOME') OR (integrazione like '%,applicabilita_azioni,%')
  202.                         // CLOB sqlQueryObjectOr.addWhereCondition(integrazione = ?");
  203.                         sqlQueryObjectOr.addWhereLikeCondition(colonna, tipo, false , false);
  204.                         sqlQueryObjectOr.addWhereLikeCondition(colonna, tipo+",", LikeConfig.startsWith(false));
  205.                         sqlQueryObjectOr.addWhereLikeCondition(colonna, ","+tipo, LikeConfig.endsWith(false));
  206.                         sqlQueryObjectOr.addWhereLikeCondition(colonna, ","+tipo+",", true , false);
  207.                         sqlQueryObject.addWhereCondition(sqlQueryObjectOr.createSQLConditions());
  208.                     }
  209.                     else {
  210.                         sqlQueryObject.addWhereCondition(colonna+"=?");
  211.                     }
  212.                     queryString = sqlQueryObject.createSQLQuery();
  213.                     stmt = con.prepareStatement(queryString);
  214.                     if(!integrazione) {
  215.                         stmt.setString(1, tipo);
  216.                     }
  217.                     risultato = stmt.executeQuery();
  218.                     while (risultato.next()){
  219.                         String nome = risultato.getString("nome_porta");
  220.                         if(CostantiDB.PORTE_DELEGATE.equals(table)) {
  221.                             ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaDelegata(nome, tipoDB, con, normalizeObjectIds);
  222.                             if(resultPorta.mapping) {
  223.                                 PD_mapping_list.add(resultPorta.label);
  224.                             }
  225.                             else {
  226.                                 PD_list.add(resultPorta.label);
  227.                             }
  228.                         }
  229.                         else {
  230.                             ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaApplicativa(nome, tipoDB, con, normalizeObjectIds);
  231.                             if(resultPorta.mapping) {
  232.                                 PA_mapping_list.add(resultPorta.label);
  233.                             }
  234.                             else {
  235.                                 PA_list.add(resultPorta.label);
  236.                             }
  237.                         }
  238.                         isInUso = true;
  239.                     }
  240.                     risultato.close();
  241.                     stmt.close();
  242.                    
  243.                 }
  244.             }
  245.            
  246.             else if("RATE_LIMITING".equals(tipoPlugin)) {
  247.                
  248.                 List<String> ct_list = whereIsInUso.get(ErrorsHandlerCostant.CONTROLLO_TRAFFICO);
  249.                 if (ct_list == null) {
  250.                     ct_list = new ArrayList<>();
  251.                     whereIsInUso.put(ErrorsHandlerCostant.CONTROLLO_TRAFFICO, ct_list);
  252.                 }  
  253.                
  254.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  255.                 sqlQueryObject.addFromTable(CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY);
  256.                 sqlQueryObject.addSelectField("active_policy_id");
  257.                 sqlQueryObject.addSelectField("policy_alias");
  258.                 sqlQueryObject.addSelectField("filtro_ruolo");
  259.                 sqlQueryObject.addSelectField("filtro_porta");
  260.                 sqlQueryObject.setANDLogicOperator(false); // OR
  261.                 sqlQueryObject.addWhereCondition(true,
  262.                         CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY+".filtro_key_enabled = ?",
  263.                         CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY+".filtro_key_type = ?",
  264.                         sqlQueryObject.getWhereLikeCondition(CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY+".filtro_key_name", tipo, false, false));
  265.                 sqlQueryObject.addWhereCondition(true,
  266.                         CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY+".group_key_enabled = ?",
  267.                         CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY+".group_key_type = ?",
  268.                         sqlQueryObject.getWhereLikeCondition(CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY+".group_key_name", tipo, false, false));
  269.                 sqlQueryObject.addOrderBy("filtro_ruolo");
  270.                 sqlQueryObject.addOrderBy("filtro_porta");
  271.                 queryString = sqlQueryObject.createSQLQuery();
  272.                 stmt = con.prepareStatement(queryString);
  273.                 int index = 1;
  274.                 JDBCParameterUtilities utils = new JDBCParameterUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2());
  275.                 utils.setParameter(stmt, index++, true, boolean.class);
  276.                 stmt.setString(index++, TipoFiltroApplicativo.PLUGIN_BASED.getValue());
  277.                 utils.setParameter(stmt, index++, true, boolean.class);
  278.                 stmt.setString(index++, TipoFiltroApplicativo.PLUGIN_BASED.getValue());
  279.                 risultato = stmt.executeQuery();
  280.                 while (risultato.next()) {
  281.                    
  282.                     String alias = risultato.getString("policy_alias");
  283.                     if(alias== null || "".equals(alias)) {
  284.                         alias = risultato.getString("active_policy_id");
  285.                     }
  286.                    
  287.                     String nomePorta = risultato.getString("filtro_porta");
  288.                     String filtro_ruolo = risultato.getString("filtro_ruolo");
  289.                     if(nomePorta!=null) {
  290.                         String tipoPorta = null;
  291.                         String labelPorta = null;
  292.                         if("delegata".equals(filtro_ruolo)) {
  293.                             try {
  294.                                 ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaDelegata(nomePorta, tipoDB, con, normalizeObjectIds);
  295.                                 if(resultPorta.mapping) {
  296.                                     labelPorta = "Fruizione di Servizio "+ resultPorta.label;
  297.                                 }
  298.                             }catch(Exception e) {
  299.                                 tipoPorta = "Outbound";
  300.                             }
  301.                         }
  302.                         else if("applicativa".equals(filtro_ruolo)) {
  303.                             try {
  304.                                 ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaApplicativa(nomePorta, tipoDB, con, normalizeObjectIds);
  305.                                 if(resultPorta.mapping) {
  306.                                     labelPorta = "Erogazione di Servizio "+ resultPorta.label;
  307.                                 }
  308.                             }catch(Exception e) {
  309.                                 tipoPorta = "Inbound";
  310.                             }
  311.                         }
  312.                         else {
  313.                             tipoPorta = filtro_ruolo;
  314.                         }
  315.                         if(labelPorta==null) {
  316.                             ct_list.add("Policy '"+alias+"' attiva nella porta '"+tipoPorta+"' '"+nomePorta+"' ");
  317.                         }
  318.                         else {
  319.                             ct_list.add("Policy '"+alias+"' attiva nella "+labelPorta);
  320.                         }
  321.                     }
  322.                     else {
  323.                         ct_list.add("Policy '"+alias+"'");
  324.                     }
  325.    
  326.                     isInUso = true;
  327.                 }
  328.                 risultato.close();
  329.                 stmt.close();
  330.             }
  331.                        
  332.             else if("ALLARME".equals(tipoPlugin)) {
  333.                 List<String> allarmiPD_mapping_list = whereIsInUso.get(ErrorsHandlerCostant.ALLARMI_MAPPING_PD);
  334.                 List<String> allarmiPD_list = whereIsInUso.get(ErrorsHandlerCostant.ALLARMI_PD);
  335.                 List<String> allarmiPA_mapping_list = whereIsInUso.get(ErrorsHandlerCostant.ALLARMI_MAPPING_PA);
  336.                 List<String> allarmiPA_list = whereIsInUso.get(ErrorsHandlerCostant.ALLARMI_PA);
  337.                 List<String> allarmi_list = whereIsInUso.get(ErrorsHandlerCostant.ALLARMI);
  338.                
  339.                 if (allarmiPD_mapping_list == null) {
  340.                     allarmiPD_mapping_list = new ArrayList<>();
  341.                     whereIsInUso.put(ErrorsHandlerCostant.ALLARMI_MAPPING_PD, allarmiPD_mapping_list);
  342.                 }
  343.                 if (allarmiPD_list == null) {
  344.                     allarmiPD_list = new ArrayList<>();
  345.                     whereIsInUso.put(ErrorsHandlerCostant.ALLARMI_PD, allarmiPD_list);
  346.                 }
  347.                 if (allarmiPA_mapping_list == null) {
  348.                     allarmiPA_mapping_list = new ArrayList<>();
  349.                     whereIsInUso.put(ErrorsHandlerCostant.ALLARMI_MAPPING_PA, allarmiPA_mapping_list);
  350.                 }
  351.                 if (allarmiPA_list == null) {
  352.                     allarmiPA_list = new ArrayList<>();
  353.                     whereIsInUso.put(ErrorsHandlerCostant.ALLARMI_PA, allarmiPA_list);
  354.                 }
  355.                 if (allarmi_list == null) {
  356.                     allarmi_list = new ArrayList<>();
  357.                     whereIsInUso.put(ErrorsHandlerCostant.ALLARMI, allarmi_list);
  358.                 }
  359.                
  360.                 // allarmi
  361.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  362.                 sqlQueryObject.addFromTable(CostantiDB.ALLARMI);
  363.                 sqlQueryObject.addSelectField("nome");
  364.                 sqlQueryObject.setANDLogicOperator(true);
  365.                 sqlQueryObject.addWhereCondition("tipo=?");
  366.                 sqlQueryObject.addWhereIsNullCondition("filtro_porta");
  367.                 queryString = sqlQueryObject.createSQLQuery();
  368.                 stmt = con.prepareStatement(queryString);
  369.                 stmt.setString(1, tipo);
  370.                 risultato = stmt.executeQuery();
  371.                 while (risultato.next()){
  372.                     String nome = risultato.getString("nome");
  373.                     allarmi_list.add(nome);
  374.                     isInUso = true;
  375.                 }
  376.                 risultato.close();
  377.                 stmt.close();
  378.                
  379.                
  380.                 // Porte applicative, allarmi
  381.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  382.                 sqlQueryObject.addFromTable(CostantiDB.ALLARMI);
  383.                 sqlQueryObject.addSelectField("nome");
  384.                 sqlQueryObject.addSelectField("filtro_porta");
  385.                 sqlQueryObject.setANDLogicOperator(true);
  386.                 sqlQueryObject.addWhereCondition("tipo=?");
  387.                 sqlQueryObject.addWhereCondition("filtro_ruolo=?");
  388.                 sqlQueryObject.addWhereIsNotNullCondition("filtro_porta");
  389.                 queryString = sqlQueryObject.createSQLQuery();
  390.                 stmt = con.prepareStatement(queryString);
  391.                 stmt.setString(1, tipo);
  392.                 stmt.setString(2, RuoloPorta.APPLICATIVA.getValue());
  393.                 risultato = stmt.executeQuery();
  394.                 while (risultato.next()){
  395.                     String nome = risultato.getString("filtro_porta");
  396.                     ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaApplicativa(nome, tipoDB, con, normalizeObjectIds);
  397.                     if(resultPorta.mapping) {
  398.                         allarmiPA_mapping_list.add(resultPorta.label);
  399.                     }
  400.                     else {
  401.                         allarmiPA_list.add(resultPorta.label);
  402.                     }
  403.                     isInUso = true;
  404.                 }
  405.                 risultato.close();
  406.                 stmt.close();

  407.                 // Porte delegate, allarmi
  408.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  409.                 sqlQueryObject.addFromTable(CostantiDB.ALLARMI);
  410.                 sqlQueryObject.addSelectField("nome");
  411.                 sqlQueryObject.addSelectField("filtro_porta");
  412.                 sqlQueryObject.setANDLogicOperator(true);
  413.                 sqlQueryObject.addWhereCondition("tipo=?");
  414.                 sqlQueryObject.addWhereCondition("filtro_ruolo=?");
  415.                 sqlQueryObject.addWhereIsNotNullCondition("filtro_porta");
  416.                 queryString = sqlQueryObject.createSQLQuery();
  417.                 stmt = con.prepareStatement(queryString);
  418.                 stmt.setString(1, tipo);
  419.                 stmt.setString(2, RuoloPorta.DELEGATA.getValue());
  420.                 risultato = stmt.executeQuery();
  421.                 while (risultato.next()){
  422.                     String nome = risultato.getString("filtro_porta");
  423.                     ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaDelegata(nome, tipoDB, con, normalizeObjectIds);
  424.                     if(resultPorta.mapping) {
  425.                         allarmiPD_mapping_list.add(resultPorta.label);
  426.                     }
  427.                     else {
  428.                         allarmiPD_list.add(resultPorta.label);
  429.                     }
  430.                     isInUso = true;
  431.                 }
  432.                 risultato.close();
  433.                 stmt.close();
  434.                
  435.             }else if("MESSAGE_HANDLER".equals(tipoPlugin)) {
  436.                 List<String> messageHandlerPD_mapping_list = whereIsInUso.get(ErrorsHandlerCostant.MESSAGE_HANDLER_MAPPING_PD);
  437.                 List<String> messageHandlerPD_list = whereIsInUso.get(ErrorsHandlerCostant.MESSAGE_HANDLER_PD);
  438.                 List<String> messageHandlerPA_mapping_list = whereIsInUso.get(ErrorsHandlerCostant.MESSAGE_HANDLER_MAPPING_PA);
  439.                 List<String> messageHandlerPA_list = whereIsInUso.get(ErrorsHandlerCostant.MESSAGE_HANDLER_PA);
  440.                 List<String> messageHandler_list = whereIsInUso.get(ErrorsHandlerCostant.MESSAGE_HANDLER);
  441.                
  442.                 if (messageHandlerPD_mapping_list == null) {
  443.                     messageHandlerPD_mapping_list = new ArrayList<>();
  444.                     whereIsInUso.put(ErrorsHandlerCostant.MESSAGE_HANDLER_MAPPING_PD, messageHandlerPD_mapping_list);
  445.                 }
  446.                 if (messageHandlerPD_list == null) {
  447.                     messageHandlerPD_list = new ArrayList<>();
  448.                     whereIsInUso.put(ErrorsHandlerCostant.MESSAGE_HANDLER_PD, messageHandlerPD_list);
  449.                 }
  450.                 if (messageHandlerPA_mapping_list == null) {
  451.                     messageHandlerPA_mapping_list = new ArrayList<>();
  452.                     whereIsInUso.put(ErrorsHandlerCostant.MESSAGE_HANDLER_MAPPING_PA, messageHandlerPA_mapping_list);
  453.                 }
  454.                 if (messageHandlerPA_list == null) {
  455.                     messageHandlerPA_list = new ArrayList<>();
  456.                     whereIsInUso.put(ErrorsHandlerCostant.MESSAGE_HANDLER_PA, messageHandlerPA_list);
  457.                 }
  458.                 if (messageHandler_list == null) {
  459.                     messageHandler_list = new ArrayList<>();
  460.                     whereIsInUso.put(ErrorsHandlerCostant.MESSAGE_HANDLER, messageHandler_list);
  461.                 }
  462.                
  463.                 // config handlers
  464.                 String tabella = CostantiDB.CONFIGURAZIONE_HANDLERS;
  465.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  466.                 sqlQueryObject.addFromTable(tabella);
  467.                 sqlQueryObject.addSelectField(tabella +".tipologia");
  468.                 sqlQueryObject.setANDLogicOperator(true);
  469.                 sqlQueryObject.addWhereCondition(tabella +".tipo=?");
  470.                 queryString = sqlQueryObject.createSQLQuery();
  471.                 stmt = con.prepareStatement(queryString);
  472.                 stmt.setString(1, tipo);
  473.                 risultato = stmt.executeQuery();
  474.                 while (risultato.next()){
  475.                     String tipologia = risultato.getString("tipologia");
  476.                     String labelMessaggio = formatMessageHandlerFromTipologia(tipologia);
  477.                     messageHandler_list.add(labelMessaggio);
  478.                     isInUso = true;
  479.                 }
  480.                 risultato.close();
  481.                 stmt.close();
  482.                
  483.                
  484.                 // Porte applicative, message handlers
  485.                 tabella = CostantiDB.PORTE_APPLICATIVE_HANDLERS;
  486.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  487.                 sqlQueryObject.addFromTable(tabella);
  488.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  489.                 sqlQueryObject.addSelectField(tabella +".tipologia");
  490.                 sqlQueryObject.addSelectField(CostantiDB.PORTE_APPLICATIVE +".nome_porta");
  491.                 sqlQueryObject.setANDLogicOperator(true);
  492.                 sqlQueryObject.addWhereCondition(tabella+".id_porta="+CostantiDB.PORTE_APPLICATIVE+".id");
  493.                 sqlQueryObject.addWhereCondition(tabella+".tipo=?");
  494.                 queryString = sqlQueryObject.createSQLQuery();
  495.                 stmt = con.prepareStatement(queryString);
  496.                 stmt.setString(1, tipo);
  497.                 risultato = stmt.executeQuery();
  498.                 while (risultato.next()){
  499.                     String tipologia = risultato.getString("tipologia");
  500.                     String nome = risultato.getString("nome_porta");
  501.                     String labelMessaggio = formatMessageHandlerFromTipologia(tipologia);
  502.                    
  503.                     ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaApplicativa(nome, tipoDB, con, normalizeObjectIds);
  504.                     if(resultPorta.mapping) {
  505.                         messageHandlerPA_mapping_list.add(resultPorta.label + ": " + labelMessaggio);
  506.                     }
  507.                     else {
  508.                         messageHandlerPA_list.add(resultPorta.label + ": " + labelMessaggio);
  509.                     }
  510.                     isInUso = true;
  511.                 }
  512.                 risultato.close();
  513.                 stmt.close();

  514.                 // Porte delegate, message handlers
  515.                 tabella = CostantiDB.PORTE_DELEGATE_HANDLERS;
  516.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  517.                 sqlQueryObject.addFromTable(tabella);
  518.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  519.                 sqlQueryObject.addSelectField(tabella +".tipologia");
  520.                 sqlQueryObject.addSelectField(CostantiDB.PORTE_DELEGATE +".nome_porta");
  521.                 sqlQueryObject.setANDLogicOperator(true);
  522.                 sqlQueryObject.addWhereCondition(tabella+".id_porta="+CostantiDB.PORTE_DELEGATE+".id");
  523.                 sqlQueryObject.addWhereCondition(tabella+".tipo=?");
  524.                 queryString = sqlQueryObject.createSQLQuery();
  525.                 stmt = con.prepareStatement(queryString);
  526.                 stmt.setString(1, tipo);
  527.                 risultato = stmt.executeQuery();
  528.                 while (risultato.next()){
  529.                     String tipologia = risultato.getString("tipologia");
  530.                     String nome = risultato.getString("nome_porta");
  531.                     String labelMessaggio = formatMessageHandlerFromTipologia(tipologia);
  532.                    
  533.                     ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaDelegata(nome, tipoDB, con, normalizeObjectIds);
  534.                     if(resultPorta.mapping) {
  535.                         messageHandlerPD_mapping_list.add(resultPorta.label + ": " + labelMessaggio);
  536.                     }
  537.                     else {
  538.                         messageHandlerPD_list.add(resultPorta.label + ": " + labelMessaggio);
  539.                     }
  540.                     isInUso = true;
  541.                 }
  542.                 risultato.close();
  543.                 stmt.close();
  544.                
  545.             }else if("SERVICE_HANDLER".equals(tipoPlugin)) {
  546.                 List<String> serviceHandler_list = whereIsInUso.get(ErrorsHandlerCostant.SERVICE_HANDLER);
  547.                
  548.                 if (serviceHandler_list == null) {
  549.                     serviceHandler_list = new ArrayList<>();
  550.                     whereIsInUso.put(ErrorsHandlerCostant.SERVICE_HANDLER, serviceHandler_list);
  551.                 }
  552.                
  553.                 // config handlers
  554.                 String tabella = CostantiDB.CONFIGURAZIONE_HANDLERS;
  555.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  556.                 sqlQueryObject.addFromTable(tabella);
  557.                 sqlQueryObject.addSelectField(tabella +".tipologia");
  558.                 sqlQueryObject.setANDLogicOperator(true);
  559.                 sqlQueryObject.addWhereCondition(tabella +".tipo=?");
  560.                 queryString = sqlQueryObject.createSQLQuery();
  561.                 stmt = con.prepareStatement(queryString);
  562.                 stmt.setString(1, tipo);
  563.                 risultato = stmt.executeQuery();
  564.                 while (risultato.next()){
  565.                     String tipologia = risultato.getString("tipologia");
  566.                     String labelMessaggio = formatServiceHandlerFromTipologia(tipologia);
  567.                     serviceHandler_list.add(labelMessaggio);
  568.                     isInUso = true;
  569.                 }
  570.                 risultato.close();
  571.                 stmt.close();
  572.             }
  573.             else if("TOKEN_DYNAMIC_DISCOVERY".equals(tipoPlugin)
  574.                     ||
  575.                 "TOKEN_VALIDAZIONE".equals(tipoPlugin)
  576.                 ||
  577.                 "TOKEN_NEGOZIAZIONE".equals(tipoPlugin)
  578.                 ||
  579.                 "ATTRIBUTE_AUTHORITY".equals(tipoPlugin) ) {
  580.                
  581.                 boolean tokenDynamicDiscovery = "TOKEN_DYNAMIC_DISCOVERY".equals(tipoPlugin);
  582.                 boolean tokenValidazione = "TOKEN_VALIDAZIONE".equals(tipoPlugin);
  583.                 boolean tokenNegoziazione = "TOKEN_NEGOZIAZIONE".equals(tipoPlugin);
  584.                 boolean attributeAuthority = "ATTRIBUTE_AUTHORITY".equals(tipoPlugin);
  585.                
  586.                 ErrorsHandlerCostant constants = null;
  587.                 String tipologia = null;
  588.                 if(tokenDynamicDiscovery) {
  589.                     constants = ErrorsHandlerCostant.TOKEN_DYNAMIC_DISCOVERY_PA;
  590.                     tipologia = CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_VALIDATION;
  591.                 }
  592.                 else if(tokenValidazione) {
  593.                     constants = ErrorsHandlerCostant.TOKEN_PA;
  594.                     tipologia = CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_VALIDATION;
  595.                 }
  596.                 else if(tokenNegoziazione) {
  597.                     constants = ErrorsHandlerCostant.TOKEN_NEGOZIAZIONE_PA;
  598.                     tipologia = CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_RETRIEVE;
  599.                 }
  600.                 else {
  601.                     constants = ErrorsHandlerCostant.ATTRIBUTE_AUTHORITY_PA;
  602.                     tipologia = CostantiConfigurazione.GENERIC_PROPERTIES_ATTRIBUTE_AUTHORITY;
  603.                 }
  604.                                
  605.                 List<String> gpList = whereIsInUso.get(constants);
  606.                 if (gpList == null) {
  607.                     gpList = new ArrayList<>();
  608.                     whereIsInUso.put(constants, gpList);
  609.                 }  
  610.                
  611.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  612.                 sqlQueryObject.addFromTable(CostantiDB.CONFIG_GENERIC_PROPERTIES, "gps");
  613.                 sqlQueryObject.addFromTable(CostantiDB.CONFIG_GENERIC_PROPERTY, "gp");
  614.                 sqlQueryObject.setSelectDistinct(true);
  615.                 sqlQueryObject.addSelectAliasField("gps", "nome", "nomeGP");
  616.                 sqlQueryObject.setANDLogicOperator(true);
  617.                 sqlQueryObject.addWhereCondition("gps.id=gp.id_props");
  618.                 sqlQueryObject.addWhereCondition("gps.tipologia=?");
  619.                 String campoGpNome = "gp.nome=?";
  620.                 String campoGpValore = "gp.valore";
  621.                 if(tokenValidazione) {
  622.                     sqlQueryObject.addWhereCondition(false, campoGpNome, campoGpNome, campoGpNome);
  623.                     sqlQueryObject.addWhereLikeCondition(campoGpValore, tipo, false, false, false);
  624.                 }
  625.                 else if(tokenDynamicDiscovery || tokenNegoziazione || attributeAuthority) {
  626.                     sqlQueryObject.addWhereCondition(campoGpNome);
  627.                     sqlQueryObject.addWhereLikeCondition(campoGpValore, tipo, false, false, false);
  628.                 }
  629.                
  630.                 queryString = sqlQueryObject.createSQLQuery();
  631.                 stmt = con.prepareStatement(queryString);
  632.                 int index = 1;
  633.                 JDBCParameterUtilities utils = new JDBCParameterUtilities(sqlQueryObject.getTipoDatabaseOpenSPCoop2());
  634.                 utils.setParameter(stmt, index++, tipologia, String.class);
  635.                 if(tokenValidazione) {
  636.                     utils.setParameter(stmt, index++, CostantiConfigurazione.POLICY_VALIDAZIONE_CLAIMS_PARSER_PLUGIN_TYPE, String.class);
  637.                     utils.setParameter(stmt, index++, CostantiConfigurazione.POLICY_INTROSPECTION_CLAIMS_PARSER_PLUGIN_TYPE, String.class);
  638.                     utils.setParameter(stmt, index++, CostantiConfigurazione.POLICY_USER_INFO_CLAIMS_PARSER_PLUGIN_TYPE, String.class);
  639.                 }
  640.                 else if(tokenDynamicDiscovery) {
  641.                     utils.setParameter(stmt, index++, CostantiConfigurazione.POLICY_DYNAMIC_DISCOVERY_CLAIMS_PARSER_PLUGIN_TYPE, String.class);
  642.                 }
  643.                 else if(tokenNegoziazione) {
  644.                     utils.setParameter(stmt, index++, CostantiConfigurazione.POLICY_RETRIEVE_TOKEN_PARSER_PLUGIN_TYPE, String.class);
  645.                 }
  646.                 else if(attributeAuthority) {
  647.                     utils.setParameter(stmt, index++, CostantiConfigurazione.AA_RESPONSE_PARSER_PLUGIN_TYPE, String.class);
  648.                 }
  649.                 risultato = stmt.executeQuery();
  650.                 while (risultato.next()) {
  651.                    
  652.                     String nome = risultato.getString("nomeGP");
  653.                    
  654.                     String labelMessaggio = DBOggettiInUsoUtils.formatGenericProperties(tipologia, nome);
  655.                     gpList.add(labelMessaggio);
  656.    
  657.                     isInUso = true;
  658.                 }
  659.                 risultato.close();
  660.                 stmt.close();
  661.             }
  662.            
  663.             return isInUso;

  664.         } catch (Exception se) {
  665.             throw new UtilsException("[DBOggettiInUsoUtils::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  666.         } finally {
  667.             // Chiudo statement and resultset
  668.             JDBCUtilities.closeResources(risultato2, stmt2);
  669.             JDBCUtilities.closeResources(risultato, stmt);
  670.         }
  671.     }

  672.     protected static String toString(String className, String label, String tipoPlugin, String tipo, Map<ErrorsHandlerCostant, List<String>> whereIsInUso, boolean prefix, String separator){
  673.        
  674.         if(className!=null && tipoPlugin!=null && tipo!=null) {
  675.             // nop
  676.         }
  677.        
  678.         StringBuilder bf = new StringBuilder();
  679.    
  680.         bf.append(label);
  681.        
  682.         Set<ErrorsHandlerCostant> keys = whereIsInUso.keySet();
  683.         StringBuilder msg = new StringBuilder();
  684.         msg.append("Plugin '" +bf.toString() +"' non eliminabile perch&egrave; :"+separator);
  685.         if(!prefix){
  686.             msg = new StringBuilder();
  687.         }
  688.         String separatorCategorie = "";
  689.         if(whereIsInUso.size()>1) {
  690.             separatorCategorie = separator;
  691.         }
  692.         for (ErrorsHandlerCostant key : keys) {
  693.             List<String> messages = whereIsInUso.get(key);

  694.             if ( messages!=null && !messages.isEmpty()) {
  695.                 msg.append(separatorCategorie);
  696.             }
  697.            
  698.             switch (key) {
  699.            
  700.             case CONNETTORE_MAPPING_PD:
  701.                 if ( messages!=null && !messages.isEmpty()) {
  702.                     msg.append("utilizzata nel connettore per le Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  703.                 }
  704.                 break;
  705.             case CONNETTORE_PD:
  706.                 if ( messages!=null && !messages.isEmpty()) {
  707.                     msg.append("utilizzato nelle Porte Outbound (Connettore): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  708.                 }
  709.                 break;
  710.             case CONNETTORE_MAPPING_PA:
  711.                 if ( messages!=null && !messages.isEmpty()) {
  712.                     msg.append("utilizzato nel connettore per le Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  713.                 }
  714.                 break;
  715.             case CONNETTORE_PA:
  716.                 if ( messages!=null && !messages.isEmpty()) {
  717.                     msg.append("utilizzato nelle Porte Inbound (Connettore): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  718.                 }
  719.                 break;
  720.            
  721.             case AUTENTICAZIONE_MAPPING_PD:
  722.                 if ( messages!=null && !messages.isEmpty()) {
  723.                     msg.append("utilizzato come processo di autenticazione nel Controllo degli Accessi delle Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  724.                 }
  725.                 break;
  726.             case AUTENTICAZIONE_PD:
  727.                 if ( messages!=null && !messages.isEmpty()) {
  728.                     msg.append("utilizzato nelle Porte Outbound (Controllo degli Accessi - Autenticazione): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  729.                 }
  730.                 break;
  731.             case AUTENTICAZIONE_MAPPING_PA:
  732.                 if ( messages!=null && !messages.isEmpty()) {
  733.                     msg.append("utilizzato come processo di autenticazione nel Controllo degli Accessi delle Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  734.                 }
  735.                 break;
  736.             case AUTENTICAZIONE_PA:
  737.                 if ( messages!=null && !messages.isEmpty()) {
  738.                     msg.append("utilizzato nelle Porte Inbound (Controllo degli Accessi - Autenticazione): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  739.                 }
  740.                 break;
  741.                
  742.             case AUTORIZZAZIONE_MAPPING_PD:
  743.                 if ( messages!=null && !messages.isEmpty()) {
  744.                     msg.append("utilizzato come processo di autorizzazione nel Controllo degli Accessi delle Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  745.                 }
  746.                 break;
  747.             case AUTORIZZAZIONE_PD:
  748.                 if ( messages!=null && !messages.isEmpty()) {
  749.                     msg.append("utilizzato nelle Porte Outbound (Controllo degli Accessi - Autorizzazione): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  750.                 }
  751.                 break;
  752.             case AUTORIZZAZIONE_MAPPING_PA:
  753.                 if ( messages!=null && !messages.isEmpty()) {
  754.                     msg.append("utilizzato come processo di autorizzazione nel Controllo degli Accessi delle Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  755.                 }
  756.                 break;
  757.             case AUTORIZZAZIONE_PA:
  758.                 if ( messages!=null && !messages.isEmpty()) {
  759.                     msg.append("utilizzato nelle Porte Inbound (Controllo degli Accessi - Autorizzazione): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  760.                 }
  761.                 break;
  762.                
  763.             case AUTORIZZAZIONE_CONTENUTI_MAPPING_PD:
  764.                 if ( messages!=null && !messages.isEmpty()) {
  765.                     msg.append("utilizzato come processo di autorizzazione dei contenuti nel Controllo degli Accessi delle Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  766.                 }
  767.                 break;
  768.             case AUTORIZZAZIONE_CONTENUTI_PD:
  769.                 if ( messages!=null && !messages.isEmpty()) {
  770.                     msg.append("utilizzato nelle Porte Outbound (Controllo degli Accessi - Autorizzazione dei Contenuti): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  771.                 }
  772.                 break;
  773.             case AUTORIZZAZIONE_CONTENUTI_MAPPING_PA:
  774.                 if ( messages!=null && !messages.isEmpty()) {
  775.                     msg.append("utilizzato come processo di autorizzazione dei contenuti nel Controllo degli Accessi delle Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  776.                 }
  777.                 break;
  778.             case AUTORIZZAZIONE_CONTENUTI_PA:
  779.                 if ( messages!=null && !messages.isEmpty()) {
  780.                     msg.append("utilizzato nelle Porte Inbound (Controllo degli Accessi - Autorizzazione dei Contenuti): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  781.                 }
  782.                 break;
  783.                
  784.             case CONTROLLO_TRAFFICO:
  785.                 if ( messages!=null && !messages.isEmpty() ) {
  786.                     msg.append("utilizzato in Policy di Rate Limiting: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  787.                 }
  788.                 break;
  789.                
  790.             case INTEGRAZIONE_MAPPING_PD:
  791.                 if ( messages!=null && !messages.isEmpty()) {
  792.                     msg.append("utilizzato per generare i metadati di integrazione nelle Opzioni Avanzate delle Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  793.                 }
  794.                 break;
  795.             case INTEGRAZIONE_PD:
  796.                 if ( messages!=null && !messages.isEmpty()) {
  797.                     msg.append("utilizzato nelle Porte Outbound (Opzioni Avanzate - Metadata di Integrazione): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  798.                 }
  799.                 break;
  800.             case INTEGRAZIONE_MAPPING_PA:
  801.                 if ( messages!=null && !messages.isEmpty()) {
  802.                     msg.append("utilizzato per generare i metadati di integrazione nelle Opzioni Avanzate delle Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  803.                 }
  804.                 break;
  805.             case INTEGRAZIONE_PA:
  806.                 if ( messages!=null && !messages.isEmpty()) {
  807.                     msg.append("utilizzato nelle Porte Inbound (Opzioni Avanzate - Metadata di Integrazione): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  808.                 }
  809.                 break;
  810.                
  811.             case BEHAVIOUR_MAPPING_PA:
  812.                 if ( messages!=null && !messages.isEmpty()) {
  813.                     msg.append("utilizzato nella configurazione dei connettori multipli come consegna personalizzata delle Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  814.                 }
  815.                 break;
  816.             case BEHAVIOUR_PA:
  817.                 if ( messages!=null && !messages.isEmpty()) {
  818.                     msg.append("utilizzato nelle Porte Inbound (Connettori Multipli - Consegna Personalizzata): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  819.                 }
  820.                 break;
  821.                
  822.             case ALLARMI_MAPPING_PA:
  823.                 if ( messages!=null && !messages.isEmpty()) {
  824.                     msg.append("utilizzato negli Allarmi delle Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  825.                 }
  826.                 break;
  827.             case ALLARMI_PA:
  828.                 if ( messages!=null && !messages.isEmpty()) {
  829.                     msg.append("utilizzato nelle Porte Inbound (Allarmi): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  830.                 }
  831.                 break;
  832.             case ALLARMI_MAPPING_PD:
  833.                 if ( messages!=null && !messages.isEmpty()) {
  834.                     msg.append("utilizzato negli Allarmi delle Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  835.                 }
  836.                 break;
  837.             case ALLARMI_PD:
  838.                 if ( messages!=null && !messages.isEmpty()) {
  839.                     msg.append("utilizzato nelle Porte Outbound (Allarmi): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  840.                 }
  841.                 break;
  842.             case ALLARMI:
  843.                 if ( messages!=null && !messages.isEmpty() ) {
  844.                     msg.append("utilizzato negli Allarmi definiti nella configurazione generale: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  845.                 }
  846.                 break;
  847.             case MESSAGE_HANDLER_MAPPING_PA:
  848.                 if ( messages!=null && !messages.isEmpty()) {
  849.                     msg.append("utilizzato nei Message Handlers delle Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  850.                 }
  851.                 break;
  852.             case MESSAGE_HANDLER_PA:
  853.                 if ( messages!=null && !messages.isEmpty()) {
  854.                     msg.append("utilizzato nelle Porte Inbound (Message Handlers): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  855.                 }
  856.                 break;
  857.             case MESSAGE_HANDLER:
  858.                 if ( messages!=null && !messages.isEmpty() ) {
  859.                     msg.append("utilizzato nei Message Handlers: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  860.                 }
  861.                 break;
  862.             case MESSAGE_HANDLER_MAPPING_PD:
  863.                 if ( messages!=null && !messages.isEmpty()) {
  864.                     msg.append("utilizzato nei Message Handlers delle Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  865.                 }
  866.                 break;
  867.             case MESSAGE_HANDLER_PD:
  868.                 if ( messages!=null && !messages.isEmpty()) {
  869.                     msg.append("utilizzato nelle Porte Outbound (Message Handlers): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  870.                 }
  871.                 break;
  872.             case SERVICE_HANDLER:
  873.                 if ( messages!=null && !messages.isEmpty() ) {
  874.                     msg.append("utilizzato nei Service Handlers: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  875.                 }
  876.                 break;
  877.                
  878.             case TOKEN_DYNAMIC_DISCOVERY_PA:
  879.                 if ( messages!=null && !messages.isEmpty() ) {
  880.                     msg.append("utilizzato nelle Token Policy di Validazione: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  881.                 }
  882.                 break;  
  883.             case TOKEN_PA:
  884.                 if ( messages!=null && !messages.isEmpty() ) {
  885.                     msg.append("utilizzato nelle Token Policy di Validazione: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  886.                 }
  887.                 break;  
  888.             case TOKEN_NEGOZIAZIONE_PA:
  889.                 if ( messages!=null && !messages.isEmpty() ) {
  890.                     msg.append("utilizzato nelle Token Policy di Negoziazione: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  891.                 }
  892.                 break;  
  893.             case ATTRIBUTE_AUTHORITY_PA:
  894.                 if ( messages!=null && !messages.isEmpty() ) {
  895.                     msg.append("utilizzato negli Attribute Authority: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator);
  896.                 }
  897.                 break;  
  898.                
  899.             default:
  900.                 msg.append("utilizzato in oggetto non codificato ("+key+")"+separator);
  901.                 break;
  902.             }

  903.         }// chiudo for

  904.         return msg.toString();
  905.     }

  906.     private static String formatMessageHandlerFromTipologia(String tipologia) {
  907.         if(tipologia.endsWith(CostantiDB.HANDLER_REQUEST_SUFFIX)) {
  908.             String tipologiaWS = tipologia.substring(0, tipologia.indexOf(CostantiDB.HANDLER_REQUEST_SUFFIX));
  909.             String template = "Fase [{0}] degli Handler di Richiesta";
  910.             return MessageFormat.format(template, tipologiaWS);
  911.         } else {
  912.             String tipologiaWS = tipologia.substring(0, tipologia.indexOf(CostantiDB.HANDLER_RESPONSE_SUFFIX));
  913.             String template = "Fase [{0}] degli Handler di Risposta";
  914.             return MessageFormat.format(template, tipologiaWS);
  915.         }
  916.     }
  917.    
  918.     private static String formatServiceHandlerFromTipologia(String tipologia) {
  919. /**     String tipologiaWS = tipologia.substring(0, tipologia.indexOf(CostantiDB.HANDLER_REQUEST_SUFFIX));*/
  920.         return MessageFormat.format("Fase [{0}]", tipologia);
  921.        
  922.     }
  923.    
  924. }