DBOggettiInUsoUtils_genericProperties.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.util.ArrayList;
  25. import java.util.List;
  26. import java.util.Map;
  27. import java.util.Set;

  28. import org.openspcoop2.core.commons.ErrorsHandlerCostant;
  29. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  30. import org.openspcoop2.core.constants.CostantiDB;
  31. import org.openspcoop2.core.constants.CostantiLabel;
  32. import org.openspcoop2.core.constants.ProprietariProtocolProperty;
  33. import org.openspcoop2.core.id.IDGenericProperties;
  34. import org.openspcoop2.core.id.IDSoggetto;
  35. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  36. import org.openspcoop2.utils.UtilsException;
  37. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  38. import org.openspcoop2.utils.sql.ISQLQueryObject;
  39. import org.openspcoop2.utils.sql.SQLObjectFactory;

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

  49.     protected static boolean isGenericPropertiesInUso(Connection con, String tipoDB, IDGenericProperties idGP, Map<ErrorsHandlerCostant,
  50.             List<String>> whereIsInUso, boolean normalizeObjectIds) throws UtilsException {
  51.         String nomeMetodo = "isGenericPropertiesInUso";

  52.         PreparedStatement stmt = null;
  53.         ResultSet risultato = null;
  54.         PreparedStatement stmt2 = null;
  55.         ResultSet risultato2 = null;
  56.         String queryString;

  57.         try {

  58.             boolean isInUso = false;
  59.            
  60.            
  61.             if(CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_VALIDATION.equals(idGP.getTipologia())) {
  62.            
  63.                 List<String> tokenPA_list = whereIsInUso.get(ErrorsHandlerCostant.TOKEN_PA);
  64.                 List<String> tokenPD_list = whereIsInUso.get(ErrorsHandlerCostant.TOKEN_PD);
  65.                
  66.                 List<String> mapping_tokenPA_list = whereIsInUso.get(ErrorsHandlerCostant.TOKEN_MAPPING_PA);
  67.                 List<String> mapping_tokenPD_list = whereIsInUso.get(ErrorsHandlerCostant.TOKEN_MAPPING_PD);
  68.                
  69.                 List<String> tokenSA_list = whereIsInUso.get(ErrorsHandlerCostant.TOKEN_SA);
  70.                 List<String> tokenSA_MODI_list = whereIsInUso.get(ErrorsHandlerCostant.TOKEN_SA_MODI);
  71.                
  72.                 if (tokenPA_list == null) {
  73.                     tokenPA_list = new ArrayList<>();
  74.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_PA, tokenPA_list);
  75.                 }
  76.                 if (tokenPD_list == null) {
  77.                     tokenPD_list = new ArrayList<>();
  78.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_PD, tokenPD_list);
  79.                 }
  80.                
  81.                 if (mapping_tokenPA_list == null) {
  82.                     mapping_tokenPA_list = new ArrayList<>();
  83.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_MAPPING_PA, mapping_tokenPA_list);
  84.                 }
  85.                 if (mapping_tokenPD_list == null) {
  86.                     mapping_tokenPD_list = new ArrayList<>();
  87.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_MAPPING_PD, mapping_tokenPD_list);
  88.                 }
  89.                
  90.                 if (tokenSA_list == null) {
  91.                     tokenSA_list = new ArrayList<>();
  92.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_SA, tokenSA_list);
  93.                 }
  94.                 if (tokenSA_MODI_list == null) {
  95.                     tokenSA_MODI_list = new ArrayList<>();
  96.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_SA_MODI, tokenSA_MODI_list);
  97.                 }
  98.                
  99.                
  100.                 // Controllo che non sia in uso nelle porte applicative
  101.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  102.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  103.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  104.                 sqlQueryObject.addSelectField(CostantiDB.PORTE_APPLICATIVE+".nome_porta");
  105.                 sqlQueryObject.setANDLogicOperator(true);
  106.                 sqlQueryObject.setSelectDistinct(true);
  107.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".token_policy = ?");
  108.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  109.                 queryString = sqlQueryObject.createSQLQuery();
  110.                 stmt = con.prepareStatement(queryString);
  111.                 stmt.setString(1, idGP.getNome());
  112.                 risultato = stmt.executeQuery();
  113.                 while (risultato.next()) {
  114.                     String nome = risultato.getString("nome_porta");
  115.                     ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaApplicativa(nome, tipoDB, con, normalizeObjectIds);
  116.                     if(resultPorta.mapping) {
  117.                         mapping_tokenPA_list.add(resultPorta.label);
  118.                     }
  119.                     else {
  120.                         tokenPA_list.add(resultPorta.label);
  121.                     }
  122.                     isInUso = true;
  123.                 }
  124.                 risultato.close();
  125.                 stmt.close();
  126.                
  127.                
  128.                 // Controllo che il ruolo non sia in uso nelle porte delegate
  129.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  130.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  131.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  132.                 sqlQueryObject.addSelectField(CostantiDB.PORTE_DELEGATE+".nome_porta");
  133.                 sqlQueryObject.setANDLogicOperator(true);
  134.                 sqlQueryObject.setSelectDistinct(true);
  135.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".token_policy = ?");
  136.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  137.                 queryString = sqlQueryObject.createSQLQuery();
  138.                 stmt = con.prepareStatement(queryString);
  139.                 stmt.setString(1, idGP.getNome());
  140.                 risultato = stmt.executeQuery();
  141.                 while (risultato.next()) {
  142.                     String nome = risultato.getString("nome_porta");
  143.                     ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaDelegata(nome, tipoDB, con, normalizeObjectIds);
  144.                     if(resultPorta.mapping) {
  145.                         mapping_tokenPD_list.add(resultPorta.label);
  146.                     }
  147.                     else {
  148.                         tokenPD_list.add(resultPorta.label);
  149.                     }
  150.                     isInUso = true;
  151.                 }
  152.                 risultato.close();
  153.                 stmt.close();              
  154.                
  155.                
  156.                 // Controllo che non sia in uso nelle credenziali di un servizio applicativo
  157.                
  158.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  159.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  160.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  161.                 sqlQueryObject.addSelectField("tipo_soggetto");
  162.                 sqlQueryObject.addSelectField("nome_soggetto");
  163.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI+".nome");
  164.                 sqlQueryObject.setANDLogicOperator(true);
  165.                 sqlQueryObject.setSelectDistinct(true);
  166.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".token_policy = ?");
  167.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  168.                 queryString = sqlQueryObject.createSQLQuery();
  169.                 stmt = con.prepareStatement(queryString);
  170.                 stmt.setString(1, idGP.getNome());
  171.                 risultato = stmt.executeQuery();
  172.                 while (risultato.next()) {
  173.                     String tipo_soggetto = risultato.getString("tipo_soggetto");
  174.                     String nome_soggetto = risultato.getString("nome_soggetto");
  175.                     String nome = risultato.getString("nome");
  176.                     IDSoggetto idSoggetto = new IDSoggetto(tipo_soggetto, nome_soggetto);
  177.                     if(normalizeObjectIds) {
  178.                         String protocollo = ProtocolFactoryManager.getInstance().getProtocolByOrganizationType(tipo_soggetto);
  179.                         tokenSA_list.add(DBOggettiInUsoUtils.getProtocolPrefix(protocollo)+nome+DBOggettiInUsoUtils.getSubjectSuffix(protocollo, idSoggetto));
  180.                     }
  181.                     else {
  182.                         tokenSA_list.add(tipo_soggetto + "/" + nome_soggetto+"_"+nome);
  183.                     }
  184.                     isInUso = true;
  185.                 }
  186.                 risultato.close();
  187.                 stmt.close();
  188.                
  189.                
  190.                 // Controllo che non sia in uso nelle credenziali di un servizio applicativo interno ModI
  191.                
  192.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  193.                 sqlQueryObject.addFromTable(CostantiDB.PROTOCOL_PROPERTIES);
  194.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  195.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  196.                 sqlQueryObject.addSelectField("tipo_soggetto");
  197.                 sqlQueryObject.addSelectField("nome_soggetto");
  198.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI+".nome");
  199.                 sqlQueryObject.setANDLogicOperator(true);
  200.                 sqlQueryObject.setSelectDistinct(true);
  201.                 sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES+".tipo_proprietario = ?");
  202.                 sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES+".id_proprietario = "+CostantiDB.SERVIZI_APPLICATIVI+".id");
  203.                 sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES+".name = ?");
  204.                 sqlQueryObject.addWhereCondition(CostantiDB.PROTOCOL_PROPERTIES+".value_string = ?");
  205.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  206.                 queryString = sqlQueryObject.createSQLQuery();
  207.                 stmt = con.prepareStatement(queryString);
  208.                 int index = 1;
  209.                 stmt.setString(index++, ProprietariProtocolProperty.SERVIZIO_APPLICATIVO.name());
  210.                 stmt.setString(index++, CostantiDB.MODIPA_SICUREZZA_TOKEN_POLICY);
  211.                 stmt.setString(index++, idGP.getNome());
  212.                 risultato = stmt.executeQuery();
  213.                 while (risultato.next()) {
  214.                     String tipo_soggetto = risultato.getString("tipo_soggetto");
  215.                     String nome_soggetto = risultato.getString("nome_soggetto");
  216.                     String nome = risultato.getString("nome");
  217.                     IDSoggetto idSoggetto = new IDSoggetto(tipo_soggetto, nome_soggetto);
  218.                     if(normalizeObjectIds) {
  219.                         String protocollo = ProtocolFactoryManager.getInstance().getProtocolByOrganizationType(tipo_soggetto);
  220.                         tokenSA_MODI_list.add(DBOggettiInUsoUtils.getProtocolPrefix(protocollo)+nome+DBOggettiInUsoUtils.getSubjectSuffix(protocollo, idSoggetto));
  221.                     }
  222.                     else {
  223.                         tokenSA_MODI_list.add(tipo_soggetto + "/" + nome_soggetto+"_"+nome);
  224.                     }
  225.                     isInUso = true;
  226.                 }
  227.                 risultato.close();
  228.                 stmt.close();
  229.                
  230.             }
  231.            
  232.             if(CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_RETRIEVE.equals(idGP.getTipologia())) {
  233.                
  234.                 List<Long> idConnettori = new ArrayList<>();
  235.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  236.                 sqlQueryObject.addFromTable(CostantiDB.CONNETTORI);
  237.                 sqlQueryObject.addSelectField(CostantiDB.CONNETTORI+".id");
  238.                 sqlQueryObject.setANDLogicOperator(true);
  239.                 sqlQueryObject.setSelectDistinct(true);
  240.                 sqlQueryObject.addWhereCondition(CostantiDB.CONNETTORI+".token_policy = ?");
  241.                 queryString = sqlQueryObject.createSQLQuery();
  242.                 stmt = con.prepareStatement(queryString);
  243.                 stmt.setString(1, idGP.getNome());
  244.                 risultato = stmt.executeQuery();
  245.                 while (risultato.next()) {
  246.                     Long id = risultato.getLong("id");
  247.                     idConnettori.add(id);
  248.                 }
  249.                 risultato.close();
  250.                 stmt.close();
  251.                
  252.                 if(idConnettori!=null && !idConnettori.isEmpty()) {
  253.                
  254.                     isInUso = true; // già è in uso... anche se fallisse sotto il mapping
  255.                
  256.                 }
  257.                    
  258.                 /*
  259.                  * Le seguenti liste vengono inizializzate dentro il metodo.
  260.                  *
  261.                  * List<String> connettorePA_list = whereIsInUso.get(ErrorsHandlerCostant.CONNETTORE_PA);
  262.                  * List<String> connettorePD_list = whereIsInUso.get(ErrorsHandlerCostant.CONNETTORE_PD);
  263.                  * List<String> mapping_connettorePA_list = whereIsInUso.get(ErrorsHandlerCostant.CONNETTORE_MAPPING_PA);
  264.                  * List<String> mapping_connettorePD_list = whereIsInUso.get(ErrorsHandlerCostant.CONNETTORE_MAPPING_PD);
  265.                  **/
  266.                 DBOggettiInUsoUtils.formatConnettori(idConnettori,whereIsInUso, con, normalizeObjectIds, tipoDB);
  267.                        
  268.             }
  269.            
  270.            
  271.             if(CostantiConfigurazione.GENERIC_PROPERTIES_ATTRIBUTE_AUTHORITY.equals(idGP.getTipologia())) {
  272.                
  273.                 List<String> aaPA_list = whereIsInUso.get(ErrorsHandlerCostant.ATTRIBUTE_AUTHORITY_PA);
  274.                 List<String> aaPD_list = whereIsInUso.get(ErrorsHandlerCostant.ATTRIBUTE_AUTHORITY_PD);
  275.                
  276.                 List<String> mapping_aaPA_list = whereIsInUso.get(ErrorsHandlerCostant.ATTRIBUTE_AUTHORITY_MAPPING_PA);
  277.                 List<String> mapping_aaPD_list = whereIsInUso.get(ErrorsHandlerCostant.ATTRIBUTE_AUTHORITY_MAPPING_PD);
  278.                
  279.                 if (aaPA_list == null) {
  280.                     aaPA_list = new ArrayList<>();
  281.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_PA, aaPA_list);
  282.                 }
  283.                 if (aaPD_list == null) {
  284.                     aaPD_list = new ArrayList<>();
  285.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_PD, aaPD_list);
  286.                 }
  287.                
  288.                 if (mapping_aaPA_list == null) {
  289.                     mapping_aaPA_list = new ArrayList<>();
  290.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_MAPPING_PA, mapping_aaPA_list);
  291.                 }
  292.                 if (mapping_aaPD_list == null) {
  293.                     mapping_aaPD_list = new ArrayList<>();
  294.                     whereIsInUso.put(ErrorsHandlerCostant.TOKEN_MAPPING_PD, mapping_aaPD_list);
  295.                 }
  296.                
  297.                 // Controllo che non sia in uso nelle porte applicative
  298.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  299.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  300.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
  301.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  302.                 sqlQueryObject.addSelectField(CostantiDB.PORTE_APPLICATIVE+".nome_porta");
  303.                 sqlQueryObject.setANDLogicOperator(true);
  304.                 sqlQueryObject.setSelectDistinct(true);
  305.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY+".nome = ?");
  306.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  307.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  308.                 queryString = sqlQueryObject.createSQLQuery();
  309.                 stmt = con.prepareStatement(queryString);
  310.                 stmt.setString(1, idGP.getNome());
  311.                 risultato = stmt.executeQuery();
  312.                 while (risultato.next()) {
  313.                     String nome = risultato.getString("nome_porta");
  314.                     ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaApplicativa(nome, tipoDB, con, normalizeObjectIds);
  315.                     if(resultPorta.mapping) {
  316.                         mapping_aaPA_list.add(resultPorta.label);
  317.                     }
  318.                     else {
  319.                         aaPA_list.add(resultPorta.label);
  320.                     }
  321.                     isInUso = true;
  322.                 }
  323.                 risultato.close();
  324.                 stmt.close();
  325.                
  326.                
  327.                 // Controllo che il ruolo non sia in uso nelle porte delegate
  328.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(tipoDB);
  329.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  330.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_ATTRIBUTE_AUTHORITY);
  331.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  332.                 sqlQueryObject.addSelectField(CostantiDB.PORTE_DELEGATE+".nome_porta");
  333.                 sqlQueryObject.setANDLogicOperator(true);
  334.                 sqlQueryObject.setSelectDistinct(true);
  335.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_ATTRIBUTE_AUTHORITY+".nome = ?");
  336.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_ATTRIBUTE_AUTHORITY+".id_porta = "+CostantiDB.PORTE_DELEGATE+".id");
  337.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  338.                 queryString = sqlQueryObject.createSQLQuery();
  339.                 stmt = con.prepareStatement(queryString);
  340.                 stmt.setString(1, idGP.getNome());
  341.                 risultato = stmt.executeQuery();
  342.                 while (risultato.next()) {
  343.                     String nome = risultato.getString("nome_porta");
  344.                     ResultPorta resultPorta = DBOggettiInUsoUtils.formatPortaDelegata(nome, tipoDB, con, normalizeObjectIds);
  345.                     if(resultPorta.mapping) {
  346.                         mapping_aaPD_list.add(resultPorta.label);
  347.                     }
  348.                     else {
  349.                         aaPD_list.add(resultPorta.label);
  350.                     }
  351.                     isInUso = true;
  352.                 }
  353.                 risultato.close();
  354.                 stmt.close();              
  355.                
  356.             }
  357.            
  358.            
  359.             return isInUso;

  360.         } catch (Exception se) {
  361.             throw new UtilsException("[DBOggettiInUsoUtils::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  362.         } finally {
  363.             // Chiudo statement and resultset
  364.             JDBCUtilities.closeResources(risultato2, stmt2);
  365.             JDBCUtilities.closeResources(risultato, stmt);
  366.         }
  367.     }


  368.     protected static String toString(IDGenericProperties idGP, Map<ErrorsHandlerCostant, List<String>> whereIsInUso, boolean prefix, String separator){
  369.         return toString(idGP, whereIsInUso, prefix, separator," non eliminabile perch&egrave; :");
  370.     }
  371.     protected static String toString(IDGenericProperties idGP, Map<ErrorsHandlerCostant, List<String>> whereIsInUso, boolean prefix, String separator, String intestazione){
  372.         Set<ErrorsHandlerCostant> keys = whereIsInUso.keySet();
  373.         String object = "Token Policy";
  374.         if(idGP!=null && CostantiConfigurazione.GENERIC_PROPERTIES_ATTRIBUTE_AUTHORITY.equals(idGP.getTipologia())) {
  375.             object = "Attribute Authority";
  376.         }
  377.         String msg = object+" '"+(idGP!=null ? idGP.getNome() : "?")+"'" + intestazione+separator;
  378.         if(prefix==false){
  379.             msg = "";
  380.         }
  381.         String separatorCategorie = "";
  382.         if(whereIsInUso.size()>1) {
  383.             separatorCategorie = separator;
  384.         }
  385.         for (ErrorsHandlerCostant key : keys) {
  386.             List<String> messages = whereIsInUso.get(key);

  387.             if ( messages!=null && messages.size() > 0) {
  388.                 msg += separatorCategorie;
  389.             }
  390.            
  391.             switch (key) {
  392.            
  393.             case TOKEN_MAPPING_PD:
  394.                 if ( messages!=null && messages.size() > 0) {
  395.                     msg += "utilizzata nel controllo degli accessi per le Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  396.                 }
  397.                 break;
  398.             case TOKEN_PD:
  399.                 if ( messages!=null && messages.size() > 0) {
  400.                     msg += "utilizzato nelle Porte Outbound (Controllo degli Accessi): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  401.                 }
  402.                 break;
  403.             case TOKEN_MAPPING_PA:
  404.                 if ( messages!=null && messages.size() > 0) {
  405.                     msg += "utilizzato nel controllo degli accessi per le Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  406.                 }
  407.                 break;
  408.             case TOKEN_PA:
  409.                 if ( messages!=null && messages.size() > 0) {
  410.                     msg += "utilizzato nelle Porte Inbound (Controllo degli Accessi): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  411.                 }
  412.                 break;
  413.                
  414.             case TOKEN_SA:
  415.                 if ( messages!=null && messages.size() > 0) {
  416.                     msg += "utilizzato negli Applicativi: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  417.                 }
  418.                 break;
  419.             case TOKEN_SA_MODI:
  420.                 if ( messages!=null && messages.size() > 0) {
  421.                     msg += "utilizzato negli Applicativi (ModI "+CostantiLabel.MODIPA_SICUREZZA_TOKEN_SUBTITLE_LABEL+"): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  422.                 }
  423.                 break;
  424.                
  425.             case CONNETTORE_MAPPING_PD:
  426.                 if ( messages!=null && messages.size() > 0) {
  427.                     msg += "utilizzata nel connettore per le Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  428.                 }
  429.                 break;
  430.             case CONNETTORE_PD:
  431.                 if ( messages!=null && messages.size() > 0) {
  432.                     msg += "utilizzato nelle Porte Outbound (Connettore): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  433.                 }
  434.                 break;
  435.             case CONNETTORE_MAPPING_PA:
  436.                 if ( messages!=null && messages.size() > 0) {
  437.                     msg += "utilizzato nel connettore per le Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  438.                 }
  439.                 break;
  440.             case CONNETTORE_PA:
  441.                 if ( messages!=null && messages.size() > 0) {
  442.                     msg += "utilizzato nelle Porte Inbound (Connettore): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  443.                 }
  444.                 break;
  445.                
  446.             case ATTRIBUTE_AUTHORITY_MAPPING_PD:
  447.                 if ( messages!=null && messages.size() > 0) {
  448.                     msg += "utilizzata nel controllo degli accessi per le Fruizioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  449.                 }
  450.                 break;
  451.             case ATTRIBUTE_AUTHORITY_PD:
  452.                 if ( messages!=null && messages.size() > 0) {
  453.                     msg += "utilizzato nelle Porte Outbound (Controllo degli Accessi): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  454.                 }
  455.                 break;
  456.             case ATTRIBUTE_AUTHORITY_MAPPING_PA:
  457.                 if ( messages!=null && messages.size() > 0) {
  458.                     msg += "utilizzato nel controllo degli accessi per le Erogazioni: " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  459.                 }
  460.                 break;
  461.             case ATTRIBUTE_AUTHORITY_PA:
  462.                 if ( messages!=null && messages.size() > 0) {
  463.                     msg += "utilizzato nelle Porte Inbound (Controllo degli Accessi): " + DBOggettiInUsoUtils.formatList(messages,separator) + separator;
  464.                 }
  465.                 break;
  466.                
  467.             default:
  468.                 msg += "utilizzato in oggetto non codificato ("+key+")"+separator;
  469.                 break;
  470.             }

  471.         }// chiudo for

  472.         return msg;
  473.     }
  474.    
  475. }