DriverConfigurazioneDB_porteApplicativeDriver.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.Collections;
  28. import java.util.HashMap;
  29. import java.util.List;
  30. import java.util.Map;

  31. import org.apache.commons.lang.StringUtils;
  32. import org.openspcoop2.core.byok.IDriverBYOK;
  33. import org.openspcoop2.core.commons.DBUtils;
  34. import org.openspcoop2.core.commons.IExtendedInfo;
  35. import org.openspcoop2.core.config.AttributeAuthority;
  36. import org.openspcoop2.core.config.AutorizzazioneRuoli;
  37. import org.openspcoop2.core.config.AutorizzazioneScope;
  38. import org.openspcoop2.core.config.ConfigurazioneMessageHandlers;
  39. import org.openspcoop2.core.config.ConfigurazionePortaHandler;
  40. import org.openspcoop2.core.config.CorrelazioneApplicativa;
  41. import org.openspcoop2.core.config.CorrelazioneApplicativaElemento;
  42. import org.openspcoop2.core.config.CorrelazioneApplicativaRisposta;
  43. import org.openspcoop2.core.config.CorrelazioneApplicativaRispostaElemento;
  44. import org.openspcoop2.core.config.CorsConfigurazione;
  45. import org.openspcoop2.core.config.DumpConfigurazione;
  46. import org.openspcoop2.core.config.GestioneToken;
  47. import org.openspcoop2.core.config.GestioneTokenAutenticazione;
  48. import org.openspcoop2.core.config.MessageSecurity;
  49. import org.openspcoop2.core.config.MessageSecurityFlow;
  50. import org.openspcoop2.core.config.MessageSecurityFlowParameter;
  51. import org.openspcoop2.core.config.MtomProcessor;
  52. import org.openspcoop2.core.config.MtomProcessorFlow;
  53. import org.openspcoop2.core.config.MtomProcessorFlowParameter;
  54. import org.openspcoop2.core.config.PortaApplicativa;
  55. import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneServiziApplicativi;
  56. import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneServizioApplicativo;
  57. import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneSoggetti;
  58. import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneSoggetto;
  59. import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneToken;
  60. import org.openspcoop2.core.config.PortaApplicativaAzione;
  61. import org.openspcoop2.core.config.PortaApplicativaBehaviour;
  62. import org.openspcoop2.core.config.PortaApplicativaServizio;
  63. import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
  64. import org.openspcoop2.core.config.PortaApplicativaServizioApplicativoConnettore;
  65. import org.openspcoop2.core.config.PortaApplicativaSoggettoVirtuale;
  66. import org.openspcoop2.core.config.PortaTracciamento;
  67. import org.openspcoop2.core.config.Proprieta;
  68. import org.openspcoop2.core.config.ProprietaOggetto;
  69. import org.openspcoop2.core.config.ResponseCachingConfigurazione;
  70. import org.openspcoop2.core.config.Ruolo;
  71. import org.openspcoop2.core.config.Scope;
  72. import org.openspcoop2.core.config.Soggetto;
  73. import org.openspcoop2.core.config.TracciamentoConfigurazione;
  74. import org.openspcoop2.core.config.TracciamentoConfigurazioneFiletrace;
  75. import org.openspcoop2.core.config.Transazioni;
  76. import org.openspcoop2.core.config.Trasformazioni;
  77. import org.openspcoop2.core.config.ValidazioneContenutiApplicativi;
  78. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  79. import org.openspcoop2.core.config.constants.PortaApplicativaAzioneIdentificazione;
  80. import org.openspcoop2.core.config.constants.RuoloTipoMatch;
  81. import org.openspcoop2.core.config.constants.RuoloTipologia;
  82. import org.openspcoop2.core.config.constants.ScopeTipoMatch;
  83. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  84. import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
  85. import org.openspcoop2.core.config.driver.ExtendedInfoManager;
  86. import org.openspcoop2.core.config.driver.FiltroRicercaPorteApplicative;
  87. import org.openspcoop2.core.config.driver.IDServizioUtils;
  88. import org.openspcoop2.core.constants.CostantiDB;
  89. import org.openspcoop2.core.id.IDConnettore;
  90. import org.openspcoop2.core.id.IDPortaApplicativa;
  91. import org.openspcoop2.core.id.IDServizio;
  92. import org.openspcoop2.core.id.IDServizioApplicativo;
  93. import org.openspcoop2.core.id.IDSoggetto;
  94. import org.openspcoop2.core.id.IdentificativiErogazione;
  95. import org.openspcoop2.core.mapping.DBMappingUtils;
  96. import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
  97. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  98. import org.openspcoop2.utils.sql.ISQLQueryObject;
  99. import org.openspcoop2.utils.sql.SQLObjectFactory;

  100. /**
  101.  * DriverConfigurazioneDB_porteApplicativeDriver
  102.  *
  103.  *
  104.  * @author Sandra Giangrandi (sandra@link.it)
  105.  * @author Stefano Corallo (corallo@link.it)
  106.  * @author $Author$
  107.  * @version $Rev$, $Date$
  108.  */
  109. public class DriverConfigurazioneDB_porteApplicativeDriver {

  110.     private DriverConfigurazioneDB driver = null;
  111.     private DriverConfigurazioneDB_porteDriver porteDriver = null;
  112.     private DriverConfigurazioneDBSoggetti soggettiDriver = null;
  113.     private DriverConfigurazioneDBUtils utilsDriver = null;
  114.    
  115.     protected DriverConfigurazioneDB_porteApplicativeDriver(DriverConfigurazioneDB driver) {
  116.         this.driver = driver;
  117.         this.porteDriver = new DriverConfigurazioneDB_porteDriver(driver);
  118.         this.soggettiDriver = new DriverConfigurazioneDBSoggetti(driver);
  119.         this.utilsDriver = new DriverConfigurazioneDBUtils(driver);
  120.     }
  121.    
  122.     protected IDPortaApplicativa getIDPortaApplicativa(String nome) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  123.        
  124.         String nomeMetodo = "getIDPortaApplicativa";
  125.        
  126.         if (nome == null)
  127.             throw new DriverConfigurazioneException("["+nomeMetodo+"] Parametro Non Valido");

  128.         Connection con = null;
  129.         PreparedStatement stm = null;
  130.         ResultSet rs = null;
  131.         String sqlQuery = "";

  132.         if (this.driver.atomica) {
  133.             try {
  134.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);

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

  137.             }

  138.         } else
  139.             con = this.driver.globalConnection;

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

  141.         try {
  142.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  143.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  144.             sqlQueryObject.addSelectField("*");
  145.             sqlQueryObject.addWhereCondition("nome_porta = ?");
  146.             sqlQuery = sqlQueryObject.createSQLQuery();
  147.             stm = con.prepareStatement(sqlQuery);

  148.             stm.setString(1, nome);

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

  151.             IDPortaApplicativa idPA = null;
  152.             if (rs.next()) {
  153.                
  154.                 idPA = new IDPortaApplicativa();
  155.                
  156.                 idPA.setNome(rs.getString("nome_porta"));
  157.                
  158.                 IdentificativiErogazione idErogazione = new IdentificativiErogazione();
  159.                
  160.                 IDSoggetto idSoggettoProprietario = null;
  161.                 try{
  162.                     long idSoggProprietario = rs.getLong("id_soggetto");
  163.                     idSoggettoProprietario = this.soggettiDriver.getIdSoggetto(idSoggProprietario,con);
  164.                 } catch (Exception se) {
  165.                     throw new Exception(se.getMessage()); // mappo NotFound in una eccezione generica. Il Soggetto proprietario deve esistere
  166.                 }
  167.                

  168.                 IDSoggetto idSoggettoVirtuale = null;
  169.                 String tipoSoggVirt=rs.getString("tipo_soggetto_virtuale");
  170.                 String nomeSoggVirt=rs.getString("nome_soggetto_virtuale");
  171.                 if(nomeSoggVirt!=null && !nomeSoggVirt.equals("") && tipoSoggVirt!=null && !tipoSoggVirt.equals("")){
  172.                     idSoggettoVirtuale = new IDSoggetto(tipoSoggVirt, nomeSoggVirt);
  173.                 }
  174.                 idErogazione.setSoggettoVirtuale(idSoggettoVirtuale);

  175.                 String tipoServizio = rs.getString("tipo_servizio");
  176.                 String nomeServizio = rs.getString("servizio");
  177.                 Integer versioneServizio = rs.getInt("versione_servizio");

  178.                 String nomeProprietarioServizio = null;
  179.                 String tipoProprietarioServizio = null;
  180.                 if(nomeSoggVirt!=null && !nomeSoggVirt.equals("") && tipoSoggVirt!=null && !tipoSoggVirt.equals("")){
  181.                     nomeProprietarioServizio=nomeSoggVirt;
  182.                     tipoProprietarioServizio=tipoSoggVirt;
  183.                 }else{
  184.                     nomeProprietarioServizio=idSoggettoProprietario.getNome();
  185.                     tipoProprietarioServizio=idSoggettoProprietario.getTipo();
  186.                 }

  187.                 long idServizioPA=-1;
  188.                 try {
  189.                     idServizioPA = DBUtils.getIdServizio(nomeServizio, tipoServizio, versioneServizio, nomeProprietarioServizio, tipoProprietarioServizio, con, this.driver.tipoDB,this.driver.tabellaSoggetti);
  190.                 } catch (Exception e) {
  191.                     // NON Abilitare il log, poiche' la tabella servizi puo' non esistere per il driver di configurazione
  192.                     // in un database che non ' quello della controlstation ma quello pdd.
  193.                     //this.driver.log.info(e);
  194.                 }
  195.                 IDServizio idServizio = null;
  196.                 if( (idServizioPA>0) || (nomeServizio!=null && !nomeServizio.equals("") && tipoServizio!=null && !tipoServizio.equals("")) ){
  197.                     idServizio = IDServizioUtils.buildIDServizio(tipoServizio, nomeServizio,
  198.                             new IDSoggetto(tipoProprietarioServizio,nomeProprietarioServizio), versioneServizio);
  199.                 }
  200.                
  201.                 String azione = rs.getString("azione");
  202.                 if(azione!=null && !"".equals(azione) && idServizio!=null){
  203.                     idServizio.setAzione(azione);
  204.                 }
  205.                 idErogazione.setIdServizio(idServizio);

  206.                
  207.                 idPA.setIdentificativiErogazione(idErogazione);
  208.             }
  209.             else{
  210.                 throw new DriverConfigurazioneNotFound("PortaApplicativa ["+nome+"] non esistente");
  211.             }

  212.             return idPA;

  213.         } catch (SQLException se) {

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

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

  223.             //Chiudo statement and resultset
  224.             JDBCUtilities.closeResources(rs, stm);
  225.             this.driver.closeConnection(con);
  226.         }
  227.     }
  228.    
  229.     protected PortaApplicativa getPortaApplicativa(IDPortaApplicativa idPA) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {

  230.         if (idPA == null)
  231.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaApplicativa] Parametro idPA Non Valido");

  232.         String nome = idPA.getNome();

  233.         if ((nome == null)){
  234.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaApplicativa] Parametri non Validi");
  235.         }
  236.        
  237.         Connection con = null;
  238.         PortaApplicativa pa = null;
  239.         long idPortaApplicativa = 0;
  240.         if (this.driver.atomica) {
  241.             try {
  242.                 con = this.driver.getConnectionFromDatasource("getPortaApplicativa(idPortaApplicativa)");

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

  245.             }

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

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

  249.         boolean trovato = false;
  250.         try {

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

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

  265.         if (trovato) {
  266.             pa=this.driver.getPortaApplicativa(idPortaApplicativa);

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

  270.         return pa;
  271.     }
  272.    
  273.    
  274.     protected List<PortaApplicativa> getPorteApplicative(IDServizio idServizio, boolean ricercaPuntuale) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  275.         return this.getEnginePortaApplicativa(idServizio, ricercaPuntuale, null);
  276.     }
  277.    
  278.     protected List<PortaApplicativa> getPorteApplicativeVirtuali(IDSoggetto soggettoVirtuale,IDServizio idServizio, boolean ricercaPuntuale) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  279.         return this.getEnginePortaApplicativa(idServizio, ricercaPuntuale, soggettoVirtuale);
  280.     }
  281.    
  282.        
  283.     private List<PortaApplicativa> getEnginePortaApplicativa(IDServizio service,boolean ricercaPuntuale, IDSoggetto soggettoVirtuale) throws DriverConfigurazioneException, DriverConfigurazioneNotFound {

  284.         if (service==null)
  285.             throw new DriverConfigurazioneException("[getPortaApplicativa] Parametro idServizio Non Valido");

  286.         IDSoggetto soggettoErogatore = service.getSoggettoErogatore();
  287.         if ((soggettoErogatore == null) || (service == null))
  288.             throw new DriverConfigurazioneException("[getPortaApplicativa] Parametri Non Validi");
  289.         String servizio = service.getNome();
  290.         String tipoServizio = service.getTipo();
  291.         Integer versioneServizio = service.getVersione();
  292.         String azione = service.getAzione();
  293.         if ((servizio == null) || (tipoServizio == null))
  294.             throw new DriverConfigurazioneException("[getPortaApplicativa] Parametri (Servizio) Non Validi");

  295.         if(soggettoVirtuale!=null){
  296.             if(soggettoVirtuale.getTipo()==null || soggettoVirtuale.getNome()==null)
  297.                 throw new DriverConfigurazioneException("[getPortaApplicativa] Parametri (Soggetto Virtuale) non validi");
  298.         }

  299.         // Devi cercare una porta applicativa che appartiene al soggetto
  300.         // erogatore ( tipo+nome)
  301.         // e che possiede il tipoServizio,servizio e azione specificata
  302.         // Nota, siccome l'azione e' opzionale e puo' essere null,
  303.         // Se l'azione e' null, chiaramente la ricerca consiste nel trovare una
  304.         // PA con quel servizio (tipo+nome)
  305.         // Se l'azione non e' null, la ricerca deve prima essere effettuata
  306.         // anche con l'azione, e se questa fallisce,
  307.         // viene effettuata allora senza l'azione controllando solo il servizio.

  308.         // Nel caso la ricerca non sia puntuale, se non si trovano PA con un'azione specifica, si prova a cercarla con azione non definita.

  309.         Connection con = null;
  310.         PreparedStatement stm = null;
  311.         ResultSet rs = null;
  312.         String sqlQuery = null;

  313.         if (this.driver.atomica) {
  314.             try {
  315.                 con = this.driver.getConnectionFromDatasource("getPortaApplicativa(idPortaApplicativa)");

  316.             } catch (Exception e) {
  317.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaApplicativa] Exception accedendo al datasource :" + e.getMessage(),e);

  318.             }

  319.         } else
  320.             con = this.driver.globalConnection;

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

  322.         List<Long> idPorteApplicative = new ArrayList<Long>();
  323.         try {
  324.             // Soggetto Proprietario della Porta Applicativa
  325.             long idSoggErog = 0;
  326.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  327.             sqlQueryObject.addFromTable(this.driver.tabellaSoggetti);
  328.             sqlQueryObject.addSelectField("*");
  329.             sqlQueryObject.addWhereCondition("nome_soggetto=?");
  330.             sqlQueryObject.addWhereCondition("tipo_soggetto=?");
  331.             sqlQueryObject.setANDLogicOperator(true);
  332.             sqlQuery = sqlQueryObject.createSQLQuery();

  333.             stm = con.prepareStatement(sqlQuery,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
  334.             stm.setString(1, soggettoErogatore.getNome());
  335.             stm.setString(2, soggettoErogatore.getTipo());
  336.             rs = stm.executeQuery();

  337.             this.driver.logDebug("eseguo query soggetto" + DBUtils.formatSQLString(sqlQuery, soggettoErogatore.getNome() ,soggettoErogatore.getTipo() ));

  338.             if (rs.next()) {
  339.                 idSoggErog = rs.getLong("id");
  340.                 rs.close();
  341.                 stm.close();
  342.             } else
  343.                 throw new DriverConfigurazioneNotFound("[DriverConfigurazioneDB::getPortaApplicativa] Nessuno soggetto trovato [" + soggettoErogatore.getNome() + "," + soggettoErogatore.getTipo() + "].");

  344.             // Eventuale SoggettoVirtuale
  345.             long idSoggVirtuale = 0;
  346.             if(soggettoVirtuale!=null){
  347.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  348.                 sqlQueryObject.addFromTable(this.driver.tabellaSoggetti);
  349.                 sqlQueryObject.addSelectField("*");
  350.                 sqlQueryObject.addWhereCondition("nome_soggetto=?");
  351.                 sqlQueryObject.addWhereCondition("tipo_soggetto=?");
  352.                 sqlQueryObject.setANDLogicOperator(true);
  353.                 sqlQuery = sqlQueryObject.createSQLQuery();

  354.                 stm = con.prepareStatement(sqlQuery,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
  355.                 stm.setString(1, soggettoVirtuale.getNome());
  356.                 stm.setString(2, soggettoVirtuale.getTipo());
  357.                 rs = stm.executeQuery();

  358.                 this.driver.logDebug("eseguo query soggetto virtuale" + DBUtils.formatSQLString(sqlQuery, soggettoVirtuale.getNome() ,soggettoVirtuale.getTipo() ));

  359.                 if (rs.next()) {
  360.                     idSoggVirtuale = rs.getLong("id");
  361.                 }
  362.                 rs.close();
  363.                 stm.close();
  364.                 //else
  365.                 //  throw new DriverConfigurazioneNotFound("[DriverConfigurazioneDB::getPortaApplicativa] Nessuno soggetto virtuale trovato [" + soggettoVirtuale.getNome() + "," + soggettoVirtuale.getTipo() + "].");
  366.                 // L'ID non c'e' per forza. Nel database pdd, il soggetto virtuale non c'e'.
  367.             }


  368.             this.driver.logDebug("eseguo soggetto:" +idSoggErog);

  369.             if (azione == null || azione.trim().equals("")) {
  370.                 this.driver.logDebug("ricerca PA con azione == null, soggettoVirtuale="+soggettoVirtuale);
  371.                 if(soggettoVirtuale==null) {
  372.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  373.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  374.                     sqlQueryObject.addSelectField("*");
  375.                     sqlQueryObject.addWhereCondition("id_soggetto = ?");
  376.                     sqlQueryObject.addWhereCondition("tipo_servizio = ?");
  377.                     sqlQueryObject.addWhereCondition("servizio = ?");
  378.                     sqlQueryObject.addWhereCondition("versione_servizio = ?");
  379.                     sqlQueryObject.addWhereCondition(false, "mode_azione IS NULL", "mode_azione<>?");
  380.                     sqlQueryObject.addWhereCondition(false, "azione IS NULL", "azione = ?", "azione = ?");
  381.                     sqlQueryObject.setANDLogicOperator(true);
  382.                     sqlQuery = sqlQueryObject.createSQLQuery();
  383.                 } else {
  384.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  385.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  386.                     sqlQueryObject.addSelectField("*");
  387.                     sqlQueryObject.addWhereCondition("id_soggetto = ?");
  388.                     sqlQueryObject.addWhereCondition(false, "id_soggetto_virtuale = ?", "tipo_soggetto_virtuale = ? AND nome_soggetto_virtuale = ?");
  389.                     sqlQueryObject.addWhereCondition("tipo_servizio = ?");
  390.                     sqlQueryObject.addWhereCondition("servizio = ?");
  391.                     sqlQueryObject.addWhereCondition("versione_servizio = ?");
  392.                     sqlQueryObject.addWhereCondition(false, "mode_azione IS NULL", "mode_azione<>?");
  393.                     sqlQueryObject.addWhereCondition(false, "azione IS NULL", "azione = ?", "azione = ?");
  394.                     sqlQueryObject.setANDLogicOperator(true);
  395.                     sqlQuery = sqlQueryObject.createSQLQuery();
  396.                 }

  397.                 stm = con.prepareStatement(sqlQuery,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

  398.                 if(soggettoVirtuale==null){
  399.                     int index = 1;
  400.                     stm.setLong(index++, idSoggErog);
  401.                     stm.setString(index++, tipoServizio);
  402.                     stm.setString(index++, servizio);
  403.                     stm.setInt(index++, versioneServizio);
  404.                     stm.setString(index++, PortaApplicativaAzioneIdentificazione.DELEGATED_BY.getValue());
  405.                     stm.setString(index++, "");
  406.                     stm.setString(index++, "-");
  407.                     this.driver.logDebug("eseguo query " + DBUtils.formatSQLString(sqlQuery, idSoggErog, tipoServizio, servizio,versioneServizio,"","-"));
  408.                 }else{
  409.                     int index = 1;
  410.                     stm.setLong(index++, idSoggErog);
  411.                     stm.setLong(index++, idSoggVirtuale);
  412.                     stm.setString(index++, soggettoVirtuale.getTipo());
  413.                     stm.setString(index++, soggettoVirtuale.getNome());
  414.                     stm.setString(index++, tipoServizio);
  415.                     stm.setString(index++, servizio);
  416.                     stm.setInt(index++, versioneServizio);
  417.                     stm.setString(index++, PortaApplicativaAzioneIdentificazione.DELEGATED_BY.getValue());
  418.                     stm.setString(index++, "");
  419.                     stm.setString(index++, "-");
  420.                     this.driver.logDebug("eseguo query " + DBUtils.formatSQLString(sqlQuery, idSoggErog, soggettoErogatore.getTipo(),soggettoErogatore.getNome(),
  421.                             tipoServizio, servizio,versioneServizio,"","-"));
  422.                 }



  423.             } else {
  424.                 this.driver.logDebug("ricerca PA con azione != null, soggettoVirtuale="+soggettoVirtuale);
  425.                 if(soggettoVirtuale==null) {
  426.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  427.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  428.                     sqlQueryObject.addSelectField("*");
  429.                     sqlQueryObject.addWhereCondition("id_soggetto=?");
  430.                     sqlQueryObject.addWhereCondition("tipo_servizio=?");
  431.                     sqlQueryObject.addWhereCondition("servizio=?");
  432.                     sqlQueryObject.addWhereCondition("versione_servizio = ?");
  433.                     sqlQueryObject.addWhereCondition(false, "mode_azione IS NULL", "mode_azione<>?");
  434.                     sqlQueryObject.addWhereCondition("azione=?");
  435.                     sqlQueryObject.setANDLogicOperator(true);
  436.                     sqlQuery = sqlQueryObject.createSQLQuery();
  437.                 } else {
  438.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  439.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  440.                     sqlQueryObject.addSelectField("*");
  441.                     sqlQueryObject.addWhereCondition("id_soggetto = ?");
  442.                     sqlQueryObject.addWhereCondition(false, "id_soggetto_virtuale = ?", "tipo_soggetto_virtuale = ? AND nome_soggetto_virtuale = ?");
  443.                     sqlQueryObject.addWhereCondition("tipo_servizio = ?");
  444.                     sqlQueryObject.addWhereCondition("servizio = ?");
  445.                     sqlQueryObject.addWhereCondition("versione_servizio = ?");
  446.                     sqlQueryObject.addWhereCondition(false, "mode_azione IS NULL", "mode_azione<>?");
  447.                     sqlQueryObject.addWhereCondition("azione = ?");
  448.                     sqlQueryObject.setANDLogicOperator(true);
  449.                     sqlQuery = sqlQueryObject.createSQLQuery();
  450.                 }

  451.                 stm = con.prepareStatement(sqlQuery,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

  452.                 if(soggettoVirtuale==null){
  453.                     int index = 1;
  454.                     stm.setLong(index++, idSoggErog);
  455.                     stm.setString(index++, tipoServizio);
  456.                     stm.setString(index++, servizio);
  457.                     stm.setInt(index++, versioneServizio);
  458.                     stm.setString(index++, PortaApplicativaAzioneIdentificazione.DELEGATED_BY.getValue());
  459.                     stm.setString(index++, azione);
  460.                     this.driver.logDebug("eseguo query " + DBUtils.formatSQLString(sqlQuery, idSoggErog, tipoServizio, servizio, versioneServizio, azione));
  461.                 }else
  462.                 {
  463.                     int index = 1;
  464.                     stm.setLong(index++, idSoggErog);
  465.                     stm.setLong(index++, idSoggVirtuale);
  466.                     stm.setString(index++, soggettoVirtuale.getTipo());
  467.                     stm.setString(index++, soggettoVirtuale.getNome());
  468.                     stm.setString(index++, tipoServizio);
  469.                     stm.setString(index++, servizio);
  470.                     stm.setInt(index++, versioneServizio);
  471.                     stm.setString(index++, PortaApplicativaAzioneIdentificazione.DELEGATED_BY.getValue());
  472.                     stm.setString(index++, azione);
  473.                     this.driver.logDebug("eseguo query " + DBUtils.formatSQLString(sqlQuery, idSoggErog, tipoServizio, servizio, versioneServizio, azione));
  474.                 }
  475.             }


  476.             rs = stm.executeQuery();

  477.             while(rs.next()){
  478.                 long idPortaApplicativa = rs.getLong("id");
  479.                 idPorteApplicative.add(idPortaApplicativa);
  480.             }
  481.             rs.close();
  482.             stm.close();
  483.                

  484.             this.driver.logDebug("ricerca puntuale="+ricercaPuntuale);
  485.             if(!ricercaPuntuale){
  486.                 if (idPorteApplicative.size()==0 && azione != null) {
  487.                     this.driver.logDebug("ricerca PA con azione != null ma con solo il servizio, soggettoVirtuale="+soggettoVirtuale);
  488.            
  489.                     // in questo caso provo a cercaredelle porte applicative solo
  490.                     // con id_soggetto tipo_servizio e servizio
  491.                     if(soggettoVirtuale==null) {
  492.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  493.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  494.                         sqlQueryObject.addSelectField("*");
  495.                         sqlQueryObject.addWhereCondition("id_soggetto = ?");
  496.                         sqlQueryObject.addWhereCondition("tipo_servizio = ?");
  497.                         sqlQueryObject.addWhereCondition("servizio = ?");
  498.                         sqlQueryObject.addWhereCondition("versione_servizio = ?");
  499.                         sqlQueryObject.addWhereCondition(false, "mode_azione IS NULL", "mode_azione<>?");
  500.                         sqlQueryObject.addWhereCondition(false, "azione IS NULL", "azione = ?", "azione = ?");
  501.                         sqlQueryObject.setANDLogicOperator(true);
  502.                         sqlQuery = sqlQueryObject.createSQLQuery();
  503.                     } else {
  504.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  505.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  506.                         sqlQueryObject.addSelectField("*");
  507.                         sqlQueryObject.addWhereCondition("id_soggetto = ?");
  508.                         sqlQueryObject.addWhereCondition(false, "id_soggetto_virtuale = ?", "tipo_soggetto_virtuale = ? AND nome_soggetto_virtuale = ?");
  509.                         sqlQueryObject.addWhereCondition("tipo_servizio = ?");
  510.                         sqlQueryObject.addWhereCondition("servizio = ?");
  511.                         sqlQueryObject.addWhereCondition("versione_servizio = ?");
  512.                         sqlQueryObject.addWhereCondition(false, "mode_azione IS NULL", "mode_azione<>?");
  513.                         sqlQueryObject.addWhereCondition(false, "azione IS NULL", "azione = ?", "azione = ?");
  514.                         sqlQueryObject.setANDLogicOperator(true);
  515.                         sqlQuery = sqlQueryObject.createSQLQuery();
  516.                     }

  517.                     stm = con.prepareStatement(sqlQuery,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

  518.                     int index = 1;
  519.                     if(soggettoVirtuale==null){
  520.                         stm.setLong(index++, idSoggErog);
  521.                         stm.setString(index++, tipoServizio);
  522.                         stm.setString(index++, servizio);
  523.                         stm.setInt(index++, versioneServizio);
  524.                         stm.setString(index++, PortaApplicativaAzioneIdentificazione.DELEGATED_BY.getValue());
  525.                         stm.setString(index++, "");
  526.                         stm.setString(index++, "-");
  527.                     }else{
  528.                         stm.setLong(index++, idSoggErog);
  529.                         stm.setLong(index++, idSoggVirtuale);
  530.                         stm.setString(index++, soggettoVirtuale.getTipo());
  531.                         stm.setString(index++, soggettoVirtuale.getNome());
  532.                         stm.setString(index++, tipoServizio);
  533.                         stm.setString(index++, servizio);
  534.                         stm.setInt(index++, versioneServizio);
  535.                         stm.setString(index++, PortaApplicativaAzioneIdentificazione.DELEGATED_BY.getValue());
  536.                         stm.setString(index++, "");
  537.                         stm.setString(index++, "-");
  538.                     }


  539.                     this.driver.logDebug("eseguo query " + DBUtils.formatSQLString(sqlQuery, idSoggErog, tipoServizio, servizio));

  540.                     rs = stm.executeQuery();

  541.                     while(rs.next()){
  542.                         long idPortaApplicativa = rs.getLong("id");
  543.                         idPorteApplicative.add(idPortaApplicativa);
  544.                     }
  545.                    
  546.                 }
  547.             }

  548.         } catch (SQLException se) {
  549.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaApplicativa] SqlException: " + se.getMessage(),se);
  550.         } catch (DriverConfigurazioneNotFound e) {
  551.             throw new DriverConfigurazioneNotFound(e);
  552.         }catch (Exception se) {
  553.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaApplicativa] Exception: " + se.getMessage(),se);
  554.         }finally {
  555.             //Chiudo statement and resultset
  556.             JDBCUtilities.closeResources(rs, stm);
  557.             this.driver.closeConnection(con);
  558.         }

  559.         if(idPorteApplicative.size()<=0){
  560.             throw new DriverConfigurazioneNotFound("Porte Applicative non esistenti");
  561.         }
  562.         List<PortaApplicativa> pa = new ArrayList<PortaApplicativa>();
  563.         for (Long idPA : idPorteApplicative) {
  564.             pa.add(this.getPortaApplicativa(idPA));
  565.         }

  566.         return pa;
  567.     }

  568.     protected void createPortaApplicativa(PortaApplicativa aPA) throws DriverConfigurazioneException {
  569.         if (aPA == null)
  570.             throw new DriverConfigurazioneException("Porta Applicativa non valida");
  571.         if (aPA.getNome() == null || aPA.getNome().equals(""))
  572.             throw new DriverConfigurazioneException("Nome Porta Applicativa non valido");
  573.         if (aPA.getNomeSoggettoProprietario() == null || aPA.getNomeSoggettoProprietario().equals(""))
  574.             throw new DriverConfigurazioneException("Nome Soggetto Proprietario Porta Applicativa non valido");
  575.         if (aPA.getTipoSoggettoProprietario() == null || aPA.getTipoSoggettoProprietario().equals(""))
  576.             throw new DriverConfigurazioneException("Tipo Soggetto Proprietario Porta Applicativa non valido");

  577.         Connection con = null;
  578.         boolean error = false;

  579.         if (this.driver.atomica) {
  580.             try {
  581.                 con = this.driver.getConnectionFromDatasource("createPortaApplicativa");
  582.                 con.setAutoCommit(false);
  583.             } catch (Exception e) {
  584.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::createPortaApplicativa] Exception accedendo al datasource :" + e.getMessage(),e);

  585.             }

  586.         } else
  587.             con = this.driver.globalConnection;

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

  589.         try {
  590.             this.driver.logDebug("CRUDPortaApplicativa type = 1");

  591.             DriverConfigurazioneDB_porteApplicativeLIB.CRUDPortaApplicativa(1, aPA, con, this.driver.getDriverWrapBYOK());

  592.             this.driver.logDebug("Creazione PortaApplicativa [" + aPA.getId() + "] completato.");

  593.         } catch (Exception qe) {
  594.             error = true;
  595.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::createPortaApplicativa] Errore durante la creazione della PortaApplicativa : " + qe.getMessage(),qe);
  596.         } finally {

  597.             this.driver.closeConnection(error,con);
  598.         }
  599.     }
  600.    
  601.     protected void updatePortaApplicativa(PortaApplicativa aPA) throws DriverConfigurazioneException {
  602.         if (aPA == null)
  603.             throw new DriverConfigurazioneException("Porta Applicativa non valida");
  604.         if (aPA.getNome() == null || aPA.getNome().equals(""))
  605.             throw new DriverConfigurazioneException("Nome Porta Applicativa non valido");
  606.         if (aPA.getNomeSoggettoProprietario() == null || aPA.getNomeSoggettoProprietario().equals(""))
  607.             throw new DriverConfigurazioneException("Nome Soggetto Proprietario Porta Applicativa non valido");
  608.         if (aPA.getTipoSoggettoProprietario() == null || aPA.getTipoSoggettoProprietario().equals(""))
  609.             throw new DriverConfigurazioneException("Tipo Soggetto Proprietario Porta Applicativa non valido");

  610.         Connection con = null;
  611.         boolean error = false;

  612.         if (this.driver.atomica) {
  613.             try {
  614.                 con = this.driver.getConnectionFromDatasource("updatePortaApplicativa");
  615.                 con.setAutoCommit(false);
  616.             } catch (Exception e) {
  617.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::updatePortaApplicativa] Exception accedendo al datasource :" + e.getMessage(),e);

  618.             }

  619.         } else
  620.             con = this.driver.globalConnection;

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

  622.         try {
  623.             this.driver.logDebug("CRUDPortaApplicativa type = 2");

  624.             long id = DriverConfigurazioneDB_porteApplicativeLIB.CRUDPortaApplicativa(2, aPA, con, this.driver.getDriverWrapBYOK());

  625.             this.driver.logDebug("Aggiornamento PortaApplicativa [" + id + "] completato.");

  626.         } catch (Exception qe) {
  627.             error = true;
  628.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::updatePortaApplicativa] Errore durante l'update della PortaApplicativa : " + qe.getMessage(),qe);
  629.         } finally {

  630.             this.driver.closeConnection(error,con);
  631.         }
  632.     }

  633.     protected void deletePortaApplicativa(PortaApplicativa aPA) throws DriverConfigurazioneException {
  634.         if (aPA == null)
  635.             throw new DriverConfigurazioneException("Porta Applicativa non valida");
  636.         if (aPA.getNome() == null || aPA.getNome().equals(""))
  637.             throw new DriverConfigurazioneException("Nome Porta Applicativa non valido");
  638.         if (aPA.getNomeSoggettoProprietario() == null || aPA.getNomeSoggettoProprietario().equals(""))
  639.             throw new DriverConfigurazioneException("Nome Soggetto Proprietario Porta Applicativa non valido");
  640.         if (aPA.getTipoSoggettoProprietario() == null || aPA.getTipoSoggettoProprietario().equals(""))
  641.             throw new DriverConfigurazioneException("Tipo Soggetto Proprietario Porta Applicativa non valido");

  642.         Connection con = null;
  643.         boolean error = false;

  644.         if (this.driver.atomica) {
  645.             try {
  646.                 con = this.driver.getConnectionFromDatasource("deletePortaApplicativa");
  647.                 con.setAutoCommit(false);
  648.             } catch (Exception e) {
  649.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::deletePortaApplicativa] Exception accedendo al datasource :" + e.getMessage(),e);

  650.             }

  651.         } else
  652.             con = this.driver.globalConnection;

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

  654.         try {
  655.             this.driver.logDebug("CRUDPortaApplicativa type = 3");

  656.             long id = DriverConfigurazioneDB_porteApplicativeLIB.CRUDPortaApplicativa(3, aPA, con, this.driver.getDriverWrapBYOK());

  657.             this.driver.logDebug("Cancellazione PortaApplicativa [" + id + "] completato.");

  658.         } catch (Exception qe) {
  659.             error = true;
  660.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::deletePortaApplicativa] Errore durante la cancellazione della PortaApplicativa : " + qe.getMessage(),qe);
  661.         } finally {

  662.             this.driver.closeConnection(error,con);
  663.         }
  664.     }

  665.     protected Map<IDSoggetto, PortaApplicativa> getPorteApplicativeSoggettiVirtuali(IDServizio idServizio) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {

  666.         this.driver.logDebug("metodo getPorteApplicativeSoggettiVirtuali in esecuzione...");

  667.         if (idServizio == null)
  668.             throw new DriverConfigurazioneException("[getPortaApplicativaSoggettiVirtuali] Parametro idServizio Non Valido");
  669.         if (idServizio.getSoggettoErogatore() == null)
  670.             throw new DriverConfigurazioneException("[getPortaApplicativaSoggettiVirtuali] Parametro Soggetto Erogatore Non Valido");
  671.         Map<IDSoggetto, PortaApplicativa> paConSoggetti = new HashMap<>();
  672.         IDSoggetto soggettoVirtuale = idServizio.getSoggettoErogatore();
  673.         String servizio = idServizio.getNome();
  674.         String tipoServizio = idServizio.getTipo();
  675.         Integer versioneServizio = idServizio.getVersione();
  676.         String azione = idServizio.getAzione();
  677.         if ((servizio == null) || (tipoServizio == null))
  678.             throw new DriverConfigurazioneException("[getPortaApplicativaSoggettiVirtuali] Parametri (Servizio) Non Validi");

  679.         /**
  680.          * // Devi cercare tutte le porte applicative che hanno come soggetto
  681.          * virtuale il soggettoVirtuale // con servizio,tipoServizio e azione
  682.          * come specificato nel precendente metodo.
  683.          *  // Per ogni porta applicativa che trovi devi creare un IDSoggetto
  684.          * del soggetto proprietario della PA trovata IDSoggetto sogg = new
  685.          * IDSoggetto(tipo,nome); // Riempi i dati della PA trovata come detto
  686.          * nel precedente metodo. PortaApplicativa pa = new PortaApplicativa();
  687.          * pa.setDescrizione(descrizione); ........ // aggiungi
  688.          * paConSoggetti.put(IDSoggetto,pa);
  689.          */
  690.         Connection con = null;
  691.         PreparedStatement stm = null;
  692.         ResultSet rs = null;
  693.         String sqlQuery = null;
  694.         ResultSet rs1=null;
  695.         PreparedStatement stm1 = null;
  696.         ResultSet rs2=null;
  697.         PreparedStatement stm2 = null;

  698.         if (this.driver.atomica) {
  699.             try {
  700.                 con = this.driver.getConnectionFromDatasource("getPorteApplicativeSoggettiVirtuali");

  701.             } catch (Exception e) {
  702.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteApplicativeSoggettiVirtuali] Exception accedendo al datasource :" + e.getMessage(),e);

  703.             }

  704.         } else
  705.             con = this.driver.globalConnection;

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

  707.         try {
  708.             String nomeSoggVirt = soggettoVirtuale.getNome();
  709.             String tipoSoggVirt = soggettoVirtuale.getTipo();

  710.             if (nomeSoggVirt == null || nomeSoggVirt.equals("") || tipoSoggVirt == null || tipoSoggVirt.equals(""))
  711.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteApplicativeSoggettiVirtuali] Parametri SoggettoVirtuale non corretti.");

  712.             //Prendo la lista dei soggetti presenti
  713.             ArrayList<Long> soggettiList = new ArrayList<>();
  714.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  715.             sqlQueryObject.addFromTable(this.driver.tabellaSoggetti);
  716.             sqlQueryObject.addSelectField("id");
  717.             sqlQuery = sqlQueryObject.createSQLQuery();
  718.             stm = con.prepareStatement(sqlQuery);
  719.             rs = stm.executeQuery();
  720.             while (rs.next()) {
  721.                 soggettiList.add(rs.getLong(1));
  722.             }
  723.             rs.close();
  724.             stm.close();

  725.             //controllo le porte applicative dei soggetti che soddisfano i criteri di ricerca
  726.             for (Long idSoggetto : soggettiList) {
  727.                 //Azione non settata eseguo query con azione NULL
  728.                 if (azione == null || azione.trim().equals("")) {
  729.                     this.driver.logDebug("azione == null");
  730.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  731.                     sqlQueryObject.addFromTable(this.driver.tabellaSoggetti);
  732.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  733.                     //sqlQueryObject.addSelectField("*");
  734.                     sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE+".descrizione", "descrizionePA");
  735.                     sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE+".id", "id_porta_applicativa");
  736.                     sqlQueryObject.addSelectAliasField(this.driver.tabellaSoggetti+".id", "id_proprietario");
  737.                     sqlQueryObject.addWhereCondition(this.driver.tabellaSoggetti+".id = "+CostantiDB.PORTE_APPLICATIVE+".id_soggetto");
  738.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".nome_soggetto_virtuale = ?");
  739.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".tipo_soggetto_virtuale = ?");
  740.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".tipo_servizio = ?");
  741.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".servizio = ?");
  742.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".versione_servizio = ?");
  743.                     sqlQueryObject.addWhereCondition(false, CostantiDB.PORTE_APPLICATIVE+".azione IS NULL", CostantiDB.PORTE_APPLICATIVE+".azione = ?", CostantiDB.PORTE_APPLICATIVE+".azione = ?");
  744.                     sqlQueryObject.addWhereCondition(this.driver.tabellaSoggetti+".id = ?");
  745.                     sqlQueryObject.setANDLogicOperator(true);
  746.                     sqlQuery = sqlQueryObject.createSQLQuery();

  747.                     stm = con.prepareStatement(sqlQuery, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

  748.                     int index = 1;
  749.                     stm.setString(index++, nomeSoggVirt);
  750.                     stm.setString(index++, tipoSoggVirt);
  751.                     stm.setString(index++, tipoServizio);
  752.                     stm.setString(index++, servizio);
  753.                     stm.setInt(index++, versioneServizio);
  754.                     stm.setString(index++, "");
  755.                     stm.setString(index++, "-");
  756.                     stm.setLong(index++, idSoggetto);

  757.                     this.driver.logDebug("eseguo query " + DBUtils.formatSQLString(sqlQuery, nomeSoggVirt, tipoSoggVirt, tipoServizio, servizio));
  758.                 } else {
  759.                     //cerco porta applicativa con soggetto virtuale x con servizio y con azione z
  760.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  761.                     sqlQueryObject.addFromTable(this.driver.tabellaSoggetti);
  762.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  763.                     //sqlQueryObject.addSelectField("*");
  764.                     sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE+".descrizione", "descrizionePA");
  765.                     sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE+".id", "id_porta_applicativa");
  766.                     sqlQueryObject.addSelectAliasField(this.driver.tabellaSoggetti+".id", "id_proprietario");
  767.                     sqlQueryObject.addWhereCondition(this.driver.tabellaSoggetti+".id = "+CostantiDB.PORTE_APPLICATIVE+".id_soggetto");
  768.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".nome_soggetto_virtuale = ?");
  769.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".tipo_soggetto_virtuale = ?");
  770.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".tipo_servizio = ?");
  771.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".servizio = ?");
  772.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".versione_servizio = ?");
  773.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".azione = ?");
  774.                     sqlQueryObject.addWhereCondition(this.driver.tabellaSoggetti+".id = ?");
  775.                     sqlQueryObject.setANDLogicOperator(true);
  776.                     sqlQuery = sqlQueryObject.createSQLQuery();

  777.                     stm = con.prepareStatement(sqlQuery, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
  778.                    
  779.                     int index = 1;
  780.                     stm.setString(index++, nomeSoggVirt);
  781.                     stm.setString(index++, tipoSoggVirt);
  782.                     stm.setString(index++, tipoServizio);
  783.                     stm.setString(index++, servizio);
  784.                     stm.setInt(index++, versioneServizio);
  785.                     stm.setString(index++, azione);
  786.                     stm.setLong(index++, idSoggetto);

  787.                     this.driver.logDebug("eseguo query " + DBUtils.formatSQLString(sqlQuery, nomeSoggVirt, tipoSoggVirt, tipoServizio, servizio, versioneServizio, azione));
  788.                 }

  789.                 rs = stm.executeQuery();

  790.                 boolean trovato = rs.next();

  791.                 if (!trovato && azione != null) {

  792.                     this.driver.logDebug("Cerco PA generica (Azione non definita)");

  793.                     rs.close();
  794.                     stm.close();
  795.                     // in questo caso provo a cercare delle porte applicative solo
  796.                     // con id_soggetto tipo_servizio e servizio
  797.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  798.                     sqlQueryObject.addFromTable(this.driver.tabellaSoggetti);
  799.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  800.                     //sqlQueryObject.addSelectField("*");
  801.                     sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE+".descrizione", "descrizionePA");
  802.                     sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE+".id", "id_porta_applicativa");
  803.                     sqlQueryObject.addSelectAliasField(this.driver.tabellaSoggetti+".id", "id_proprietario");
  804.                     sqlQueryObject.addWhereCondition(this.driver.tabellaSoggetti+".id = "+CostantiDB.PORTE_APPLICATIVE+".id_soggetto");
  805.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".nome_soggetto_virtuale = ?");
  806.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".tipo_soggetto_virtuale = ?");
  807.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".tipo_servizio = ?");
  808.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".servizio = ?");
  809.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".versione_servizio = ?");
  810.                     sqlQueryObject.addWhereCondition(false, CostantiDB.PORTE_APPLICATIVE+".azione IS NULL", CostantiDB.PORTE_APPLICATIVE+".azione = ?", CostantiDB.PORTE_APPLICATIVE+".azione = ?");
  811.                     sqlQueryObject.addWhereCondition(this.driver.tabellaSoggetti+".id = ?");
  812.                     sqlQueryObject.setANDLogicOperator(true);
  813.                     sqlQuery = sqlQueryObject.createSQLQuery();
  814.                     this.driver.logDebug("eseguo query " + DBUtils.formatSQLString(sqlQuery, nomeSoggVirt, tipoSoggVirt, tipoServizio, servizio, versioneServizio));
  815.                     this.driver.logDebug("QUERY RAW: "+sqlQuery);

  816.                     stm = con.prepareStatement(sqlQuery, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
  817.                    
  818.                     int index = 1;
  819.                     stm.setString(index++, nomeSoggVirt);
  820.                     stm.setString(index++, tipoSoggVirt);
  821.                     stm.setString(index++, tipoServizio);
  822.                     stm.setString(index++, servizio);
  823.                     stm.setInt(index++, versioneServizio);
  824.                     stm.setString(index++, "");
  825.                     stm.setString(index++, "-");
  826.                     stm.setLong(index++, idSoggetto);



  827.                     rs = stm.executeQuery();

  828.                     trovato = rs.next();
  829.                 }
  830.                 this.driver.logDebug("Ripristino rs");
  831.                 // ripristino il cursore del resultset
  832.                 rs.beforeFirst();

  833.                 // devo iterare su tutte le pa se ho trovato delle pa
  834.                 this.driver.logDebug("Itero rs...");
  835.                 while (trovato && rs.next()) {

  836.                     this.driver.logDebug("PortaApplicativa, raccolta dati");

  837.                     long idPortaApplicativa = rs.getLong("id_porta_applicativa");
  838.                     this.driver.logDebug("PortaApplicativa, raccolta dati id["+idPortaApplicativa+"] in corso...");
  839.                     PortaApplicativa pa = this.getPortaApplicativa(idPortaApplicativa,con);
  840.                     this.driver.logDebug("PortaApplicativa, raccolta dati id["+idPortaApplicativa+"] effettuata.");


  841.                     long idSoggettoProprietario = rs.getLong("id_proprietario");
  842.                     this.driver.logDebug("PortaApplicativa, raccolta dati soggetto id["+idSoggettoProprietario+"] in corso...");

  843.                     // recupero dati del soggetto proprietario
  844.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  845.                     sqlQueryObject.addFromTable(this.driver.tabellaSoggetti);
  846.                     sqlQueryObject.addSelectField("*");
  847.                     sqlQueryObject.addWhereCondition("id = ?");
  848.                     sqlQueryObject.setANDLogicOperator(true);
  849.                     sqlQuery = sqlQueryObject.createSQLQuery();
  850.                     stm1 = con.prepareStatement(sqlQuery);
  851.                     stm1.setLong(1, idSoggettoProprietario);
  852.                     rs1 = stm1.executeQuery();

  853.                     IDSoggetto soggettoProprietario = null;
  854.                     if (rs1.next()) {
  855.                         soggettoProprietario = new IDSoggetto(rs1.getString("tipo_soggetto"), rs1.getString("nome_soggetto"));
  856.                     } else {
  857.                         throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteApplicativeSoggettiVirtuali] Impossibile trovare le informazioni del soggetto proprietario della PA.");
  858.                     }
  859.                     rs1.close();
  860.                     stm1.close();

  861.                     this.driver.logDebug("PortaApplicativa, raccolta dati soggetto id["+idSoggettoProprietario+"] completata.");

  862.                     // aggiungo la pa e il soggetto all'hashtable
  863.                     paConSoggetti.put(soggettoProprietario, pa);

  864.                 }//chiudo while

  865.                 rs.close();
  866.                 stm.close();

  867.             }//chiudo for

  868.             if(paConSoggetti.size() == 0)
  869.                 throw new DriverConfigurazioneNotFound("[getPorteApplicativeSoggettiVirtuali] Porte applicative di soggetti virtuali non esistenti.");

  870.             return paConSoggetti;

  871.         } catch (SQLException se) {
  872.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteApplicativeSoggettiVirtuali] SqlException: " + se.getMessage(),se);
  873.         } catch (DriverConfigurazioneNotFound de) {
  874.             throw de;
  875.         }catch (Exception se) {
  876.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteApplicativeSoggettiVirtuali] Exception: " + se.getMessage(),se);
  877.         }finally {
  878.             //Chiudo statement and resultset
  879.             JDBCUtilities.closeResources(rs2, stm2);
  880.             JDBCUtilities.closeResources(rs1, stm1);
  881.             JDBCUtilities.closeResources(rs, stm);
  882.             this.driver.closeConnection(con);
  883.         }

  884.     }
  885.    
  886.    
  887.    
  888.     protected List<IDPortaApplicativa> porteApplicativeWithApplicativoErogatore(IDServizioApplicativo idSA) throws DriverConfigurazioneException {
  889.         String nomeMetodo = "porteApplicativeWithApplicativoErogatore";
  890.        
  891.         Connection con = null;
  892.         PreparedStatement stmt = null;
  893.         ResultSet risultato = null;

  894.         if (this.driver.atomica) {
  895.             try {
  896.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  897.             } catch (Exception e) {
  898.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  899.             }

  900.         } else
  901.             con = this.driver.globalConnection;

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

  903.         List<IDPortaApplicativa> list = new ArrayList<IDPortaApplicativa>();
  904.         try {
  905.             long idSAlong = DBUtils.getIdServizioApplicativo(idSA.getNome(), idSA.getIdSoggettoProprietario().getTipo(), idSA.getIdSoggettoProprietario().getNome(), con, this.driver.tipoDB);
  906.            
  907.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  908.             sqlQueryObject.addSelectField("nome_porta");
  909.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  910.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
  911.             sqlQueryObject.setANDLogicOperator(true);
  912.             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SA+".id_porta="+CostantiDB.PORTE_APPLICATIVE+".id");
  913.             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SA+".id_servizio_applicativo=?");
  914.            
  915.             stmt = con.prepareStatement(sqlQueryObject.createSQLQuery());
  916.             stmt.setLong(1, idSAlong);

  917.             risultato = stmt.executeQuery();
  918.             while (risultato.next()) {
  919.                 String nomePorta = risultato.getString("nome_porta");
  920.                 IDPortaApplicativa idPA = new IDPortaApplicativa();
  921.                 idPA.setNome(nomePorta);
  922.                 list.add(idPA);
  923.             }
  924.             risultato.close();
  925.             stmt.close();


  926.         } catch (Exception qe) {
  927.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  928.         } finally {

  929.             //Chiudo statement and resultset
  930.             JDBCUtilities.closeResources(risultato, stmt);

  931.             this.driver.closeConnection(con);
  932.         }
  933.        
  934.         return list;
  935.     }
  936.    
  937.     protected PortaApplicativa getPortaApplicativa(long id) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  938.         return getPortaApplicativa(id,null);
  939.     }
  940.     protected PortaApplicativa getPortaApplicativa(long id,Connection conParam) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {

  941.         if (id <= 0)
  942.             throw new DriverConfigurazioneException("[getPortaApplicativa] L'id della Porta Applicativa deve essere > 0.");

  943.         Connection con = null;
  944.         PreparedStatement stm = null;
  945.         ResultSet rs = null;
  946.         PreparedStatement stm1 = null;
  947.         ResultSet rs1 = null;
  948.         PreparedStatement stm2 = null;
  949.         ResultSet rs2 = null;
  950.         String sqlQuery = null;

  951.         if(conParam!=null){
  952.             con = conParam;
  953.         }
  954.         else if (this.driver.atomica) {
  955.             try {
  956.                 con = this.driver.getConnectionFromDatasource("getPortaApplicativa(longId)");

  957.             } catch (Exception e) {
  958.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaApplicativa] Exception accedendo al datasource :" + e.getMessage(),e);

  959.             }

  960.         } else
  961.             con = this.driver.globalConnection;

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

  963.         try {
  964.             long idPortaApplicativa = id;
  965.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  966.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  967.             sqlQueryObject.addFromTable(this.driver.tabellaSoggetti);
  968.             sqlQueryObject.addSelectField("nome_porta");
  969.             sqlQueryObject.addSelectField("tipo_soggetto");
  970.             sqlQueryObject.addSelectField("nome_soggetto");
  971.             sqlQueryObject.addSelectField("nome_soggetto_virtuale");
  972.             sqlQueryObject.addSelectField("tipo_soggetto_virtuale");
  973.             sqlQueryObject.addSelectField("servizio");
  974.             sqlQueryObject.addSelectField("tipo_servizio");
  975.             sqlQueryObject.addSelectField("versione_servizio");
  976.             sqlQueryObject.addSelectField("ricevuta_asincrona_asim");
  977.             sqlQueryObject.addSelectField("ricevuta_asincrona_sim");
  978.             sqlQueryObject.addSelectField("integrazione");
  979.             sqlQueryObject.addSelectField("scadenza_correlazione_appl");
  980.             sqlQueryObject.addSelectField("allega_body");
  981.             sqlQueryObject.addSelectField("scarta_body");
  982.             sqlQueryObject.addSelectField("gestione_manifest");
  983.             sqlQueryObject.addSelectField("azione");
  984.             sqlQueryObject.addSelectField("mode_azione");
  985.             sqlQueryObject.addSelectField("pattern_azione");
  986.             sqlQueryObject.addSelectField("nome_porta_delegante_azione");
  987.             sqlQueryObject.addSelectField("force_interface_based_azione");
  988.             sqlQueryObject.addSelectField("validazione_contenuti_stato");
  989.             sqlQueryObject.addSelectField("validazione_contenuti_tipo");
  990.             sqlQueryObject.addSelectField("validazione_contenuti_mtom");
  991.             sqlQueryObject.addSelectField("mtom_request_mode");
  992.             sqlQueryObject.addSelectField("mtom_response_mode");
  993.             sqlQueryObject.addSelectField("security");
  994.             sqlQueryObject.addSelectField("security_mtom_req");
  995.             sqlQueryObject.addSelectField("security_mtom_res");
  996.             sqlQueryObject.addSelectField("security_request_mode");
  997.             sqlQueryObject.addSelectField("security_response_mode");
  998.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE+".id", "idPA");
  999.             sqlQueryObject.addSelectAliasField(this.driver.tabellaSoggetti+".id", "idSoggetto");
  1000.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE+".descrizione", "descrizionePorta");
  1001.             sqlQueryObject.addSelectField("stateless");
  1002.             sqlQueryObject.addSelectField("behaviour");
  1003.             sqlQueryObject.addSelectField("autenticazione");
  1004.             sqlQueryObject.addSelectField("autenticazione_opzionale");
  1005.             sqlQueryObject.addSelectField("token_policy");
  1006.             sqlQueryObject.addSelectField("token_opzionale");
  1007.             sqlQueryObject.addSelectField("token_validazione");
  1008.             sqlQueryObject.addSelectField("token_introspection");
  1009.             sqlQueryObject.addSelectField("token_user_info");
  1010.             sqlQueryObject.addSelectField("token_forward");
  1011.             sqlQueryObject.addSelectField("token_options");
  1012.             sqlQueryObject.addSelectField("token_authn_issuer");
  1013.             sqlQueryObject.addSelectField("token_authn_client_id");
  1014.             sqlQueryObject.addSelectField("token_authn_subject");
  1015.             sqlQueryObject.addSelectField("token_authn_username");
  1016.             sqlQueryObject.addSelectField("token_authn_email");
  1017.             sqlQueryObject.addSelectField("autorizzazione");
  1018.             sqlQueryObject.addSelectField("autorizzazione_xacml");
  1019.             sqlQueryObject.addSelectField("autorizzazione_contenuto");
  1020.             sqlQueryObject.addSelectField("ruoli_match");
  1021.             sqlQueryObject.addSelectField("token_sa_stato");
  1022.             sqlQueryObject.addSelectField("token_ruoli_stato");
  1023.             sqlQueryObject.addSelectField("token_ruoli_match");
  1024.             sqlQueryObject.addSelectField("token_ruoli_tipologia");
  1025.             sqlQueryObject.addSelectField("scope_stato");
  1026.             sqlQueryObject.addSelectField("scope_match");
  1027.             sqlQueryObject.addSelectField("ricerca_porta_azione_delegata");
  1028.             sqlQueryObject.addSelectField("msg_diag_severita");
  1029.             sqlQueryObject.addSelectField("tracciamento_stato");
  1030.             sqlQueryObject.addSelectField("tracciamento_esiti");
  1031.             sqlQueryObject.addSelectField("transazioni_tempi");
  1032.             sqlQueryObject.addSelectField("transazioni_token");
  1033.             sqlQueryObject.addSelectField("stato");
  1034.             sqlQueryObject.addSelectField("cors_stato");
  1035.             sqlQueryObject.addSelectField("cors_tipo");
  1036.             sqlQueryObject.addSelectField("cors_all_allow_origins");
  1037.             sqlQueryObject.addSelectField("cors_all_allow_methods");
  1038.             sqlQueryObject.addSelectField("cors_all_allow_headers");
  1039.             sqlQueryObject.addSelectField("cors_allow_credentials");
  1040.             sqlQueryObject.addSelectField("cors_allow_max_age");
  1041.             sqlQueryObject.addSelectField("cors_allow_max_age_seconds");
  1042.             sqlQueryObject.addSelectField("cors_allow_origins");
  1043.             sqlQueryObject.addSelectField("cors_allow_headers");
  1044.             sqlQueryObject.addSelectField("cors_allow_methods");
  1045.             sqlQueryObject.addSelectField("cors_allow_expose_headers");
  1046.             sqlQueryObject.addSelectField("response_cache_stato");
  1047.             sqlQueryObject.addSelectField("response_cache_seconds");
  1048.             sqlQueryObject.addSelectField("response_cache_max_msg_size");
  1049.             sqlQueryObject.addSelectField("response_cache_hash_url");
  1050.             sqlQueryObject.addSelectField("response_cache_hash_query");
  1051.             sqlQueryObject.addSelectField("response_cache_hash_query_list");
  1052.             sqlQueryObject.addSelectField("response_cache_hash_headers");
  1053.             sqlQueryObject.addSelectField("response_cache_hash_hdr_list");
  1054.             sqlQueryObject.addSelectField("response_cache_hash_payload");
  1055.             sqlQueryObject.addSelectField("response_cache_control_nocache");
  1056.             sqlQueryObject.addSelectField("response_cache_control_maxage");
  1057.             sqlQueryObject.addSelectField("response_cache_control_nostore");
  1058.             sqlQueryObject.addSelectField("id_accordo");
  1059.             sqlQueryObject.addSelectField("id_port_type");
  1060.             sqlQueryObject.addSelectField("options");
  1061.             sqlQueryObject.addSelectField("id_sa_default");
  1062.             sqlQueryObject.addSelectField("canale");
  1063.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE,CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE,CostantiDB.PROPRIETA_OGGETTO_ALIAS_UTENTE_RICHIEDENTE);
  1064.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE,CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE,CostantiDB.PROPRIETA_OGGETTO_ALIAS_DATA_CREAZIONE);
  1065.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE,CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA,CostantiDB.PROPRIETA_OGGETTO_ALIAS_UTENTE_ULTIMA_MODIFICA);
  1066.             sqlQueryObject.addSelectAliasField(CostantiDB.PORTE_APPLICATIVE,CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA,CostantiDB.PROPRIETA_OGGETTO_ALIAS_DATA_ULTIMA_MODIFICA);
  1067.             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".id_soggetto = "+this.driver.tabellaSoggetti+".id");
  1068.             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".id = ?");
  1069.             sqlQueryObject.setANDLogicOperator(true);
  1070.             sqlQuery = sqlQueryObject.createSQLQuery();

  1071.             stm = con.prepareStatement(sqlQuery);
  1072.             stm.setLong(1, idPortaApplicativa);

  1073.             rs = stm.executeQuery();

  1074.             if (rs.next()) {

  1075.                 PortaApplicativa pa = new PortaApplicativa();
  1076.                 pa.setId(rs.getLong("idPA"));
  1077.                 long idSoggetto = rs.getLong("idSoggetto");
  1078.                 pa.setIdSoggetto(idSoggetto);
  1079.                 pa.setDescrizione(rs.getString("descrizionePorta"));
  1080.                 pa.setNome(rs.getString("nome_porta"));
  1081.                 pa.setTipoSoggettoProprietario(rs.getString("tipo_soggetto"));
  1082.                 pa.setNomeSoggettoProprietario(rs.getString("nome_soggetto"));

  1083.                 pa.setOptions(rs.getString("options"));
  1084.                
  1085.                 pa.setIdAccordo(rs.getLong("id_accordo"));
  1086.                 pa.setIdPortType(rs.getLong("id_port_type"));

  1087.                 PortaApplicativaSoggettoVirtuale paSoggVirt = null;
  1088.                 String nomeSoggVirt=rs.getString("nome_soggetto_virtuale");
  1089.                 String tipoSoggVirt=rs.getString("tipo_soggetto_virtuale");
  1090.                 /**
  1091.                 long idSoggVirt = -1;
  1092.                 try{
  1093.                     idSoggVirt = DBUtils.getIdSoggetto(nomeSoggVirt, tipoSoggVirt, con, this.driver.tipoDB,this.driver.tabellaSoggetti);
  1094.                 }catch (Exception e) {
  1095.                     log.error(e);
  1096.                 }
  1097.                  */
  1098.                 if(nomeSoggVirt!=null && !nomeSoggVirt.equals("") && tipoSoggVirt!=null && !tipoSoggVirt.equals("")){
  1099.                     long idSoggVirt = -1;
  1100.                     try{
  1101.                         idSoggVirt = DBUtils.getIdSoggetto(nomeSoggVirt, tipoSoggVirt, con, this.driver.tipoDB,this.driver.tabellaSoggetti);
  1102.                     }catch (Exception e) {
  1103.                         this.driver.log.error(e.getMessage(),e);
  1104.                     }
  1105.                     paSoggVirt=new PortaApplicativaSoggettoVirtuale();
  1106.                     paSoggVirt.setId(idSoggVirt);
  1107.                     paSoggVirt.setNome(nomeSoggVirt);
  1108.                     paSoggVirt.setTipo(tipoSoggVirt);
  1109.                 }
  1110.                 pa.setSoggettoVirtuale(paSoggVirt);

  1111.                 PortaApplicativaServizio paServizio = null;
  1112.                 String nomeServizio = rs.getString("servizio");
  1113.                 String tipoServizioPA = rs.getString("tipo_servizio");
  1114.                 Integer versioneServizioPA = rs.getInt("versione_servizio");

  1115.                 String nomeProprietarioServizio = null;
  1116.                 String tipoProprietarioServizio = null;
  1117.                 if(nomeSoggVirt!=null && !nomeSoggVirt.equals("") && tipoSoggVirt!=null && !tipoSoggVirt.equals("")){
  1118.                     nomeProprietarioServizio=nomeSoggVirt;
  1119.                     tipoProprietarioServizio=tipoSoggVirt;
  1120.                 }else{
  1121.                     nomeProprietarioServizio=pa.getNomeSoggettoProprietario();
  1122.                     tipoProprietarioServizio=pa.getTipoSoggettoProprietario();
  1123.                 }

  1124.                 long idServizioPA=-1;
  1125.                 try {
  1126.                     idServizioPA = DBUtils.getIdServizio(nomeServizio, tipoServizioPA, versioneServizioPA, nomeProprietarioServizio, tipoProprietarioServizio, con, this.driver.tipoDB,this.driver.tabellaSoggetti);
  1127.                 } catch (Exception e) {
  1128.                     // NON Abilitare il log, poiche' la tabella servizi puo' non esistere per il driver di configurazione
  1129.                     // in un database che non ' quello della controlstation ma quello pdd.
  1130.                     /**this.driver.log.info(e);*/
  1131.                 }
  1132.                 if( (idServizioPA>0) || (nomeServizio!=null && !nomeServizio.equals("") && tipoServizioPA!=null && !tipoServizioPA.equals("")) ){
  1133.                     paServizio = new PortaApplicativaServizio();
  1134.                     paServizio.setNome(nomeServizio);
  1135.                     paServizio.setTipo(tipoServizioPA);
  1136.                     paServizio.setVersione(versioneServizioPA);
  1137.                     paServizio.setId(idServizioPA);
  1138.                 }
  1139.                 pa.setServizio(paServizio);

  1140.                
  1141.                 String azione = rs.getString("azione");
  1142.                 String modeAzione = rs.getString("mode_azione");
  1143.                 PortaApplicativaAzione paAzione=null;
  1144.                 if ((azione != null && !"-".equals(azione) && !"".equals(azione)) || (modeAzione!=null && !"".equals(modeAzione)) ) {
  1145.                     paAzione=new PortaApplicativaAzione();
  1146.                     paAzione.setNome(azione);
  1147.                     paAzione.setIdentificazione(PortaApplicativaAzioneIdentificazione.toEnumConstant(modeAzione));
  1148.                     paAzione.setPattern(rs.getString("pattern_azione"));
  1149.                     paAzione.setNomePortaDelegante(rs.getString("nome_porta_delegante_azione"));
  1150.                     paAzione.setForceInterfaceBased(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("force_interface_based_azione")));
  1151.                     pa.setAzione(paAzione);
  1152.                 }
  1153.                
  1154.                 //ricevuta asincrona_(a)simmetrica
  1155.                 pa.setRicevutaAsincronaAsimmetrica(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("ricevuta_asincrona_asim")));
  1156.                 pa.setRicevutaAsincronaSimmetrica(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("ricevuta_asincrona_sim")));

  1157.                 //integrazione
  1158.                 pa.setIntegrazione(rs.getString("integrazione"));

  1159.                 //scadenza correlazione applicativa
  1160.                 String scadenzaCorrelazione = rs.getString("scadenza_correlazione_appl");
  1161.                 CorrelazioneApplicativa corr= null;

  1162.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1163.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE);
  1164.                 sqlQueryObject.addSelectField("*");
  1165.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1166.                 sqlQueryObject.addOrderBy("id");
  1167.                 sqlQueryObject.setSortType(true);
  1168.                 String queryCorrApp = sqlQueryObject.createSQLQuery();
  1169.                 PreparedStatement stmCorrApp = con.prepareStatement(queryCorrApp);
  1170.                 stmCorrApp.setLong(1, idPortaApplicativa);
  1171.                 ResultSet rsCorrApp = stmCorrApp.executeQuery();
  1172.                 while (rsCorrApp.next()) {
  1173.                     if(corr==null) corr=new CorrelazioneApplicativa();
  1174.                     CorrelazioneApplicativaElemento cae = new CorrelazioneApplicativaElemento();
  1175.                     cae.setId(rsCorrApp.getLong("id"));
  1176.                     cae.setNome(rsCorrApp.getString("nome_elemento"));
  1177.                     String modeCA = rsCorrApp.getString("mode_correlazione");
  1178.                     cae.setIdentificazione(DriverConfigurazioneDBLib.getEnumCorrelazioneApplicativaRichiestaIdentificazione(modeCA));
  1179.                     /**if (modeCA.equals("urlBased") || modeCA.equals("contentBased"))*/
  1180.                     cae.setPattern(rsCorrApp.getString("pattern"));
  1181.                     cae.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumCorrelazioneApplicativaGestioneIdentificazioneFallita(rsCorrApp.getString("identificazione_fallita")));
  1182.                     corr.addElemento(cae);
  1183.                 }
  1184.                 rsCorrApp.close();
  1185.                 stmCorrApp.close();
  1186.                 if(corr!=null && scadenzaCorrelazione!=null && !scadenzaCorrelazione.equals(""))
  1187.                     corr.setScadenza(scadenzaCorrelazione);
  1188.                 pa.setCorrelazioneApplicativa(corr);
  1189.                 /**
  1190.                   if(scadenzaCorrelazione!=null && !scadenzaCorrelazione.equals("")) {
  1191.                   CorrelazioneApplicativa corr= new CorrelazioneApplicativa();
  1192.                   corr.setScadenza(scadenzaCorrelazione);
  1193.                   pd.setCorrelazioneApplicativa(corr);
  1194.                   }
  1195.                  */


  1196.                 // correlazione applicativa risposta
  1197.                 CorrelazioneApplicativaRisposta corrApplRisposta= null;

  1198.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1199.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE_RISPOSTA);
  1200.                 sqlQueryObject.addSelectField("*");
  1201.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1202.                 sqlQueryObject.addOrderBy("id");
  1203.                 sqlQueryObject.setSortType(true);
  1204.                 queryCorrApp = sqlQueryObject.createSQLQuery();
  1205.                 stmCorrApp = con.prepareStatement(queryCorrApp);
  1206.                 stmCorrApp.setLong(1, idPortaApplicativa);
  1207.                 rsCorrApp = stmCorrApp.executeQuery();
  1208.                 while (rsCorrApp.next()) {
  1209.                     if(corrApplRisposta==null) corrApplRisposta=new CorrelazioneApplicativaRisposta();
  1210.                     CorrelazioneApplicativaRispostaElemento cae = new CorrelazioneApplicativaRispostaElemento();
  1211.                     cae.setId(rsCorrApp.getLong("id"));
  1212.                     cae.setNome(rsCorrApp.getString("nome_elemento"));
  1213.                     String modeCA = rsCorrApp.getString("mode_correlazione");
  1214.                     cae.setIdentificazione(DriverConfigurazioneDBLib.getEnumCorrelazioneApplicativaRispostaIdentificazione(modeCA));
  1215.                     /**if (modeCA.equals("urlBased") || modeCA.equals("contentBased"))*/
  1216.                     cae.setPattern(rsCorrApp.getString("pattern"));
  1217.                     cae.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumCorrelazioneApplicativaGestioneIdentificazioneFallita(rsCorrApp.getString("identificazione_fallita")));
  1218.                     corrApplRisposta.addElemento(cae);
  1219.                 }
  1220.                 rsCorrApp.close();
  1221.                 stmCorrApp.close();
  1222.                 pa.setCorrelazioneApplicativaRisposta(corrApplRisposta);



  1223.                 // Gestione funzionalita' Attachments
  1224.                 pa.setAllegaBody(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("allega_body")));
  1225.                 pa.setScartaBody(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("scarta_body")));
  1226.                 pa.setGestioneManifest(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("gestione_manifest")));

  1227.                 // Stateless
  1228.                 pa.setStateless(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("stateless")));
  1229.                
  1230.                 // Behaviour
  1231.                 String behaviour = rs.getString("behaviour");
  1232.                 if(behaviour!=null && !"".equals(behaviour)) {
  1233.                     pa.setBehaviour(new PortaApplicativaBehaviour());
  1234.                     pa.getBehaviour().setNome(behaviour);
  1235.                 }

  1236.                 // Autorizzazione
  1237.                 pa.setAutenticazione(rs.getString("autenticazione"));
  1238.                 pa.setAutenticazioneOpzionale(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("autenticazione_opzionale")));
  1239.                
  1240.                 // GestioneToken
  1241.                 String tokenPolicy = rs.getString("token_policy");
  1242.                 if(tokenPolicy!=null && !"".equals(tokenPolicy)) {
  1243.                     GestioneToken gestioneToken = new GestioneToken();
  1244.                     gestioneToken.setPolicy(tokenPolicy);
  1245.                     gestioneToken.setTokenOpzionale(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("token_opzionale")));
  1246.                     gestioneToken.setValidazione(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaConWarning(rs.getString("token_validazione")));
  1247.                     gestioneToken.setIntrospection(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaConWarning(rs.getString("token_introspection")));
  1248.                     gestioneToken.setUserInfo(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaConWarning(rs.getString("token_user_info")));
  1249.                     gestioneToken.setForward(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("token_forward")));
  1250.                     gestioneToken.setOptions(rs.getString("token_options"));
  1251.                    
  1252.                     String tokenAuthnIssuer = rs.getString("token_authn_issuer");
  1253.                     String tokenAuthnClientId = rs.getString("token_authn_client_id");
  1254.                     String tokenAuthnSubject = rs.getString("token_authn_subject");
  1255.                     String tokenAuthnUsername = rs.getString("token_authn_username");
  1256.                     String tokenAuthnEmail = rs.getString("token_authn_email");
  1257.                     if(tokenAuthnIssuer!=null ||
  1258.                             tokenAuthnClientId!=null ||
  1259.                                     tokenAuthnSubject!=null ||
  1260.                                             tokenAuthnUsername!=null ||
  1261.                                                     tokenAuthnEmail!=null) {
  1262.                         gestioneToken.setAutenticazione(new GestioneTokenAutenticazione());
  1263.                         gestioneToken.getAutenticazione().setIssuer(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnIssuer));
  1264.                         gestioneToken.getAutenticazione().setClientId(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnClientId));
  1265.                         gestioneToken.getAutenticazione().setSubject(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnSubject));
  1266.                         gestioneToken.getAutenticazione().setUsername(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnUsername));
  1267.                         gestioneToken.getAutenticazione().setEmail(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenAuthnEmail));
  1268.                     }

  1269.                     pa.setGestioneToken(gestioneToken);
  1270.                 }
  1271.                
  1272.                 // Autorizzazione
  1273.                 pa.setAutorizzazione(rs.getString("autorizzazione"));
  1274.                 pa.setXacmlPolicy(rs.getString("autorizzazione_xacml"));
  1275.                 pa.setAutorizzazioneContenuto(rs.getString("autorizzazione_contenuto"));

  1276.                
  1277.                 // Ricerca Porta Azione Delegata
  1278.                 if(rs.getString("ricerca_porta_azione_delegata")!=null){
  1279.                     pa.setRicercaPortaAzioneDelegata(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("ricerca_porta_azione_delegata")));
  1280.                 }
  1281.                
  1282.                 // Tracciamento
  1283.                 String msgDiagSeverita = rs.getString("msg_diag_severita");
  1284.                 String tracciamentoStato = rs.getString("tracciamento_stato");
  1285.                 String tracciamentoEsiti = rs.getString("tracciamento_esiti");
  1286.                 String transazioniTempiElaborazione = rs.getString("transazioni_tempi");
  1287.                 String transazioniToken = rs.getString("transazioni_token");
  1288.                 TracciamentoConfigurazione tracciamentoDatabase = DriverConfigurazioneDBTracciamentoLIB.readTracciamentoConfigurazione(con, pa.getId(),
  1289.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
  1290.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_DB);
  1291.                 TracciamentoConfigurazione tracciamentoFiletrace = DriverConfigurazioneDBTracciamentoLIB.readTracciamentoConfigurazione(con, pa.getId(),
  1292.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
  1293.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_FILETRACE);
  1294.                 TracciamentoConfigurazioneFiletrace tracciamentoFiletraceDetails = DriverConfigurazioneDBTracciamentoLIB.readTracciamentoConfigurazioneFiletrace(con, pa.getId(),
  1295.                         CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA);
  1296.                 if(
  1297.                         (msgDiagSeverita!=null && StringUtils.isNotEmpty(msgDiagSeverita))
  1298.                         ||
  1299.                         (tracciamentoStato!=null && StringUtils.isNotEmpty(tracciamentoStato))
  1300.                         ||
  1301.                         (tracciamentoEsiti!=null && StringUtils.isNotEmpty(tracciamentoEsiti))
  1302.                         ||
  1303.                         (transazioniTempiElaborazione!=null && StringUtils.isNotEmpty(transazioniTempiElaborazione))
  1304.                         ||
  1305.                         (transazioniToken!=null && StringUtils.isNotEmpty(transazioniToken))
  1306.                         ||
  1307.                         tracciamentoDatabase!=null
  1308.                         ||
  1309.                         tracciamentoFiletrace!=null
  1310.                         ||
  1311.                         tracciamentoFiletraceDetails!=null
  1312.                         ) {
  1313.                     PortaTracciamento tracciamento = new PortaTracciamento();
  1314.                    
  1315.                     tracciamento.setSeverita(DriverConfigurazioneDBLib.getEnumSeverita(msgDiagSeverita));
  1316.                    
  1317.                     tracciamento.setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tracciamentoStato));
  1318.                    
  1319.                     tracciamento.setEsiti(tracciamentoEsiti);
  1320.                    
  1321.                     if(
  1322.                             (transazioniTempiElaborazione!=null && StringUtils.isNotEmpty(transazioniTempiElaborazione))
  1323.                             ||
  1324.                             (transazioniToken!=null && StringUtils.isNotEmpty(transazioniToken))
  1325.                             ) {
  1326.                         tracciamento.setTransazioni(new Transazioni());
  1327.                         tracciamento.getTransazioni().setTempiElaborazione(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(transazioniTempiElaborazione));
  1328.                         tracciamento.getTransazioni().setToken(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(transazioniToken));
  1329.                     }
  1330.                     tracciamento.setDatabase(tracciamentoDatabase);
  1331.                     tracciamento.setFiletrace(tracciamentoFiletrace);
  1332.                     tracciamento.setFiletraceConfig(tracciamentoFiletraceDetails);
  1333.                    
  1334.                     pa.setTracciamento(tracciamento);
  1335.                 }
  1336.                
  1337.                
  1338.                 // Stato
  1339.                 if(rs.getString("stato")!=null){
  1340.                     pa.setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("stato")));
  1341.                 }


  1342.                 //mtom
  1343.                 MtomProcessor mtomProcessor = null;
  1344.                 String mtomRequest = rs.getString("mtom_request_mode");
  1345.                 String mtomResponse = rs.getString("mtom_response_mode");
  1346.                 if( (mtomRequest!=null && !mtomRequest.equals(""))  ||  (mtomResponse!=null && !mtomResponse.equals("")) ){
  1347.                     mtomProcessor = new MtomProcessor();
  1348.                     if((mtomRequest!=null && !mtomRequest.equals(""))  ){
  1349.                         mtomProcessor.setRequestFlow(new MtomProcessorFlow());
  1350.                         mtomProcessor.getRequestFlow().setMode(DriverConfigurazioneDBLib.getEnumMTOMProcessorType(mtomRequest));
  1351.                     }
  1352.                     if((mtomResponse!=null && !mtomResponse.equals(""))  ){
  1353.                         mtomProcessor.setResponseFlow(new MtomProcessorFlow());
  1354.                         mtomProcessor.getResponseFlow().setMode(DriverConfigurazioneDBLib.getEnumMTOMProcessorType(mtomResponse));
  1355.                     }
  1356.                 }
  1357.                    

  1358.                 //validazione xsd
  1359.                 String validazioneContenutiStato = rs.getString("validazione_contenuti_stato");
  1360.                 String validazioneContenutiTipo = rs.getString("validazione_contenuti_tipo");
  1361.                 String validazioneContenutiMtom = rs.getString("validazione_contenuti_mtom");
  1362.                 if(  (validazioneContenutiStato!=null && !validazioneContenutiStato.equals(""))  
  1363.                         ||
  1364.                         (validazioneContenutiTipo!=null && !validazioneContenutiTipo.equals(""))    )
  1365.                 {
  1366.                     ValidazioneContenutiApplicativi val = new ValidazioneContenutiApplicativi();
  1367.                     if((validazioneContenutiStato!=null && !validazioneContenutiStato.equals(""))  )
  1368.                         val.setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalitaConWarning(validazioneContenutiStato));
  1369.                     if((validazioneContenutiTipo!=null && !validazioneContenutiTipo.equals(""))  )
  1370.                         val.setTipo(DriverConfigurazioneDBLib.getEnumValidazioneContenutiApplicativiTipo(validazioneContenutiTipo));
  1371.                     if((validazioneContenutiMtom!=null && !validazioneContenutiMtom.equals(""))  )
  1372.                         val.setAcceptMtomMessage(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(validazioneContenutiMtom));
  1373.                     pa.setValidazioneContenutiApplicativi(val);
  1374.                 }
  1375.                
  1376.                
  1377.                 // messageSecurity
  1378.                
  1379.                 String security = rs.getString("security");
  1380.                 String securityMtomReq = rs.getString("security_mtom_req");
  1381.                 String securityMtomRes = rs.getString("security_mtom_res");
  1382.                 String securityRequestMode = rs.getString("security_request_mode");
  1383.                 String securityResponseMode = rs.getString("security_response_mode");
  1384.                 MessageSecurity messageSecurity = null;
  1385.                 if(  (securityMtomReq!=null && !securityMtomReq.equals(""))  
  1386.                         ||
  1387.                         (securityRequestMode!=null && !securityRequestMode.equals(""))  
  1388.                         ||
  1389.                         (securityMtomRes!=null && !securityMtomRes.equals(""))      
  1390.                         ||
  1391.                         (securityResponseMode!=null && !securityResponseMode.equals(""))
  1392.                         )
  1393.                 {
  1394.                     messageSecurity = new MessageSecurity();
  1395.                     if((securityMtomReq!=null && !securityMtomReq.equals(""))  ){
  1396.                         if(messageSecurity.getRequestFlow()==null) {
  1397.                             messageSecurity.setRequestFlow(new MessageSecurityFlow());  
  1398.                         }
  1399.                         messageSecurity.getRequestFlow().setApplyToMtom(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(securityMtomReq));
  1400.                     }
  1401.                     if((securityMtomRes!=null && !securityMtomRes.equals(""))  ){
  1402.                         if(messageSecurity.getResponseFlow()==null) {
  1403.                             messageSecurity.setResponseFlow(new MessageSecurityFlow());
  1404.                         }
  1405.                         messageSecurity.getResponseFlow().setApplyToMtom(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(securityMtomRes));
  1406.                     }
  1407.                     if((securityRequestMode!=null && !securityRequestMode.equals(""))  ){
  1408.                         if(messageSecurity.getRequestFlow()==null) {
  1409.                             messageSecurity.setRequestFlow(new MessageSecurityFlow());  
  1410.                         }
  1411.                         messageSecurity.getRequestFlow().setMode(securityRequestMode);
  1412.                     }
  1413.                     if((securityResponseMode!=null && !securityResponseMode.equals(""))  ){
  1414.                         if(messageSecurity.getResponseFlow()==null) {
  1415.                             messageSecurity.setResponseFlow(new MessageSecurityFlow());
  1416.                         }
  1417.                         messageSecurity.getResponseFlow().setMode(securityResponseMode);
  1418.                     }
  1419.                 }
  1420.                
  1421.                 // RuoliMatch
  1422.                 String ruoliMatch = rs.getString("ruoli_match");
  1423.                 if(ruoliMatch!=null && !"".equals(ruoliMatch)){
  1424.                     if(pa.getRuoli()==null){
  1425.                         pa.setRuoli(new AutorizzazioneRuoli());
  1426.                     }
  1427.                     pa.getRuoli().setMatch(RuoloTipoMatch.toEnumConstant(ruoliMatch));
  1428.                 }
  1429.                
  1430.                 // Token SA Stato
  1431.                 String tokenSaStato = rs.getString("token_sa_stato");
  1432.                 if( (tokenSaStato!=null && !"".equals(tokenSaStato)) ){
  1433.                     if(pa.getAutorizzazioneToken()==null){
  1434.                         pa.setAutorizzazioneToken(new PortaApplicativaAutorizzazioneToken());
  1435.                     }
  1436.                     pa.getAutorizzazioneToken().setAutorizzazioneApplicativi((DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenSaStato)));
  1437.                 }
  1438.                
  1439.                 // Token Ruoli
  1440.                 String tokenRuoliStato = rs.getString("token_ruoli_stato");
  1441.                 String tokenRuoliMatch = rs.getString("token_ruoli_match");
  1442.                 String tokenRuoliTipologia = rs.getString("token_ruoli_tipologia");
  1443.                 if( (tokenRuoliStato!=null && !"".equals(tokenRuoliStato)) ||
  1444.                         (tokenRuoliMatch!=null && !"".equals(tokenRuoliMatch)) ||
  1445.                         (tokenRuoliTipologia!=null && !"".equals(tokenRuoliTipologia)) ){
  1446.                     if(pa.getAutorizzazioneToken()==null){
  1447.                         pa.setAutorizzazioneToken(new PortaApplicativaAutorizzazioneToken());
  1448.                     }
  1449.                     pa.getAutorizzazioneToken().setAutorizzazioneRuoli(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(tokenRuoliStato));
  1450.                     if((tokenRuoliMatch!=null && !"".equals(tokenRuoliMatch))) {
  1451.                         if(pa.getAutorizzazioneToken().getRuoli()==null){
  1452.                             pa.getAutorizzazioneToken().setRuoli(new AutorizzazioneRuoli());
  1453.                         }
  1454.                         pa.getAutorizzazioneToken().getRuoli().setMatch(RuoloTipoMatch.toEnumConstant(tokenRuoliMatch));
  1455.                     }
  1456.                     if((tokenRuoliTipologia!=null && !"".equals(tokenRuoliTipologia))) {
  1457.                         pa.getAutorizzazioneToken().setTipologiaRuoli(RuoloTipologia.toEnumConstant(tokenRuoliTipologia));
  1458.                     }
  1459.                 }
  1460.                
  1461.                 // ScopeMatch
  1462.                 String scopeStato = rs.getString("scope_stato");
  1463.                 String scopeMatch = rs.getString("scope_match");
  1464.                 if( (scopeStato!=null && !"".equals(scopeStato)) || (scopeMatch!=null && !"".equals(scopeMatch)) ){
  1465.                     if(pa.getScope()==null){
  1466.                         pa.setScope(new AutorizzazioneScope());
  1467.                     }
  1468.                     pa.getScope().setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(scopeStato));
  1469.                     pa.getScope().setMatch(ScopeTipoMatch.toEnumConstant(scopeMatch));
  1470.                 }
  1471.                
  1472.                
  1473.                 // Gestione CORS
  1474.                 String corsStato = rs.getString("cors_stato");
  1475.                 if(corsStato!=null && !"".equals(corsStato)) {
  1476.                     pa.setGestioneCors(new CorsConfigurazione());
  1477.                     this.porteDriver.readConfigurazioneCors(pa.getGestioneCors(), rs);
  1478.                 }
  1479.                
  1480.                 // Gestione CacheResponse
  1481.                 String responseCacheStato = rs.getString("response_cache_stato");
  1482.                 if(responseCacheStato!=null && !"".equals(responseCacheStato)) {
  1483.                     pa.setResponseCaching(new ResponseCachingConfigurazione());
  1484.                     this.porteDriver.readResponseCaching(idPortaApplicativa, false, false, pa.getResponseCaching(), rs, con);
  1485.                 }
  1486.                
  1487.                 // Servizio Applicativo di default
  1488.                 long idSaDefault = rs.getLong("id_sa_default");
  1489.                
  1490.                 // Canali
  1491.                 String canale = rs.getString("canale");
  1492.                 pa.setCanale(canale);
  1493.                
  1494.                 // Proprieta Oggetto
  1495.                 pa.setProprietaOggetto(this.utilsDriver.readProprietaOggetto(rs,true));
  1496.                
  1497.                 rs.close();
  1498.                 stm.close();

  1499.                
  1500.                 // Servizio Applicativo di default
  1501.                 if(idSaDefault>0) {
  1502.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1503.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1504.                     sqlQueryObject.addSelectField("nome");
  1505.                     sqlQueryObject.addWhereCondition("id=?");
  1506.                     sqlQuery = sqlQueryObject.createSQLQuery();
  1507.                     stm = con.prepareStatement(sqlQuery);
  1508.                     stm.setLong(1, idSaDefault);

  1509.                     this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaApplicativa));
  1510.                     rs = stm.executeQuery();

  1511.                     // Request Flow Parameter
  1512.                     if (rs.next()) {
  1513.                         String nome = rs.getString("nome");
  1514.                         pa.setServizioApplicativoDefault(nome);
  1515.                     }
  1516.                     rs.close();
  1517.                     stm.close();
  1518.                 }
  1519.                
  1520.                
  1521.                 // Trasformazioni
  1522.                 Trasformazioni trasformazioni = DriverConfigurazioneDBTrasformazioniLib.readTrasformazioni(idPortaApplicativa, false, con);
  1523.                 if(trasformazioni!=null) {
  1524.                     pa.setTrasformazioni(trasformazioni);
  1525.                 }
  1526.                
  1527.                
  1528.                 if(paAzione!=null) {
  1529.                     // lista azioni
  1530.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1531.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
  1532.                     sqlQueryObject.addSelectField("*");
  1533.                     sqlQueryObject.addWhereCondition("id_porta=?");
  1534.                     sqlQuery = sqlQueryObject.createSQLQuery();
  1535.                     stm = con.prepareStatement(sqlQuery);
  1536.                     stm.setLong(1, idPortaApplicativa);

  1537.                     this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaApplicativa));
  1538.                     rs = stm.executeQuery();

  1539.                     // Request Flow Parameter
  1540.                     while (rs.next()) {
  1541.                         paAzione.addAzioneDelegata(rs.getString("azione"));
  1542.                     }
  1543.                     rs.close();
  1544.                     stm.close();
  1545.                 }
  1546.                
  1547.                
  1548.                
  1549.                 // stato security
  1550.                 if (CostantiConfigurazione.ABILITATO.toString().equalsIgnoreCase(security)) {
  1551.                     pa.setStatoMessageSecurity(CostantiConfigurazione.ABILITATO.toString());
  1552.                 }else{
  1553.                     pa.setStatoMessageSecurity(CostantiConfigurazione.DISABILITATO.toString());
  1554.                 }
  1555.                
  1556.                 // lista wss
  1557.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1558.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
  1559.                 sqlQueryObject.addSelectField("*");
  1560.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1561.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1562.                 stm1 = con.prepareStatement(sqlQuery);
  1563.                 stm1.setLong(1, idPortaApplicativa);

  1564.                 this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaApplicativa));
  1565.                 rs1 = stm1.executeQuery();

  1566.                 // Request Flow Parameter
  1567.                 MessageSecurityFlowParameter secRfp;
  1568.                 while (rs1.next()) {
  1569.                     secRfp = new MessageSecurityFlowParameter();
  1570.                     secRfp.setNome(rs1.getString("nome"));
  1571.                    
  1572.                     String plainValue = rs1.getString("valore");
  1573.                     String encValue = rs1.getString("enc_value");
  1574.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1575.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1576.                         if(driverBYOK!=null) {
  1577.                             secRfp.setValore(driverBYOK.unwrapAsString(encValue));
  1578.                         }
  1579.                         else {
  1580.                             secRfp.setValore(encValue);
  1581.                         }
  1582.                     }
  1583.                     else {
  1584.                         secRfp.setValore(plainValue);
  1585.                     }
  1586.                    
  1587.                     if(messageSecurity==null){
  1588.                         messageSecurity = new MessageSecurity();
  1589.                     }
  1590.                     if(messageSecurity.getRequestFlow()==null){
  1591.                         messageSecurity.setRequestFlow(new MessageSecurityFlow());
  1592.                     }
  1593.                     messageSecurity.getRequestFlow().addParameter(secRfp);
  1594.                 }
  1595.                 rs1.close();
  1596.                 stm1.close();

  1597.                 // Response Flow Parameter
  1598.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1599.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
  1600.                 sqlQueryObject.addSelectField("*");
  1601.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1602.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1603.                 stm1 = con.prepareStatement(sqlQuery);
  1604.                 stm1.setLong(1, idPortaApplicativa);

  1605.                 this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaApplicativa));
  1606.                 rs1 = stm1.executeQuery();

  1607.                 MessageSecurityFlowParameter secResfp;
  1608.                 while (rs1.next()) {
  1609.                     secResfp = new MessageSecurityFlowParameter();
  1610.                     secResfp.setNome(rs1.getString("nome"));
  1611.                    
  1612.                     String plainValue = rs1.getString("valore");
  1613.                     String encValue = rs1.getString("enc_value");
  1614.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1615.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1616.                         if(driverBYOK!=null) {
  1617.                             secResfp.setValore(driverBYOK.unwrapAsString(encValue));
  1618.                         }
  1619.                         else {
  1620.                             secResfp.setValore(encValue);
  1621.                         }
  1622.                     }
  1623.                     else {
  1624.                         secResfp.setValore(plainValue);
  1625.                     }
  1626.                    
  1627.                     if(messageSecurity==null){
  1628.                         messageSecurity = new MessageSecurity();
  1629.                     }
  1630.                     if(messageSecurity.getResponseFlow()==null){
  1631.                         messageSecurity.setResponseFlow(new MessageSecurityFlow());
  1632.                     }
  1633.                     messageSecurity.getResponseFlow().addParameter(secResfp);
  1634.                 }
  1635.                 rs1.close();
  1636.                 stm1.close();


  1637.                 // setto il messageSecurity
  1638.                 pa.setMessageSecurity(messageSecurity);
  1639.                
  1640.                
  1641.                 // mtom
  1642.                
  1643.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1644.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_MTOM_REQUEST);
  1645.                 sqlQueryObject.addSelectField("*");
  1646.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1647.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1648.                 stm1 = con.prepareStatement(sqlQuery);
  1649.                 stm1.setLong(1, idPortaApplicativa);

  1650.                 this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaApplicativa));
  1651.                 rs1 = stm1.executeQuery();

  1652.                 // Request Flow Parameter
  1653.                 MtomProcessorFlowParameter rfp;
  1654.                 while (rs1.next()) {
  1655.                     rfp = new MtomProcessorFlowParameter();
  1656.                     rfp.setNome(rs1.getString("nome"));
  1657.                     rfp.setPattern(rs1.getString("pattern"));
  1658.                     rfp.setContentType(rs1.getString("content_type"));
  1659.                     int required = rs1.getInt("required");
  1660.                     boolean isrequired = false;
  1661.                     if (required == CostantiDB.TRUE)
  1662.                         isrequired = true;
  1663.                     rfp.setRequired(isrequired);
  1664.                    
  1665.                     if(mtomProcessor.getRequestFlow()==null){
  1666.                         mtomProcessor.setRequestFlow(new MtomProcessorFlow());
  1667.                     }
  1668.                     mtomProcessor.getRequestFlow().addParameter(rfp);
  1669.                 }
  1670.                 rs1.close();
  1671.                 stm1.close();

  1672.                 // Response Flow Parameter
  1673.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1674.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_MTOM_RESPONSE);
  1675.                 sqlQueryObject.addSelectField("*");
  1676.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1677.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1678.                 stm1 = con.prepareStatement(sqlQuery);
  1679.                 stm1.setLong(1, idPortaApplicativa);

  1680.                 this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPortaApplicativa));
  1681.                 rs1 = stm1.executeQuery();

  1682.                 MtomProcessorFlowParameter rsfp;
  1683.                 while (rs1.next()) {
  1684.                     rsfp = new MtomProcessorFlowParameter();
  1685.                     rsfp.setNome(rs1.getString("nome"));
  1686.                     rsfp.setPattern(rs1.getString("pattern"));
  1687.                     rsfp.setContentType(rs1.getString("content_type"));
  1688.                     int required = rs1.getInt("required");
  1689.                     boolean isrequired = false;
  1690.                     if (required == CostantiDB.TRUE)
  1691.                         isrequired = true;
  1692.                     rsfp.setRequired(isrequired);
  1693.                    
  1694.                     if(mtomProcessor.getResponseFlow()==null){
  1695.                         mtomProcessor.setResponseFlow(new MtomProcessorFlow());
  1696.                     }
  1697.                     mtomProcessor.getResponseFlow().addParameter(rsfp);
  1698.                 }
  1699.                 rs1.close();
  1700.                 stm1.close();
  1701.                
  1702.                 // set mtom
  1703.                 pa.setMtomProcessor(mtomProcessor);
  1704.                

  1705.                 // pa.addServizioApplicativo(servizioApplicativo); .... solo i
  1706.                 // NOMI!!!
  1707.                 // servizi applicativi
  1708.                 long idSA = 0;
  1709.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1710.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
  1711.                 sqlQueryObject.addSelectField("*");
  1712.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1713.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1714.                 stm = con.prepareStatement(sqlQuery);
  1715.                 stm.setLong(1, idPortaApplicativa);
  1716.                 rs = stm.executeQuery();

  1717.                 // per ogni entry con id_porta == idPortaApplicativa
  1718.                 // prendo l'id del servizio associato, recupero il nome e
  1719.                 // aggiungo
  1720.                 // il servizio applicativo alla PortaDelegata da ritornare
  1721.                 while (rs.next()) {
  1722.                     long idSaPa = rs.getLong("id");
  1723.                     idSA = rs.getLong("id_servizio_applicativo");

  1724.                     String nomeConnettore = rs.getString("connettore_nome");
  1725.                     int notificaConnettore = rs.getInt("connettore_notifica");
  1726.                     String descrizioneConnettore = rs.getString("connettore_descrizione");
  1727.                     String statoConnettore = rs.getString("connettore_stato");
  1728.                     String schedulingConnettore = rs.getString("connettore_scheduling");
  1729.                     String filtriConnettore = rs.getString("connettore_filtri");
  1730.                     String codaConnettore = rs.getString("connettore_coda");
  1731.                     String prioritaConnettore = rs.getString("connettore_priorita");
  1732.                     int maxPrioritaConnettore = rs.getInt("connettore_max_priorita");
  1733.                    
  1734.                     if (idSA != 0) {
  1735.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1736.                         sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1737.                         sqlQueryObject.addSelectField("nome");
  1738.                         sqlQueryObject.addWhereCondition("id=?");
  1739.                         sqlQuery = sqlQueryObject.createSQLQuery();
  1740.                         stm1 = con.prepareStatement(sqlQuery);
  1741.                         stm1.setLong(1, idSA);

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

  1743.                         rs1 = stm1.executeQuery();

  1744.                         PortaApplicativaServizioApplicativo servizioApplicativo = null;
  1745.                        
  1746.                         if (rs1.next()) {
  1747.                             // setto solo il nome come da specifica
  1748.                             servizioApplicativo = new PortaApplicativaServizioApplicativo();
  1749.                             servizioApplicativo.setId(idSaPa);
  1750.                             servizioApplicativo.setIdServizioApplicativo(idSA);
  1751.                             servizioApplicativo.setNome(rs1.getString("nome"));
  1752.                            
  1753.                             if(nomeConnettore!=null && !"".equals(nomeConnettore)) {
  1754.                                 servizioApplicativo.setDatiConnettore(new PortaApplicativaServizioApplicativoConnettore());
  1755.                                 servizioApplicativo.getDatiConnettore().setNome(nomeConnettore);
  1756.                                 servizioApplicativo.getDatiConnettore().setNotifica(notificaConnettore == CostantiDB.TRUE);
  1757.                                 servizioApplicativo.getDatiConnettore().setDescrizione(descrizioneConnettore);
  1758.                                 if(statoConnettore!=null) {
  1759.                                     // prende il default
  1760.                                     servizioApplicativo.getDatiConnettore().setStato(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(statoConnettore));
  1761.                                 }
  1762.                                 if(schedulingConnettore!=null) {
  1763.                                     // prende il default
  1764.                                     servizioApplicativo.getDatiConnettore().setScheduling(DriverConfigurazioneDBLib.getEnumStatoFunzionalita(schedulingConnettore));
  1765.                                 }
  1766.                                 servizioApplicativo.getDatiConnettore().setCoda(codaConnettore);
  1767.                                 servizioApplicativo.getDatiConnettore().setPriorita(prioritaConnettore);
  1768.                                 servizioApplicativo.getDatiConnettore().setPrioritaMax(maxPrioritaConnettore == CostantiDB.TRUE);
  1769.                                
  1770.                                 List<String> l = DBUtils.convertToList(filtriConnettore);
  1771.                                 if(!l.isEmpty()) {
  1772.                                     servizioApplicativo.getDatiConnettore().setFiltroList(l);
  1773.                                 }
  1774.                                
  1775.                                 servizioApplicativo.getDatiConnettore().setProprietaOggetto(this.utilsDriver.readProprietaOggetto(rs,false));
  1776.                                
  1777.                                 Proprieta prop = null;
  1778.                                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1779.                                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA_PROPS);
  1780.                                 sqlQueryObject.addSelectField("*");
  1781.                                 sqlQueryObject.addWhereCondition("id_porta=?");
  1782.                                 sqlQuery = sqlQueryObject.createSQLQuery();
  1783.                                 stm2 = con.prepareStatement(sqlQuery);
  1784.                                 stm2.setLong(1, idSaPa);
  1785.                                 rs2=stm2.executeQuery();
  1786.                                 while (rs2.next()) {
  1787.                                     prop = new Proprieta();
  1788.                                     prop.setId(rs2.getLong("id"));
  1789.                                     prop.setNome(rs2.getString("nome"));
  1790.                                     prop.setValore(rs2.getString("valore"));
  1791.                                     servizioApplicativo.getDatiConnettore().addProprieta(prop);
  1792.                                 }
  1793.                                 rs2.close();
  1794.                                 stm2.close();
  1795.                             }
  1796.                            
  1797.                             pa.addServizioApplicativo(servizioApplicativo);
  1798.                         }
  1799.                         rs1.close();
  1800.                         stm1.close();
  1801.                        
  1802.                        
  1803.                     }
  1804.                 }
  1805.                 rs.close();
  1806.                 stm.close();
  1807.                
  1808.                
  1809.                 if(pa.getBehaviour()!=null) {
  1810.                     // behaviour prop
  1811.                     Proprieta prop = null;
  1812.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1813.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_BEHAVIOUR_PROPS);
  1814.                     sqlQueryObject.addSelectField("*");
  1815.                     sqlQueryObject.addWhereCondition("id_porta=?");
  1816.                     sqlQuery = sqlQueryObject.createSQLQuery();
  1817.                     stm = con.prepareStatement(sqlQuery);
  1818.                     stm.setLong(1, idPortaApplicativa);
  1819.                     rs=stm.executeQuery();
  1820.                     while (rs.next()) {
  1821.                         prop = new Proprieta();
  1822.                         prop.setId(rs.getLong("id"));
  1823.                         prop.setNome(rs.getString("nome"));
  1824.                         prop.setValore(rs.getString("valore"));
  1825.                         pa.getBehaviour().addProprieta(prop);
  1826.                     }
  1827.                     rs.close();
  1828.                     stm.close();
  1829.                 }
  1830.                
  1831.                
  1832.                 // autenticazione prop
  1833.                 Proprieta prop = null;
  1834.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1835.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_AUTENTICAZIONE_PROP);
  1836.                 sqlQueryObject.addSelectField("*");
  1837.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1838.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1839.                 stm = con.prepareStatement(sqlQuery);
  1840.                 stm.setLong(1, idPortaApplicativa);
  1841.                 rs=stm.executeQuery();
  1842.                 while (rs.next()) {
  1843.                     prop = new Proprieta();
  1844.                     prop.setId(rs.getLong("id"));
  1845.                     prop.setNome(rs.getString("nome"));
  1846.                    
  1847.                     String plainValue = rs.getString("valore");
  1848.                     String encValue = rs.getString("enc_value");
  1849.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1850.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1851.                         if(driverBYOK!=null) {
  1852.                             prop.setValore(driverBYOK.unwrapAsString(encValue));
  1853.                         }
  1854.                         else {
  1855.                             prop.setValore(encValue);
  1856.                         }
  1857.                     }
  1858.                     else {
  1859.                         prop.setValore(plainValue);
  1860.                     }
  1861.                    
  1862.                     pa.addProprietaAutenticazione(prop);
  1863.                 }
  1864.                 rs.close();
  1865.                 stm.close();
  1866.                
  1867.                
  1868.                
  1869.                 // autorizzazione prop
  1870.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1871.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_PROP);
  1872.                 sqlQueryObject.addSelectField("*");
  1873.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1874.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1875.                 stm = con.prepareStatement(sqlQuery);
  1876.                 stm.setLong(1, idPortaApplicativa);
  1877.                 rs=stm.executeQuery();
  1878.                 while (rs.next()) {
  1879.                     prop = new Proprieta();
  1880.                     prop.setId(rs.getLong("id"));
  1881.                     prop.setNome(rs.getString("nome"));
  1882.                    
  1883.                     String plainValue = rs.getString("valore");
  1884.                     String encValue = rs.getString("enc_value");
  1885.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1886.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1887.                         if(driverBYOK!=null) {
  1888.                             prop.setValore(driverBYOK.unwrapAsString(encValue));
  1889.                         }
  1890.                         else {
  1891.                             prop.setValore(encValue);
  1892.                         }
  1893.                     }
  1894.                     else {
  1895.                         prop.setValore(plainValue);
  1896.                     }
  1897.                    
  1898.                     pa.addProprietaAutorizzazione(prop);
  1899.                 }
  1900.                 rs.close();
  1901.                 stm.close();
  1902.                
  1903.                
  1904.                
  1905.                
  1906.                 // autorizzazione per contenuti prop
  1907.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1908.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_CONTENUTI_PROP);
  1909.                 sqlQueryObject.addSelectField("*");
  1910.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1911.                 sqlQueryObject.addOrderBy("id", true); // per preservare l'ordine di inserimento per l'autorizzazione per contenuti built-in visualizzata
  1912.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1913.                 stm = con.prepareStatement(sqlQuery);
  1914.                 stm.setLong(1, idPortaApplicativa);
  1915.                 rs=stm.executeQuery();
  1916.                 while (rs.next()) {
  1917.                     prop = new Proprieta();
  1918.                     prop.setId(rs.getLong("id"));
  1919.                     prop.setNome(rs.getString("nome"));
  1920.                    
  1921.                     String plainValue = rs.getString("valore");
  1922.                     String encValue = rs.getString("enc_value");
  1923.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1924.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1925.                         if(driverBYOK!=null) {
  1926.                             prop.setValore(driverBYOK.unwrapAsString(encValue));
  1927.                         }
  1928.                         else {
  1929.                             prop.setValore(encValue);
  1930.                         }
  1931.                     }
  1932.                     else {
  1933.                         prop.setValore(plainValue);
  1934.                     }
  1935.                    
  1936.                     pa.addProprietaAutorizzazioneContenuto(prop);
  1937.                 }
  1938.                 rs.close();
  1939.                 stm.close();
  1940.                
  1941.                
  1942.                
  1943.                
  1944.                
  1945.                 // rate limiting prop
  1946.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1947.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
  1948.                 sqlQueryObject.addSelectField("*");
  1949.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1950.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1951.                 stm = con.prepareStatement(sqlQuery);
  1952.                 stm.setLong(1, idPortaApplicativa);
  1953.                 rs=stm.executeQuery();
  1954.                 while (rs.next()) {
  1955.                     prop = new Proprieta();
  1956.                     prop.setId(rs.getLong("id"));
  1957.                     prop.setNome(rs.getString("nome"));
  1958.                     prop.setValore(rs.getString("valore"));
  1959.                     pa.addProprietaRateLimiting(prop);
  1960.                 }
  1961.                 rs.close();
  1962.                 stm.close();
  1963.                
  1964.                
  1965.                
  1966.                
  1967.                
  1968.                 // pa.addSetProperty(setProperty); .....
  1969.                 prop = null;
  1970.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1971.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_PROP);
  1972.                 sqlQueryObject.addSelectField("*");
  1973.                 sqlQueryObject.addWhereCondition("id_porta=?");
  1974.                 sqlQuery = sqlQueryObject.createSQLQuery();
  1975.                 stm = con.prepareStatement(sqlQuery);
  1976.                 stm.setLong(1, idPortaApplicativa);
  1977.                 rs=stm.executeQuery();
  1978.                 while (rs.next()) {
  1979.                     prop = new Proprieta();
  1980.                     prop.setId(rs.getLong("id"));
  1981.                     prop.setNome(rs.getString("nome"));
  1982.                    
  1983.                     String plainValue = rs.getString("valore");
  1984.                     String encValue = rs.getString("enc_value");
  1985.                     if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  1986.                         IDriverBYOK driverBYOK = this.driver.getDriverUnwrapBYOK();
  1987.                         if(driverBYOK!=null) {
  1988.                             prop.setValore(driverBYOK.unwrapAsString(encValue));
  1989.                         }
  1990.                         else {
  1991.                             prop.setValore(encValue);
  1992.                         }
  1993.                     }
  1994.                     else {
  1995.                         prop.setValore(plainValue);
  1996.                     }
  1997.                    
  1998.                     pa.addProprieta(prop);
  1999.                 }
  2000.                 rs.close();
  2001.                 stm.close();
  2002.                
  2003.                
  2004.                                
  2005.                 // ruoli
  2006.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2007.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
  2008.                 sqlQueryObject.addSelectField("*");
  2009.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2010.                 sqlQuery = sqlQueryObject.createSQLQuery();
  2011.                 stm = con.prepareStatement(sqlQuery);
  2012.                 stm.setLong(1, idPortaApplicativa);
  2013.                 rs = stm.executeQuery();

  2014.                 while (rs.next()) {
  2015.                    
  2016.                     if(pa.getRuoli()==null){
  2017.                         pa.setRuoli(new AutorizzazioneRuoli());
  2018.                     }
  2019.                    
  2020.                     Ruolo ruolo = new Ruolo();
  2021.                     ruolo.setNome(rs.getString("ruolo"));
  2022.                     pa.getRuoli().addRuolo(ruolo);
  2023.                
  2024.                 }
  2025.                 rs.close();
  2026.                 stm.close();
  2027.                
  2028.                
  2029.                
  2030.                
  2031.                 // scope
  2032.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2033.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
  2034.                 sqlQueryObject.addSelectField("*");
  2035.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2036.                 sqlQuery = sqlQueryObject.createSQLQuery();
  2037.                 stm = con.prepareStatement(sqlQuery);
  2038.                 stm.setLong(1, idPortaApplicativa);
  2039.                 rs = stm.executeQuery();

  2040.                 while (rs.next()) {
  2041.                    
  2042.                     if(pa.getScope()==null){
  2043.                         pa.setScope(new AutorizzazioneScope());
  2044.                     }
  2045.                    
  2046.                     Scope scope = new Scope();
  2047.                     scope.setNome(rs.getString("scope"));
  2048.                     pa.getScope().addScope(scope);
  2049.                
  2050.                 }
  2051.                 rs.close();
  2052.                 stm.close();
  2053.                
  2054.                
  2055.                
  2056.                 // soggetti
  2057.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2058.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
  2059.                 sqlQueryObject.addSelectField("*");
  2060.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2061.                 sqlQuery = sqlQueryObject.createSQLQuery();
  2062.                 stm = con.prepareStatement(sqlQuery);
  2063.                 stm.setLong(1, idPortaApplicativa);
  2064.                 rs = stm.executeQuery();

  2065.                 while (rs.next()) {
  2066.                    
  2067.                     if(pa.getSoggetti()==null){
  2068.                         pa.setSoggetti(new PortaApplicativaAutorizzazioneSoggetti());
  2069.                     }
  2070.                    
  2071.                     PortaApplicativaAutorizzazioneSoggetto soggetto = new PortaApplicativaAutorizzazioneSoggetto();
  2072.                     soggetto.setTipo(rs.getString("tipo_soggetto"));
  2073.                     soggetto.setNome(rs.getString("nome_soggetto"));
  2074.                     pa.getSoggetti().addSoggetto(soggetto);
  2075.                
  2076.                 }
  2077.                 rs.close();
  2078.                 stm.close();
  2079.                
  2080.                
  2081.                
  2082.                 // applicativi autorizzti
  2083.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2084.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);
  2085.                 sqlQueryObject.addSelectField("*");
  2086.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2087.                 sqlQuery = sqlQueryObject.createSQLQuery();
  2088.                 stm = con.prepareStatement(sqlQuery);
  2089.                 stm.setLong(1, idPortaApplicativa);
  2090.                 rs = stm.executeQuery();

  2091.                 // per ogni entry con id_porta == idPortaApplicativa
  2092.                 // prendo l'id del servizio associato, recupero il nome e
  2093.                 // aggiungo
  2094.                 // il servizio applicativo alla PortaDelegata da ritornare
  2095.                 while (rs.next()) {
  2096.                     long idSaAutorizzato = rs.getLong("id_servizio_applicativo");

  2097.                     if (idSaAutorizzato != 0) {
  2098.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2099.                         sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2100.                         sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  2101.                         sqlQueryObject.addSelectField("nome");
  2102.                         sqlQueryObject.addSelectField("tipo_soggetto");
  2103.                         sqlQueryObject.addSelectField("nome_soggetto");
  2104.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".id=?");
  2105.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".id_soggetto="+CostantiDB.SOGGETTI+".id");
  2106.                         sqlQueryObject.setANDLogicOperator(true);
  2107.                         sqlQuery = sqlQueryObject.createSQLQuery();
  2108.                         stm1 = con.prepareStatement(sqlQuery);
  2109.                         stm1.setLong(1, idSaAutorizzato);

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

  2111.                         rs1 = stm1.executeQuery();

  2112.                         PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativo = null;
  2113.                         if (rs1.next()) {
  2114.                             // setto solo il nome come da specifica
  2115.                             servizioApplicativo = new PortaApplicativaAutorizzazioneServizioApplicativo();
  2116.                             servizioApplicativo.setId(idSaAutorizzato);
  2117.                             servizioApplicativo.setNome(rs1.getString("nome"));
  2118.                             servizioApplicativo.setTipoSoggettoProprietario(rs1.getString("tipo_soggetto"));
  2119.                             servizioApplicativo.setNomeSoggettoProprietario(rs1.getString("nome_soggetto"));
  2120.                             if(pa.getServiziApplicativiAutorizzati()==null) {
  2121.                                 pa.setServiziApplicativiAutorizzati(new PortaApplicativaAutorizzazioneServiziApplicativi());
  2122.                             }
  2123.                             pa.getServiziApplicativiAutorizzati().addServizioApplicativo(servizioApplicativo);
  2124.                         }
  2125.                         rs1.close();
  2126.                         stm1.close();
  2127.                     }
  2128.                 }
  2129.                 rs.close();
  2130.                 stm.close();
  2131.                
  2132.                
  2133.                
  2134.                
  2135.                 // applicativi autorizzti via token
  2136.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2137.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);
  2138.                 sqlQueryObject.addSelectField("*");
  2139.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2140.                 sqlQuery = sqlQueryObject.createSQLQuery();
  2141.                 stm = con.prepareStatement(sqlQuery);
  2142.                 stm.setLong(1, idPortaApplicativa);
  2143.                 rs = stm.executeQuery();

  2144.                 // per ogni entry con id_porta == idPortaApplicativa
  2145.                 // prendo l'id del servizio associato, recupero il nome e
  2146.                 // aggiungo
  2147.                 // il servizio applicativo alla PortaDelegata da ritornare
  2148.                 while (rs.next()) {
  2149.                     long idSaAutorizzato = rs.getLong("id_servizio_applicativo");

  2150.                     if (idSaAutorizzato != 0) {
  2151.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2152.                         sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2153.                         sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  2154.                         sqlQueryObject.addSelectField("nome");
  2155.                         sqlQueryObject.addSelectField("tipo_soggetto");
  2156.                         sqlQueryObject.addSelectField("nome_soggetto");
  2157.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".id=?");
  2158.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".id_soggetto="+CostantiDB.SOGGETTI+".id");
  2159.                         sqlQueryObject.setANDLogicOperator(true);
  2160.                         sqlQuery = sqlQueryObject.createSQLQuery();
  2161.                         stm1 = con.prepareStatement(sqlQuery);
  2162.                         stm1.setLong(1, idSaAutorizzato);

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

  2164.                         rs1 = stm1.executeQuery();

  2165.                         PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativo = null;
  2166.                         if (rs1.next()) {
  2167.                             // setto solo il nome come da specifica
  2168.                             servizioApplicativo = new PortaApplicativaAutorizzazioneServizioApplicativo();
  2169.                             servizioApplicativo.setId(idSaAutorizzato);
  2170.                             servizioApplicativo.setNome(rs1.getString("nome"));
  2171.                             servizioApplicativo.setTipoSoggettoProprietario(rs1.getString("tipo_soggetto"));
  2172.                             servizioApplicativo.setNomeSoggettoProprietario(rs1.getString("nome_soggetto"));
  2173.                             if(pa.getAutorizzazioneToken()==null) {
  2174.                                 pa.setAutorizzazioneToken(new PortaApplicativaAutorizzazioneToken());
  2175.                             }
  2176.                             if(pa.getAutorizzazioneToken().getServiziApplicativi()==null) {
  2177.                                 pa.getAutorizzazioneToken().setServiziApplicativi(new PortaApplicativaAutorizzazioneServiziApplicativi());
  2178.                             }
  2179.                             pa.getAutorizzazioneToken().getServiziApplicativi().addServizioApplicativo(servizioApplicativo);
  2180.                         }
  2181.                         rs1.close();
  2182.                         stm1.close();
  2183.                     }
  2184.                 }
  2185.                 rs.close();
  2186.                 stm.close();
  2187.                
  2188.                
  2189.                
  2190.                 // ruoli (token)
  2191.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2192.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
  2193.                 sqlQueryObject.addSelectField("*");
  2194.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2195.                 sqlQuery = sqlQueryObject.createSQLQuery();
  2196.                 stm = con.prepareStatement(sqlQuery);
  2197.                 stm.setLong(1, idPortaApplicativa);
  2198.                 rs = stm.executeQuery();

  2199.                 while (rs.next()) {
  2200.                    
  2201.                     if(pa.getAutorizzazioneToken()==null) {
  2202.                         pa.setAutorizzazioneToken(new PortaApplicativaAutorizzazioneToken());
  2203.                     }
  2204.                     if(pa.getAutorizzazioneToken().getRuoli()==null){
  2205.                         pa.getAutorizzazioneToken().setRuoli(new AutorizzazioneRuoli());
  2206.                     }
  2207.                    
  2208.                     Ruolo ruolo = new Ruolo();
  2209.                     ruolo.setNome(rs.getString("ruolo"));
  2210.                     pa.getAutorizzazioneToken().getRuoli().addRuolo(ruolo);
  2211.                
  2212.                 }
  2213.                 rs.close();
  2214.                 stm.close();
  2215.                
  2216.                

  2217.                
  2218.                 // dump_config
  2219.                 DumpConfigurazione dumpConfig = DriverConfigurazioneDB_dumpLIB.readDumpConfigurazione(con, pa.getId(), CostantiDB.DUMP_CONFIGURAZIONE_PROPRIETARIO_PA);
  2220.                 pa.setDump(dumpConfig);
  2221.                
  2222.                
  2223.                 // Handlers
  2224.                 ConfigurazioneMessageHandlers requestHandlers = DriverConfigurazioneDB_handlerLIB.readConfigurazioneMessageHandlers(con, null, pa.getId(), true);
  2225.                 ConfigurazioneMessageHandlers responseHandlers = DriverConfigurazioneDB_handlerLIB.readConfigurazioneMessageHandlers(con, null, pa.getId(), false);
  2226.                 if(requestHandlers!=null || responseHandlers!=null) {
  2227.                     pa.setConfigurazioneHandler(new ConfigurazionePortaHandler());
  2228.                     pa.getConfigurazioneHandler().setRequest(requestHandlers);
  2229.                     pa.getConfigurazioneHandler().setResponse(responseHandlers);
  2230.                 }
  2231.                
  2232.                
  2233.                
  2234.                 // attributeAuthority
  2235.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2236.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
  2237.                 sqlQueryObject.addSelectField("*");
  2238.                 sqlQueryObject.addWhereCondition("id_porta=?");
  2239.                 sqlQuery = sqlQueryObject.createSQLQuery();
  2240.                 stm = con.prepareStatement(sqlQuery);
  2241.                 stm.setLong(1, idPortaApplicativa);
  2242.                 rs = stm.executeQuery();

  2243.                 while (rs.next()) {
  2244.                    
  2245.                     String nome = rs.getString("nome");
  2246.                     String attributi = rs.getString("attributi");
  2247.                     AttributeAuthority aa = new AttributeAuthority();
  2248.                     aa.setNome(nome);
  2249.                     aa.setAttributoList(DBUtils.convertToList(attributi));
  2250.                     pa.addAttributeAuthority(aa);
  2251.                
  2252.                 }
  2253.                 rs.close();
  2254.                 stm.close();
  2255.                
  2256.                
  2257.                
  2258.                
  2259.                 // *** Aggiungo extInfo ***
  2260.                
  2261.                 this.driver.logDebug("ExtendedInfo ... ");
  2262.                 ExtendedInfoManager extInfoManager = ExtendedInfoManager.getInstance();
  2263.                 IExtendedInfo extInfoConfigurazioneDriver = extInfoManager.newInstanceExtendedInfoPortaApplicativa();
  2264.                 if(extInfoConfigurazioneDriver!=null){
  2265.                     List<Object> listExtInfo = extInfoConfigurazioneDriver.getAllExtendedInfo(con, this.driver.log, pa);
  2266.                     if(listExtInfo!=null && !listExtInfo.isEmpty()){
  2267.                         for (Object object : listExtInfo) {
  2268.                             pa.addExtendedInfo(object);
  2269.                         }
  2270.                     }
  2271.                 }

  2272.                
  2273.                 return pa;
  2274.             } else {
  2275.                 throw new DriverConfigurazioneNotFound("Porta Applicativa non esistente");
  2276.             }
  2277.         } catch (SQLException se) {
  2278.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaApplicativa] SqlException: " + se.getMessage(),se);
  2279.         } catch (DriverConfigurazioneNotFound e) {
  2280.             throw new DriverConfigurazioneNotFound(e);
  2281.         }catch (Exception se) {
  2282.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPortaApplicativa] Exception: " + se.getMessage(),se);
  2283.         }finally {
  2284.             //Chiudo statement and resultset
  2285.             JDBCUtilities.closeResources(rs, stm);
  2286.             JDBCUtilities.closeResources(rs1, stm1);
  2287.             this.driver.closeConnection(conParam, con);
  2288.         }
  2289.     }
  2290.    
  2291.     protected List<String> nomiProprietaPA(String filterSoggettoTipo, String filterSoggettoNome, List<String> tipoServiziProtocollo) throws DriverConfigurazioneException {
  2292.         String queryString;

  2293.         Connection con = null;
  2294.         PreparedStatement stmt=null;
  2295.         ResultSet risultato=null;
  2296.         ArrayList<String> lista = new ArrayList<>();

  2297.         if (this.driver.atomica) {
  2298.             try {
  2299.                 con = this.driver.getConnectionFromDatasource("nomiProprietaPA");
  2300.             } catch (Exception e) {
  2301.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::nomiProprietaPA] Exception accedendo al datasource :" + e.getMessage(),e);

  2302.             }

  2303.         } else
  2304.             con = this.driver.globalConnection;

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

  2306.         try {

  2307.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2308.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_PROP);
  2309.             sqlQueryObject.setSelectDistinct(true);
  2310.             sqlQueryObject.addSelectField(CostantiDB.PORTE_APPLICATIVE_PROP + ".nome");
  2311.             sqlQueryObject.addOrderBy(CostantiDB.PORTE_APPLICATIVE_PROP + ".nome");
  2312.             sqlQueryObject.setSortType(true);
  2313.             sqlQueryObject.setANDLogicOperator(true);
  2314.            
  2315.             if((filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) || (tipoServiziProtocollo != null && tipoServiziProtocollo.size() > 0)) {
  2316.                 sqlQueryObject.addFromTable(CostantiDB.MAPPING_EROGAZIONE_PA);
  2317.                 sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2318.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  2319.                
  2320.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_PROP+".id_porta="+CostantiDB.PORTE_APPLICATIVE+".id");
  2321.                 sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_porta="+CostantiDB.PORTE_APPLICATIVE+".id");
  2322.                 sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_erogazione="+CostantiDB.SERVIZI+".id");
  2323.                
  2324.             }
  2325.            
  2326.             if((filterSoggettoNome!=null && !"".equals(filterSoggettoNome))) {
  2327.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  2328.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  2329.                
  2330.                 sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto=?");
  2331.                 sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto=?");
  2332.             }
  2333.            
  2334.             if((tipoServiziProtocollo != null && tipoServiziProtocollo.size() > 0)) {
  2335.                 String [] tipiServiziProtocolloS = tipoServiziProtocollo.toArray(new String[tipoServiziProtocollo.size()]);
  2336.                 sqlQueryObject.addWhereINCondition(CostantiDB.SERVIZI+".tipo_servizio", true, tipiServiziProtocolloS);
  2337.             }
  2338.                
  2339.             queryString = sqlQueryObject.createSQLQuery();
  2340.             stmt = con.prepareStatement(queryString);
  2341.             if((filterSoggettoNome!=null && !"".equals(filterSoggettoNome))) {
  2342.                 stmt.setString(1, filterSoggettoTipo);
  2343.                 stmt.setString(2, filterSoggettoNome);
  2344.             }
  2345.             risultato = stmt.executeQuery();
  2346.             while (risultato.next()) {
  2347.                 lista.add(risultato.getString("nome"));
  2348.             }
  2349.             return lista;
  2350.         } catch (Exception qe) {
  2351.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::nomiProprietaPA] Errore : " + qe.getMessage(),qe);
  2352.         } finally {
  2353.             //Chiudo statement and resultset
  2354.             JDBCUtilities.closeResources(risultato, stmt);
  2355.             this.driver.closeConnection(con);
  2356.         }
  2357.     }
  2358.    
  2359.     protected List<String> porteApplicativeRateLimitingValoriUnivoci(String pName) throws DriverConfigurazioneException {
  2360.        
  2361.         Connection con = null;
  2362.         PreparedStatement stmt=null;
  2363.         ResultSet risultato=null;
  2364.         ArrayList<String> lista = new ArrayList<>();

  2365.         if (this.driver.atomica) {
  2366.             try {
  2367.                 con = this.driver.getConnectionFromDatasource("porteApplicativeRateLimitingValoriUnivoci");
  2368.             } catch (Exception e) {
  2369.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::porteApplicativeRateLimitingValoriUnivoci] Exception accedendo al datasource :" + e.getMessage(),e);

  2370.             }

  2371.         } else
  2372.             con = this.driver.globalConnection;

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

  2374.         try {

  2375.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2376.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
  2377.             sqlQueryObject.setSelectDistinct(true);
  2378.             sqlQueryObject.addSelectField("valore");
  2379.             sqlQueryObject.addWhereCondition("nome = ?");
  2380.             sqlQueryObject.setANDLogicOperator(true);
  2381.             String queryString = sqlQueryObject.createSQLQuery();
  2382.            
  2383.             stmt = con.prepareStatement(queryString);
  2384.             stmt.setString(1, pName);
  2385.             risultato = stmt.executeQuery();
  2386.             while (risultato.next()) {
  2387.                 lista.add(risultato.getString("valore"));
  2388.             }
  2389.             risultato.close();
  2390.             stmt.close();

  2391.            
  2392.             return lista;

  2393.         } catch (Exception qe) {
  2394.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::porteApplicativeRateLimitingValoriUnivoci] Errore : " + qe.getMessage(),qe);
  2395.         } finally {
  2396.             //Chiudo statement and resultset
  2397.             JDBCUtilities.closeResources(risultato, stmt);
  2398.             this.driver.closeConnection(con);
  2399.         }
  2400.     }
  2401.    
  2402.    
  2403.     protected List<PortaApplicativa> porteAppWithServizio(long idSoggettoErogatore, String tipoServizio,String nomeServizio, Integer versioneServizio) throws DriverConfigurazioneException {
  2404.         String nomeMetodo = "porteAppWithTipoNomeServizio";
  2405.         String queryString;

  2406.         Connection con = null;
  2407.         PreparedStatement stmt=null;
  2408.         ResultSet risultato=null;
  2409.         ArrayList<PortaApplicativa> lista = new ArrayList<>();

  2410.         if (this.driver.atomica) {
  2411.             try {
  2412.                 con = this.driver.getConnectionFromDatasource("porteAppWithTipoNomeServizio");
  2413.             } catch (Exception e) {
  2414.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2415.             }

  2416.         } else
  2417.             con = this.driver.globalConnection;

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

  2419.         try {

  2420.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2421.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2422.             sqlQueryObject.addSelectField("*");
  2423.             sqlQueryObject.addWhereCondition("tipo_servizio = ?");
  2424.             sqlQueryObject.addWhereCondition("servizio = ?");
  2425.             sqlQueryObject.addWhereCondition("versione_servizio = ?");
  2426.             sqlQueryObject.addWhereCondition("id_soggetto = ?");
  2427.             sqlQueryObject.setANDLogicOperator(true);
  2428.             queryString = sqlQueryObject.createSQLQuery();
  2429.             stmt = con.prepareStatement(queryString);
  2430.             int index = 1;
  2431.             stmt.setString(index++, tipoServizio);
  2432.             stmt.setString(index++, nomeServizio);
  2433.             stmt.setInt(index++, versioneServizio);
  2434.             stmt.setLong(index++, idSoggettoErogatore);
  2435.             risultato = stmt.executeQuery();

  2436.             PortaApplicativa pa;
  2437.             while (risultato.next()) {
  2438.                 pa = getPortaApplicativa(risultato.getLong("id"),con);
  2439.                 lista.add(pa);
  2440.             }

  2441.             return lista;

  2442.         } catch (Exception qe) {
  2443.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2444.         } finally {

  2445.             //Chiudo statement and resultset
  2446.             JDBCUtilities.closeResources(risultato, stmt);

  2447.             this.driver.closeConnection(con);
  2448.         }
  2449.     }

  2450.     protected List<PortaApplicativa> porteAppWithIdServizio(long idServizio) throws DriverConfigurazioneException {
  2451.         String nomeMetodo = "porteAppWithIdServizio";
  2452.         String queryString;

  2453.         Connection con = null;
  2454.         PreparedStatement stmt=null;
  2455.         ResultSet risultato=null;
  2456.         ArrayList<PortaApplicativa> lista = new ArrayList<>();

  2457.         if (this.driver.atomica) {
  2458.             try {
  2459.                 con = this.driver.getConnectionFromDatasource("porteAppWithIdServizio");
  2460.             } catch (Exception e) {
  2461.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2462.             }

  2463.         } else
  2464.             con = this.driver.globalConnection;

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

  2466.         try {

  2467.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2468.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2469.             sqlQueryObject.addSelectField("*");
  2470.             sqlQueryObject.addWhereCondition("id_servizio = ?");
  2471.             queryString = sqlQueryObject.createSQLQuery();
  2472.             stmt = con.prepareStatement(queryString);
  2473.             stmt.setLong(1, idServizio);
  2474.             risultato = stmt.executeQuery();

  2475.             PortaApplicativa pa;
  2476.             while (risultato.next()) {
  2477.                 pa = getPortaApplicativa(risultato.getLong("id"),con);
  2478.                 lista.add(pa);
  2479.             }

  2480.             return lista;

  2481.         } catch (Exception qe) {
  2482.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2483.         } finally {

  2484.             //Chiudo statement and resultset
  2485.             JDBCUtilities.closeResources(risultato, stmt);

  2486.             this.driver.closeConnection(con);
  2487.         }
  2488.     }
  2489.    
  2490.     protected boolean existsPortaApplicativa(IDPortaApplicativa idPA) throws DriverConfigurazioneException {

  2491.         try{
  2492.             return getPortaApplicativa(idPA)!=null;
  2493.         }catch (DriverConfigurazioneNotFound e) {
  2494.             return false;
  2495.         }
  2496.     }

  2497.    

  2498.     protected List<PortaApplicativa> getPorteApplicativeWithServizio(Long idServizio, String tiposervizio, String nomeservizio, Integer versioneServizio,
  2499.             Long idSoggetto, String tiposoggetto, String nomesoggetto) throws DriverConfigurazioneException {

  2500.         Connection con = null;
  2501.         PreparedStatement stm = null;
  2502.         ResultSet rs = null;
  2503.         String sqlQuery = "";
  2504.         ArrayList<PortaApplicativa> lista = new ArrayList<PortaApplicativa>();

  2505.         try {
  2506.            
  2507.             if (this.driver.atomica) {
  2508.                 try {
  2509.                     con = this.driver.getConnectionFromDatasource("getPorteApplicativeWithServizio");
  2510.                 } catch (Exception e) {
  2511.                     throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteApplicativeWithServizio] Exception accedendo al datasource :" + e.getMessage(),e);

  2512.                 }

  2513.             } else
  2514.                 con = this.driver.globalConnection;
  2515.            
  2516.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2517.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2518.             sqlQueryObject.addSelectField("*");
  2519.             sqlQueryObject.addWhereCondition(false, "id_servizio = ?", "tipo_servizio = ? AND servizio = ? AND versione_servizio = ?");
  2520.             sqlQueryObject.addWhereCondition(false, "id_soggetto = ?", "id_soggetto_virtuale = ?", "tipo_soggetto_virtuale = ? AND nome_soggetto_virtuale = ?");
  2521.             sqlQueryObject.setANDLogicOperator(true);
  2522.             sqlQuery = sqlQueryObject.createSQLQuery();
  2523.             stm = con.prepareStatement(sqlQuery);

  2524.             int index = 1;
  2525.             stm.setLong(index++, idServizio);
  2526.             stm.setString(index++, tiposervizio);
  2527.             stm.setString(index++, nomeservizio);
  2528.             stm.setInt(index++, versioneServizio);
  2529.             stm.setLong(index++, idSoggetto);
  2530.             stm.setLong(index++, idSoggetto);
  2531.             stm.setString(index++, tiposoggetto);
  2532.             stm.setString(index++, nomesoggetto);

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

  2535.             while (rs.next()) {
  2536.                 PortaApplicativa pa = new PortaApplicativa();
  2537.                 pa.setNome(rs.getString("nome_porta"));
  2538.                 lista.add(pa);
  2539.             }

  2540.             return lista;
  2541.         } catch (Exception qe) {
  2542.             throw new DriverConfigurazioneException(qe);
  2543.         } finally {

  2544.             JDBCUtilities.closeResources(rs, stm);
  2545.            
  2546.             this.driver.closeConnection(con);

  2547.         }

  2548.     }

  2549.     protected PortaApplicativa getPortaApplicativaWithSoggettoAndServizio(String nome, Long idSoggetto, Long idServizio,
  2550.             String tipoServizio, String nomeServizio, Integer versioneServizio) throws DriverConfigurazioneException {

  2551.         Connection con = null;
  2552.         PreparedStatement stm = null;
  2553.         ResultSet rs = null;
  2554.         String sqlQuery = "";
  2555.         PortaApplicativa pa = new PortaApplicativa();

  2556.         try {
  2557.            
  2558.             if (this.driver.atomica) {
  2559.                 try {
  2560.                     con = this.driver.getConnectionFromDatasource("getPortaApplicativaWithSoggettoAndServizio");
  2561.                 } catch (Exception e) {
  2562.                     throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteApplicativeWithSoggettoAndServizio] Exception accedendo al datasource :" + e.getMessage(),e);

  2563.                 }

  2564.             } else
  2565.                 con = this.driver.globalConnection;
  2566.            
  2567.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2568.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2569.             sqlQueryObject.addSelectField("*");
  2570.             sqlQueryObject.addWhereCondition("nome_porta = ?");
  2571.             sqlQueryObject.addWhereCondition(false, "id_soggetto = ? AND tipo_servizio = ? AND servizio=? AND versione_servizio=? AND id_soggetto_virtuale <= ?",
  2572.                     "id_soggetto = ? AND id_servizio = ? AND id_soggetto_virtuale <= ?",
  2573.                     "id_soggetto_virtuale = ? AND tipo_servizio = ? AND servizio=? AND versione_servizio=? ",
  2574.                     "id_soggetto_virtuale = ? AND id_servizio = ?");
  2575.             sqlQueryObject.setANDLogicOperator(true);
  2576.             sqlQuery = sqlQueryObject.createSQLQuery();
  2577.             stm = con.prepareStatement(sqlQuery);

  2578.             int index = 1;
  2579.            
  2580.             stm.setString(index++, nome);

  2581.             stm.setLong(index++, idSoggetto);
  2582.             stm.setString(index++, tipoServizio);
  2583.             stm.setString(index++, nomeServizio);
  2584.             stm.setInt(index++, versioneServizio);
  2585.             stm.setLong(index++, 0);

  2586.             stm.setLong(index++, idSoggetto);
  2587.             stm.setLong(index++, idServizio);
  2588.             stm.setLong(index++, 0);

  2589.             stm.setLong(index++, idSoggetto);
  2590.             stm.setString(index++, tipoServizio);
  2591.             stm.setString(index++, nomeServizio);
  2592.             stm.setInt(index++, versioneServizio);

  2593.             stm.setLong(index++, idSoggetto);
  2594.             stm.setLong(index++, idServizio);

  2595.             this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idSoggetto, idServizio, -1, idSoggetto, idServizio));
  2596.             rs = stm.executeQuery();

  2597.             if (rs.next()) {
  2598.                 Soggetto sogg = this.soggettiDriver.getSoggetto(rs.getLong("id_soggetto"));
  2599.                 pa.setId(rs.getLong("id"));
  2600.                 pa.setNome(rs.getString("nome_porta"));
  2601.                 pa.setIdSoggetto(rs.getLong("id_soggetto"));
  2602.                 pa.setNomeSoggettoProprietario(sogg.getNome());
  2603.                 pa.setTipoSoggettoProprietario(sogg.getTipo());
  2604.             }else{
  2605.                 throw new Exception("PA non trovata ["+DBUtils.formatSQLString(sqlQuery, idSoggetto, idServizio, -1, idSoggetto, idServizio)+"]");
  2606.             }

  2607.             return pa;
  2608.         } catch (Exception qe) {
  2609.             throw new DriverConfigurazioneException(qe);
  2610.         } finally {

  2611.             JDBCUtilities.closeResources(rs, stm);
  2612.            
  2613.             this.driver.closeConnection(con);

  2614.         }

  2615.     }

  2616.     // NOTA: Metodo non sicuro!!! Possono esistere piu' azioni di port type diversi o accordi diversi !!!!!
  2617.     protected List<IDPortaApplicativa> getPortaApplicativaAzione(String nome) throws DriverConfigurazioneException, DriverConfigurazioneNotFound {
  2618.         Connection con = null;
  2619.         PreparedStatement stm = null;
  2620.         ResultSet rs = null;
  2621.         String sqlQuery = "";

  2622.         List<IDPortaApplicativa> id = new ArrayList<IDPortaApplicativa>();
  2623.         try {

  2624.             if (this.driver.atomica) {
  2625.                 try {
  2626.                     con = this.driver.getConnectionFromDatasource("getPortaApplicativaAzione");
  2627.                 } catch (Exception e) {
  2628.                     throw new DriverConfigurazioneException("[DriverConfigurazioneDB::existsPortaApplicativaAzione] Exception accedendo al datasource :" + e.getMessage(),e);

  2629.                 }

  2630.             } else
  2631.                 con = this.driver.globalConnection;
  2632.            
  2633.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2634.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2635.             sqlQueryObject.addSelectField("*");
  2636.             sqlQueryObject.setANDLogicOperator(true);
  2637.             sqlQueryObject.addWhereCondition("azione=?");
  2638.             sqlQuery = sqlQueryObject.createSQLQuery();
  2639.             stm = con.prepareStatement(sqlQuery);

  2640.             stm.setString(1, nome);

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

  2643.             while (rs.next()){
  2644.                 IDPortaApplicativa idPA = new IDPortaApplicativa();
  2645.                 idPA.setNome(rs.getString("nome_porta"));
  2646.                 id.add(idPA);
  2647.             }

  2648.         } catch (Exception qe) {
  2649.             throw new DriverConfigurazioneException(qe);
  2650.         } finally {

  2651.             JDBCUtilities.closeResources(rs, stm);
  2652.            
  2653.             this.driver.closeConnection(con);

  2654.         }

  2655.         if(id.size()>0){
  2656.             return id;
  2657.         }else{
  2658.             throw new DriverConfigurazioneNotFound("Porte Applicative che possiedono l'azione ["+nome+"] non esistenti");
  2659.         }

  2660.     }

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

  2663.         Connection con = null;
  2664.         PreparedStatement stm = null;
  2665.         ResultSet rs = null;
  2666.         String sqlQuery = "";

  2667.         try {
  2668.            
  2669.             if (this.driver.atomica) {
  2670.                 try {
  2671.                     con = this.driver.getConnectionFromDatasource("existsPortaApplicativaAzione");
  2672.                 } catch (Exception e) {
  2673.                     throw new DriverConfigurazioneException("[DriverConfigurazioneDB::existsPortaApplicativaAzione] Exception accedendo al datasource :" + e.getMessage(),e);

  2674.                 }

  2675.             } else
  2676.                 con = this.driver.globalConnection;
  2677.            
  2678.             boolean esiste = false;
  2679.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2680.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2681.             sqlQueryObject.addSelectField("*");
  2682.             sqlQueryObject.addWhereCondition("azione=?");
  2683.             sqlQuery = sqlQueryObject.createSQLQuery();
  2684.             stm = con.prepareStatement(sqlQuery);

  2685.             stm.setString(1, nome);

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

  2688.             if (rs.next())
  2689.                 esiste = true;

  2690.             return esiste;
  2691.         } catch (Exception qe) {
  2692.             throw new DriverConfigurazioneException(qe);
  2693.         } finally {

  2694.             JDBCUtilities.closeResources(rs, stm);
  2695.            
  2696.             this.driver.closeConnection(con);

  2697.         }

  2698.     }
  2699.    
  2700.    
  2701.    
  2702.     protected List<PortaApplicativa> getPorteApplicativaByIdProprietario(long idProprietario) throws DriverConfigurazioneException{
  2703.         Connection con = null;
  2704.         PreparedStatement stm = null;
  2705.         ResultSet rs = null;
  2706.         String sqlQuery = "";

  2707.         if (this.driver.atomica) {
  2708.             try {
  2709.                 con = this.driver.getConnectionFromDatasource("getPorteApplicativaByIdProprietario");
  2710.             } catch (Exception e) {
  2711.                 throw new DriverConfigurazioneException(
  2712.                         "[DriverConfigurazioneDB::getPorteApplicativaByIdProprietario] Exception accedendo al datasource :"
  2713.                                 + e.getMessage(),e);

  2714.             }

  2715.         } else
  2716.             con = this.driver.globalConnection;
  2717.         ArrayList<PortaApplicativa> lista = null;
  2718.         try {

  2719.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2720.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2721.             sqlQueryObject.addSelectField("*");
  2722.             sqlQueryObject.addWhereCondition("id_soggetto=?");
  2723.             sqlQueryObject.setANDLogicOperator(true);
  2724.             sqlQuery = sqlQueryObject.createSQLQuery();
  2725.             stm = con.prepareStatement(sqlQuery);

  2726.             stm.setLong(1, idProprietario);
  2727.             rs = stm.executeQuery();
  2728.             lista=new ArrayList<PortaApplicativa>();
  2729.             while(rs.next()){
  2730.                 long id=rs.getLong("id");
  2731.                 PortaApplicativa pd = this.getPortaApplicativa(id);
  2732.                 lista.add(pd);
  2733.             }

  2734.             return lista;
  2735.         } catch (Exception qe) {
  2736.             throw new DriverConfigurazioneException(qe);
  2737.         } finally {

  2738.             JDBCUtilities.closeResources(rs, stm);
  2739.            
  2740.             this.driver.closeConnection(con);

  2741.         }

  2742.     }

  2743.     /**
  2744.      * Recupera tutte le porte applicative relative al servizio idServizio, erogato dal soggetto erogatore del servizio.
  2745.      * @param idSE
  2746.      * @return List<PortaApplicativa>
  2747.      * @throws DriverConfigurazioneException
  2748.      */
  2749.     protected List<PortaApplicativa> getPorteApplicative(IDServizio idSE) throws DriverConfigurazioneException{
  2750.         Connection con = null;
  2751.         PreparedStatement stm = null;
  2752.         ResultSet rs = null;
  2753.         String sqlQuery = "";

  2754.         if (this.driver.atomica) {
  2755.             try {
  2756.                 con = this.driver.getConnectionFromDatasource("getPorteApplicative(idServizio)");
  2757.             } catch (Exception e) {
  2758.                 throw new DriverConfigurazioneException(
  2759.                         "[DriverConfigurazioneDB::getPorteApplicative] Exception accedendo al datasource :"
  2760.                                 + e.getMessage(),e);

  2761.             }

  2762.         } else
  2763.             con = this.driver.globalConnection;
  2764.         ArrayList<PortaApplicativa> lista = null;
  2765.         try {
  2766.             IDSoggetto erogatore = idSE.getSoggettoErogatore();
  2767.             String tipoServizio = idSE.getTipo();
  2768.             String nomeServizio = idSE.getNome();
  2769.             Integer versioneServizio = idSE.getVersione();

  2770.             long idSoggetto = DBUtils.getIdSoggetto(erogatore.getNome(), erogatore.getTipo(), con, this.driver.tipoDB);
  2771.             long idServizio = DBUtils.getIdServizio(nomeServizio, tipoServizio, versioneServizio, erogatore.getNome(), erogatore.getTipo(), con, this.driver.tipoDB);

  2772.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2773.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2774.             sqlQueryObject.addSelectField("*");
  2775.             sqlQueryObject.addWhereCondition("id_soggetto=?");
  2776.             sqlQueryObject.addWhereCondition(false,"id_servizio=?","tipo_servizio=? AND servizio=?");

  2777.             sqlQueryObject.setANDLogicOperator(true);
  2778.             sqlQuery = sqlQueryObject.createSQLQuery();
  2779.             stm = con.prepareStatement(sqlQuery);

  2780.             stm.setLong(1, idSoggetto);
  2781.             stm.setLong(2, idServizio);
  2782.             stm.setString(3, tipoServizio);
  2783.             stm.setString(4, nomeServizio);
  2784.             rs = stm.executeQuery();
  2785.             lista=new ArrayList<PortaApplicativa>();
  2786.             while(rs.next()){
  2787.                 long id=rs.getLong("id");
  2788.                 PortaApplicativa pd = this.getPortaApplicativa(id);
  2789.                 lista.add(pd);
  2790.             }

  2791.             return lista;
  2792.         } catch (Exception qe) {
  2793.             throw new DriverConfigurazioneException(qe);
  2794.         } finally {

  2795.             JDBCUtilities.closeResources(rs, stm);
  2796.            
  2797.             this.driver.closeConnection(con);

  2798.         }

  2799.     }
  2800.    
  2801.     protected List<PortaApplicativa> getPorteApplicativeBySoggetto(long idSoggetto) throws DriverConfigurazioneException {
  2802.         String nomeMetodo = "getPorteApplicativeBySoggetto";

  2803.         Connection con = null;
  2804.         PreparedStatement stmt=null;
  2805.         ResultSet risultato=null;
  2806.         ArrayList<PortaApplicativa> lista = new ArrayList<>();

  2807.         if (this.driver.atomica) {
  2808.             try {
  2809.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2810.             } catch (Exception e) {
  2811.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2812.             }

  2813.         } else
  2814.             con = this.driver.globalConnection;

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

  2816.         try {

  2817.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2818.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2819.             sqlQueryObject.addSelectField("id");
  2820.             sqlQueryObject.addWhereCondition("id_soggetto=?");
  2821.             String queryString = sqlQueryObject.createSQLQuery();
  2822.             stmt = con.prepareStatement(queryString);
  2823.             stmt.setLong(1, idSoggetto);
  2824.             risultato = stmt.executeQuery();

  2825.             while (risultato.next()) {

  2826.                 Long id = risultato.getLong("id");
  2827.                 lista.add(this.getPortaApplicativa(id));

  2828.             }

  2829.             return lista;

  2830.         } catch (Exception qe) {
  2831.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2832.         } finally {
  2833.             //Chiudo statement and resultset
  2834.             JDBCUtilities.closeResources(risultato, stmt);
  2835.             this.driver.closeConnection(con);
  2836.         }
  2837.     }
  2838.    
  2839.     protected List<PortaApplicativa> getPorteApplicativeBySoggettoVirtuale(IDSoggetto soggettoVirtuale) throws DriverConfigurazioneException {

  2840.         Connection con = null;
  2841.         PreparedStatement stm=null;
  2842.         ResultSet rs=null;
  2843.         ArrayList<PortaApplicativa> lista = new ArrayList<>();

  2844.         if (this.driver.atomica) {
  2845.             try {
  2846.                 con = this.driver.getConnectionFromDatasource("getPorteApplicativeBySoggettoVirtuale");
  2847.             } catch (Exception e) {
  2848.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteApplicativeBySoggettoVirtuale] Exception accedendo al datasource :" + e.getMessage(),e);

  2849.             }

  2850.         } else
  2851.             con = this.driver.globalConnection;

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

  2853.         try {

  2854.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2855.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2856.             sqlQueryObject.addSelectField("id");
  2857.             sqlQueryObject.addWhereCondition("tipo_soggetto_virtuale is not null");
  2858.             sqlQueryObject.addWhereCondition("nome_soggetto_virtuale is not null");
  2859.             sqlQueryObject.addWhereCondition("tipo_soggetto_virtuale = ?");
  2860.             sqlQueryObject.addWhereCondition("nome_soggetto_virtuale = ?");
  2861.             sqlQueryObject.setANDLogicOperator(true);
  2862.             String queryString = sqlQueryObject.createSQLQuery();

  2863.             stm = con.prepareStatement(queryString);
  2864.             stm.setString(1, soggettoVirtuale.getTipo());
  2865.             stm.setString(2, soggettoVirtuale.getNome());

  2866.             rs = stm.executeQuery();
  2867.             while (rs.next()){
  2868.                 lista.add(getPortaApplicativa(rs.getLong("id"),con));
  2869.             }
  2870.             rs.close();
  2871.             stm.close();

  2872.             return lista;

  2873.         } catch (Exception qe) {
  2874.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getPorteApplicativeBySoggettoVirtuale] Errore : " + qe.getMessage(),qe);
  2875.         } finally {
  2876.             //Chiudo statement and resultset
  2877.             JDBCUtilities.closeResources(rs, stm);

  2878.             this.driver.closeConnection(con);
  2879.         }

  2880.     }
  2881.    
  2882.     protected List<IDPortaApplicativa> getAllIdPorteApplicative(
  2883.             FiltroRicercaPorteApplicative filtroRicerca) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{

  2884.         Connection con = null;
  2885.         PreparedStatement stm = null;
  2886.         ResultSet rs = null;
  2887.         List<String> nomiPA = null;
  2888.        
  2889.         this.driver.logDebug("getAllIdPorteApplicative...");

  2890.         try {
  2891.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  2892.             // prendo la connessione dal pool
  2893.             if (this.driver.atomica)
  2894.                 con = this.driver.getConnectionFromDatasource("getAllIdPorteApplicative");
  2895.             else
  2896.                 con = this.driver.globalConnection;

  2897.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2898.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  2899.             if(filtroRicerca!=null && (filtroRicerca.getTipoSoggetto()!=null || filtroRicerca.getNomeSoggetto()!=null) ){
  2900.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  2901.             }
  2902.             sqlQueryObject.addSelectField(CostantiDB.PORTE_APPLICATIVE+".nome_porta");
  2903.             if(filtroRicerca!=null && (filtroRicerca.getTipoSoggetto()!=null || filtroRicerca.getNomeSoggetto()!=null) ){
  2904.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  2905.             }
  2906.             if(filtroRicerca!=null){
  2907.                 if(filtroRicerca.getIdRuolo()!=null){
  2908.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
  2909.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_RUOLI+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  2910.                 }
  2911.             }
  2912.             if(filtroRicerca!=null){
  2913.                 if(filtroRicerca.getIdScope()!=null){
  2914.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
  2915.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SCOPE+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  2916.                 }
  2917.             }
  2918.             if(filtroRicerca!=null){
  2919.                 if(filtroRicerca.getIdSoggettoAutorizzato()!=null &&
  2920.                         (filtroRicerca.getIdSoggettoAutorizzato().getTipo()!=null ||
  2921.                         filtroRicerca.getIdSoggettoAutorizzato().getNome()!=null)){
  2922.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
  2923.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SOGGETTI+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  2924.                 }
  2925.             }
  2926.             if(filtroRicerca!=null){
  2927.                 if(filtroRicerca.getIdServizioApplicativoAutorizzato()!=null &&
  2928.                         filtroRicerca.getIdServizioApplicativoAutorizzato().getNome()!=null &&
  2929.                         filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario()!=null &&
  2930.                         filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getTipo()!=null &&
  2931.                         filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getNome()!=null
  2932.                         ){
  2933.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);                  
  2934.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  2935.                 }
  2936.             }
  2937.             if(filtroRicerca!=null){
  2938.                 if(filtroRicerca.getIdServizioApplicativoAutorizzatoToken()!=null &&
  2939.                         filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getNome()!=null &&
  2940.                         filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario()!=null &&
  2941.                         filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getTipo()!=null &&
  2942.                         filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getNome()!=null
  2943.                         ){
  2944.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);                
  2945.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  2946.                 }
  2947.             }
  2948.             if(filtroRicerca!=null){
  2949.                 if(filtroRicerca.getIdRuoloToken()!=null){
  2950.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
  2951.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  2952.                 }
  2953.             }
  2954.             if(filtroRicerca!=null){
  2955.                 if(filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione()!=null &&
  2956.                         (filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getTipo()!=null ||
  2957.                         filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getNome()!=null)){
  2958.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI);
  2959.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SOGGETTI);
  2960.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  2961.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SOGGETTI+".id_trasformazione = "+CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI+".id");
  2962.                 }
  2963.             }
  2964.             boolean applicabilitaTrasformazioneTrasporto = false;
  2965.             boolean applicabilitaTrasformazioneSiaTrasportoCheToken = false;
  2966.             if(filtroRicerca!=null){
  2967.                 if(filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione()!=null &&
  2968.                         filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getNome()!=null &&
  2969.                         filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario()!=null &&
  2970.                         filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo()!=null &&
  2971.                         filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getNome()!=null
  2972.                         ){
  2973.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI);
  2974.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA);
  2975.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  2976.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA+".id_trasformazione = "+CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI+".id");
  2977.                     applicabilitaTrasformazioneTrasporto = true;
  2978.                 }
  2979.             }
  2980.             if(filtroRicerca!=null){
  2981.                 if(filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione()!=null &&
  2982.                         filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getNome()!=null &&
  2983.                         filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario()!=null &&
  2984.                         filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo()!=null &&
  2985.                         filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getNome()!=null
  2986.                         ){
  2987.                     if(applicabilitaTrasformazioneTrasporto) {
  2988.                         applicabilitaTrasformazioneSiaTrasportoCheToken = true;
  2989.                     }
  2990.                     else {
  2991.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI);
  2992.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA);
  2993.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  2994.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA+".id_trasformazione = "+CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI+".id");
  2995.                     }
  2996.                 }
  2997.             }
  2998.             boolean porteDelegatePerAzioni = false;
  2999.             if(filtroRicerca!=null && filtroRicerca.getNomePortaDelegante()!=null) {
  3000.                 porteDelegatePerAzioni = true;
  3001.                 if(filtroRicerca.getAzione()!=null) {
  3002.                     sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
  3003.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_AZIONI+".id_porta = "+CostantiDB.PORTE_APPLICATIVE+".id");
  3004.                 }
  3005.             }

  3006.             if(filtroRicerca!=null){
  3007.                 // Filtro By Data
  3008.                 if(filtroRicerca.getMinDate()!=null)
  3009.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".ora_registrazione > ?");
  3010.                 if(filtroRicerca.getMaxDate()!=null)
  3011.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".ora_registrazione < ?");
  3012.                 if(filtroRicerca.getTipoSoggetto()!=null)
  3013.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto = ?");
  3014.                 if(filtroRicerca.getNomeSoggetto()!=null)
  3015.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto = ?");
  3016.                 if(filtroRicerca.getTipoSoggettoVirtuale()!=null)
  3017.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".tipo_soggetto_virtuale = ?");
  3018.                 if(filtroRicerca.getNomeSoggettoVirtuale()!=null)
  3019.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".nome_soggetto_virtuale = ?");
  3020.                 if(filtroRicerca.getTipoServizio()!=null)
  3021.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".tipo_servizio = ?");
  3022.                 if(filtroRicerca.getNomeServizio()!=null)
  3023.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".servizio = ?");
  3024.                 if(filtroRicerca.getVersioneServizio()!=null)
  3025.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".versione_servizio = ?");
  3026.                 if(!porteDelegatePerAzioni && filtroRicerca.getAzione()!=null)
  3027.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".azione = ?");
  3028.                 if(filtroRicerca.getNome()!=null)
  3029.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".nome_porta = ?");
  3030.                 if(filtroRicerca.getIdRuolo()!=null)
  3031.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_RUOLI+".ruolo = ?");
  3032.                 if(filtroRicerca.getIdScope()!=null)
  3033.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SCOPE+".scope = ?");
  3034.                 if(filtroRicerca.getIdSoggettoAutorizzato()!=null &&
  3035.                         (filtroRicerca.getIdSoggettoAutorizzato().getTipo()!=null ||
  3036.                         filtroRicerca.getIdSoggettoAutorizzato().getNome()!=null)){
  3037.                     if(filtroRicerca.getIdSoggettoAutorizzato().getTipo()!=null) {
  3038.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SOGGETTI+".tipo_soggetto= ?");
  3039.                     }
  3040.                     if(filtroRicerca.getIdSoggettoAutorizzato().getNome()!=null) {
  3041.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SOGGETTI+".nome_soggetto= ?");
  3042.                     }
  3043.                 }
  3044.                 if(filtroRicerca!=null){
  3045.                     if(filtroRicerca.getIdServizioApplicativoAutorizzato()!=null &&
  3046.                             filtroRicerca.getIdServizioApplicativoAutorizzato().getNome()!=null &&
  3047.                             filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario()!=null &&
  3048.                             filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getTipo()!=null &&
  3049.                             filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getNome()!=null
  3050.                             ){
  3051.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI+".id_servizio_applicativo = ?");
  3052.                     }
  3053.                 }
  3054.                 if(filtroRicerca!=null){
  3055.                     if(filtroRicerca.getIdServizioApplicativoAutorizzatoToken()!=null &&
  3056.                             filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getNome()!=null &&
  3057.                             filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario()!=null &&
  3058.                             filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getTipo()!=null &&
  3059.                             filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getNome()!=null
  3060.                             ){
  3061.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA+".id_servizio_applicativo = ?");
  3062.                     }
  3063.                 }
  3064.                 if(filtroRicerca.getIdRuoloToken()!=null)
  3065.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI+".ruolo = ?");
  3066.                 if(filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione()!=null &&
  3067.                         (filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getTipo()!=null ||
  3068.                         filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getNome()!=null)){
  3069.                     if(filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getTipo()!=null) {
  3070.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SOGGETTI+".tipo_soggetto= ?");
  3071.                     }
  3072.                     if(filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getNome()!=null) {
  3073.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SOGGETTI+".nome_soggetto= ?");
  3074.                     }
  3075.                 }
  3076.                 if(applicabilitaTrasformazioneSiaTrasportoCheToken) {
  3077.                     sqlQueryObject.addWhereCondition(false,
  3078.                             CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA+".id_servizio_applicativo = ?",
  3079.                             CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA+".id_servizio_applicativo = ?");
  3080.                 }
  3081.                 else {
  3082.                     if(filtroRicerca!=null){
  3083.                         if(filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione()!=null &&
  3084.                                 filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getNome()!=null &&
  3085.                                 filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario()!=null &&
  3086.                                 filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo()!=null &&
  3087.                                 filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getNome()!=null
  3088.                                 ){
  3089.                             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA+".id_servizio_applicativo = ?");
  3090.                         }
  3091.                     }
  3092.                     if(filtroRicerca!=null){
  3093.                         if(filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione()!=null &&
  3094.                                 filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getNome()!=null &&
  3095.                                 filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario()!=null &&
  3096.                                 filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo()!=null &&
  3097.                                 filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getNome()!=null
  3098.                                 ){
  3099.                             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA+".id_servizio_applicativo = ?");
  3100.                         }
  3101.                     }
  3102.                 }
  3103.                 if(filtroRicerca.getStato()!=null)
  3104.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".stato = ?");
  3105.                 if(porteDelegatePerAzioni) {
  3106.                     sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE+".nome_porta_delegante_azione = ?");
  3107.                     if(filtroRicerca.getAzione()!=null)
  3108.                         sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_AZIONI+".azione = ?");
  3109.                 }
  3110.             }

  3111.             sqlQueryObject.setANDLogicOperator(true);
  3112.             String sqlQuery = sqlQueryObject.createSQLQuery();
  3113.             this.driver.logDebug("eseguo query : " + sqlQuery );
  3114.             stm = con.prepareStatement(sqlQuery);
  3115.             int indexStmt = 1;
  3116.             if(filtroRicerca!=null){
  3117.                 if(filtroRicerca.getMinDate()!=null){
  3118.                     this.driver.logDebug("minDate stmt.setTimestamp("+filtroRicerca.getMinDate()+")");
  3119.                     stm.setTimestamp(indexStmt, new Timestamp(filtroRicerca.getMinDate().getTime()));
  3120.                     indexStmt++;
  3121.                 }
  3122.                 if(filtroRicerca.getMaxDate()!=null){
  3123.                     this.driver.logDebug("maxDate stmt.setTimestamp("+filtroRicerca.getMaxDate()+")");
  3124.                     stm.setTimestamp(indexStmt, new Timestamp(filtroRicerca.getMaxDate().getTime()));
  3125.                     indexStmt++;
  3126.                 }  
  3127.                 if(filtroRicerca.getTipoSoggetto()!=null){
  3128.                     this.driver.logDebug("tipoSoggetto stmt.setString("+filtroRicerca.getTipoSoggetto()+")");
  3129.                     stm.setString(indexStmt, filtroRicerca.getTipoSoggetto());
  3130.                     indexStmt++;
  3131.                 }
  3132.                 if(filtroRicerca.getNomeSoggetto()!=null){
  3133.                     this.driver.logDebug("nomeSoggetto stmt.setString("+filtroRicerca.getNomeSoggetto()+")");
  3134.                     stm.setString(indexStmt, filtroRicerca.getNomeSoggetto());
  3135.                     indexStmt++;
  3136.                 }  
  3137.                 if(filtroRicerca.getTipoSoggettoVirtuale()!=null){
  3138.                     this.driver.logDebug("tipoSoggettoVirtuale stmt.setString("+filtroRicerca.getTipoSoggettoVirtuale()+")");
  3139.                     stm.setString(indexStmt, filtroRicerca.getTipoSoggettoVirtuale());
  3140.                     indexStmt++;
  3141.                 }
  3142.                 if(filtroRicerca.getNomeSoggettoVirtuale()!=null){
  3143.                     this.driver.logDebug("nomeSoggettoVirtuale stmt.setString("+filtroRicerca.getNomeSoggettoVirtuale()+")");
  3144.                     stm.setString(indexStmt, filtroRicerca.getNomeSoggettoVirtuale());
  3145.                     indexStmt++;
  3146.                 }  
  3147.                 if(filtroRicerca.getTipoServizio()!=null){
  3148.                     this.driver.logDebug("tipoServizio stmt.setString("+filtroRicerca.getTipoServizio()+")");
  3149.                     stm.setString(indexStmt, filtroRicerca.getTipoServizio());
  3150.                     indexStmt++;
  3151.                 }
  3152.                 if(filtroRicerca.getNomeServizio()!=null){
  3153.                     this.driver.logDebug("nomeServizio stmt.setString("+filtroRicerca.getNomeServizio()+")");
  3154.                     stm.setString(indexStmt, filtroRicerca.getNomeServizio());
  3155.                     indexStmt++;
  3156.                 }  
  3157.                 if(filtroRicerca.getVersioneServizio()!=null){
  3158.                     this.driver.logDebug("versioneServizio stmt.setInt("+filtroRicerca.getVersioneServizio()+")");
  3159.                     stm.setInt(indexStmt, filtroRicerca.getVersioneServizio());
  3160.                     indexStmt++;
  3161.                 }
  3162.                 if(!porteDelegatePerAzioni && filtroRicerca.getAzione()!=null){
  3163.                     this.driver.logDebug("azione stmt.setString("+filtroRicerca.getAzione()+")");
  3164.                     stm.setString(indexStmt, filtroRicerca.getAzione());
  3165.                     indexStmt++;
  3166.                 }  
  3167.                 if(filtroRicerca.getNome()!=null){
  3168.                     this.driver.logDebug("nome stmt.setString("+filtroRicerca.getNome()+")");
  3169.                     stm.setString(indexStmt, filtroRicerca.getNome());
  3170.                     indexStmt++;
  3171.                 }
  3172.                 if(filtroRicerca.getIdRuolo()!=null){
  3173.                     this.driver.logDebug("ruolo stmt.setString("+filtroRicerca.getIdRuolo().getNome()+")");
  3174.                     stm.setString(indexStmt, filtroRicerca.getIdRuolo().getNome());
  3175.                     indexStmt++;
  3176.                 }
  3177.                 if(filtroRicerca.getIdScope()!=null){
  3178.                     this.driver.logDebug("scope stmt.setString("+filtroRicerca.getIdScope().getNome()+")");
  3179.                     stm.setString(indexStmt, filtroRicerca.getIdScope().getNome());
  3180.                     indexStmt++;
  3181.                 }
  3182.                 if(filtroRicerca.getIdSoggettoAutorizzato()!=null &&
  3183.                         (filtroRicerca.getIdSoggettoAutorizzato().getTipo()!=null ||
  3184.                         filtroRicerca.getIdSoggettoAutorizzato().getNome()!=null)){
  3185.                     if(filtroRicerca.getIdSoggettoAutorizzato().getTipo()!=null) {
  3186.                         this.driver.logDebug("idSoggettoAutorizzazione.tipo stmt.setString("+filtroRicerca.getIdSoggettoAutorizzato().getTipo()+")");
  3187.                         stm.setString(indexStmt, filtroRicerca.getIdSoggettoAutorizzato().getTipo());
  3188.                         indexStmt++;
  3189.                     }
  3190.                     if(filtroRicerca.getIdSoggettoAutorizzato().getNome()!=null) {
  3191.                         this.driver.logDebug("idSoggettoAutorizzazione.nome stmt.setString("+filtroRicerca.getIdSoggettoAutorizzato().getNome()+")");
  3192.                         stm.setString(indexStmt, filtroRicerca.getIdSoggettoAutorizzato().getNome());
  3193.                         indexStmt++;
  3194.                     }
  3195.                 }
  3196.                 if(filtroRicerca!=null){
  3197.                     if(filtroRicerca.getIdServizioApplicativoAutorizzato()!=null &&
  3198.                             filtroRicerca.getIdServizioApplicativoAutorizzato().getNome()!=null &&
  3199.                             filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario()!=null &&
  3200.                             filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getTipo()!=null &&
  3201.                             filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getNome()!=null
  3202.                             ){
  3203.                         long idSA = DBUtils.getIdServizioApplicativo(filtroRicerca.getIdServizioApplicativoAutorizzato().getNome(),
  3204.                                 filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getTipo(), filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getNome(), con, this.driver.tipoDB);
  3205.                         this.driver.logDebug("idServizioApplicativoAutorizzato stmt.setLong("+idSA
  3206.                                 +") (getIdBy Nome["+filtroRicerca.getIdServizioApplicativoAutorizzato().getNome()
  3207.                                 +"] tipoSoggetto["+filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getTipo()+
  3208.                                 "] nomeSoggetto["+filtroRicerca.getIdServizioApplicativoAutorizzato().getIdSoggettoProprietario().getNome()+"])");
  3209.                         stm.setLong(indexStmt, idSA);
  3210.                         indexStmt++;
  3211.                     }
  3212.                 }
  3213.                 if(filtroRicerca!=null){
  3214.                     if(filtroRicerca.getIdServizioApplicativoAutorizzatoToken()!=null &&
  3215.                             filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getNome()!=null &&
  3216.                             filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario()!=null &&
  3217.                             filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getTipo()!=null &&
  3218.                             filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getNome()!=null
  3219.                             ){
  3220.                         long idSA = DBUtils.getIdServizioApplicativo(filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getNome(),
  3221.                                 filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getTipo(), filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getNome(), con, this.driver.tipoDB);
  3222.                         this.driver.logDebug("idServizioApplicativoAutorizzatoToken stmt.setLong("+idSA
  3223.                                 +") (getIdBy Nome["+filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getNome()
  3224.                                 +"] tipoSoggetto["+filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getTipo()+
  3225.                                 "] nomeSoggetto["+filtroRicerca.getIdServizioApplicativoAutorizzatoToken().getIdSoggettoProprietario().getNome()+"])");
  3226.                         stm.setLong(indexStmt, idSA);
  3227.                         indexStmt++;
  3228.                     }
  3229.                 }
  3230.                 if(filtroRicerca.getIdRuoloToken()!=null){
  3231.                     this.driver.logDebug("ruoloToken stmt.setString("+filtroRicerca.getIdRuoloToken().getNome()+")");
  3232.                     stm.setString(indexStmt, filtroRicerca.getIdRuoloToken().getNome());
  3233.                     indexStmt++;
  3234.                 }
  3235.                 if(filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione()!=null &&
  3236.                         (filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getTipo()!=null ||
  3237.                         filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getNome()!=null)){
  3238.                     if(filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getTipo()!=null) {
  3239.                         this.driver.logDebug("idSoggettoTrasformazioni.tipo stmt.setString("+filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getTipo()+")");
  3240.                         stm.setString(indexStmt, filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getTipo());
  3241.                         indexStmt++;
  3242.                     }
  3243.                     if(filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getNome()!=null) {
  3244.                         this.driver.logDebug("idSoggettoTrasformazioni.nome stmt.setString("+filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getNome()+")");
  3245.                         stm.setString(indexStmt, filtroRicerca.getIdSoggettoRiferitoApplicabilitaTrasformazione().getNome());
  3246.                         indexStmt++;
  3247.                     }
  3248.                 }
  3249.                 if(filtroRicerca!=null){
  3250.                     if(filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione()!=null &&
  3251.                             filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getNome()!=null &&
  3252.                             filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario()!=null &&
  3253.                             filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo()!=null &&
  3254.                             filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getNome()!=null
  3255.                             ){
  3256.                         long idSA = DBUtils.getIdServizioApplicativo(filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getNome(),
  3257.                                 filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo(), filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getNome(), con, this.driver.tipoDB);
  3258.                         this.driver.logDebug("idServizioApplicativoTrasformazioni stmt.setLong("+idSA
  3259.                                 +") (getIdBy Nome["+filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getNome()
  3260.                                 +"] tipoSoggetto["+filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo()+
  3261.                                 "] nomeSoggetto["+filtroRicerca.getIdServizioApplicativoRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getNome()+"])");
  3262.                         stm.setLong(indexStmt, idSA);
  3263.                         indexStmt++;
  3264.                     }
  3265.                 }
  3266.                 if(filtroRicerca!=null){
  3267.                     if(filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione()!=null &&
  3268.                             filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getNome()!=null &&
  3269.                             filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario()!=null &&
  3270.                             filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo()!=null &&
  3271.                             filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getNome()!=null
  3272.                             ){
  3273.                         long idSA = DBUtils.getIdServizioApplicativo(filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getNome(),
  3274.                                 filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo(), filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getNome(), con, this.driver.tipoDB);
  3275.                         this.driver.logDebug("idServizioApplicativoTokenTrasformazioni stmt.setLong("+idSA
  3276.                                 +") (getIdBy Nome["+filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getNome()
  3277.                                 +"] tipoSoggetto["+filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getTipo()+
  3278.                                 "] nomeSoggetto["+filtroRicerca.getIdServizioApplicativoTokenRiferitoApplicabilitaTrasformazione().getIdSoggettoProprietario().getNome()+"])");
  3279.                         stm.setLong(indexStmt, idSA);
  3280.                         indexStmt++;
  3281.                     }
  3282.                 }
  3283.                 if(filtroRicerca.getStato()!=null){
  3284.                     this.driver.logDebug("stato stmt.setString("+filtroRicerca.getStato().getValue()+")");
  3285.                     stm.setString(indexStmt, filtroRicerca.getStato().getValue());
  3286.                     indexStmt++;
  3287.                 }
  3288.                 if(porteDelegatePerAzioni) {
  3289.                     this.driver.logDebug("nomePortaDelegata stmt.setString("+filtroRicerca.getNomePortaDelegante()+")");
  3290.                     stm.setString(indexStmt, filtroRicerca.getNomePortaDelegante());
  3291.                     indexStmt++;
  3292.                     if(filtroRicerca.getAzione()!=null) {
  3293.                         this.driver.logDebug("azione stmt.setString("+filtroRicerca.getAzione()+")");
  3294.                         stm.setString(indexStmt, filtroRicerca.getAzione());
  3295.                         indexStmt++;
  3296.                     }
  3297.                 }
  3298.             }
  3299.             rs = stm.executeQuery();
  3300.             nomiPA = new ArrayList<>();
  3301.             while (rs.next()) {
  3302.                 nomiPA.add(rs.getString("nome_porta"));
  3303.             }
  3304.            
  3305.         }catch(Exception e){
  3306.             throw new DriverConfigurazioneException("getAllIdPorteApplicative error",e);
  3307.         } finally {

  3308.             //Chiudo statement and resultset
  3309.             JDBCUtilities.closeResources(rs, stm);

  3310.             this.driver.closeConnection(con);

  3311.         }

  3312.         if(nomiPA == null || nomiPA.size()<=0){
  3313.             if(filtroRicerca!=null)
  3314.                 throw new DriverConfigurazioneNotFound("PorteApplicative non trovate che rispettano il filtro di ricerca selezionato: "+filtroRicerca.toString());
  3315.             else
  3316.                 throw new DriverConfigurazioneNotFound("PorteApplicative non trovate");
  3317.         }else{
  3318.             List<IDPortaApplicativa> idsPA = new ArrayList<IDPortaApplicativa>();
  3319.             for (String nomePortaApplicativa : nomiPA) {
  3320.                 idsPA.add(this.getIDPortaApplicativa(nomePortaApplicativa));
  3321.             }
  3322.             return idsPA;
  3323.         }
  3324.     }
  3325.    
  3326.    
  3327.     protected List<IDConnettore> getConnettoriConsegnaNotifichePrioritarie(String queueName) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  3328.         Connection con = null;
  3329.         PreparedStatement stm = null;
  3330.         ResultSet rs = null;

  3331.         this.driver.logDebug("getConnettoriConsegnaNotifichePrioritarie...");

  3332.         try {
  3333.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  3334.             // prendo la connessione dal pool
  3335.             if (this.driver.atomica)
  3336.                 con = this.driver.getConnectionFromDatasource("getConnettoriConsegnaNotifichePrioritarie");
  3337.             else
  3338.                 con = this.driver.globalConnection;

  3339.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3340.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
  3341.             sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  3342.             sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  3343.             sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI+".nome");
  3344.             sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".tipo_soggetto");
  3345.             sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".nome_soggetto");
  3346.             sqlQueryObject.addSelectField(CostantiDB.PORTE_APPLICATIVE_SA+".connettore_nome");
  3347.             if(queueName!=null) {
  3348.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SA+".connettore_coda = ?");
  3349.             }
  3350.             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SA+".connettore_max_priorita = ?");
  3351.             sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SA+".id_servizio_applicativo = "+CostantiDB.SERVIZI_APPLICATIVI+".id");
  3352.             sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  3353.             sqlQueryObject.setANDLogicOperator(true);
  3354.            
  3355.             String sqlQuery = sqlQueryObject.createSQLQuery();
  3356.             this.driver.logDebug("eseguo query : " + sqlQuery );
  3357.             stm = con.prepareStatement(sqlQuery);
  3358.            
  3359.             int indexStmt = 1;
  3360.             if(queueName!=null) {
  3361.                 this.driver.logDebug("queue stmt.setString("+queueName+")");
  3362.                 stm.setString(indexStmt, queueName);
  3363.                 indexStmt++;
  3364.             }
  3365.             this.driver.logDebug("connettore_max_priorita stmt.setInt("+CostantiDB.TRUE+")");
  3366.             stm.setInt(indexStmt, CostantiDB.TRUE);
  3367.             indexStmt++;
  3368.            
  3369.             rs = stm.executeQuery();
  3370.             List<IDConnettore> idsSA = new ArrayList<IDConnettore>();
  3371.             while (rs.next()) {
  3372.                 IDSoggetto idS = new IDSoggetto(rs.getString("tipo_soggetto"),rs.getString("nome_soggetto"));
  3373.                 IDConnettore idSA = new IDConnettore();
  3374.                 idSA.setIdSoggettoProprietario(idS);
  3375.                 idSA.setNome(rs.getString("nome"));
  3376.                 idSA.setNomeConnettore(rs.getString("connettore_nome"));
  3377.                 if(idSA.getNomeConnettore()==null) {
  3378.                     idSA.setNomeConnettore(CostantiConfigurazione.NOME_CONNETTORE_DEFAULT);
  3379.                 }
  3380.                 idsSA.add(idSA);
  3381.             }
  3382.             if(idsSA.size()==0){
  3383.                 if(queueName!=null)
  3384.                     throw new DriverConfigurazioneNotFound("Connettori non trovati per la coda '"+queueName+"'");
  3385.                 else
  3386.                     throw new DriverConfigurazioneNotFound("Connettori non trovati");
  3387.             }else{
  3388.                 return idsSA;
  3389.             }
  3390.         }catch(DriverConfigurazioneNotFound de){
  3391.             throw de;
  3392.         }
  3393.         catch(Exception e){
  3394.             throw new DriverConfigurazioneException("getConnettoriConsegnaNotifichePrioritarie error",e);
  3395.         } finally {

  3396.             //Chiudo statement and resultset
  3397.             JDBCUtilities.closeResources(rs, stm);

  3398.             this.driver.closeConnection(con);

  3399.         }
  3400.     }
  3401.    
  3402.     protected int resetConnettoriConsegnaNotifichePrioritarie(String queueName) throws DriverConfigurazioneException {
  3403.         Connection con = null;
  3404.         PreparedStatement stm = null;
  3405.        
  3406.         this.driver.logDebug("resetConnettoriConsegnaNotifichePrioritarie...");

  3407.         try {
  3408.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  3409.             // prendo la connessione dal pool
  3410.             if (this.driver.atomica)
  3411.                 con = this.driver.getConnectionFromDatasource("getConnettoriConsegnaNotifichePrioritarie");
  3412.             else
  3413.                 con = this.driver.globalConnection;

  3414.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3415.             sqlQueryObject.addUpdateTable(CostantiDB.PORTE_APPLICATIVE_SA);
  3416.             sqlQueryObject.addUpdateField("connettore_max_priorita", "?");
  3417.             if(queueName!=null) {
  3418.                 sqlQueryObject.addWhereCondition(CostantiDB.PORTE_APPLICATIVE_SA+".connettore_coda = ?");
  3419.             }
  3420.             sqlQueryObject.setANDLogicOperator(true);
  3421.            
  3422.             String sqlQuery = sqlQueryObject.createSQLUpdate();
  3423.             this.driver.logDebug("eseguo query : " + sqlQuery );
  3424.             stm = con.prepareStatement(sqlQuery);
  3425.            
  3426.             int indexStmt = 1;
  3427.             this.driver.logDebug("connettore_max_priorita stmt.setInt("+CostantiDB.FALSE+")");
  3428.             stm.setInt(indexStmt, CostantiDB.FALSE);
  3429.             indexStmt++;
  3430.             if(queueName!=null) {
  3431.                 this.driver.logDebug("queue stmt.setString("+queueName+")");
  3432.                 stm.setString(indexStmt, queueName);
  3433.                 indexStmt++;
  3434.             }

  3435.            
  3436.             int rows = stm.executeUpdate();
  3437.             return rows;
  3438.            
  3439.         }
  3440.         catch(Exception e){
  3441.             throw new DriverConfigurazioneException("resetConnettoriConsegnaNotifichePrioritarie error",e);
  3442.         } finally {

  3443.             //Chiudo statement and resultset
  3444.             JDBCUtilities.closeResources(stm);

  3445.             this.driver.closeConnection(con);

  3446.         }
  3447.     }
  3448.    
  3449.     protected List<PortaApplicativa> getPorteApplicativeByPolicyGestioneToken(String nome) throws DriverConfigurazioneException{
  3450.         String nomeMetodo = "getPorteApplicativeByPolicyGestioneToken";

  3451.         Connection con = null;
  3452.         PreparedStatement stmt=null;
  3453.         ResultSet risultato=null;
  3454.         ArrayList<PortaApplicativa> lista = new ArrayList<>();

  3455.         if (this.driver.atomica) {
  3456.             try {
  3457.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  3458.             } catch (Exception e) {
  3459.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  3460.             }

  3461.         } else
  3462.             con = this.driver.globalConnection;

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

  3464.         try {

  3465.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3466.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  3467.             sqlQueryObject.addSelectField("id");
  3468.             sqlQueryObject.addWhereCondition("token_policy=?");
  3469.             String queryString = sqlQueryObject.createSQLQuery();
  3470.             stmt = con.prepareStatement(queryString);
  3471.             stmt.setString(1, nome);
  3472.             risultato = stmt.executeQuery();

  3473.             while (risultato.next()) {

  3474.                 Long id = risultato.getLong("id");
  3475.                 lista.add(this.getPortaApplicativa(id));

  3476.             }

  3477.             return lista;

  3478.         } catch (Exception qe) {
  3479.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  3480.         } finally {
  3481.             //Chiudo statement and resultset
  3482.             JDBCUtilities.closeResources(risultato, stmt);
  3483.             this.driver.closeConnection(con);
  3484.         }
  3485.     }
  3486.    
  3487.     protected MappingErogazionePortaApplicativa getMappingErogazione(IDServizio idServizio, IDPortaApplicativa idPortaApplicativa) throws DriverConfigurazioneException,DriverConfigurazioneNotFound {
  3488.        
  3489.         Connection con = null;
  3490.         if (this.driver.atomica) {
  3491.             try {
  3492.                 con = this.driver.getConnectionFromDatasource("getMappingErogazione");

  3493.             } catch (Exception e) {
  3494.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getMappingErogazione] Exception accedendo al datasource :" + e.getMessage(),e);

  3495.             }

  3496.         } else
  3497.             con = this.driver.globalConnection;

  3498.         try {
  3499.            
  3500.             return DBMappingUtils.getMappingErogazione(idServizio, idPortaApplicativa, con, this.driver.tipoDB);

  3501.         } catch (Exception se) {
  3502.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::getMappingErogazione] Exception: " + se.getMessage(),se);
  3503.         } finally {
  3504.            
  3505.             this.driver.closeConnection(con);
  3506.         }
  3507.        
  3508.     }
  3509.    
  3510.     protected static List<String> normalizeConnettoriMultpliById(List<String> sa, PortaApplicativa pa){
  3511.        
  3512.         if(pa==null || pa.getBehaviour()==null || pa.sizeServizioApplicativoList()<=0) {
  3513.             return null;
  3514.         }
  3515.        
  3516.         List<String> lId = new ArrayList<>();
  3517.         Map<String, String> m = new HashMap<>();
  3518.         for (String s : sa) {
  3519.             for (PortaApplicativaServizioApplicativo pasa : pa.getServizioApplicativoList()) {
  3520.                 if(pasa!=null && pasa.getNome()!=null && pasa.getNome().equals(s)) {
  3521.                     if(pasa.getId()==null || pasa.getId()<=0) {
  3522.                         return null;
  3523.                     }
  3524.                     long id = pasa.getId();
  3525.                     String nomeConnettore = CostantiConfigurazione.NOME_CONNETTORE_DEFAULT;
  3526.                     if(pasa!=null && pasa.getDatiConnettore()!=null && pasa.getDatiConnettore().getNome()!=null) {
  3527.                         nomeConnettore = pasa.getDatiConnettore().getNome();
  3528.                     }
  3529.                     lId.add(id+"");
  3530.                     m.put(id+"",nomeConnettore);
  3531.                     break;
  3532.                 }
  3533.             }
  3534.         }
  3535.        
  3536.         List<String> sorted = new ArrayList<>();
  3537.         Collections.sort(lId);
  3538.         for (String sId : lId) {
  3539.             sorted.add(m.get(sId));
  3540.         }
  3541.        
  3542.         return sorted;
  3543.     }
  3544.    
  3545.     protected ProprietaOggetto getProprietaOggetto(IDPortaApplicativa idPA) throws DriverConfigurazioneException,DriverConfigurazioneNotFound{
  3546.        
  3547.         String nomeMetodo = "getProprietaOggetto";
  3548.        
  3549.         if (idPA == null || idPA.getNome()==null)
  3550.             throw new DriverConfigurazioneException("["+nomeMetodo+"] Parametro Non Valido");

  3551.         Connection con = null;
  3552.         PreparedStatement stm = null;
  3553.         ResultSet rs = null;
  3554.         String sqlQuery = "";

  3555.         if (this.driver.atomica) {
  3556.             try {
  3557.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);

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

  3560.             }

  3561.         } else
  3562.             con = this.driver.globalConnection;

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

  3564.         try {
  3565.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3566.             sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  3567.             sqlQueryObject.addSelectField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE);
  3568.             sqlQueryObject.addSelectField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE);
  3569.             sqlQueryObject.addSelectField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA);
  3570.             sqlQueryObject.addSelectField(CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA);
  3571.             sqlQueryObject.addWhereCondition("nome_porta = ?");
  3572.             sqlQuery = sqlQueryObject.createSQLQuery();
  3573.             stm = con.prepareStatement(sqlQuery);

  3574.             stm.setString(1, idPA.getNome());

  3575.             this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idPA.getNome()));
  3576.             rs = stm.executeQuery();

  3577.             ProprietaOggetto proprieta = null;
  3578.             if (rs.next()) {            
  3579.                 proprieta = this.utilsDriver.readProprietaOggetto(rs, false);
  3580.             }
  3581.             else{
  3582.                 throw new DriverConfigurazioneNotFound("PortaApplicativa ["+idPA.getNome()+"] non esistente");
  3583.             }

  3584.             return proprieta;

  3585.         } catch (SQLException se) {

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

  3588.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::"+nomeMetodo+"] Exception: " + se.getMessage(),se);
  3589.         }
  3590.         finally {

  3591.             //Chiudo statement and resultset
  3592.             JDBCUtilities.closeResources(rs, stm);
  3593.             this.driver.closeConnection(con);
  3594.         }
  3595.     }
  3596.    
  3597.     protected void updateProprietaOggetto(IDPortaApplicativa idPA, String user) throws DriverConfigurazioneException {
  3598.         if(idPA==null || idPA.getNome()==null) {
  3599.             throw new DriverConfigurazioneException("Identificativo non fornito");
  3600.         }
  3601.         this.porteDriver.updateProprietaOggetto(idPA.getNome(), user, CostantiDB.PORTE_APPLICATIVE);
  3602.     }
  3603. }