DriverConfigurazioneDB_porteDelegateDriver.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.core.config.driver.db;

  21. import java.sql.Connection;
  22. import java.sql.PreparedStatement;
  23. import java.sql.ResultSet;
  24. import java.sql.SQLException;
  25. import java.sql.Timestamp;
  26. import java.util.ArrayList;
  27. import java.util.List;

  28. import org.apache.commons.lang.StringUtils;
  29. import org.openspcoop2.core.byok.IDriverBYOK;
  30. import org.openspcoop2.core.commons.CoreException;
  31. import org.openspcoop2.core.commons.DBUtils;
  32. import org.openspcoop2.core.commons.IExtendedInfo;
  33. import org.openspcoop2.core.config.AttributeAuthority;
  34. import org.openspcoop2.core.config.AutorizzazioneRuoli;
  35. import org.openspcoop2.core.config.AutorizzazioneScope;
  36. import org.openspcoop2.core.config.ConfigurazioneMessageHandlers;
  37. import org.openspcoop2.core.config.ConfigurazionePortaHandler;
  38. import org.openspcoop2.core.config.CorrelazioneApplicativa;
  39. import org.openspcoop2.core.config.CorrelazioneApplicativaElemento;
  40. import org.openspcoop2.core.config.CorrelazioneApplicativaRisposta;
  41. import org.openspcoop2.core.config.CorrelazioneApplicativaRispostaElemento;
  42. import org.openspcoop2.core.config.CorsConfigurazione;
  43. import org.openspcoop2.core.config.DumpConfigurazione;
  44. import org.openspcoop2.core.config.GestioneToken;
  45. import org.openspcoop2.core.config.GestioneTokenAutenticazione;
  46. import org.openspcoop2.core.config.MessageSecurity;
  47. import org.openspcoop2.core.config.MessageSecurityFlow;
  48. import org.openspcoop2.core.config.MessageSecurityFlowParameter;
  49. import org.openspcoop2.core.config.MtomProcessor;
  50. import org.openspcoop2.core.config.MtomProcessorFlow;
  51. import org.openspcoop2.core.config.MtomProcessorFlowParameter;
  52. import org.openspcoop2.core.config.PortaDelegata;
  53. import org.openspcoop2.core.config.PortaDelegataAutorizzazioneServiziApplicativi;
  54. import org.openspcoop2.core.config.PortaDelegataAutorizzazioneToken;
  55. import org.openspcoop2.core.config.PortaDelegataAzione;
  56. import org.openspcoop2.core.config.PortaDelegataLocalForward;
  57. import org.openspcoop2.core.config.PortaDelegataServizio;
  58. import org.openspcoop2.core.config.PortaDelegataServizioApplicativo;
  59. import org.openspcoop2.core.config.PortaDelegataSoggettoErogatore;
  60. import org.openspcoop2.core.config.PortaTracciamento;
  61. import org.openspcoop2.core.config.Proprieta;
  62. import org.openspcoop2.core.config.ProprietaOggetto;
  63. import org.openspcoop2.core.config.ResponseCachingConfigurazione;
  64. import org.openspcoop2.core.config.Ruolo;
  65. import org.openspcoop2.core.config.Scope;
  66. import org.openspcoop2.core.config.TracciamentoConfigurazione;
  67. import org.openspcoop2.core.config.TracciamentoConfigurazioneFiletrace;
  68. import org.openspcoop2.core.config.Transazioni;
  69. import org.openspcoop2.core.config.Trasformazioni;
  70. import org.openspcoop2.core.config.ValidazioneContenutiApplicativi;
  71. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  72. import org.openspcoop2.core.config.constants.PortaDelegataAzioneIdentificazione;
  73. import org.openspcoop2.core.config.constants.RuoloTipoMatch;
  74. import org.openspcoop2.core.config.constants.RuoloTipologia;
  75. import org.openspcoop2.core.config.constants.ScopeTipoMatch;
  76. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  77. import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
  78. import org.openspcoop2.core.config.driver.ExtendedInfoManager;
  79. import org.openspcoop2.core.config.driver.FiltroRicercaPorteDelegate;
  80. import org.openspcoop2.core.config.driver.IDServizioUtils;
  81. import org.openspcoop2.core.constants.CostantiDB;
  82. import org.openspcoop2.core.id.IDPortaDelegata;
  83. import org.openspcoop2.core.id.IDServizio;
  84. import org.openspcoop2.core.id.IDSoggetto;
  85. import org.openspcoop2.core.id.IdentificativiFruizione;
  86. import org.openspcoop2.core.mapping.DBMappingUtils;
  87. import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
  88. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  89. import org.openspcoop2.utils.sql.ISQLQueryObject;
  90. import org.openspcoop2.utils.sql.SQLObjectFactory;

  91. /**
  92.  * DriverConfigurazioneDB_porteDelegateDriver
  93.  *
  94.  *
  95.  * @author Sandra Giangrandi (sandra@link.it)
  96.  * @author Stefano Corallo (corallo@link.it)
  97.  * @author $Author$
  98.  * @version $Rev$, $Date$
  99.  */
  100. public class DriverConfigurazioneDB_porteDelegateDriver {

  101.     private DriverConfigurazioneDB driver = null;
  102.     private DriverConfigurazioneDB_porteDriver porteDriver = null;
  103.     private DriverConfigurazioneDBSoggetti soggettiDriver = null;
  104.     private DriverConfigurazioneDBUtils utilsDriver = null;
  105.    
  106.     protected DriverConfigurazioneDB_porteDelegateDriver(DriverConfigurazioneDB driver) {
  107.         this.driver = driver;
  108.         this.porteDriver = new DriverConfigurazioneDB_porteDriver(driver);
  109.         this.soggettiDriver = new DriverConfigurazioneDBSoggetti(driver);
  110.         this.utilsDriver = new DriverConfigurazioneDBUtils(driver);
  111.     }
  112.    
  113.     protected IDPortaDelegata getIDPortaDelegata(String nome) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  114.        
  115.         String nomeMetodo = "getIDPortaDelegata";
  116.        
  117.         if (nome == null)
  118.             throw new DriverConfigurazioneException("["+nomeMetodo+"] Parametro Non Valido");

  119.         Connection con = null;
  120.         PreparedStatement stm = null;
  121.         ResultSet rs = null;
  122.         String sqlQuery = "";

  123.         if (this.driver.atomica) {
  124.             try {
  125.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);

  126.             } catch (Exception e) {
  127.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::"+nomeMetodo+"] Exception accedendo al datasource :" + e.getMessage(),e);

  128.             }

  129.         } else
  130.             con = this.driver.globalConnection;

  131.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  132.         try {
  133.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  134.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  135.             sqlQueryObject.addSelectField("*");
  136.             sqlQueryObject.addWhereCondition("nome_porta = ?");
  137.             sqlQuery = sqlQueryObject.createSQLQuery();
  138.             stm = con.prepareStatement(sqlQuery);

  139.             stm.setString(1, nome);

  140.             this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, nome));
  141.             rs = stm.executeQuery();

  142.             IDPortaDelegata idPD = null;
  143.             if (rs.next()) {
  144.                
  145.                 idPD = new IDPortaDelegata();
  146.                
  147.                 idPD.setNome(rs.getString("nome_porta"));
  148.                
  149.                 IdentificativiFruizione idFruizione = new IdentificativiFruizione();
  150.                
  151.                 try{
  152.                     long idSoggProprietario = rs.getLong("id_soggetto");
  153.                     IDSoggetto idSoggettoProprietario = this.soggettiDriver.getIdSoggetto(idSoggProprietario,con);
  154.                     idFruizione.setSoggettoFruitore(idSoggettoProprietario);
  155.                 } catch (Exception se) {
  156.                     throw new Exception(se.getMessage()); // mappo NotFound in una eccezione generica. Il Soggetto proprietario deve esistere
  157.                 }
  158.                
  159.                 String nomeSoggettoErogatore = rs.getString("nome_soggetto_erogatore");
  160.                 String tipoSoggettoErogatore = rs.getString("tipo_soggetto_erogatore");
  161.                 long idSoggettoErogatoreDB = rs.getLong("id_soggetto_erogatore");
  162.                 long idSoggErogatore=-1;
  163.                 if( (idSoggettoErogatoreDB==-2) || (idSoggettoErogatoreDB>0) ){
  164.                     idSoggErogatore = idSoggettoErogatoreDB;
  165.                 }
  166.                 else{
  167.                     try {
  168.                         idSoggErogatore = DBUtils.getIdSoggetto(nomeSoggettoErogatore, tipoSoggettoErogatore, con, this.driver.tipoDB,this.driver.tabellaSoggetti);
  169.                     } catch (CoreException e) {
  170.                         this.driver.logDebug(e.getMessage(),e);
  171.                     }
  172.                 }
  173.                 IDSoggetto idSoggettoErogatore = null;
  174.                 if(idSoggErogatore>0){
  175.                     idSoggettoErogatore = new IDSoggetto();
  176.                     idSoggettoErogatore.setTipo(tipoSoggettoErogatore);
  177.                     idSoggettoErogatore.setNome(nomeSoggettoErogatore);
  178.                 }else{
  179.                     throw new DriverConfigurazioneException("Soggetto Erogatore della Porta Delegata ["+nome+"] non presente.");
  180.                 }

  181.                 String tipoServizio = rs.getString("tipo_servizio");
  182.                 String nomeServizio = rs.getString("nome_servizio");
  183.                 Integer versioneServizio = rs.getInt("versione_servizio");
  184.                 long idServizioDB = rs.getLong("id_servizio");
  185.                 long idServizio=-1;
  186.                 if( (idServizioDB==-2) || (idServizioDB>0) ){
  187.                     idServizio = idServizioDB;
  188.                 }
  189.                 else{
  190.                     try {
  191.                         idServizio = DBUtils.getIdServizio(nomeServizio, tipoServizio, versioneServizio, nomeSoggettoErogatore, tipoSoggettoErogatore, con, this.driver.tipoDB,this.driver.tabellaSoggetti);
  192.                     } catch (Exception e) {
  193.                         // NON Abilitare il log, poiche' la tabella servizi puo' non esistere per il driver di configurazione
  194.                         // in un database che non ' quello della controlstation ma quello pdd.
  195.                         //this.driver.logDebug(e);
  196.                     }
  197.                 }
  198.                 IDServizio idServizioObject = null;
  199.                 if(idServizio>0){
  200.                     idServizioObject= IDServizioUtils.buildIDServizio(tipoServizio, nomeServizio, idSoggettoErogatore, versioneServizio);
  201.                 }

  202.                 String azione = rs.getString("nome_azione");
  203.                 if(azione!=null && (!"".equals(azione)) && idServizioObject!=null){
  204.                     idServizioObject.setAzione(azione);
  205.                 }
  206.                 idFruizione.setIdServizio(idServizioObject);

  207.                
  208.                 idPD.setIdentificativiFruizione(idFruizione);  
  209.             }
  210.             else{
  211.                 throw new DriverConfigurazioneNotFound("PortaDelegata ["+nome+"] non esistente");
  212.             }

  213.             return idPD;

  214.         } catch (SQLException se) {

  215.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::"+nomeMetodo+"] SqlException: " + se.getMessage(),se);
  216.         } catch (DriverConfigurazioneException se) {
  217.             throw se;
  218.         } catch (DriverConfigurazioneNotFound se) {
  219.             throw se;
  220.         } catch (Exception se) {

  221.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::"+nomeMetodo+"] Exception: " + se.getMessage(),se);
  222.         }
  223.         finally {

  224.             //Chiudo statement and resultset
  225.             JDBCUtilities.closeResources(rs, stm);
  226.             this.driver.closeConnection(con);
  227.         }
  228.     }
  229.    

  230.     protected PortaDelegata getPortaDelegata(IDPortaDelegata idPD) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {

  231.         if (idPD == null)
  232.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaDelegata] Parametro idPD Non Valido");

  233.         String nome = idPD.getNome();

  234.         if ((nome == null)){
  235.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaDelegata] Parametri non Validi");
  236.         }
  237.        
  238.         Connection con = null;
  239.         PortaDelegata pd = null;
  240.         long idPortaDelegata = 0;
  241.         if (this.driver.atomica) {
  242.             try {
  243.                 con = this.driver.getConnectionFromDatasource("getPortaDelegata(idPortaDelegata)");

  244.             } catch (Exception e) {
  245.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaDelegata] Exception accedendo al datasource :" + e.getMessage(),e);

  246.             }

  247.         } else
  248.             con = this.driver.globalConnection;

  249.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  250.         boolean trovato = false;
  251.         try {

  252.             try{
  253.                 idPortaDelegata = DBUtils.getIdPortaDelegata(nome, con, this.driver.tipoDB);
  254.             } catch (Exception se) {
  255.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaDelegata] Exception: " + se.getMessage(),se);
  256.             }
  257.             if(idPortaDelegata>0){
  258.                 trovato = true;
  259.             }
  260.            
  261.         } catch (Exception se) {
  262.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaDelegata] Exception: " + se.getMessage(),se);
  263.         } finally {

  264.             this.driver.closeConnection(con);
  265.         }

  266.         if (trovato) {
  267.             pd=this.driver.getPortaDelegata(idPortaDelegata);

  268.         } else {
  269.             throw new DriverConfigurazioneNotFound("PortaDelegata ["+nome+"] non esistente");
  270.         }

  271.         return pd;
  272.     }

  273.     protected void createPortaDelegata(PortaDelegata aPD) throws DriverConfigurazioneException {
  274.         if (aPD == null)
  275.             throw new DriverConfigurazioneException("Porta Delegata non valida");
  276.         if (aPD.getNome() == null || aPD.getNome().equals(""))
  277.             throw new DriverConfigurazioneException("Nome Porta Delegata non valido");
  278.         if (aPD.getNomeSoggettoProprietario() == null || aPD.getNomeSoggettoProprietario().equals(""))
  279.             throw new DriverConfigurazioneException("Nome Soggetto Proprietario Porta Delegata non valido");
  280.         if (aPD.getTipoSoggettoProprietario() == null || aPD.getTipoSoggettoProprietario().equals(""))
  281.             throw new DriverConfigurazioneException("Tipo Soggetto Proprietario Porta Delegata non valido");
  282.         Connection con = null;
  283.         boolean error = false;

  284.         if (this.driver.atomica) {
  285.             try {
  286.                 con = this.driver.getConnectionFromDatasource("createPortaDelegata");
  287.                 con.setAutoCommit(false);
  288.             } catch (Exception e) {
  289.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::createPortaDelegata] Exception accedendo al datasource :" + e.getMessage(),e);

  290.             }

  291.         } else
  292.             con = this.driver.globalConnection;

  293.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  294.         try {
  295.             this.driver.logDebug("CRUDPortaDelegata type = 1");

  296.             DriverConfigurazioneDB_porteDelegateLIB.CRUDPortaDelegata(1, aPD, con, this.driver.getDriverWrapBYOK());

  297.             this.driver.logDebug("Creazione PortaDelegata [" + aPD.getId() + "] completato.");

  298.         } catch (Exception qe) {
  299.             error = true;
  300.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::createPortaDelegata] Errore durante la creazione della PortaDelegata : " + qe.getMessage(),qe);
  301.         } finally {

  302.             this.driver.closeConnection(error,con);
  303.         }
  304.     }
  305.    
  306.     protected void updatePortaDelegata(PortaDelegata aPD) throws DriverConfigurazioneException {
  307.         if (aPD == null)
  308.             throw new DriverConfigurazioneException("Porta Delegata non valida");
  309.         if (aPD.getNome() == null || aPD.getNome().equals(""))
  310.             throw new DriverConfigurazioneException("Nome Porta Delegata non valido");
  311.         if (aPD.getNomeSoggettoProprietario() == null || aPD.getNomeSoggettoProprietario().equals(""))
  312.             throw new DriverConfigurazioneException("Nome Soggetto Proprietario Porta Delegata non valido");
  313.         if (aPD.getTipoSoggettoProprietario() == null || aPD.getTipoSoggettoProprietario().equals(""))
  314.             throw new DriverConfigurazioneException("Tipo Soggetto Proprietario Porta Delegata non valido");

  315.         Connection con = null;
  316.         boolean error = false;

  317.         if (this.driver.atomica) {
  318.             try {
  319.                 con = this.driver.getConnectionFromDatasource("updatePortaDelegata");
  320.                 con.setAutoCommit(false);
  321.             } catch (Exception e) {
  322.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::updatePortaDelegata] Exception accedendo al datasource :" + e.getMessage(),e);

  323.             }

  324.         } else
  325.             con = this.driver.globalConnection;

  326.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  327.         try {
  328.             this.driver.logDebug("CRUDPortaDelegata type = 2");

  329.             DriverConfigurazioneDB_porteDelegateLIB.CRUDPortaDelegata(2, aPD, con, this.driver.getDriverWrapBYOK());

  330.             this.driver.logDebug("Aggiornamento PortaDelegata [" + aPD.getId() + "] completato.");

  331.         } catch (Exception qe) {
  332.             error = true;
  333.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::updatePortaDelegata] Errore durante l'aggiornamento della PortaDelegata : " + qe.getMessage(),qe);
  334.         } finally {

  335.             this.driver.closeConnection(error,con);
  336.         }
  337.     }

  338.     protected void deletePortaDelegata(PortaDelegata aPD) throws DriverConfigurazioneException {
  339.         if (aPD == null)
  340.             throw new DriverConfigurazioneException("Porta Delegata non valida");
  341.         if (aPD.getNome() == null || aPD.getNome().equals(""))
  342.             throw new DriverConfigurazioneException("Nome Porta Delegata non valido");
  343.         if (aPD.getNomeSoggettoProprietario() == null || aPD.getNomeSoggettoProprietario().equals(""))
  344.             throw new DriverConfigurazioneException("Nome Soggetto Proprietario Porta Delegata non valido");
  345.         if (aPD.getTipoSoggettoProprietario() == null || aPD.getTipoSoggettoProprietario().equals(""))
  346.             throw new DriverConfigurazioneException("Tipo Soggetto Proprietario Porta Delegata non valido");

  347.         Connection con = null;
  348.         boolean error = false;

  349.         if (this.driver.atomica) {
  350.             try {
  351.                 con = this.driver.getConnectionFromDatasource("deletePortaDelegata");
  352.                 con.setAutoCommit(false);
  353.             } catch (Exception e) {
  354.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::deletePortaDelegata] Exception accedendo al datasource :" + e.getMessage(),e);

  355.             }

  356.         } else
  357.             con = this.driver.globalConnection;

  358.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  359.         try {
  360.             this.driver.logDebug("CRUDPortaDelegata type = 3");

  361.             long id = DriverConfigurazioneDB_porteDelegateLIB.CRUDPortaDelegata(3, aPD, con, this.driver.getDriverWrapBYOK());

  362.             this.driver.logDebug("Cancellazione PortaDelegata [" + id + "] completato.");
  363.         } catch (Exception qe) {
  364.             error = true;
  365.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::deletePortaDelegata] Errore durante la cancellazione della PortaDelegata : " + qe.getMessage(),qe);
  366.         } finally {

  367.             this.driver.closeConnection(error,con);
  368.         }
  369.     }
  370.    
  371.    
  372.     protected PortaDelegata getPortaDelegata(long id) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  373.         return getPortaDelegata(id,null);
  374.     }
  375.     protected PortaDelegata getPortaDelegata(long id,Connection conParam) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {

  376.         if (id <= 0)
  377.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaDelegata] L'id della Porta Delegata deve essere > 0.");

  378.         Connection con = null;
  379.         PreparedStatement stm = null;
  380.         ResultSet rs = null;
  381.         PreparedStatement stm1 = null;
  382.         ResultSet rs1 = null;
  383.         String sqlQuery;
  384.         PortaDelegata pd = null;
  385.         long idPortaDelegata = id;


  386.         if(conParam!=null){
  387.             con = conParam;
  388.         }
  389.         else  if (this.driver.atomica) {
  390.             try {
  391.                 con = this.driver.getConnectionFromDatasource("getPortaDelegata(longId)");

  392.             } catch (Exception e) {
  393.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaDelegata] Exception accedendo al datasource :" + e.getMessage(),e);

  394.             }

  395.         } else
  396.             con = this.driver.globalConnection;

  397.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  398.         try {
  399.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  400.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  401.             sqlQueryObject.addFromTable(this.driver.tabellaSoggetti);
  402.             sqlQueryObject.addSelectField("tipo_soggetto");
  403.             sqlQueryObject.addSelectField("nome_soggetto");
  404.             sqlQueryObject.addSelectField("autenticazione");
  405.             sqlQueryObject.addSelectField("autenticazione_opzionale");
  406.             sqlQueryObject.addSelectField("token_policy");
  407.             sqlQueryObject.addSelectField("token_opzionale");
  408.             sqlQueryObject.addSelectField("token_validazione");
  409.             sqlQueryObject.addSelectField("token_introspection");
  410.             sqlQueryObject.addSelectField("token_user_info");
  411.             sqlQueryObject.addSelectField("token_forward");
  412.             sqlQueryObject.addSelectField("token_options");
  413.             sqlQueryObject.addSelectField("token_authn_issuer");
  414.             sqlQueryObject.addSelectField("token_authn_client_id");
  415.             sqlQueryObject.addSelectField("token_authn_subject");
  416.             sqlQueryObject.addSelectField("token_authn_username");
  417.             sqlQueryObject.addSelectField("token_authn_email");
  418.             sqlQueryObject.addSelectField("autorizzazione");
  419.             sqlQueryObject.addSelectField("autorizzazione_xacml");
  420.             sqlQueryObject.addSelectField("autorizzazione_contenuto");
  421.             sqlQueryObject.addSelectField("id_soggetto");
  422.             sqlQueryObject.addSelectField("nome_porta");
  423.             sqlQueryObject.addSelectField("id_soggetto_erogatore");
  424.             sqlQueryObject.addSelectField("tipo_soggetto_erogatore");
  425.             sqlQueryObject.addSelectField("nome_soggetto_erogatore");
  426.             sqlQueryObject.addSelectField("id_servizio");
  427.             sqlQueryObject.addSelectField("tipo_servizio");
  428.             sqlQueryObject.addSelectField("nome_servizio");
  429.             sqlQueryObject.addSelectField("versione_servizio");
  430.             sqlQueryObject.addSelectField("id_azione");
  431.             sqlQueryObject.addSelectField("nome_azione");
  432.             sqlQueryObject.addSelectField("mode_azione");
  433.             sqlQueryObject.addSelectField("pattern_azione");
  434.             sqlQueryObject.addSelectField("nome_porta_delegante_azione");
  435.             sqlQueryObject.addSelectField("force_interface_based_azione");
  436.             sqlQueryObject.addSelectField("ricevuta_asincrona_asim");
  437.             sqlQueryObject.addSelectField("ricevuta_asincrona_sim");
  438.             sqlQueryObject.addSelectField("integrazione");
  439.             sqlQueryObject.addSelectField("scadenza_correlazione_appl");
  440.             sqlQueryObject.addSelectField("validazione_contenuti_stato");
  441.             sqlQueryObject.addSelectField("validazione_contenuti_tipo");
  442.             sqlQueryObject.addSelectField("validazione_contenuti_mtom");
  443.             sqlQueryObject.addSelectField("mtom_request_mode");
  444.             sqlQueryObject.addSelectField("mtom_response_mode");
  445.             sqlQueryObject.addSelectField("security");
  446.             sqlQueryObject.addSelectField("security_mtom_req");
  447.             sqlQueryObject.addSelectField("security_mtom_res");
  448.             sqlQueryObject.addSelectField("security_request_mode");
  449.             sqlQueryObject.addSelectField("security_response_mode");
  450.             sqlQueryObject.addSelectField("allega_body");
  451.             sqlQueryObject.addSelectField("scarta_body");
  452.             sqlQueryObject.addSelectField("gestione_manifest");
  453.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_DELEGATE+".descrizione", "descrizionePD");
  454.             sqlQueryObject.addSelectField("stateless");
  455.             sqlQueryObject.addSelectField("local_forward");
  456.             sqlQueryObject.addSelectField("local_forward_pa");
  457.             sqlQueryObject.addSelectField("ruoli_match");
  458.             sqlQueryObject.addSelectField("token_sa_stato");
  459.             sqlQueryObject.addSelectField("token_ruoli_stato");
  460.             sqlQueryObject.addSelectField("token_ruoli_match");
  461.             sqlQueryObject.addSelectField("token_ruoli_tipologia");
  462.             sqlQueryObject.addSelectField("scope_stato");
  463.             sqlQueryObject.addSelectField("scope_match");
  464.             sqlQueryObject.addSelectField("ricerca_porta_azione_delegata");
  465.             sqlQueryObject.addSelectField("msg_diag_severita");
  466.             sqlQueryObject.addSelectField("tracciamento_stato");
  467.             sqlQueryObject.addSelectField("tracciamento_esiti");
  468.             sqlQueryObject.addSelectField("transazioni_tempi");
  469.             sqlQueryObject.addSelectField("transazioni_token");
  470.             sqlQueryObject.addSelectField("stato");    
  471.             sqlQueryObject.addSelectField("cors_stato");
  472.             sqlQueryObject.addSelectField("cors_tipo");
  473.             sqlQueryObject.addSelectField("cors_all_allow_origins");
  474.             sqlQueryObject.addSelectField("cors_all_allow_methods");
  475.             sqlQueryObject.addSelectField("cors_all_allow_headers");
  476.             sqlQueryObject.addSelectField("cors_allow_credentials");
  477.             sqlQueryObject.addSelectField("cors_allow_max_age");
  478.             sqlQueryObject.addSelectField("cors_allow_max_age_seconds");
  479.             sqlQueryObject.addSelectField("cors_allow_origins");
  480.             sqlQueryObject.addSelectField("cors_allow_headers");
  481.             sqlQueryObject.addSelectField("cors_allow_methods");
  482.             sqlQueryObject.addSelectField("cors_allow_expose_headers");
  483.             sqlQueryObject.addSelectField("response_cache_stato");
  484.             sqlQueryObject.addSelectField("response_cache_seconds");
  485.             sqlQueryObject.addSelectField("response_cache_max_msg_size");
  486.             sqlQueryObject.addSelectField("response_cache_hash_url");
  487.             sqlQueryObject.addSelectField("response_cache_hash_query");
  488.             sqlQueryObject.addSelectField("response_cache_hash_query_list");
  489.             sqlQueryObject.addSelectField("response_cache_hash_headers");
  490.             sqlQueryObject.addSelectField("response_cache_hash_hdr_list");
  491.             sqlQueryObject.addSelectField("response_cache_hash_payload");
  492.             sqlQueryObject.addSelectField("response_cache_control_nocache");
  493.             sqlQueryObject.addSelectField("response_cache_control_maxage");
  494.             sqlQueryObject.addSelectField("response_cache_control_nostore");
  495.             sqlQueryObject.addSelectField("id_accordo");
  496.             sqlQueryObject.addSelectField("id_port_type");
  497.             sqlQueryObject.addSelectField("options");
  498.             sqlQueryObject.addSelectField("canale");
  499.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_DELEGATE,CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE,CostantiDB.PROPRIETA_OGGETTO_ALIAS_UTENTE_RICHIEDENTE);
  500.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_DELEGATE,CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE,CostantiDB.PROPRIETA_OGGETTO_ALIAS_DATA_CREAZIONE);
  501.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_DELEGATE,CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA,CostantiDB.PROPRIETA_OGGETTO_ALIAS_UTENTE_ULTIMA_MODIFICA);
  502.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_DELEGATE,CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA,CostantiDB.PROPRIETA_OGGETTO_ALIAS_DATA_ULTIMA_MODIFICA);
  503.             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".id_soggetto = "+this.driver.tabellaSoggetti+".id");
  504.             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".id = ?");
  505.             sqlQueryObject.setANDLogicOperator(true);
  506.             sqlQuery = sqlQueryObject.createSQLQuery();

  507.             stm = con.prepareStatement(sqlQuery);
  508.             stm.setLong(1, idPortaDelegata);

  509.             rs = stm.executeQuery();

  510.             if (rs.next()) {// ho trovato la porta delegata che cercavo

  511.                 pd = new PortaDelegata();

  512.                 pd.setOptions(rs.getString("options"));
  513.                
  514.                 pd.setTipoSoggettoProprietario(rs.getString("tipo_soggetto"));
  515.                 pd.setNomeSoggettoProprietario(rs.getString("nome_soggetto"));

  516.                 pd.setId(idPortaDelegata);
  517.                
  518.                 pd.setAutenticazione(rs.getString("autenticazione"));
  519.                 pd.setAutenticazioneOpzionale(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("autenticazione_opzionale")));
  520.                
  521.                 String tokenPolicy = rs.getString("token_policy");
  522.                 if(tokenPolicy!=null && !"".equals(tokenPolicy)) {
  523.                     GestioneToken gestioneToken = new GestioneToken();
  524.                     gestioneToken.setPolicy(tokenPolicy);
  525.                     gestioneToken.setTokenOpzionale(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("token_opzionale")));
  526.                     gestioneToken.setValidazione(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaConWarning(rs.getString("token_validazione")));
  527.                     gestioneToken.setIntrospection(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaConWarning(rs.getString("token_introspection")));
  528.                     gestioneToken.setUserInfo(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaConWarning(rs.getString("token_user_info")));
  529.                     gestioneToken.setForward(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("token_forward")));
  530.                     gestioneToken.setOptions(rs.getString("token_options"));
  531.                    
  532.                    
  533.                     String tokenAuthnIssuer = rs.getString("token_authn_issuer");
  534.                     String tokenAuthnClientId = rs.getString("token_authn_client_id");
  535.                     String tokenAuthnSubject = rs.getString("token_authn_subject");
  536.                     String tokenAuthnUsername = rs.getString("token_authn_username");
  537.                     String tokenAuthnEmail = rs.getString("token_authn_email");
  538.                     if(tokenAuthnIssuer!=null ||
  539.                             tokenAuthnClientId!=null ||
  540.                                     tokenAuthnSubject!=null ||
  541.                                             tokenAuthnUsername!=null ||
  542.                                                     tokenAuthnEmail!=null) {
  543.                         gestioneToken.setAutenticazione(new GestioneTokenAutenticazione());
  544.                         gestioneToken.getAutenticazione().setIssuer(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnIssuer));
  545.                         gestioneToken.getAutenticazione().setClientId(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnClientId));
  546.                         gestioneToken.getAutenticazione().setSubject(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnSubject));
  547.                         gestioneToken.getAutenticazione().setUsername(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnUsername));
  548.                         gestioneToken.getAutenticazione().setEmail(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnEmail));
  549.                     }
  550.                    
  551.                     pd.setGestioneToken(gestioneToken);
  552.                 }
  553.                
  554.                 pd.setAutorizzazione(rs.getString("autorizzazione"));
  555.                 pd.setXacmlPolicy(rs.getString("autorizzazione_xacml"));
  556.                 pd.setAutorizzazioneContenuto(rs.getString("autorizzazione_contenuto"));

  557.                 pd.setDescrizione(rs.getString("descrizionePD"));
  558.                 pd.setIdSoggetto(rs.getLong("id_soggetto"));
  559.                 pd.setNome(rs.getString("nome_porta"));

  560.                 //idaccordo
  561.                 pd.setIdAccordo(rs.getLong("id_accordo"));
  562.                 //id port type
  563.                 pd.setIdPortType(rs.getLong("id_port_type"));

  564.                 //se mode e' settato allora creo oggetto
  565.                 String nomeSoggettoErogatore = rs.getString("nome_soggetto_erogatore");
  566.                 String tipoSoggettoErogatore = rs.getString("tipo_soggetto_erogatore");
  567.                 long idSoggettoErogatoreDB = rs.getLong("id_soggetto_erogatore");
  568.                 long idSoggErogatore=-1;
  569.                 if( (idSoggettoErogatoreDB==-2) || (idSoggettoErogatoreDB>0) ){
  570.                     idSoggErogatore = idSoggettoErogatoreDB;
  571.                 }
  572.                 else{
  573.                     try {
  574.                         idSoggErogatore = DBUtils.getIdSoggetto(nomeSoggettoErogatore, tipoSoggettoErogatore, con, this.driver.tipoDB,this.driver.tabellaSoggetti);
  575.                     } catch (CoreException e) {
  576.                         this.driver.logDebug(e.getMessage(),e);
  577.                     }
  578.                 }
  579.                 PortaDelegataSoggettoErogatore soggettoErogatorePD = null;
  580.                 if(idSoggErogatore>0){
  581.                     soggettoErogatorePD = new PortaDelegataSoggettoErogatore();
  582.                     soggettoErogatorePD.setId(idSoggErogatore);
  583.                     soggettoErogatorePD.setNome(nomeSoggettoErogatore);
  584.                     soggettoErogatorePD.setTipo(tipoSoggettoErogatore);
  585.                     pd.setSoggettoErogatore(soggettoErogatorePD);
  586.                 }else{
  587.                     throw new DriverConfigurazioneException("Soggetto Erogatore della Porta Delegata ["+pd.getNome()+"] non presente.");
  588.                 }

  589.                 //se mode e' settato allora creo oggetto
  590.                 String tipoServizio = rs.getString("tipo_servizio");
  591.                 String nomeServizio = rs.getString("nome_servizio");
  592.                 Integer versioneServizio = rs.getInt("versione_servizio");
  593.                 long idServizioDB = rs.getLong("id_servizio");
  594.                 long idServizio=-1;
  595.                 if( (idServizioDB==-2) || (idServizioDB>0) ){
  596.                     idServizio = idServizioDB;
  597.                 }
  598.                 else{
  599.                     try {
  600.                         idServizio = DBUtils.getIdServizio(nomeServizio, tipoServizio, versioneServizio, nomeSoggettoErogatore, tipoSoggettoErogatore, con, this.driver.tipoDB,this.driver.tabellaSoggetti);
  601.                     } catch (Exception e) {
  602.                         // NON Abilitare il log, poiche' la tabella servizi puo' non esistere per il driver di configurazione
  603.                         // in un database che non ' quello della controlstation ma quello pdd.
  604.                         /**this.driver.logDebug(e);*/
  605.                     }
  606.                 }
  607.                 PortaDelegataServizio pdServizio = null;
  608.                 if(idServizio>0){
  609.                     pdServizio=new PortaDelegataServizio();
  610.                     pdServizio.setId(idServizio);
  611.                     pdServizio.setNome(nomeServizio);
  612.                     pdServizio.setTipo(tipoServizio);
  613.                     pdServizio.setVersione(versioneServizio);
  614.                 }
  615.                 // fix
  616.                 else {
  617.                     pdServizio=new PortaDelegataServizio();
  618.                     pdServizio.setNome(nomeServizio);
  619.                     pdServizio.setTipo(tipoServizio);
  620.                     pdServizio.setVersione(versioneServizio);
  621.                 }
  622.                 pd.setServizio(pdServizio);

  623.                 PortaDelegataAzione pdAzione = null;
  624.                 String modeAzione = rs.getString("mode_azione");
  625.                 long idAzione = rs.getLong("id_azione");
  626.                 if (idAzione>0 || (modeAzione!=null && !"".equals(modeAzione)) ) {
  627.                     pdAzione=new PortaDelegataAzione();
  628.                     pdAzione.setId(rs.getLong("id_azione"));
  629.                     pdAzione.setNome(rs.getString("nome_azione"));
  630.                     pdAzione.setIdentificazione(PortaDelegataAzioneIdentificazione.toEnumConstant(modeAzione));
  631.                     pdAzione.setPattern(rs.getString("pattern_azione"));
  632.                     pdAzione.setNomePortaDelegante(rs.getString("nome_porta_delegante_azione"));
  633.                     pdAzione.setForceInterfaceBased(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("force_interface_based_azione")));
  634.                 }
  635.                 pd.setAzione(pdAzione);






  636.                 //ricevuta asincrona_(a)simmetrica
  637.                 pd.setRicevutaAsincronaAsimmetrica(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("ricevuta_asincrona_asim")));
  638.                 pd.setRicevutaAsincronaSimmetrica(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("ricevuta_asincrona_sim")));
  639.                 //integrazione
  640.                 pd.setIntegrazione(rs.getString("integrazione"));
  641.                 //scadenza correlazione applicativa
  642.                 String scadenzaCorrelazione = rs.getString("scadenza_correlazione_appl");
  643.                 CorrelazioneApplicativa corr= null;

  644.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  645.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_CORRELAZIONE);
  646.                 sqlQueryObject.addSelectField("*");
  647.                 sqlQueryObject.addWhereCondition("id_porta=?");
  648.                 sqlQueryObject.addOrderBy("id");
  649.                 sqlQueryObject.setSortType(true);
  650.                 String queryCorrApp = sqlQueryObject.createSQLQuery();
  651.                 PreparedStatement stmCorrApp = con.prepareStatement(queryCorrApp);
  652.                 stmCorrApp.setLong(1, idPortaDelegata);
  653.                 ResultSet rsCorrApp = stmCorrApp.executeQuery();
  654.                 while (rsCorrApp.next()) {
  655.                     if(corr==null) corr=new CorrelazioneApplicativa();
  656.                     CorrelazioneApplicativaElemento cae = new CorrelazioneApplicativaElemento();
  657.                     cae.setId(rsCorrApp.getLong("id"));
  658.                     cae.setNome(rsCorrApp.getString("nome_elemento"));
  659.                     String modeCA = rsCorrApp.getString("mode_correlazione");
  660.                     cae.setIdentificazione(DriverConfigurazioneDBLib.getEnumCorrelazioneApplicativaRichiestaIdentificazione(modeCA));
  661.                     /**if (modeCA.equals("urlBased") || modeCA.equals("contentBased"))*/
  662.                     cae.setPattern(rsCorrApp.getString("pattern"));
  663.                     cae.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumCorrelazioneApplicativaGestioneIdentificazioneFallita(rsCorrApp.getString("identificazione_fallita")));
  664.                     cae.setRiusoIdentificativo(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rsCorrApp.getString("riuso_id")));
  665.                     corr.addElemento(cae);
  666.                 }
  667.                 rsCorrApp.close();
  668.                 stmCorrApp.close();
  669.                 if(corr!=null && scadenzaCorrelazione!=null && !scadenzaCorrelazione.equals(""))
  670.                     corr.setScadenza(scadenzaCorrelazione);
  671.                 pd.setCorrelazioneApplicativa(corr);
  672.                 /**
  673.                   if(scadenzaCorrelazione!=null && !scadenzaCorrelazione.equals("")) {
  674.                   CorrelazioneApplicativa corr= new CorrelazioneApplicativa();
  675.                   corr.setScadenza(scadenzaCorrelazione);
  676.                   pd.setCorrelazioneApplicativa(corr);
  677.                   }
  678.                  */


  679.                 // correlazione applicativa risposta
  680.                 CorrelazioneApplicativaRisposta corrApplRisposta= null;

  681.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  682.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_CORRELAZIONE_RISPOSTA);
  683.                 sqlQueryObject.addSelectField("*");
  684.                 sqlQueryObject.addWhereCondition("id_porta=?");
  685.                 sqlQueryObject.addOrderBy("id");
  686.                 sqlQueryObject.setSortType(true);
  687.                 queryCorrApp = sqlQueryObject.createSQLQuery();
  688.                 stmCorrApp = con.prepareStatement(queryCorrApp);
  689.                 stmCorrApp.setLong(1, idPortaDelegata);
  690.                 rsCorrApp = stmCorrApp.executeQuery();
  691.                 while (rsCorrApp.next()) {
  692.                     if(corrApplRisposta==null) corrApplRisposta=new CorrelazioneApplicativaRisposta();
  693.                     CorrelazioneApplicativaRispostaElemento cae = new CorrelazioneApplicativaRispostaElemento();
  694.                     cae.setId(rsCorrApp.getLong("id"));
  695.                     cae.setNome(rsCorrApp.getString("nome_elemento"));
  696.                     String modeCA = rsCorrApp.getString("mode_correlazione");
  697.                     cae.setIdentificazione(DriverConfigurazioneDBLib.getEnumCorrelazioneApplicativaRispostaIdentificazione(modeCA));
  698.                     /**if (modeCA.equals("urlBased") || modeCA.equals("contentBased"))*/
  699.                     cae.setPattern(rsCorrApp.getString("pattern"));
  700.                     cae.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumCorrelazioneApplicativaGestioneIdentificazioneFallita(rsCorrApp.getString("identificazione_fallita")));
  701.                     corrApplRisposta.addElemento(cae);
  702.                 }
  703.                 rsCorrApp.close();
  704.                 stmCorrApp.close();
  705.                 pd.setCorrelazioneApplicativaRisposta(corrApplRisposta);

  706.                
  707.                 //mtom
  708.                 MtomProcessor mtomProcessor = null;
  709.                 String mtomRequest = rs.getString("mtom_request_mode");
  710.                 String mtomResponse = rs.getString("mtom_response_mode");
  711.                 if( (mtomRequest!=null && !mtomRequest.equals(""))  ||  (mtomResponse!=null && !mtomResponse.equals("")) ){
  712.                     mtomProcessor = new MtomProcessor();
  713.                     if((mtomRequest!=null && !mtomRequest.equals(""))  ){
  714.                         mtomProcessor.setRequestFlow(new MtomProcessorFlow());
  715.                         mtomProcessor.getRequestFlow().setMode(DriverConfigurazioneDBLib.getEnumMTOMProcessorType(mtomRequest));
  716.                     }
  717.                     if((mtomResponse!=null && !mtomResponse.equals(""))  ){
  718.                         mtomProcessor.setResponseFlow(new MtomProcessorFlow());
  719.                         mtomProcessor.getResponseFlow().setMode(DriverConfigurazioneDBLib.getEnumMTOMProcessorType(mtomResponse));
  720.                     }
  721.                 }
  722.                

  723.                 //validazione xsd
  724.                 String validazioneContenutiStato = rs.getString("validazione_contenuti_stato");
  725.                 String validazioneContenutiTipo = rs.getString("validazione_contenuti_tipo");
  726.                 String validazioneContenutiMtom = rs.getString("validazione_contenuti_mtom");
  727.                 if(  (validazioneContenutiStato!=null && !validazioneContenutiStato.equals(""))  
  728.                         ||
  729.                         (validazioneContenutiTipo!=null && !validazioneContenutiTipo.equals(""))    )
  730.                 {
  731.                     ValidazioneContenutiApplicativi val = new ValidazioneContenutiApplicativi();
  732.                     if((validazioneContenutiStato!=null && !validazioneContenutiStato.equals(""))  )
  733.                         val.setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaConWarning(validazioneContenutiStato));
  734.                     if((validazioneContenutiTipo!=null && !validazioneContenutiTipo.equals(""))  )
  735.                         val.setTipo(DriverConfigurazioneDBLib.getEnumValidazioneContenutiApplicativiTipo(validazioneContenutiTipo));
  736.                     if((validazioneContenutiMtom!=null && !validazioneContenutiMtom.equals(""))  )
  737.                         val.setAcceptMtomMessage(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(validazioneContenutiMtom));
  738.                     pd.setValidazioneContenutiApplicativi(val);
  739.                 }

  740.                 // Gestione funzionalita' Attachments
  741.                 pd.setAllegaBody(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("allega_body")));
  742.                 pd.setScartaBody(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("scarta_body")));
  743.                 pd.setGestioneManifest(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("gestione_manifest")));

  744.                 // Stateless
  745.                 pd.setStateless(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("stateless")));

  746.                 // LocalForward
  747.                 String statoLocalForward = rs.getString("local_forward");
  748.                 PortaDelegataLocalForward pdLocalForward = new PortaDelegataLocalForward();
  749.                 pdLocalForward.setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(statoLocalForward));
  750.                 pdLocalForward.setPortaApplicativa(rs.getString("local_forward_pa"));
  751.                 if(pdLocalForward.getStato()!=null) {
  752.                     pd.setLocalForward(pdLocalForward);
  753.                 }
  754.                 else {
  755.                     pd.setLocalForward(null);
  756.                 }
  757.                
  758.                 // Ricerca Porta Azione Delegata
  759.                 if(rs.getString("ricerca_porta_azione_delegata")!=null){
  760.                     pd.setRicercaPortaAzioneDelegata(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("ricerca_porta_azione_delegata")));
  761.                 }
  762.                
  763.                 // Tracciamento
  764.                 String msgDiagSeverita = rs.getString("msg_diag_severita");
  765.                 String tracciamentoStato = rs.getString("tracciamento_stato");
  766.                 String tracciamentoEsiti = rs.getString("tracciamento_esiti");
  767.                 String transazioniTempiElaborazione = rs.getString("transazioni_tempi");
  768.                 String transazioniToken = rs.getString("transazioni_token");
  769.                 TracciamentoConfigurazione tracciamentoDatabase = DriverConfigurazioneDBTracciamentoLIB.readTracciamentoConfigurazione(con, pd.getId(),
  770.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PD,
  771.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_DB);
  772.                 TracciamentoConfigurazione tracciamentoFiletrace = DriverConfigurazioneDBTracciamentoLIB.readTracciamentoConfigurazione(con, pd.getId(),
  773.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PD,
  774.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_FILETRACE);
  775.                 TracciamentoConfigurazioneFiletrace tracciamentoFiletraceDetails = DriverConfigurazioneDBTracciamentoLIB.readTracciamentoConfigurazioneFiletrace(con, pd.getId(),
  776.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PD);
  777.                 if(
  778.                         (msgDiagSeverita!=null && StringUtils.isNotEmpty(msgDiagSeverita))
  779.                         ||
  780.                         (tracciamentoStato!=null && StringUtils.isNotEmpty(tracciamentoStato))
  781.                         ||
  782.                         (tracciamentoEsiti!=null && StringUtils.isNotEmpty(tracciamentoEsiti))
  783.                         ||
  784.                         (transazioniTempiElaborazione!=null && StringUtils.isNotEmpty(transazioniTempiElaborazione))
  785.                         ||
  786.                         (transazioniToken!=null && StringUtils.isNotEmpty(transazioniToken))
  787.                         ||
  788.                         tracciamentoDatabase!=null
  789.                         ||
  790.                         tracciamentoFiletrace!=null
  791.                         ||
  792.                         tracciamentoFiletraceDetails!=null
  793.                         ) {
  794.                     PortaTracciamento tracciamento = new PortaTracciamento();
  795.                    
  796.                     tracciamento.setSeverita(DriverConfigurazioneDBLib.getEnumSeverita(msgDiagSeverita));
  797.                    
  798.                     tracciamento.setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tracciamentoStato));
  799.                    
  800.                     tracciamento.setEsiti(tracciamentoEsiti);
  801.                    
  802.                     if(
  803.                             (transazioniTempiElaborazione!=null && StringUtils.isNotEmpty(transazioniTempiElaborazione))
  804.                             ||
  805.                             (transazioniToken!=null && StringUtils.isNotEmpty(transazioniToken))
  806.                             ) {
  807.                         tracciamento.setTransazioni(new Transazioni());
  808.                         tracciamento.getTransazioni().setTempiElaborazione(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(transazioniTempiElaborazione));
  809.                         tracciamento.getTransazioni().setToken(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(transazioniToken));
  810.                     }
  811.                     tracciamento.setDatabase(tracciamentoDatabase);
  812.                     tracciamento.setFiletrace(tracciamentoFiletrace);
  813.                     tracciamento.setFiletraceConfig(tracciamentoFiletraceDetails);
  814.                    
  815.                     pd.setTracciamento(tracciamento);
  816.                 }
  817.                
  818.                 // Stato
  819.                 if(rs.getString("stato")!=null){
  820.                     pd.setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("stato")));
  821.                 }
  822.                

  823.                 // messageSecurity          
  824.                 String security = rs.getString("security");
  825.                 String securityMtomReq = rs.getString("security_mtom_req");
  826.                 String securityMtomRes = rs.getString("security_mtom_res");
  827.                 String securityRequestMode = rs.getString("security_request_mode");
  828.                 String securityResponseMode = rs.getString("security_response_mode");
  829.                 MessageSecurity messageSecurity = null;
  830.                 if(  (securityMtomReq!=null && !securityMtomReq.equals(""))  
  831.                         ||
  832.                         (securityRequestMode!=null && !securityRequestMode.equals(""))  
  833.                         ||
  834.                         (securityMtomRes!=null && !securityMtomRes.equals(""))      
  835.                         ||
  836.                         (securityResponseMode!=null && !securityResponseMode.equals(""))
  837.                         )
  838.                 {
  839.                     messageSecurity = new MessageSecurity();
  840.                     if((securityMtomReq!=null && !securityMtomReq.equals(""))  ){
  841.                         if(messageSecurity.getRequestFlow()==null) {
  842.                             messageSecurity.setRequestFlow(new MessageSecurityFlow());  
  843.                         }
  844.                         messageSecurity.getRequestFlow().setApplyToMtom(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(securityMtomReq));
  845.                     }
  846.                     if((securityMtomRes!=null && !securityMtomRes.equals(""))  ){
  847.                         if(messageSecurity.getResponseFlow()==null) {
  848.                             messageSecurity.setResponseFlow(new MessageSecurityFlow());
  849.                         }
  850.                         messageSecurity.getResponseFlow().setApplyToMtom(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(securityMtomRes));
  851.                     }
  852.                     if((securityRequestMode!=null && !securityRequestMode.equals(""))  ){
  853.                         if(messageSecurity.getRequestFlow()==null) {
  854.                             messageSecurity.setRequestFlow(new MessageSecurityFlow());  
  855.                         }
  856.                         messageSecurity.getRequestFlow().setMode(securityRequestMode);
  857.                     }
  858.                     if((securityResponseMode!=null && !securityResponseMode.equals(""))  ){
  859.                         if(messageSecurity.getResponseFlow()==null) {
  860.                             messageSecurity.setResponseFlow(new MessageSecurityFlow());
  861.                         }
  862.                         messageSecurity.getResponseFlow().setMode(securityResponseMode);
  863.                     }
  864.                 }

  865.                
  866.                 // RuoliMatch
  867.                 String ruoliMatch = rs.getString("ruoli_match");
  868.                 if(ruoliMatch!=null && !"".equals(ruoliMatch)){
  869.                     if(pd.getRuoli()==null){
  870.                         pd.setRuoli(new AutorizzazioneRuoli());
  871.                     }
  872.                     pd.getRuoli().setMatch(RuoloTipoMatch.toEnumConstant(ruoliMatch));
  873.                 }
  874.                
  875.                 // Token SA Stato
  876.                 String tokenSaStato = rs.getString("token_sa_stato");
  877.                 if( (tokenSaStato!=null && !"".equals(tokenSaStato)) ){
  878.                     if(pd.getAutorizzazioneToken()==null){
  879.                         pd.setAutorizzazioneToken(new PortaDelegataAutorizzazioneToken());
  880.                     }
  881.                     pd.getAutorizzazioneToken().setAutorizzazioneApplicativi((DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenSaStato)));
  882.                 }
  883.                
  884.                 // Token Ruoli
  885.                 String tokenRuoliStato = rs.getString("token_ruoli_stato");
  886.                 String tokenRuoliMatch = rs.getString("token_ruoli_match");
  887.                 String tokenRuoliTipologia = rs.getString("token_ruoli_tipologia");
  888.                 if( (tokenRuoliStato!=null && !"".equals(tokenRuoliStato)) ||
  889.                         (tokenRuoliMatch!=null && !"".equals(tokenRuoliMatch)) ||
  890.                         (tokenRuoliTipologia!=null && !"".equals(tokenRuoliTipologia)) ){
  891.                     if(pd.getAutorizzazioneToken()==null){
  892.                         pd.setAutorizzazioneToken(new PortaDelegataAutorizzazioneToken());
  893.                     }
  894.                     pd.getAutorizzazioneToken().setAutorizzazioneRuoli(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenRuoliStato));
  895.                     if((tokenRuoliMatch!=null && !"".equals(tokenRuoliMatch))) {
  896.                         if(pd.getAutorizzazioneToken().getRuoli()==null){
  897.                             pd.getAutorizzazioneToken().setRuoli(new AutorizzazioneRuoli());
  898.                         }
  899.                         pd.getAutorizzazioneToken().getRuoli().setMatch(RuoloTipoMatch.toEnumConstant(tokenRuoliMatch));
  900.                     }
  901.                     if((tokenRuoliTipologia!=null && !"".equals(tokenRuoliTipologia))) {
  902.                         pd.getAutorizzazioneToken().setTipologiaRuoli(RuoloTipologia.toEnumConstant(tokenRuoliTipologia));
  903.                     }
  904.                 }
  905.                
  906.                 // ScopeMatch
  907.                 String scopeStato = rs.getString("scope_stato");
  908.                 String scopeMatch = rs.getString("scope_match");
  909.                 if( (scopeStato!=null && !"".equals(scopeStato)) || (scopeMatch!=null && !"".equals(scopeMatch)) ){
  910.                     if(pd.getScope()==null){
  911.                         pd.setScope(new AutorizzazioneScope());
  912.                     }
  913.                     pd.getScope().setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(scopeStato));
  914.                     pd.getScope().setMatch(ScopeTipoMatch.toEnumConstant(scopeMatch));
  915.                 }
  916.                
  917.                 // Gestione CORS
  918.                 String corsStato = rs.getString("cors_stato");
  919.                 if(corsStato!=null && !"".equals(corsStato)) {
  920.                     pd.setGestioneCors(new CorsConfigurazione());
  921.                     this.porteDriver.readConfigurazioneCors(pd.getGestioneCors(), rs);
  922.                 }
  923.                
  924.                 // Gestione CacheResponse
  925.                 String responseCacheStato = rs.getString("response_cache_stato");
  926.                 if(responseCacheStato!=null && !"".equals(responseCacheStato)) {
  927.                     pd.setResponseCaching(new ResponseCachingConfigurazione());
  928.                     this.porteDriver.readResponseCaching(idPortaDelegata, false, true, pd.getResponseCaching(), rs, con);
  929.                 }
  930.                
  931.                 // Canali
  932.                 String canale = rs.getString("canale");
  933.                 pd.setCanale(canale);
  934.                
  935.                 // Proprieta Oggetto
  936.                 pd.setProprietaOggetto(this.utilsDriver.readProprietaOggetto(rs, true));
  937.                
  938.                 rs.close();
  939.                 stm.close();
  940.                        
  941.                
  942.                 // Trasformazioni
  943.                 Trasformazioni trasformazioni = DriverConfigurazioneDBTrasformazioniLib.readTrasformazioni(idPortaDelegata, true, con);
  944.                 if(trasformazioni!=null) {
  945.                     pd.setTrasformazioni(trasformazioni);
  946.                 }

  947.                
  948.                 if(pdAzione!=null) {
  949.                     // lista azioni
  950.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  951.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_AZIONI);
  952.                     sqlQueryObject.addSelectField("*");
  953.                     sqlQueryObject.addWhereCondition("id_porta=?");
  954.                     sqlQuery = sqlQueryObject.createSQLQuery();
  955.                     stm = con.prepareStatement(sqlQuery);
  956.                     stm.setLong(1, idPortaDelegata);

  957.                     this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaDelegata));
  958.                     rs = stm.executeQuery();

  959.                     // Request Flow Parameter
  960.                     while (rs.next()) {
  961.                         pdAzione.addAzioneDelegata(rs.getString("azione"));
  962.                     }
  963.                     rs.close();
  964.                     stm.close();
  965.                 }
  966.                
  967.                
  968.                
  969.                 // stato security
  970.                 if (CostantiConfigurazione.ABILITATO.toString().equalsIgnoreCase(security)) {
  971.                     pd.setStatoMessageSecurity(CostantiConfigurazione.ABILITATO.toString());
  972.                 }else{
  973.                     pd.setStatoMessageSecurity(CostantiConfigurazione.DISABILITATO.toString());
  974.                 }
  975.                
  976.                 // lista wss
  977.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  978.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_MESSAGE_SECURITY_REQUEST);
  979.                 sqlQueryObject.addSelectField("*");
  980.                 sqlQueryObject.addWhereCondition("id_porta=?");
  981.                 sqlQuery = sqlQueryObject.createSQLQuery();
  982.                 stm = con.prepareStatement(sqlQuery);
  983.                 stm.setLong(1, idPortaDelegata);

  984.                 this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaDelegata));
  985.                 rs = stm.executeQuery();

  986.                 // Request Flow Parameter
  987.                 MessageSecurityFlowParameter secRfp;
  988.                 while (rs.next()) {
  989.                     secRfp = new MessageSecurityFlowParameter();
  990.                     secRfp.setNome(rs.getString("nome"));
  991.                    
  992.                     String plainValue = rs.getString("valore");
  993.                     String encValue = rs.getString("enc_value");
  994.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  995.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  996.                         if(driverBYOK!=null) {
  997.                             secRfp.setValore(driverBYOK.unwrapAsString(encValue));
  998.                         }
  999.                         else {
  1000.                             secRfp.setValore(encValue);
  1001.                         }
  1002.                     }
  1003.                     else {
  1004.                         secRfp.setValore(plainValue);
  1005.                     }
  1006.                    
  1007.                     if(messageSecurity==null){
  1008.                         messageSecurity = new MessageSecurity();
  1009.                     }
  1010.                     if(messageSecurity.getRequestFlow()==null){
  1011.                         messageSecurity.setRequestFlow(new MessageSecurityFlow());
  1012.                     }
  1013.                     messageSecurity.getRequestFlow().addParameter(secRfp);
  1014.                 }
  1015.                 rs.close();
  1016.                 stm.close();
  1017.                 // Response Flow Parameter
  1018.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1019.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_MESSAGE_SECURITY_RESPONSE);
  1020.                 sqlQueryObject.addSelectField("*");
  1021.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1022.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1023.                 stm = con.prepareStatement(sqlQuery);
  1024.                 stm.setLong(1, idPortaDelegata);

  1025.                 this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaDelegata));
  1026.                 rs = stm.executeQuery();

  1027.                 MessageSecurityFlowParameter secResfp;
  1028.                 while (rs.next()) {
  1029.                     secResfp = new MessageSecurityFlowParameter();
  1030.                     secResfp.setNome(rs.getString("nome"));
  1031.                    
  1032.                     String plainValue = rs.getString("valore");
  1033.                     String encValue = rs.getString("enc_value");
  1034.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1035.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1036.                         if(driverBYOK!=null) {
  1037.                             secResfp.setValore(driverBYOK.unwrapAsString(encValue));
  1038.                         }
  1039.                         else {
  1040.                             secResfp.setValore(encValue);
  1041.                         }
  1042.                     }
  1043.                     else {
  1044.                         secResfp.setValore(plainValue);
  1045.                     }
  1046.                    
  1047.                     if(messageSecurity==null){
  1048.                         messageSecurity = new MessageSecurity();
  1049.                     }
  1050.                     if(messageSecurity.getResponseFlow()==null){
  1051.                         messageSecurity.setResponseFlow(new MessageSecurityFlow());
  1052.                     }
  1053.                     messageSecurity.getResponseFlow().addParameter(secResfp);
  1054.                 }
  1055.                 rs.close();
  1056.                 stm.close();


  1057.                 // setto il messageSecurity
  1058.                 pd.setMessageSecurity(messageSecurity);

  1059.                
  1060.                
  1061.                 // mtom
  1062.                
  1063.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1064.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_MTOM_REQUEST);
  1065.                 sqlQueryObject.addSelectField("*");
  1066.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1067.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1068.                 stm1 = con.prepareStatement(sqlQuery);
  1069.                 stm1.setLong(1, idPortaDelegata);

  1070.                 this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaDelegata));
  1071.                 rs1 = stm1.executeQuery();

  1072.                 // Request Flow Parameter
  1073.                 MtomProcessorFlowParameter rfp;
  1074.                 while (rs1.next()) {
  1075.                     rfp = new MtomProcessorFlowParameter();
  1076.                     rfp.setNome(rs1.getString("nome"));
  1077.                     rfp.setPattern(rs1.getString("pattern"));
  1078.                     rfp.setContentType(rs1.getString("content_type"));
  1079.                     int required = rs1.getInt("required");
  1080.                     boolean isrequired = false;
  1081.                     if (required == CostantiDB.TRUE)
  1082.                         isrequired = true;
  1083.                     rfp.setRequired(isrequired);
  1084.                    
  1085.                     if(mtomProcessor.getRequestFlow()==null){
  1086.                         mtomProcessor.setRequestFlow(new MtomProcessorFlow());
  1087.                     }
  1088.                     mtomProcessor.getRequestFlow().addParameter(rfp);
  1089.                 }
  1090.                 rs1.close();
  1091.                 stm1.close();

  1092.                 // Response Flow Parameter
  1093.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1094.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_MTOM_RESPONSE);
  1095.                 sqlQueryObject.addSelectField("*");
  1096.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1097.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1098.                 stm1 = con.prepareStatement(sqlQuery);
  1099.                 stm1.setLong(1, idPortaDelegata);

  1100.                 this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaDelegata));
  1101.                 rs1 = stm1.executeQuery();

  1102.                 MtomProcessorFlowParameter rsfp;
  1103.                 while (rs1.next()) {
  1104.                     rsfp = new MtomProcessorFlowParameter();
  1105.                     rsfp.setNome(rs1.getString("nome"));
  1106.                     rsfp.setPattern(rs1.getString("pattern"));
  1107.                     rsfp.setContentType(rs1.getString("content_type"));
  1108.                     int required = rs1.getInt("required");
  1109.                     boolean isrequired = false;
  1110.                     if (required == CostantiDB.TRUE)
  1111.                         isrequired = true;
  1112.                     rsfp.setRequired(isrequired);
  1113.                    
  1114.                     if(mtomProcessor.getResponseFlow()==null){
  1115.                         mtomProcessor.setResponseFlow(new MtomProcessorFlow());
  1116.                     }
  1117.                     mtomProcessor.getResponseFlow().addParameter(rsfp);
  1118.                 }
  1119.                 rs1.close();
  1120.                 stm1.close();
  1121.                
  1122.                 // set mtom
  1123.                 pd.setMtomProcessor(mtomProcessor);
  1124.                
  1125.                
  1126.                 // servizi applicativi
  1127.                 long idSA = 0;
  1128.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1129.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_SA);
  1130.                 sqlQueryObject.addSelectField("*");
  1131.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1132.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1133.                 stm = con.prepareStatement(sqlQuery);
  1134.                 stm.setLong(1, idPortaDelegata);
  1135.                 rs = stm.executeQuery();

  1136.                 // per ogni entry con id_porta == idPortaDelegata
  1137.                 // prendo l'id del servizio applicativo associato, recupero il
  1138.                 // nome e aggiungo
  1139.                 // il servizio applicativo alla PortaDelegata da ritornare
  1140.                 while (rs.next()) {
  1141.                     idSA = rs.getLong("id_servizio_applicativo");

  1142.                     if (idSA != 0) {
  1143.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1144.                         sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1145.                         sqlQueryObject.addSelectField("nome");
  1146.                         sqlQueryObject.addWhereCondition("id=?");
  1147.                         sqlQuery = sqlQueryObject.createSQLQuery();
  1148.                         stm1 = con.prepareStatement(sqlQuery);
  1149.                         stm1.setLong(1, idSA);

  1150.                         this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idSA));

  1151.                         rs1 = stm1.executeQuery();

  1152.                         PortaDelegataServizioApplicativo servizioApplicativo = null;
  1153.                         if (rs1.next()) {
  1154.                             // setto solo il nome come da specifica
  1155.                             servizioApplicativo = new PortaDelegataServizioApplicativo();
  1156.                             servizioApplicativo.setId(idSA);
  1157.                             servizioApplicativo.setNome(rs1.getString("nome"));
  1158.                             pd.addServizioApplicativo(servizioApplicativo);
  1159.                         }
  1160.                         rs1.close();
  1161.                         stm1.close();
  1162.                     }

  1163.                 }
  1164.                 rs.close();
  1165.                 stm.close();
  1166.                
  1167.                
  1168.                 // proprieta autenticazione
  1169.                 Proprieta prop = null;
  1170.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1171.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_AUTENTICAZIONE_PROP);
  1172.                 sqlQueryObject.addSelectField("*");
  1173.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1174.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1175.                 stm = con.prepareStatement(sqlQuery);
  1176.                 stm.setLong(1, idPortaDelegata);
  1177.                 rs=stm.executeQuery();
  1178.                 while (rs.next()) {
  1179.                     prop = new Proprieta();
  1180.                     prop.setId(rs.getLong("id"));
  1181.                     prop.setNome(rs.getString("nome"));
  1182.                    
  1183.                     String plainValue = rs.getString("valore");
  1184.                     String encValue = rs.getString("enc_value");
  1185.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1186.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1187.                         if(driverBYOK!=null) {
  1188.                             prop.setValore(driverBYOK.unwrapAsString(encValue));
  1189.                         }
  1190.                         else {
  1191.                             prop.setValore(encValue);
  1192.                         }
  1193.                     }
  1194.                     else {
  1195.                         prop.setValore(plainValue);
  1196.                     }
  1197.                    
  1198.                     pd.addProprietaAutenticazione(prop);
  1199.                 }
  1200.                 rs.close();
  1201.                 stm.close();
  1202.                
  1203.                
  1204.                
  1205.                
  1206.                 // proprieta autorizzazione
  1207.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1208.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_AUTORIZZAZIONE_PROP);
  1209.                 sqlQueryObject.addSelectField("*");
  1210.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1211.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1212.                 stm = con.prepareStatement(sqlQuery);
  1213.                 stm.setLong(1, idPortaDelegata);
  1214.                 rs=stm.executeQuery();
  1215.                 while (rs.next()) {
  1216.                     prop = new Proprieta();
  1217.                     prop.setId(rs.getLong("id"));
  1218.                     prop.setNome(rs.getString("nome"));
  1219.                    
  1220.                     String plainValue = rs.getString("valore");
  1221.                     String encValue = rs.getString("enc_value");
  1222.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1223.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1224.                         if(driverBYOK!=null) {
  1225.                             prop.setValore(driverBYOK.unwrapAsString(encValue));
  1226.                         }
  1227.                         else {
  1228.                             prop.setValore(encValue);
  1229.                         }
  1230.                     }
  1231.                     else {
  1232.                         prop.setValore(plainValue);
  1233.                     }
  1234.                    
  1235.                     pd.addProprietaAutorizzazione(prop);
  1236.                 }
  1237.                 rs.close();
  1238.                 stm.close();
  1239.                
  1240.                
  1241.                
  1242.                 // proprieta autorizzazione contenuto
  1243.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1244.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_AUTORIZZAZIONE_CONTENUTI_PROP);
  1245.                 sqlQueryObject.addSelectField("*");
  1246.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1247.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1248.                 stm = con.prepareStatement(sqlQuery);
  1249.                 stm.setLong(1, idPortaDelegata);
  1250.                 rs=stm.executeQuery();
  1251.                 while (rs.next()) {
  1252.                     prop = new Proprieta();
  1253.                     prop.setId(rs.getLong("id"));
  1254.                     prop.setNome(rs.getString("nome"));
  1255.                    
  1256.                     String plainValue = rs.getString("valore");
  1257.                     String encValue = rs.getString("enc_value");
  1258.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1259.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1260.                         if(driverBYOK!=null) {
  1261.                             prop.setValore(driverBYOK.unwrapAsString(encValue));
  1262.                         }
  1263.                         else {
  1264.                             prop.setValore(encValue);
  1265.                         }
  1266.                     }
  1267.                     else {
  1268.                         prop.setValore(plainValue);
  1269.                     }
  1270.                    
  1271.                     pd.addProprietaAutorizzazioneContenuto(prop);
  1272.                 }
  1273.                 rs.close();
  1274.                 stm.close();
  1275.                
  1276.                
  1277.                
  1278.                
  1279.                
  1280.                 // proprieta rate limiting
  1281.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1282.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_RATE_LIMITING_PROP);
  1283.                 sqlQueryObject.addSelectField("*");
  1284.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1285.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1286.                 stm = con.prepareStatement(sqlQuery);
  1287.                 stm.setLong(1, idPortaDelegata);
  1288.                 rs=stm.executeQuery();
  1289.                 while (rs.next()) {
  1290.                     prop = new Proprieta();
  1291.                     prop.setId(rs.getLong("id"));
  1292.                     prop.setNome(rs.getString("nome"));
  1293.                     prop.setValore(rs.getString("valore"));
  1294.                     pd.addProprietaRateLimiting(prop);
  1295.                 }
  1296.                 rs.close();
  1297.                 stm.close();
  1298.                
  1299.                
  1300.                
  1301.                
  1302.                 // properties
  1303.                 prop = null;
  1304.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1305.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_PROP);
  1306.                 sqlQueryObject.addSelectField("*");
  1307.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1308.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1309.                 stm = con.prepareStatement(sqlQuery);
  1310.                 stm.setLong(1, idPortaDelegata);
  1311.                 rs=stm.executeQuery();
  1312.                 while (rs.next()) {
  1313.                     prop = new Proprieta();
  1314.                     prop.setId(rs.getLong("id"));
  1315.                     prop.setNome(rs.getString("nome"));
  1316.                    
  1317.                     String plainValue = rs.getString("valore");
  1318.                     String encValue = rs.getString("enc_value");
  1319.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1320.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1321.                         if(driverBYOK!=null) {
  1322.                             prop.setValore(driverBYOK.unwrapAsString(encValue));
  1323.                         }
  1324.                         else {
  1325.                             prop.setValore(encValue);
  1326.                         }
  1327.                     }
  1328.                     else {
  1329.                         prop.setValore(plainValue);
  1330.                     }
  1331.                    
  1332.                     pd.addProprieta(prop);
  1333.                 }
  1334.                 rs.close();
  1335.                 stm.close();
  1336.                
  1337.                            
  1338.                 // ruoli
  1339.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1340.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_RUOLI);
  1341.                 sqlQueryObject.addSelectField("*");
  1342.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1343.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1344.                 stm = con.prepareStatement(sqlQuery);
  1345.                 stm.setLong(1, idPortaDelegata);
  1346.                 rs = stm.executeQuery();

  1347.                 while (rs.next()) {
  1348.                    
  1349.                     if(pd.getRuoli()==null){
  1350.                         pd.setRuoli(new AutorizzazioneRuoli());
  1351.                     }
  1352.                    
  1353.                     Ruolo ruolo = new Ruolo();
  1354.                     ruolo.setNome(rs.getString("ruolo"));
  1355.                     pd.getRuoli().addRuolo(ruolo);
  1356.                
  1357.                 }
  1358.                 rs.close();
  1359.                 stm.close();
  1360.                
  1361.                
  1362.                
  1363.                 // scope
  1364.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1365.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_SCOPE);
  1366.                 sqlQueryObject.addSelectField("*");
  1367.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1368.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1369.                 stm = con.prepareStatement(sqlQuery);
  1370.                 stm.setLong(1, idPortaDelegata);
  1371.                 rs = stm.executeQuery();

  1372.                 while (rs.next()) {
  1373.                    
  1374.                     if(pd.getScope()==null){
  1375.                         pd.setScope(new AutorizzazioneScope());
  1376.                     }
  1377.                    
  1378.                     Scope scope = new Scope();
  1379.                     scope.setNome(rs.getString("scope"));
  1380.                     pd.getScope().addScope(scope);
  1381.                
  1382.                 }
  1383.                 rs.close();
  1384.                 stm.close();
  1385.                
  1386.                
  1387.                 // servizi applicativi (token)
  1388.                 idSA = 0;
  1389.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1390.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_TOKEN_SA);
  1391.                 sqlQueryObject.addSelectField("*");
  1392.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1393.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1394.                 stm = con.prepareStatement(sqlQuery);
  1395.                 stm.setLong(1, idPortaDelegata);
  1396.                 rs = stm.executeQuery();

  1397.                 // per ogni entry con id_porta == idPortaDelegata
  1398.                 // prendo l'id del servizio applicativo associato, recupero il
  1399.                 // nome e aggiungo
  1400.                 // il servizio applicativo alla PortaDelegata da ritornare
  1401.                 while (rs.next()) {
  1402.                     idSA = rs.getLong("id_servizio_applicativo");

  1403.                     if (idSA != 0) {
  1404.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1405.                         sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1406.                         sqlQueryObject.addSelectField("nome");
  1407.                         sqlQueryObject.addWhereCondition("id=?");
  1408.                         sqlQuery = sqlQueryObject.createSQLQuery();
  1409.                         stm1 = con.prepareStatement(sqlQuery);
  1410.                         stm1.setLong(1, idSA);

  1411.                         this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idSA));

  1412.                         rs1 = stm1.executeQuery();

  1413.                         PortaDelegataServizioApplicativo servizioApplicativo = null;
  1414.                         if (rs1.next()) {
  1415.                             // setto solo il nome come da specifica
  1416.                             servizioApplicativo = new PortaDelegataServizioApplicativo();
  1417.                             servizioApplicativo.setId(idSA);
  1418.                             servizioApplicativo.setNome(rs1.getString("nome"));
  1419.                            
  1420.                             if(pd.getAutorizzazioneToken()==null) {
  1421.                                 pd.setAutorizzazioneToken(new PortaDelegataAutorizzazioneToken());
  1422.                             }
  1423.                             if(pd.getAutorizzazioneToken().getServiziApplicativi()==null) {
  1424.                                 pd.getAutorizzazioneToken().setServiziApplicativi(new PortaDelegataAutorizzazioneServiziApplicativi());
  1425.                             }
  1426.                            
  1427.                             pd.getAutorizzazioneToken().getServiziApplicativi().addServizioApplicativo(servizioApplicativo);
  1428.                         }
  1429.                         rs1.close();
  1430.                         stm1.close();
  1431.                     }

  1432.                 }
  1433.                 rs.close();
  1434.                 stm.close();
  1435.                
  1436.                
  1437.                 // ruoli (token)
  1438.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1439.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_TOKEN_RUOLI);
  1440.                 sqlQueryObject.addSelectField("*");
  1441.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1442.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1443.                 stm = con.prepareStatement(sqlQuery);
  1444.                 stm.setLong(1, idPortaDelegata);
  1445.                 rs = stm.executeQuery();

  1446.                 while (rs.next()) {
  1447.                    
  1448.                     if(pd.getAutorizzazioneToken()==null) {
  1449.                         pd.setAutorizzazioneToken(new PortaDelegataAutorizzazioneToken());
  1450.                     }
  1451.                     if(pd.getAutorizzazioneToken().getRuoli()==null) {
  1452.                         pd.getAutorizzazioneToken().setRuoli(new AutorizzazioneRuoli());
  1453.                     }
  1454.                    
  1455.                     Ruolo ruolo = new Ruolo();
  1456.                     ruolo.setNome(rs.getString("ruolo"));
  1457.                     pd.getAutorizzazioneToken().getRuoli().addRuolo(ruolo);
  1458.                
  1459.                 }
  1460.                 rs.close();
  1461.                 stm.close();
  1462.                
  1463.                
  1464.                
  1465.                 // dump_config
  1466.                 DumpConfigurazione dumpConfig = DriverConfigurazioneDB_dumpLIB.readDumpConfigurazione(con, pd.getId(), CostantiDB.DUMP_CONFIGURAZIONE_PROPRIETARIO_PD);
  1467.                 pd.setDump(dumpConfig);
  1468.                
  1469.                
  1470.                 // Handlers
  1471.                 ConfigurazioneMessageHandlers requestHandlers = DriverConfigurazioneDB_handlerLIB.readConfigurazioneMessageHandlers(con, pd.getId(), null, true);
  1472.                 ConfigurazioneMessageHandlers responseHandlers = DriverConfigurazioneDB_handlerLIB.readConfigurazioneMessageHandlers(con, pd.getId(), null, false);
  1473.                 if(requestHandlers!=null || responseHandlers!=null) {
  1474.                     pd.setConfigurazioneHandler(new ConfigurazionePortaHandler());
  1475.                     pd.getConfigurazioneHandler().setRequest(requestHandlers);
  1476.                     pd.getConfigurazioneHandler().setResponse(responseHandlers);
  1477.                 }

  1478.                
  1479.                
  1480.                 // Attribute Authority
  1481.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1482.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_ATTRIBUTE_AUTHORITY);
  1483.                 sqlQueryObject.addSelectField("*");
  1484.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1485.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1486.                 stm = con.prepareStatement(sqlQuery);
  1487.                 stm.setLong(1, idPortaDelegata);
  1488.                 rs = stm.executeQuery();

  1489.                 while (rs.next()) {
  1490.                    
  1491.                     String nome = rs.getString("nome");
  1492.                     String attributi = rs.getString("attributi");
  1493.                     AttributeAuthority aa = new AttributeAuthority();
  1494.                     aa.setNome(nome);
  1495.                     aa.setAttributoList(DBUtils.convertToList(attributi));
  1496.                     pd.addAttributeAuthority(aa);
  1497.                
  1498.                 }
  1499.                 rs.close();
  1500.                 stm.close();
  1501.                
  1502.                
  1503.                
  1504.                
  1505.                 // *** Aggiungo extInfo ***
  1506.                
  1507.                 this.driver.logDebug("ExtendedInfo ...");
  1508.                 ExtendedInfoManager extInfoManager = ExtendedInfoManager.getInstance();
  1509.                 IExtendedInfo extInfoConfigurazioneDriver = extInfoManager.newInstanceExtendedInfoPortaDelegata();
  1510.                 if(extInfoConfigurazioneDriver!=null){
  1511.                     List<Object> listExtInfo = extInfoConfigurazioneDriver.getAllExtendedInfo(con, this.driver.log, pd);
  1512.                     if(listExtInfo!=null && !listExtInfo.isEmpty()){
  1513.                         for (Object object : listExtInfo) {
  1514.                             pd.addExtendedInfo(object);
  1515.                         }
  1516.                     }
  1517.                 }
  1518.                
  1519.             } else {
  1520.                 throw new DriverConfigurazioneNotFound("[DriverConfigurazioneDB::getPortaDelegata] Nessuna PortaDelegata trovata.");
  1521.             }

  1522.             return pd;

  1523.         } catch (SQLException se) {
  1524.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaDelegata] SqlException: " + se.getMessage(),se);
  1525.         } catch (DriverConfigurazioneNotFound de) {
  1526.             throw de;
  1527.         } catch (Exception se) {
  1528.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaDelegata] Exception: " + se.getMessage(),se);
  1529.         } finally {
  1530.             //Chiudo statement and resultset
  1531.             JDBCUtilities.closeResources(rs, stm);
  1532.             JDBCUtilities.closeResources(rs1, stm1);
  1533.             this.driver.closeConnection(conParam, con);
  1534.         }
  1535.     }
  1536.    
  1537.     protected List<String> porteDelegateRateLimitingValoriUnivoci(String pName) throws DriverConfigurazioneException {
  1538.        
  1539.         Connection con = null;
  1540.         PreparedStatement stmt=null;
  1541.         ResultSet risultato=null;
  1542.         ArrayList<String> lista = new ArrayList<>();

  1543.         if (this.driver.atomica) {
  1544.             try {
  1545.                 con = this.driver.getConnectionFromDatasource("porteDelegateRateLimitingValoriUnivoci");
  1546.             } catch (Exception e) {
  1547.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::porteDelegateRateLimitingValoriUnivoci] Exception accedendo al datasource :" + e.getMessage(),e);

  1548.             }

  1549.         } else
  1550.             con = this.driver.globalConnection;

  1551.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  1552.         try {

  1553.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1554.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_RATE_LIMITING_PROP);
  1555.             sqlQueryObject.setSelectDistinct(true);
  1556.             sqlQueryObject.addSelectField("valore");
  1557.             sqlQueryObject.addWhereCondition("nome = ?");
  1558.             sqlQueryObject.setANDLogicOperator(true);
  1559.             String queryString = sqlQueryObject.createSQLQuery();
  1560.            
  1561.             stmt = con.prepareStatement(queryString);
  1562.             stmt.setString(1, pName);
  1563.             risultato = stmt.executeQuery();
  1564.             while (risultato.next()) {
  1565.                 lista.add(risultato.getString("valore"));
  1566.             }
  1567.             risultato.close();
  1568.             stmt.close();

  1569.            
  1570.             return lista;

  1571.         } catch (Exception qe) {
  1572.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::porteDelegateRateLimitingValoriUnivoci] Errore : " + qe.getMessage(),qe);
  1573.         } finally {
  1574.             //Chiudo statement and resultset
  1575.             JDBCUtilities.closeResources(risultato, stmt);
  1576.             this.driver.closeConnection(con);
  1577.         }
  1578.     }
  1579.    
  1580.    
  1581.     protected List<String> nomiProprietaPD(String filterSoggettoTipo, String filterSoggettoNome, List<String> tipoServiziProtocollo) throws DriverConfigurazioneException {
  1582.         String queryString;

  1583.         Connection con = null;
  1584.         PreparedStatement stmt=null;
  1585.         ResultSet risultato=null;
  1586.         ArrayList<String> lista = new ArrayList<>();
  1587.         String aliasSoggettiFruitori = "soggettoFruitore";

  1588.         if (this.driver.atomica) {
  1589.             try {
  1590.                 con = this.driver.getConnectionFromDatasource("nomiProprietaPD");
  1591.             } catch (Exception e) {
  1592.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::nomiProprietaPD] Exception accedendo al datasource :" + e.getMessage(),e);

  1593.             }

  1594.         } else
  1595.             con = this.driver.globalConnection;

  1596.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  1597.         try {

  1598.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1599.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_PROP);
  1600.             sqlQueryObject.setSelectDistinct(true);
  1601.             sqlQueryObject.addSelectField(CostantiDB.PORTE_DELEGATE_PROP +".nome");
  1602.             sqlQueryObject.addOrderBy(CostantiDB.PORTE_DELEGATE_PROP +".nome");
  1603.             sqlQueryObject.setSortType(true);
  1604.             sqlQueryObject.setANDLogicOperator(true);
  1605.            
  1606.             if((filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) || (tipoServiziProtocollo != null && tipoServiziProtocollo.size() > 0)) {
  1607.                 sqlQueryObject.addFromTable(CostantiDB.MAPPING_FRUIZIONE_PD);
  1608.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
  1609.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1610.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  1611.                
  1612.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_PROP+".id_porta="+CostantiDB.PORTE_DELEGATE+".id");
  1613.                 sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_porta="+CostantiDB.PORTE_DELEGATE+".id");
  1614.                 sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_fruizione="+CostantiDB.SERVIZI_FRUITORI+".id");
  1615.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_servizio="+CostantiDB.SERVIZI+".id");
  1616.                
  1617.             }
  1618.            
  1619.             if((filterSoggettoNome!=null && !"".equals(filterSoggettoNome))) {
  1620.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI, aliasSoggettiFruitori);
  1621.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_soggetto="+aliasSoggettiFruitori+".id");
  1622.                
  1623.                 sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".tipo_soggetto=?");
  1624.                 sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".nome_soggetto=?");
  1625.                
  1626.             }
  1627.            
  1628.             if((tipoServiziProtocollo != null && tipoServiziProtocollo.size() > 0)) {
  1629.                 String [] tipiServiziProtocolloS = tipoServiziProtocollo.toArray(new String[tipoServiziProtocollo.size()]);
  1630.                 sqlQueryObject.addWhereINCondition(CostantiDB.SERVIZI+".tipo_servizio", true, tipiServiziProtocolloS);
  1631.             }
  1632.            
  1633.            
  1634.             queryString = sqlQueryObject.createSQLQuery();
  1635.             stmt = con.prepareStatement(queryString);
  1636.             if((filterSoggettoNome!=null && !"".equals(filterSoggettoNome))) {
  1637.                 stmt.setString(1, filterSoggettoTipo);
  1638.                 stmt.setString(2, filterSoggettoNome);
  1639.             }
  1640.            
  1641.             risultato = stmt.executeQuery();
  1642.             while (risultato.next()) {
  1643.                 lista.add(risultato.getString("nome"));
  1644.             }

  1645.             return lista;
  1646.         } catch (Exception qe) {
  1647.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::nomiProprietaPD] Errore : " + qe.getMessage(),qe);
  1648.         } finally {
  1649.             //Chiudo statement and resultset
  1650.             JDBCUtilities.closeResources(risultato, stmt);
  1651.             this.driver.closeConnection(con);
  1652.         }
  1653.     }
  1654.    
  1655.     protected List<PortaDelegata> porteDelegateWithSoggettoErogatoreList(long idSoggettoErogatore) throws DriverConfigurazioneException {
  1656.         String nomeMetodo = "porteDelegateWithSoggettoErogatoreList";
  1657.         String queryString;

  1658.         Connection con = null;
  1659.         PreparedStatement stmt=null;
  1660.         ResultSet risultato=null;
  1661.         ArrayList<PortaDelegata> lista = new ArrayList<>();

  1662.         if (this.driver.atomica) {
  1663.             try {
  1664.                 con = this.driver.getConnectionFromDatasource("porteDelegateWithSoggettoErogatoreList");
  1665.             } catch (Exception e) {
  1666.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1667.             }

  1668.         } else
  1669.             con = this.driver.globalConnection;

  1670.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  1671.         try {

  1672.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1673.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1674.             sqlQueryObject.addSelectField("*");
  1675.             sqlQueryObject.addWhereCondition("id_soggetto_erogatore = ?");
  1676.             queryString = sqlQueryObject.createSQLQuery();
  1677.             stmt = con.prepareStatement(queryString);
  1678.             stmt.setLong(1, idSoggettoErogatore);
  1679.             risultato = stmt.executeQuery();

  1680.             PortaDelegata pd;
  1681.             while (risultato.next()) {
  1682.                 pd = getPortaDelegata(risultato.getLong("id"),con);
  1683.                 lista.add(pd);
  1684.             }

  1685.             return lista;

  1686.         } catch (Exception qe) {
  1687.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1688.         } finally {

  1689.             //Chiudo statement and resultset
  1690.             JDBCUtilities.closeResources(risultato, stmt);

  1691.             this.driver.closeConnection(con);
  1692.         }
  1693.     }

  1694.     protected List<PortaDelegata> porteDelegateWithTipoNomeErogatoreList(String tipoSoggettoErogatore, String nomeSoggettoErogatore) throws DriverConfigurazioneException {
  1695.         String nomeMetodo = "porteDelegateWithTipoNomeErogatoreList";
  1696.         String queryString;

  1697.         Connection con = null;
  1698.         PreparedStatement stmt=null;
  1699.         ResultSet risultato=null;
  1700.         ArrayList<PortaDelegata> lista = new ArrayList<>();

  1701.         if (this.driver.atomica) {
  1702.             try {
  1703.                 con = this.driver.getConnectionFromDatasource("porteDelegateWithTipoNomeErogatoreList");
  1704.             } catch (Exception e) {
  1705.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1706.             }

  1707.         } else
  1708.             con = this.driver.globalConnection;

  1709.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  1710.         try {

  1711.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1712.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1713.             sqlQueryObject.addSelectField("*");
  1714.             sqlQueryObject.addWhereCondition("tipo_soggetto_erogatore = ?");
  1715.             sqlQueryObject.addWhereCondition("nome_soggetto_erogatore = ?");
  1716.             sqlQueryObject.setANDLogicOperator(true);
  1717.             queryString = sqlQueryObject.createSQLQuery();
  1718.             stmt = con.prepareStatement(queryString);
  1719.             stmt.setString(1, tipoSoggettoErogatore);
  1720.             stmt.setString(2, nomeSoggettoErogatore);
  1721.             risultato = stmt.executeQuery();

  1722.             PortaDelegata pd;
  1723.             while (risultato.next()) {
  1724.                 pd = getPortaDelegata(risultato.getLong("id"),con);
  1725.                 lista.add(pd);
  1726.             }

  1727.             return lista;

  1728.         } catch (Exception qe) {
  1729.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1730.         } finally {

  1731.             //Chiudo statement and resultset
  1732.             JDBCUtilities.closeResources(risultato, stmt);

  1733.             this.driver.closeConnection(con);
  1734.         }
  1735.     }
  1736.    
  1737.     protected boolean existsPortaDelegata(IDPortaDelegata idPD) throws DriverConfigurazioneException {

  1738.         try{
  1739.             return getPortaDelegata(idPD)!=null;
  1740.         }catch (DriverConfigurazioneNotFound e) {
  1741.             return false;
  1742.         }  
  1743.     }

  1744.    

  1745.     protected List<PortaDelegata> getPorteDelegateWithServizio(Long idServizio, String tiposervizio, String nomeservizio,
  1746.             Integer versioneServizio,
  1747.             Long idSoggetto, String tiposoggetto, String nomesoggetto) throws DriverConfigurazioneException {

  1748.         Connection con = null;
  1749.         PreparedStatement stm = null;
  1750.         ResultSet rs = null;
  1751.         String sqlQuery = "";
  1752.         ArrayList<PortaDelegata> lista = new ArrayList<PortaDelegata>();

  1753.         try {
  1754.            
  1755.             if (this.driver.atomica) {
  1756.                 try {
  1757.                     con = this.driver.getConnectionFromDatasource("getPorteDelegateWithServizio");
  1758.                 } catch (Exception e) {
  1759.                     throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteDelegateWithServizio] Exception accedendo al datasource :" + e.getMessage(),e);

  1760.                 }

  1761.             } else
  1762.                 con = this.driver.globalConnection;
  1763.            
  1764.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1765.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1766.             sqlQueryObject.addSelectField("*");
  1767.             sqlQueryObject.addWhereCondition(false, "id_servizio = ?", "tipo_servizio = ? AND nome_servizio = ? AND versione_servizio = ?");
  1768.             sqlQueryObject.addWhereCondition(false, "id_soggetto_erogatore = ?", "tipo_soggetto_erogatore = ? AND nome_soggetto_erogatore = ?");
  1769.             sqlQueryObject.setANDLogicOperator(true);
  1770.             sqlQuery = sqlQueryObject.createSQLQuery();
  1771.             stm = con.prepareStatement(sqlQuery);

  1772.             int index = 1;
  1773.             stm.setLong(index++, idServizio);
  1774.             stm.setString(index++, tiposervizio);
  1775.             stm.setString(index++, nomeservizio);
  1776.             stm.setInt(index++, versioneServizio);
  1777.             stm.setLong(index++, idSoggetto);
  1778.             stm.setString(index++, tiposoggetto);
  1779.             stm.setString(index++, nomesoggetto);

  1780.             this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idServizio, tiposervizio, nomeservizio, versioneServizio, idSoggetto, tiposoggetto, nomesoggetto));
  1781.             rs = stm.executeQuery();

  1782.             while (rs.next()) {
  1783.                 lista.add(this.getPortaDelegata(rs.getLong("id")));
  1784.             }

  1785.             return lista;
  1786.         } catch (Exception qe) {
  1787.             throw new DriverConfigurazioneException(qe);
  1788.         } finally {

  1789.             JDBCUtilities.closeResources(rs, stm);
  1790.            
  1791.             this.driver.closeConnection(con);

  1792.         }

  1793.     }

  1794.     protected List<PortaDelegata> getPorteDelegateWithServizio(Long idServizio) throws DriverConfigurazioneException {

  1795.         Connection con = null;
  1796.         PreparedStatement stm = null;
  1797.         ResultSet rs = null;
  1798.         String sqlQuery = "";
  1799.         ArrayList<PortaDelegata> lista = new ArrayList<PortaDelegata>();

  1800.         try {
  1801.            
  1802.             if (this.driver.atomica) {
  1803.                 try {
  1804.                     con = this.driver.getConnectionFromDatasource("getPorteDelegateWithServizio");
  1805.                 } catch (Exception e) {
  1806.                     throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteDelegateWithServizio] Exception accedendo al datasource :" + e.getMessage(),e);

  1807.                 }

  1808.             } else
  1809.                 con = this.driver.globalConnection;
  1810.            
  1811.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1812.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1813.             sqlQueryObject.addSelectField("*");
  1814.             sqlQueryObject.addWhereCondition("id_servizio = ?");
  1815.             sqlQuery = sqlQueryObject.createSQLQuery();
  1816.             stm = con.prepareStatement(sqlQuery);

  1817.             stm.setLong(1, idServizio);

  1818.             this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idServizio));
  1819.             rs = stm.executeQuery();

  1820.             while (rs.next()) {
  1821.                 PortaDelegata pde = this.getPortaDelegata(rs.getLong("id"));
  1822.                 lista.add(pde);
  1823.             }

  1824.             return lista;
  1825.         } catch (Exception qe) {
  1826.             throw new DriverConfigurazioneException(qe);
  1827.         } finally {

  1828.             JDBCUtilities.closeResources(rs, stm);
  1829.            
  1830.             this.driver.closeConnection(con);

  1831.         }

  1832.     }
  1833.    
  1834.     protected List<IDPortaDelegata> getPortaDelegataAzione(String nome) throws DriverConfigurazioneException, DriverConfigurazioneNotFound {
  1835.         Connection con = null;
  1836.         PreparedStatement stm = null;
  1837.         ResultSet rs = null;
  1838.         String sqlQuery = "";

  1839.         List<IDPortaDelegata> id = new ArrayList<IDPortaDelegata>();
  1840.         try {

  1841.             if (this.driver.atomica) {
  1842.                 try {
  1843.                     con = this.driver.getConnectionFromDatasource("getPortaDelegataAzione");
  1844.                 } catch (Exception e) {
  1845.                     throw new DriverConfigurazioneException("[DriverConfigurazioneDB::existsPortaApplicativaAzione] Exception accedendo al datasource :" + e.getMessage(),e);

  1846.                 }

  1847.             } else
  1848.                 con = this.driver.globalConnection;
  1849.            
  1850.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1851.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1852.             sqlQueryObject.addSelectField("*");
  1853.             sqlQueryObject.setANDLogicOperator(true);
  1854.             sqlQueryObject.addWhereCondition("nome_azione=?");
  1855.             sqlQuery = sqlQueryObject.createSQLQuery();
  1856.             stm = con.prepareStatement(sqlQuery);

  1857.             stm.setString(1, nome);

  1858.             this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, nome));
  1859.             rs = stm.executeQuery();

  1860.             while (rs.next()){
  1861.                 IDPortaDelegata idPD = new IDPortaDelegata();
  1862.                 idPD.setNome(rs.getString("nome_porta"));
  1863.                 id.add(idPD);
  1864.             }

  1865.         } catch (Exception qe) {
  1866.             throw new DriverConfigurazioneException(qe);
  1867.         } finally {

  1868.             JDBCUtilities.closeResources(rs, stm);
  1869.            
  1870.             this.driver.closeConnection(con);

  1871.         }

  1872.         if(id.size()>0){
  1873.             return id;
  1874.         }else{
  1875.             throw new DriverConfigurazioneNotFound("Porte Delegate che possiedono l'azione ["+nome+"] non esistenti");
  1876.         }

  1877.     }

  1878.     // NOTA: Metodo non sicuro!!! Possono esistere piu' azioni di port type diversi o accordi diversi !!!!!
  1879.     protected boolean existsPortaDelegataAzione(String nome) throws DriverConfigurazioneException {

  1880.         Connection con = null;
  1881.         PreparedStatement stm = null;
  1882.         ResultSet rs = null;
  1883.         String sqlQuery = "";

  1884.         try {
  1885.            
  1886.             if (this.driver.atomica) {
  1887.                 try {
  1888.                     con = this.driver.getConnectionFromDatasource("existsPortaDelegataAzione");
  1889.                 } catch (Exception e) {
  1890.                     throw new DriverConfigurazioneException("[DriverConfigurazioneDB::existsPortaDelegataAzione] Exception accedendo al datasource :" + e.getMessage(),e);

  1891.                 }

  1892.             } else
  1893.                 con = this.driver.globalConnection;
  1894.            
  1895.             boolean esiste = false;
  1896.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1897.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1898.             sqlQueryObject.addSelectField("*");
  1899.             sqlQueryObject.addWhereCondition("nome_azione=?");
  1900.             sqlQuery = sqlQueryObject.createSQLQuery();
  1901.             stm = con.prepareStatement(sqlQuery);

  1902.             stm.setString(1, nome);

  1903.             this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, nome));
  1904.             rs = stm.executeQuery();

  1905.             if (rs.next())
  1906.                 esiste = true;

  1907.             return esiste;
  1908.         } catch (Exception qe) {
  1909.             throw new DriverConfigurazioneException(qe);
  1910.         } finally {

  1911.             JDBCUtilities.closeResources(rs, stm);
  1912.            
  1913.             this.driver.closeConnection(con);

  1914.         }

  1915.     }
  1916.    
  1917.     protected List<PortaDelegata> getPorteDelegateBySoggetto(long idSoggetto) throws DriverConfigurazioneException {
  1918.         String nomeMetodo = "getPorteDelegateBySoggetto";

  1919.         Connection con = null;
  1920.         PreparedStatement stmt=null;
  1921.         ResultSet risultato=null;
  1922.         ArrayList<PortaDelegata> lista = new ArrayList<>();

  1923.         if (this.driver.atomica) {
  1924.             try {
  1925.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  1926.             } catch (Exception e) {
  1927.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1928.             }

  1929.         } else
  1930.             con = this.driver.globalConnection;

  1931.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  1932.         try {

  1933.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1934.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1935.             sqlQueryObject.addSelectField("id");
  1936.             sqlQueryObject.addWhereCondition("id_soggetto=?");
  1937.             String queryString = sqlQueryObject.createSQLQuery();
  1938.             stmt = con.prepareStatement(queryString);
  1939.             stmt.setLong(1, idSoggetto);
  1940.             risultato = stmt.executeQuery();

  1941.             while (risultato.next()) {

  1942.                 Long id = risultato.getLong("id");
  1943.                 lista.add(this.getPortaDelegata(id));

  1944.             }

  1945.             return lista;

  1946.         } catch (Exception qe) {
  1947.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1948.         } finally {
  1949.             //Chiudo statement and resultset
  1950.             JDBCUtilities.closeResources(risultato, stmt);
  1951.             this.driver.closeConnection(con);
  1952.         }
  1953.     }
  1954.    
  1955.     protected List<IDPortaDelegata> getAllIdPorteDelegate(
  1956.             FiltroRicercaPorteDelegate filtroRicerca) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{

  1957.         Connection con = null;
  1958.         PreparedStatement stm = null;
  1959.         ResultSet rs = null;
  1960.         List<String> nomiPD = null;
  1961.        
  1962.         this.driver.logDebug("getAllIdPorteDelegate...");

  1963.         try {
  1964.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  1965.             // prendo la connessione dal pool
  1966.             if (this.driver.atomica)
  1967.                 con = this.driver.getConnectionFromDatasource("getAllIdPorteDelegate");
  1968.             else
  1969.                 con = this.driver.globalConnection;

  1970.             String alias_SERVIZI_APPLICATIVI_autorizzati = "saauthz";
  1971.             String alias_SERVIZI_APPLICATIVI_token_autorizzati = "satokenauthz";
  1972.             String alias_SERVIZI_APPLICATIVI_traformazioni = "satrasf";
  1973.             String alias_SERVIZI_APPLICATIVI_TOKEN_traformazioni = "satokentrasf";
  1974.            
  1975.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1976.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1977.             if(filtroRicerca!=null && (filtroRicerca.getTipoSoggetto()!=null || filtroRicerca.getNomeSoggetto()!=null) ){
  1978.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1979.             }
  1980.             sqlQueryObject.addSelectField(CostantiDB.PORTE_DELEGATE+".nome_porta");
  1981.             if(filtroRicerca!=null && (filtroRicerca.getTipoSoggetto()!=null || filtroRicerca.getNomeSoggetto()!=null) ){
  1982.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  1983.             }
  1984.             if(filtroRicerca!=null){
  1985.                 if(filtroRicerca.getIdRuolo()!=null){
  1986.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_RUOLI);
  1987.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_RUOLI+".id_porta = "+CostantiDB.PORTE_DELEGATE+".id");
  1988.                 }
  1989.             }
  1990.             if(filtroRicerca!=null){
  1991.                 if(filtroRicerca.getIdScope()!=null){
  1992.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_SCOPE);
  1993.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_SCOPE+".id_porta = "+CostantiDB.PORTE_DELEGATE+".id");
  1994.                 }
  1995.             }
  1996.             if(filtroRicerca!=null){
  1997.                 if(filtroRicerca.getNomeServizioApplicativo()!=null){
  1998.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_SA);
  1999.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI, alias_SERVIZI_APPLICATIVI_autorizzati);
  2000.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_SA+".id_porta = "+CostantiDB.PORTE_DELEGATE+".id");
  2001.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_SA+".id_servizio_applicativo = "+alias_SERVIZI_APPLICATIVI_autorizzati+".id");
  2002.                 }
  2003.             }
  2004.             if(filtroRicerca!=null){
  2005.                 if(filtroRicerca.getNomeServizioApplicativoToken()!=null){
  2006.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_TOKEN_SA);
  2007.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI, alias_SERVIZI_APPLICATIVI_token_autorizzati);
  2008.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TOKEN_SA+".id_porta = "+CostantiDB.PORTE_DELEGATE+".id");
  2009.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TOKEN_SA+".id_servizio_applicativo = "+alias_SERVIZI_APPLICATIVI_token_autorizzati+".id");
  2010.                 }
  2011.             }
  2012.             if(filtroRicerca!=null){
  2013.                 if(filtroRicerca.getIdRuoloToken()!=null){
  2014.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_TOKEN_RUOLI);
  2015.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TOKEN_RUOLI+".id_porta = "+CostantiDB.PORTE_DELEGATE+".id");
  2016.                 }
  2017.             }
  2018.             if(filtroRicerca!=null){
  2019.                 if(filtroRicerca.getNomeServizioApplicativoRiferitoApplicabilitaTrasformazione()!=null){
  2020.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_SA);
  2021.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI,alias_SERVIZI_APPLICATIVI_traformazioni);
  2022.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI);
  2023.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA);
  2024.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI+".id_porta = "+CostantiDB.PORTE_DELEGATE+".id");
  2025.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA+".id_trasformazione = "+CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI+".id");
  2026.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA+".id_servizio_applicativo = "+alias_SERVIZI_APPLICATIVI_traformazioni+".id");
  2027.                 }
  2028.             }
  2029.             if(filtroRicerca!=null){
  2030.                 if(filtroRicerca.getNomeServizioApplicativoTokenRiferitoApplicabilitaTrasformazione()!=null){
  2031.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_TOKEN_SA);
  2032.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI,alias_SERVIZI_APPLICATIVI_TOKEN_traformazioni);
  2033.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI);
  2034.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA);
  2035.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI+".id_porta = "+CostantiDB.PORTE_DELEGATE+".id");
  2036.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA+".id_trasformazione = "+CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI+".id");
  2037.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA+".id_servizio_applicativo = "+alias_SERVIZI_APPLICATIVI_traformazioni+".id");
  2038.                 }
  2039.             }
  2040.             boolean porteDelegatePerAzioni = false;
  2041.             if(filtroRicerca!=null && filtroRicerca.getNomePortaDelegante()!=null) {
  2042.                 porteDelegatePerAzioni = true;
  2043.                 if(filtroRicerca.getAzione()!=null) {
  2044.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE_AZIONI);
  2045.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_AZIONI+".id_porta = "+CostantiDB.PORTE_DELEGATE+".id");
  2046.                 }
  2047.             }

  2048.             if(filtroRicerca!=null){
  2049.                 // Filtro By Data
  2050.                 if(filtroRicerca.getMinDate()!=null)
  2051.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".ora_registrazione > ?");
  2052.                 if(filtroRicerca.getMaxDate()!=null)
  2053.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".ora_registrazione < ?");
  2054.                 if(filtroRicerca.getTipoSoggetto()!=null)
  2055.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto = ?");
  2056.                 if(filtroRicerca.getNomeSoggetto()!=null)
  2057.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto = ?");
  2058.                 if(filtroRicerca.getTipoSoggettoErogatore()!=null)
  2059.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".tipo_soggetto_erogatore = ?");
  2060.                 if(filtroRicerca.getNomeSoggettoErogatore()!=null)
  2061.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".nome_soggetto_erogatore = ?");
  2062.                 if(filtroRicerca.getTipoServizio()!=null)
  2063.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".tipo_servizio = ?");
  2064.                 if(filtroRicerca.getNomeServizio()!=null)
  2065.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".nome_servizio = ?");
  2066.                 if(filtroRicerca.getVersioneServizio()!=null)
  2067.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".versione_servizio = ?");
  2068.                 if(!porteDelegatePerAzioni && filtroRicerca.getAzione()!=null)
  2069.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".nome_azione = ?");
  2070.                 if(filtroRicerca.getNome()!=null)
  2071.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".nome_porta = ?");
  2072.                 if(filtroRicerca.getIdRuolo()!=null)
  2073.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_RUOLI+".ruolo = ?");
  2074.                 if(filtroRicerca.getIdScope()!=null)
  2075.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_SCOPE+".scope = ?");
  2076.                 if(filtroRicerca.getNomeServizioApplicativo()!=null)
  2077.                     sqlQueryObject.addWhereCondition(alias_SERVIZI_APPLICATIVI_autorizzati+".nome = ?");        
  2078.                 if(filtroRicerca.getNomeServizioApplicativoToken()!=null)
  2079.                     sqlQueryObject.addWhereCondition(alias_SERVIZI_APPLICATIVI_token_autorizzati+".nome = ?");  
  2080.                 if(filtroRicerca.getIdRuoloToken()!=null)
  2081.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_TOKEN_RUOLI+".ruolo = ?");
  2082.                 if(filtroRicerca.getNomeServizioApplicativoRiferitoApplicabilitaTrasformazione()!=null)
  2083.                     sqlQueryObject.addWhereCondition(alias_SERVIZI_APPLICATIVI_traformazioni+".nome = ?");  
  2084.                 if(filtroRicerca.getNomeServizioApplicativoTokenRiferitoApplicabilitaTrasformazione()!=null)
  2085.                     sqlQueryObject.addWhereCondition(alias_SERVIZI_APPLICATIVI_TOKEN_traformazioni+".nome = ?");    
  2086.                 if(filtroRicerca.getStato()!=null)
  2087.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".stato = ?");
  2088.                 if(porteDelegatePerAzioni) {
  2089.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE+".nome_porta_delegante_azione = ?");
  2090.                     if(filtroRicerca.getAzione()!=null)
  2091.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_DELEGATE_AZIONI+".azione = ?");
  2092.                 }
  2093.             }

  2094.             sqlQueryObject.setANDLogicOperator(true);
  2095.             String sqlQuery = sqlQueryObject.createSQLQuery();
  2096.             this.driver.logDebug("eseguo query : " + sqlQuery );
  2097.             stm = con.prepareStatement(sqlQuery);
  2098.             int indexStmt = 1;
  2099.             if(filtroRicerca!=null){
  2100.                 if(filtroRicerca.getMinDate()!=null){
  2101.                     this.driver.logDebug("minDate stmt.setTimestamp("+filtroRicerca.getMinDate()+")");
  2102.                     stm.setTimestamp(indexStmt, new Timestamp(filtroRicerca.getMinDate().getTime()));
  2103.                     indexStmt++;
  2104.                 }
  2105.                 if(filtroRicerca.getMaxDate()!=null){
  2106.                     this.driver.logDebug("maxDate stmt.setTimestamp("+filtroRicerca.getMaxDate()+")");
  2107.                     stm.setTimestamp(indexStmt, new Timestamp(filtroRicerca.getMaxDate().getTime()));
  2108.                     indexStmt++;
  2109.                 }  
  2110.                 if(filtroRicerca.getTipoSoggetto()!=null){
  2111.                     this.driver.logDebug("tipoSoggetto stmt.setString("+filtroRicerca.getTipoSoggetto()+")");
  2112.                     stm.setString(indexStmt, filtroRicerca.getTipoSoggetto());
  2113.                     indexStmt++;
  2114.                 }
  2115.                 if(filtroRicerca.getNomeSoggetto()!=null){
  2116.                     this.driver.logDebug("nomeSoggetto stmt.setString("+filtroRicerca.getNomeSoggetto()+")");
  2117.                     stm.setString(indexStmt, filtroRicerca.getNomeSoggetto());
  2118.                     indexStmt++;
  2119.                 }  
  2120.                 if(filtroRicerca.getTipoSoggettoErogatore()!=null){
  2121.                     this.driver.logDebug("tipoSoggettoErogatore stmt.setString("+filtroRicerca.getTipoSoggettoErogatore()+")");
  2122.                     stm.setString(indexStmt, filtroRicerca.getTipoSoggettoErogatore());
  2123.                     indexStmt++;
  2124.                 }
  2125.                 if(filtroRicerca.getNomeSoggettoErogatore()!=null){
  2126.                     this.driver.logDebug("nomeSoggettoErogatore stmt.setString("+filtroRicerca.getNomeSoggettoErogatore()+")");
  2127.                     stm.setString(indexStmt, filtroRicerca.getNomeSoggettoErogatore());
  2128.                     indexStmt++;
  2129.                 }  
  2130.                 if(filtroRicerca.getTipoServizio()!=null){
  2131.                     this.driver.logDebug("tipoServizio stmt.setString("+filtroRicerca.getTipoServizio()+")");
  2132.                     stm.setString(indexStmt, filtroRicerca.getTipoServizio());
  2133.                     indexStmt++;
  2134.                 }
  2135.                 if(filtroRicerca.getNomeServizio()!=null){
  2136.                     this.driver.logDebug("nomeServizio stmt.setString("+filtroRicerca.getNomeServizio()+")");
  2137.                     stm.setString(indexStmt, filtroRicerca.getNomeServizio());
  2138.                     indexStmt++;
  2139.                 }  
  2140.                 if(filtroRicerca.getVersioneServizio()!=null){
  2141.                     this.driver.logDebug("versioneServizio stmt.setInt("+filtroRicerca.getVersioneServizio()+")");
  2142.                     stm.setInt(indexStmt, filtroRicerca.getVersioneServizio());
  2143.                     indexStmt++;
  2144.                 }  
  2145.                 if(!porteDelegatePerAzioni && filtroRicerca.getAzione()!=null){
  2146.                     this.driver.logDebug("azione stmt.setString("+filtroRicerca.getAzione()+")");
  2147.                     stm.setString(indexStmt, filtroRicerca.getAzione());
  2148.                     indexStmt++;
  2149.                 }  
  2150.                 if(filtroRicerca.getNome()!=null){
  2151.                     this.driver.logDebug("nome stmt.setString("+filtroRicerca.getNome()+")");
  2152.                     stm.setString(indexStmt, filtroRicerca.getNome());
  2153.                     indexStmt++;
  2154.                 }
  2155.                 if(filtroRicerca.getIdRuolo()!=null){
  2156.                     this.driver.logDebug("ruolo stmt.setString("+filtroRicerca.getIdRuolo().getNome()+")");
  2157.                     stm.setString(indexStmt, filtroRicerca.getIdRuolo().getNome());
  2158.                     indexStmt++;
  2159.                 }
  2160.                 if(filtroRicerca.getIdScope()!=null){
  2161.                     this.driver.logDebug("scope stmt.setString("+filtroRicerca.getIdScope().getNome()+")");
  2162.                     stm.setString(indexStmt, filtroRicerca.getIdScope().getNome());
  2163.                     indexStmt++;
  2164.                 }
  2165.                 if(filtroRicerca.getNomeServizioApplicativo()!=null){
  2166.                     this.driver.logDebug("servizioApplicativoAuthz stmt.setString("+filtroRicerca.getNomeServizioApplicativo()+")");
  2167.                     stm.setString(indexStmt, filtroRicerca.getNomeServizioApplicativo());
  2168.                     indexStmt++;
  2169.                 }
  2170.                 if(filtroRicerca.getNomeServizioApplicativoToken()!=null){
  2171.                     this.driver.logDebug("servizioApplicativoTokenAuthz stmt.setString("+filtroRicerca.getNomeServizioApplicativoToken()+")");
  2172.                     stm.setString(indexStmt, filtroRicerca.getNomeServizioApplicativoToken());
  2173.                     indexStmt++;
  2174.                 }
  2175.                 if(filtroRicerca.getIdRuoloToken()!=null){
  2176.                     this.driver.logDebug("ruoloToken stmt.setString("+filtroRicerca.getIdRuoloToken().getNome()+")");
  2177.                     stm.setString(indexStmt, filtroRicerca.getIdRuoloToken().getNome());
  2178.                     indexStmt++;
  2179.                 }
  2180.                 if(filtroRicerca.getNomeServizioApplicativoRiferitoApplicabilitaTrasformazione()!=null){
  2181.                     this.driver.logDebug("servizioApplicativoTrasformazioni stmt.setString("+filtroRicerca.getNomeServizioApplicativoRiferitoApplicabilitaTrasformazione()+")");
  2182.                     stm.setString(indexStmt, filtroRicerca.getNomeServizioApplicativoRiferitoApplicabilitaTrasformazione());
  2183.                     indexStmt++;
  2184.                 }
  2185.                 if(filtroRicerca.getNomeServizioApplicativoTokenRiferitoApplicabilitaTrasformazione()!=null){
  2186.                     this.driver.logDebug("servizioApplicativoTokenTrasformazioni stmt.setString("+filtroRicerca.getNomeServizioApplicativoTokenRiferitoApplicabilitaTrasformazione()+")");
  2187.                     stm.setString(indexStmt, filtroRicerca.getNomeServizioApplicativoTokenRiferitoApplicabilitaTrasformazione());
  2188.                     indexStmt++;
  2189.                 }
  2190.                 if(filtroRicerca.getStato()!=null){
  2191.                     this.driver.logDebug("stato stmt.setString("+filtroRicerca.getStato().getValue()+")");
  2192.                     stm.setString(indexStmt, filtroRicerca.getStato().getValue());
  2193.                     indexStmt++;
  2194.                 }
  2195.                 if(porteDelegatePerAzioni) {
  2196.                     this.driver.logDebug("nomePortaDelegata stmt.setString("+filtroRicerca.getNomePortaDelegante()+")");
  2197.                     stm.setString(indexStmt, filtroRicerca.getNomePortaDelegante());
  2198.                     indexStmt++;
  2199.                     if(filtroRicerca.getAzione()!=null) {
  2200.                         this.driver.logDebug("azione stmt.setString("+filtroRicerca.getAzione()+")");
  2201.                         stm.setString(indexStmt, filtroRicerca.getAzione());
  2202.                         indexStmt++;
  2203.                     }
  2204.                 }
  2205.             }
  2206.             rs = stm.executeQuery();
  2207.             nomiPD = new ArrayList<>();
  2208.             while (rs.next()) {
  2209.                 nomiPD.add(rs.getString("nome_porta"));
  2210.             }
  2211.         }catch(Exception e){
  2212.             throw new DriverConfigurazioneException("getAllIdPorteDelegate error",e);
  2213.         } finally {

  2214.             //Chiudo statement and resultset
  2215.             JDBCUtilities.closeResources(rs, stm);

  2216.             this.driver.closeConnection(con);

  2217.         }
  2218.        
  2219.         if(nomiPD == null || nomiPD.size()<=0){
  2220.             if(filtroRicerca!=null)
  2221.                 throw new DriverConfigurazioneNotFound("PorteDelegate non trovate che rispettano il filtro di ricerca selezionato: "+filtroRicerca.toString());
  2222.             else
  2223.                 throw new DriverConfigurazioneNotFound("PorteDelegate non trovate");
  2224.         }else{
  2225.             List<IDPortaDelegata> idsPD = new ArrayList<IDPortaDelegata>();
  2226.             for (String nomePortaDelegata : nomiPD) {
  2227.                 idsPD.add(this.getIDPortaDelegata(nomePortaDelegata));
  2228.             }
  2229.             return idsPD;
  2230.         }
  2231.        
  2232.     }
  2233.    
  2234.     protected List<PortaDelegata> getPorteDelegateByPolicyGestioneToken(String nome) throws DriverConfigurazioneException{
  2235.         String nomeMetodo = "getPorteDelegateByPolicyGestioneToken";

  2236.         Connection con = null;
  2237.         PreparedStatement stmt=null;
  2238.         ResultSet risultato=null;
  2239.         ArrayList<PortaDelegata> lista = new ArrayList<>();

  2240.         if (this.driver.atomica) {
  2241.             try {
  2242.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2243.             } catch (Exception e) {
  2244.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2245.             }

  2246.         } else
  2247.             con = this.driver.globalConnection;

  2248.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  2249.         try {

  2250.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2251.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  2252.             sqlQueryObject.addSelectField("id");
  2253.             sqlQueryObject.addWhereCondition("token_policy=?");
  2254.             String queryString = sqlQueryObject.createSQLQuery();
  2255.             stmt = con.prepareStatement(queryString);
  2256.             stmt.setString(1, nome);
  2257.             risultato = stmt.executeQuery();

  2258.             while (risultato.next()) {

  2259.                 Long id = risultato.getLong("id");
  2260.                 lista.add(this.getPortaDelegata(id));

  2261.             }

  2262.             return lista;

  2263.         } catch (Exception qe) {
  2264.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2265.         } finally {
  2266.             //Chiudo statement and resultset
  2267.             JDBCUtilities.closeResources(risultato, stmt);
  2268.             this.driver.closeConnection(con);
  2269.         }
  2270.     }
  2271.    
  2272.     protected MappingFruizionePortaDelegata getMappingFruizione(IDServizio idServizio, IDSoggetto idSoggetto, IDPortaDelegata idPortaDelegata) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  2273.        
  2274.         Connection con = null;
  2275.         if (this.driver.atomica) {
  2276.             try {
  2277.                 con = this.driver.getConnectionFromDatasource("getMappingFruizione");

  2278.             } catch (Exception e) {
  2279.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getMappingFruizione] Exception accedendo al datasource :" + e.getMessage(),e);

  2280.             }

  2281.         } else
  2282.             con = this.driver.globalConnection;

  2283.         try {
  2284.            
  2285.             return DBMappingUtils.getMappingFruizione(idServizio, idSoggetto, idPortaDelegata, con, this.driver.tipoDB);

  2286.         } catch (Exception se) {
  2287.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getMappingFruizione] Exception: " + se.getMessage(),se);
  2288.         } finally {
  2289.             this.driver.closeConnection(con);
  2290.         }
  2291.        
  2292.     }
  2293.    
  2294.    
  2295.     protected ProprietaOggetto getProprietaOggetto(IDPortaDelegata idPD) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  2296.        
  2297.         String nomeMetodo = "getProprietaOggetto";
  2298.        
  2299.         if (idPD == null || idPD.getNome()==null)
  2300.             throw new DriverConfigurazioneException("["+nomeMetodo+"] Parametro Non Valido");

  2301.         Connection con = null;
  2302.         PreparedStatement stm = null;
  2303.         ResultSet rs = null;
  2304.         String sqlQuery = "";

  2305.         if (this.driver.atomica) {
  2306.             try {
  2307.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);

  2308.             } catch (Exception e) {
  2309.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::"+nomeMetodo+"] Exception accedendo al datasource :" + e.getMessage(),e);

  2310.             }

  2311.         } else
  2312.             con = this.driver.globalConnection;

  2313.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);

  2314.         try {
  2315.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2316.             sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  2317.             sqlQueryObject.addSelectField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE);
  2318.             sqlQueryObject.addSelectField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE);
  2319.             sqlQueryObject.addSelectField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA);
  2320.             sqlQueryObject.addSelectField(CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA);
  2321.             sqlQueryObject.addWhereCondition("nome_porta = ?");
  2322.             sqlQuery = sqlQueryObject.createSQLQuery();
  2323.             stm = con.prepareStatement(sqlQuery);

  2324.             stm.setString(1, idPD.getNome());

  2325.             this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPD.getNome()));
  2326.             rs = stm.executeQuery();

  2327.             ProprietaOggetto proprieta = null;
  2328.             if (rs.next()) {            
  2329.                 proprieta = this.utilsDriver.readProprietaOggetto(rs,false);
  2330.             }
  2331.             else{
  2332.                 throw new DriverConfigurazioneNotFound("PortaDelegata ["+idPD.getNome()+"] non esistente");
  2333.             }

  2334.             return proprieta;

  2335.         } catch (SQLException se) {

  2336.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::"+nomeMetodo+"] SqlException: " + se.getMessage(),se);
  2337.         } catch (Exception se) {

  2338.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::"+nomeMetodo+"] Exception: " + se.getMessage(),se);
  2339.         }
  2340.         finally {

  2341.             //Chiudo statement and resultset
  2342.             JDBCUtilities.closeResources(rs, stm);
  2343.             this.driver.closeConnection(con);
  2344.         }
  2345.     }
  2346.    
  2347.    
  2348.     protected void updateProprietaOggetto(IDPortaDelegata idPD, String user) throws DriverConfigurazioneException {
  2349.         if(idPD==null || idPD.getNome()==null) {
  2350.             throw new DriverConfigurazioneException("Identificativo non fornito");
  2351.         }
  2352.         this.porteDriver.updateProprietaOggetto(idPD.getNome(), user, CostantiDB.PORTE_DELEGATE);
  2353.     }
  2354. }