DriverConfigurazioneDB_porteTrasformazioniDriver.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.util.ArrayList;
  25. import java.util.List;

  26. import org.openspcoop2.core.commons.DBUtils;
  27. import org.openspcoop2.core.commons.ISearch;
  28. import org.openspcoop2.core.commons.Liste;
  29. import org.openspcoop2.core.config.TrasformazioneRegola;
  30. import org.openspcoop2.core.config.TrasformazioneRegolaApplicabilitaRichiesta;
  31. import org.openspcoop2.core.config.TrasformazioneRegolaApplicabilitaRisposta;
  32. import org.openspcoop2.core.config.TrasformazioneRegolaApplicabilitaServizioApplicativo;
  33. import org.openspcoop2.core.config.TrasformazioneRegolaApplicabilitaSoggetto;
  34. import org.openspcoop2.core.config.TrasformazioneRegolaParametro;
  35. import org.openspcoop2.core.config.TrasformazioneRegolaRichiesta;
  36. import org.openspcoop2.core.config.TrasformazioneRegolaRisposta;
  37. import org.openspcoop2.core.config.TrasformazioneRest;
  38. import org.openspcoop2.core.config.TrasformazioneSoap;
  39. import org.openspcoop2.core.config.TrasformazioneSoapRisposta;
  40. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  41. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  42. import org.openspcoop2.core.constants.CostantiDB;
  43. import org.openspcoop2.utils.jdbc.IJDBCAdapter;
  44. import org.openspcoop2.utils.jdbc.JDBCAdapterFactory;
  45. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  46. import org.openspcoop2.utils.sql.ISQLQueryObject;
  47. import org.openspcoop2.utils.sql.SQLObjectFactory;

  48. /**
  49.  * DriverConfigurazioneDB_porteDriver
  50.  *
  51.  *
  52.  * @author Sandra Giangrandi (sandra@link.it)
  53.  * @author Stefano Corallo (corallo@link.it)
  54.  * @author $Author$
  55.  * @version $Rev$, $Date$
  56.  */
  57. public class DriverConfigurazioneDB_porteTrasformazioniDriver {

  58.     private DriverConfigurazioneDB driver = null;
  59.    
  60.     protected DriverConfigurazioneDB_porteTrasformazioniDriver(DriverConfigurazioneDB driver) {
  61.         this.driver = driver;
  62.     }
  63.    
  64.     protected List<TrasformazioneRegola> porteDelegateTrasformazioniList(long idPA, ISearch ricerca) throws DriverConfigurazioneException {
  65.         int idLista = Liste.PORTE_DELEGATE_TRASFORMAZIONI;
  66.         String nomeMetodo = "porteDelegateTrasformazioniList";
  67.         boolean delegata = true;
  68.         return getEngineTrasformazioniList(idPA, ricerca, idLista, nomeMetodo, delegata);
  69.     }
  70.    
  71.     protected List<TrasformazioneRegola> porteApplicativeTrasformazioniList(long idPA, ISearch ricerca) throws DriverConfigurazioneException {
  72.         int idLista = Liste.PORTE_APPLICATIVE_TRASFORMAZIONI;
  73.         String nomeMetodo = "porteApplicativeTrasformazioniList";
  74.         boolean delegata = false;
  75.         return getEngineTrasformazioniList(idPA, ricerca, idLista, nomeMetodo, delegata);
  76.     }
  77.    
  78.     private List<TrasformazioneRegola> getEngineTrasformazioniList(long idPA, ISearch ricerca, int idLista, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  79.         int offset;
  80.         int limit;
  81.         String queryString;

  82.         limit = ricerca.getPageSize(idLista);
  83.         offset = ricerca.getIndexIniziale(idLista);

  84.         Connection con = null;
  85.         PreparedStatement stmt = null;
  86.         ResultSet rs = null;
  87.         PreparedStatement stm1 = null;
  88.         ResultSet rs1 = null;
  89.         PreparedStatement stm0 = null;
  90.         ResultSet rs0 = null;
  91.        
  92.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;

  93.         if (this.driver.atomica) {
  94.             try {
  95.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  96.             } catch (Exception e) {
  97.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  98.             }

  99.         } else
  100.             con = this.driver.globalConnection;

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

  102.         List<TrasformazioneRegola> lista = new ArrayList<>();
  103.         try {
  104.            
  105.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  106.             sqlQueryObject.addFromTable(nomeTabella);
  107.             sqlQueryObject.addSelectCountField(nomeTabella+".id", "cont");
  108.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  109.             sqlQueryObject.setSelectDistinct(true);
  110.             sqlQueryObject.setANDLogicOperator(true);
  111.             queryString = sqlQueryObject.createSQLQuery();
  112.             stmt = con.prepareStatement(queryString);
  113.             stmt.setLong(1, idPA);

  114.             rs = stmt.executeQuery();
  115.             if (rs.next())
  116.                 ricerca.setNumEntries(idLista,rs.getInt(1));
  117.             rs.close();
  118.             stmt.close();

  119.             // ricavo le entries
  120.             if (limit == 0) // con limit
  121.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  122.            
  123.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  124.             sqlQueryObject.addFromTable(nomeTabella);
  125.             sqlQueryObject.addSelectField("id_porta");
  126.             sqlQueryObject.addSelectField("nome");
  127.             sqlQueryObject.addSelectField("posizione");
  128.             sqlQueryObject.addSelectField("id");
  129.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  130.             sqlQueryObject.setSelectDistinct(true);
  131.             sqlQueryObject.setANDLogicOperator(true);
  132.             sqlQueryObject.addOrderBy(nomeTabella+".posizione");
  133.             sqlQueryObject.addOrderBy(nomeTabella+".nome");
  134.             sqlQueryObject.setSortType(true);
  135.             sqlQueryObject.setLimit(limit);
  136.             sqlQueryObject.setOffset(offset);
  137.             queryString = sqlQueryObject.createSQLQuery();
  138.             stmt = con.prepareStatement(queryString);
  139.             stmt.setLong(1, idPA);

  140.             rs = stmt.executeQuery();

  141.             List<Long> idTrasformazione = new ArrayList<>();            
  142.             while (rs.next()) {
  143.                
  144.                 idTrasformazione.add(rs.getLong("id"));
  145.                
  146.             }
  147.             rs.close();
  148.             stmt.close();
  149.            
  150.             if(idTrasformazione!=null && !idTrasformazione.isEmpty()) {
  151.            
  152.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  153.                 sqlQueryObject.addFromTable(nomeTabella);
  154.                 sqlQueryObject.addSelectField("*");
  155.                 sqlQueryObject.setANDLogicOperator(true);
  156.                 sqlQueryObject.addWhereCondition("id = ?");
  157.                 queryString = sqlQueryObject.createSQLQuery();
  158.                
  159.                 for (Long idLongTrasformazione : idTrasformazione) {
  160.                    
  161.                     stmt = con.prepareStatement(queryString);
  162.                     stmt.setLong(1, idLongTrasformazione);

  163.                     rs = stmt.executeQuery();
  164.                    
  165.                     if (rs.next()) {
  166.                                    
  167.                         TrasformazioneRegola regola = new TrasformazioneRegola();
  168.                        
  169.                         String nome = rs.getString("nome");
  170.                         regola.setNome(nome);
  171.        
  172.                         int posizione = rs.getInt("posizione");
  173.                         regola.setPosizione(posizione);
  174.                        
  175.                         StatoFunzionalita stato = DriverConfigurazioneDBLib.getEnumStatoFunzionalita(rs.getString("stato"));
  176.                         regola.setStato(stato);
  177.                        
  178.                         String applicabilita_azioni = rs.getString("applicabilita_azioni");
  179.                         String applicabilita_ct = rs.getString("applicabilita_ct");
  180.                         String applicabilita_pattern = rs.getString("applicabilita_pattern");
  181.                         String applicabilita_connettori = rs.getString("applicabilita_connettori");
  182.                         if( (applicabilita_azioni!=null && !"".equals(applicabilita_azioni)) ||
  183.                                 (applicabilita_ct!=null && !"".equals(applicabilita_ct)) ||
  184.                                 (applicabilita_pattern!=null && !"".equals(applicabilita_pattern))  ||
  185.                                 (applicabilita_connettori!=null && !"".equals(applicabilita_connettori))
  186.                                 ) {
  187.                             TrasformazioneRegolaApplicabilitaRichiesta applicabilita = new TrasformazioneRegolaApplicabilitaRichiesta();
  188.                            
  189.                             if( (applicabilita_azioni!=null && !"".equals(applicabilita_azioni)) ) {
  190.                                 if(applicabilita_azioni.contains(",")) {
  191.                                     String [] tmp = applicabilita_azioni.split(",");
  192.                                     for (int i = 0; i < tmp.length; i++) {
  193.                                         applicabilita.addAzione(tmp[i].trim());
  194.                                     }
  195.                                 }
  196.                                 else {
  197.                                     applicabilita.addAzione(applicabilita_azioni);
  198.                                 }
  199.                             }
  200.                            
  201.                             if( (applicabilita_ct!=null && !"".equals(applicabilita_ct)) ) {
  202.                                 if(applicabilita_ct.contains(",")) {
  203.                                     String [] tmp = applicabilita_ct.split(",");
  204.                                     for (int i = 0; i < tmp.length; i++) {
  205.                                         applicabilita.addContentType(tmp[i].trim());
  206.                                     }
  207.                                 }
  208.                                 else {
  209.                                     applicabilita.addContentType(applicabilita_ct);
  210.                                 }
  211.                             }
  212.                            
  213.                             if(applicabilita_pattern!=null && !"".equals(applicabilita_pattern)){
  214.                                 applicabilita.setPattern(applicabilita_pattern);
  215.                             }
  216.                            
  217.                             if( (applicabilita_connettori!=null && !"".equals(applicabilita_connettori)) ) {
  218.                                 if(applicabilita_connettori.contains(",")) {
  219.                                     String [] tmp = applicabilita_connettori.split(",");
  220.                                     for (int i = 0; i < tmp.length; i++) {
  221.                                         applicabilita.addConnettore(tmp[i].trim());
  222.                                     }
  223.                                 }
  224.                                 else {
  225.                                     applicabilita.addConnettore(applicabilita_connettori);
  226.                                 }
  227.                             }
  228.                            
  229.                             regola.setApplicabilita(applicabilita);
  230.                         }
  231.                        
  232.                         TrasformazioneRegolaRichiesta richiesta = new TrasformazioneRegolaRichiesta();
  233.                        
  234.                         int req_conversione_enabled = rs.getInt("req_conversione_enabled");
  235.                         if(CostantiDB.TRUE == req_conversione_enabled) {
  236.                             richiesta.setConversione(true);
  237.                         }
  238.                         else {
  239.                             richiesta.setConversione(false);
  240.                         }
  241.                         richiesta.setConversioneTipo(rs.getString("req_conversione_tipo"));
  242.                         IJDBCAdapter jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(this.driver.tipoDB);
  243.                         richiesta.setConversioneTemplate(jdbcAdapter.getBinaryData(rs, "req_conversione_template"));
  244.                         richiesta.setContentType(rs.getString("req_content_type"));
  245.                        
  246.                         int trasformazione_rest = rs.getInt("rest_transformation");
  247.                         if(CostantiDB.TRUE == trasformazione_rest) {
  248.                             TrasformazioneRest trasformazioneRest = new TrasformazioneRest();
  249.                             trasformazioneRest.setMetodo(rs.getString("rest_method"));
  250.                             trasformazioneRest.setPath(rs.getString("rest_path"));
  251.                             richiesta.setTrasformazioneRest(trasformazioneRest);
  252.                         }
  253.                            
  254.                         int trasformazione_soap = rs.getInt("soap_transformation");
  255.                         if(CostantiDB.TRUE == trasformazione_soap) {
  256.                             TrasformazioneSoap trasformazioneSoap = new TrasformazioneSoap();
  257.                            
  258.                             trasformazioneSoap.setVersione(DriverConfigurazioneDBLib.getEnumVersioneSOAP(rs.getString("soap_version")));
  259.                             trasformazioneSoap.setSoapAction(rs.getString("soap_action"));
  260.                            
  261.                             int envelope = rs.getInt("soap_envelope");
  262.                             if(CostantiDB.TRUE == envelope) {
  263.                                 trasformazioneSoap.setEnvelope(true);
  264.                             }
  265.                             else {
  266.                                 trasformazioneSoap.setEnvelope(false);
  267.                             }
  268.                            
  269.                             int envelope_as_attach = rs.getInt("soap_envelope_as_attach");
  270.                             if(CostantiDB.TRUE == envelope_as_attach) {
  271.                                 trasformazioneSoap.setEnvelopeAsAttachment(true);
  272.                                
  273.                                 trasformazioneSoap.setEnvelopeBodyConversioneTipo(rs.getString("soap_envelope_tipo"));
  274.                                 trasformazioneSoap.setEnvelopeBodyConversioneTemplate(jdbcAdapter.getBinaryData(rs, "soap_envelope_template"));
  275.                             }
  276.                             else {
  277.                                 trasformazioneSoap.setEnvelopeAsAttachment(false);
  278.                             }
  279.                            
  280.                             richiesta.setTrasformazioneSoap(trasformazioneSoap);
  281.                         }
  282.                        
  283.                        
  284.                         regola.setId(rs.getLong("id"));
  285.                        
  286.                         regola.setRichiesta(richiesta);
  287.                        
  288.                        
  289.                         // ** SOGGETTI **
  290.                        
  291.                         if(!portaDelegata) {
  292.                            
  293.                             nomeTabella = CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SOGGETTI;
  294.                            
  295.                             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  296.                             sqlQueryObject.addFromTable(nomeTabella);
  297.                             sqlQueryObject.addSelectField("*");
  298.                             sqlQueryObject.addWhereCondition("id_trasformazione=?");
  299.                             String sqlQuery = sqlQueryObject.createSQLQuery();
  300.                             stm0 = con.prepareStatement(sqlQuery);
  301.                             stm0.setLong(1, regola.getId());
  302.                             rs0 = stm0.executeQuery();
  303.            
  304.                             while (rs0.next()) {
  305.                                
  306.                                 if(regola.getApplicabilita()==null) {
  307.                                     regola.setApplicabilita(new TrasformazioneRegolaApplicabilitaRichiesta());
  308.                                 }
  309.                                
  310.                                 TrasformazioneRegolaApplicabilitaSoggetto soggetto = new TrasformazioneRegolaApplicabilitaSoggetto();
  311.                                 soggetto.setTipo(rs0.getString("tipo_soggetto"));
  312.                                 soggetto.setNome(rs0.getString("nome_soggetto"));
  313.                                
  314.                                 regola.getApplicabilita().addSoggetto(soggetto);
  315.                            
  316.                             }
  317.                             rs0.close();
  318.                             stm0.close();
  319.                         }
  320.                        
  321.                        
  322.                         // ** APPLICATIVI **
  323.                        
  324.                         nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA;
  325.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  326.                         sqlQueryObject.addFromTable(nomeTabella);
  327.                         sqlQueryObject.addSelectField("*");
  328.                         sqlQueryObject.addWhereCondition("id_trasformazione=?");
  329.                         String sqlQuery = sqlQueryObject.createSQLQuery();
  330.                         stm0 = con.prepareStatement(sqlQuery);
  331.                         stm0.setLong(1, regola.getId());
  332.                         rs0 = stm0.executeQuery();
  333.        
  334.                         // per ogni entry
  335.                         // prendo l'id del servizio associato, recupero il nome e
  336.                         // aggiungo
  337.                         // il servizio applicativo alla PortaDelegata da ritornare
  338.                         while (rs0.next()) {
  339.                             long idSA = rs0.getLong("id_servizio_applicativo");
  340.        
  341.                             if (idSA != 0) {
  342.                                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  343.                                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  344.                                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  345.                                 sqlQueryObject.addSelectField("nome");
  346.                                 sqlQueryObject.addSelectField("tipo_soggetto");
  347.                                 sqlQueryObject.addSelectField("nome_soggetto");
  348.                                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".id=?");
  349.                                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+".id_soggetto="+CostantiDB.SOGGETTI+".id");
  350.                                 sqlQueryObject.setANDLogicOperator(true);
  351.                                 sqlQuery = sqlQueryObject.createSQLQuery();
  352.                                 stm1 = con.prepareStatement(sqlQuery);
  353.                                 stm1.setLong(1, idSA);
  354.        
  355.                                 this.driver.logDebug("eseguo query : " + DBUtils.formatSQLString(sqlQuery, idSA));
  356.        
  357.                                 rs1 = stm1.executeQuery();
  358.        
  359.                                 TrasformazioneRegolaApplicabilitaServizioApplicativo servizioApplicativo = null;
  360.                                 if (rs1.next()) {
  361.                                     // setto solo il nome come da specifica
  362.                                     servizioApplicativo = new TrasformazioneRegolaApplicabilitaServizioApplicativo();
  363.                                     servizioApplicativo.setId(idSA);
  364.                                     servizioApplicativo.setNome(rs1.getString("nome"));
  365.                                     servizioApplicativo.setTipoSoggettoProprietario(rs1.getString("tipo_soggetto"));
  366.                                     servizioApplicativo.setNomeSoggettoProprietario(rs1.getString("nome_soggetto"));
  367.                                     if(regola.getApplicabilita()==null) {
  368.                                         regola.setApplicabilita(new TrasformazioneRegolaApplicabilitaRichiesta());
  369.                                     }
  370.                                     regola.getApplicabilita().addServizioApplicativo(servizioApplicativo);
  371.                                 }
  372.                                 rs1.close();
  373.                                 stm1.close();
  374.                             }
  375.                         }
  376.                         rs0.close();
  377.                         stm0.close();
  378.                        
  379.                                        
  380.                         lista.add(regola);

  381.                     }
  382.                    
  383.                     rs.close();
  384.                     stmt.close();
  385.                 }
  386.             }

  387.         } catch (Exception qe) {
  388.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  389.         } finally {

  390.             //Chiudo statement and resultset
  391.             JDBCUtilities.closeResources(rs1, stm1);
  392.             JDBCUtilities.closeResources(rs0, stm0);
  393.             JDBCUtilities.closeResources(rs, stmt);

  394.             this.driver.closeConnection(con);
  395.         }
  396.        
  397.         return lista;
  398.     }
  399.    
  400.     protected boolean azioneUsataInTrasformazioniPortaDelegata(String azione) throws DriverConfigurazioneException {
  401.         return this.azioneUsataInTrasformazioni(azione, true);
  402.     }
  403.     protected boolean azioneUsataInTrasformazioniPortaApplicativa(String azione) throws DriverConfigurazioneException {
  404.         return this.azioneUsataInTrasformazioni(azione, false);
  405.     }
  406.     private boolean azioneUsataInTrasformazioni(String azione, boolean portaDelegata) throws DriverConfigurazioneException {

  407.         String nomeMetodo = "azioneUsataInTrasformazioni";
  408.        
  409.         Connection con = null;
  410.         PreparedStatement stmt = null;
  411.         ResultSet rs = null;

  412.        
  413.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;

  414.         if (this.driver.atomica) {
  415.             try {
  416.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  417.             } catch (Exception e) {
  418.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  419.             }

  420.         } else
  421.             con = this.driver.globalConnection;

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

  423.         try {
  424.            
  425.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  426.             sqlQueryObject.addFromTable(nomeTabella);
  427.             sqlQueryObject.addSelectField("applicabilita_azioni");
  428.             sqlQueryObject.addWhereLikeCondition("applicabilita_azioni", azione, false, true, false);
  429.             sqlQueryObject.setANDLogicOperator(true);
  430.             stmt = con.prepareStatement(sqlQueryObject.createSQLQuery());
  431.             rs = stmt.executeQuery();

  432.             while (rs.next()) {
  433.                
  434.                 String checkAz = rs.getString("applicabilita_azioni");
  435.                 if(checkAz!=null) {
  436.                     if(azione.equals(checkAz)) {
  437.                         return true;
  438.                     }
  439.                     if(checkAz.contains(",")) {
  440.                         String [] tmp = checkAz.split(",");
  441.                         if(tmp!=null && tmp.length>0) {
  442.                             for (int i = 0; i < tmp.length; i++) {
  443.                                 if(azione.equals(tmp[i])) {
  444.                                     return true;
  445.                                 }
  446.                             }
  447.                         }
  448.                     }
  449.                 }

  450.             }

  451.         } catch (Exception qe) {
  452.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  453.         } finally {

  454.             //Chiudo statement and resultset
  455.             JDBCUtilities.closeResources(rs, stmt);

  456.             this.driver.closeConnection(con);
  457.         }
  458.        
  459.         return false;
  460.     }
  461.    
  462.    
  463.     protected TrasformazioneRegola getPortaApplicativaTrasformazione(long idPorta, String azioni, String pattern, String contentType, String connettori,
  464.             List<TrasformazioneRegolaApplicabilitaSoggetto> soggetti,
  465.             List<TrasformazioneRegolaApplicabilitaServizioApplicativo> applicativi,
  466.             boolean interpretaNullList) throws DriverConfigurazioneException {
  467.         String nomeMetodo = "getPortaApplicativaTrasformazione";
  468.         boolean delegata = false;
  469.        
  470.         return getEngineTrasformazione(idPorta, azioni, pattern, contentType, connettori, soggetti, applicativi, nomeMetodo, delegata, interpretaNullList);
  471.        
  472.     }
  473.    
  474.     protected TrasformazioneRegola getPortaDelegataTrasformazione(long idPorta, String azioni, String pattern, String contentType, String connettori,
  475.             List<TrasformazioneRegolaApplicabilitaServizioApplicativo> applicativi) throws DriverConfigurazioneException {
  476.         String nomeMetodo = "getPortaDelegataTrasformazione";
  477.         boolean delegata = true;
  478.         return getEngineTrasformazione(idPorta, azioni, pattern, contentType, connettori, null, applicativi, nomeMetodo, delegata,
  479.                 true); // esiste solo una lista
  480.     }
  481.    
  482.     private TrasformazioneRegola getEngineTrasformazione(long idPorta, String azioni, String pattern, String contentType, String connettori,
  483.             List<TrasformazioneRegolaApplicabilitaSoggetto> soggetti,
  484.             List<TrasformazioneRegolaApplicabilitaServizioApplicativo> applicativi,
  485.             String nomeMetodo, boolean portaDelegata, boolean interpretaNullList) throws DriverConfigurazioneException {
  486.         Connection con = null;
  487.         PreparedStatement stmt=null;
  488.         ResultSet risultato=null;
  489.         String queryString;
  490.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  491.         String nomeTabellaSoggetti = CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SOGGETTI; //portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SOGGETTI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SOGGETTI;
  492.         String nomeTabellaSA = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA;
  493.        
  494.         if (this.driver.atomica) {
  495.             try {
  496.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  497.             } catch (Exception e) {
  498.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  499.             }

  500.         } else
  501.             con = this.driver.globalConnection;

  502.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);
  503.         TrasformazioneRegola regola = null;
  504.         try {

  505.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  506.             sqlQueryObject.addFromTable(nomeTabella);
  507.             sqlQueryObject.addSelectField("*");
  508.             sqlQueryObject.setANDLogicOperator(true);
  509.            
  510.             sqlQueryObject.addWhereCondition("id_porta = ?");
  511.            
  512.             if(azioni != null) {
  513.                 //sqlQueryObject.addWhereCondition("applicabilita_azioni = ?");
  514.                 sqlQueryObject.addWhereLikeCondition("applicabilita_azioni", azioni, false, false);
  515.             } else {
  516.                 sqlQueryObject.addWhereIsNullCondition("applicabilita_azioni");
  517.             }
  518.            
  519.             if(pattern != null) {
  520.                 //sqlQueryObject.addWhereCondition("applicabilita_pattern = ?");
  521.                 sqlQueryObject.addWhereLikeCondition("applicabilita_pattern", pattern, false, false);
  522.             } else {
  523.                 sqlQueryObject.addWhereIsNullCondition("applicabilita_pattern");
  524.             }
  525.            
  526.             if(contentType != null) {
  527.                 //sqlQueryObject.addWhereCondition("applicabilita_ct = ?");
  528.                 sqlQueryObject.addWhereLikeCondition("applicabilita_ct", contentType, false, false);
  529.             } else {
  530.                 sqlQueryObject.addWhereIsNullCondition("applicabilita_ct");
  531.             }
  532.            
  533.             if(connettori != null) {
  534.                 //sqlQueryObject.addWhereCondition("applicabilita_connettori = ?");
  535.                 sqlQueryObject.addWhereLikeCondition("applicabilita_connettori", connettori, false, false);
  536.             } else {
  537.                 sqlQueryObject.addWhereIsNullCondition("applicabilita_connettori");
  538.             }
  539.            
  540.             if(!portaDelegata) {
  541.                 if(soggetti==null || soggetti.isEmpty()) {
  542.                     if(interpretaNullList) {
  543.                         ISQLQueryObject sqlQueryObjectExists = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  544.                         sqlQueryObjectExists.addFromTable(nomeTabellaSoggetti);
  545.                         sqlQueryObjectExists.addSelectField("id_trasformazione");
  546.                         sqlQueryObjectExists.setANDLogicOperator(true);
  547.                         sqlQueryObjectExists.addWhereCondition("id_trasformazione="+nomeTabella+".id");
  548.                         sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectExists);
  549.                     }
  550.                 }
  551.                 else {
  552.                     sqlQueryObject.addFromTable(nomeTabellaSoggetti);
  553.                     sqlQueryObject.addWhereCondition(nomeTabellaSoggetti+".id_trasformazione="+nomeTabella+".id");
  554.                     List<String> conditions = new ArrayList<>();
  555.                     for (@SuppressWarnings("unused") TrasformazioneRegolaApplicabilitaSoggetto trasformazioneRegolaApplicabilitaSoggetto : soggetti) {
  556.                         StringBuilder bf = new StringBuilder();
  557.                         bf.append("( ");
  558.                         bf.append(nomeTabellaSoggetti).append(".tipo_soggetto=?");
  559.                         bf.append(" AND ");
  560.                         bf.append(nomeTabellaSoggetti).append(".nome_soggetto=?");
  561.                         bf.append(") ");
  562.                         conditions.add(bf.toString());
  563.                     }
  564.                     sqlQueryObject.addWhereCondition(false, conditions.toArray(new String[1]));
  565.                 }
  566.             }
  567.            
  568.             if(applicativi==null || applicativi.isEmpty()) {
  569.                 if(interpretaNullList) {
  570.                     ISQLQueryObject sqlQueryObjectExists = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  571.                     sqlQueryObjectExists.addFromTable(nomeTabellaSA);
  572.                     sqlQueryObjectExists.addSelectField("id_trasformazione");
  573.                     sqlQueryObjectExists.setANDLogicOperator(true);
  574.                     sqlQueryObjectExists.addWhereCondition("id_trasformazione="+nomeTabella+".id");
  575.                     sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectExists);
  576.                 }
  577.             }
  578.             else {
  579.                 sqlQueryObject.addFromTable(nomeTabellaSA);
  580.                 sqlQueryObject.addWhereCondition(nomeTabellaSA+".id_trasformazione="+nomeTabella+".id");
  581.                 List<String> conditions = new ArrayList<>();
  582.                 for (@SuppressWarnings("unused") TrasformazioneRegolaApplicabilitaServizioApplicativo trasformazioneRegolaApplicabilitaSA : applicativi) {
  583.                     StringBuilder bf = new StringBuilder();
  584.                     bf.append("( ");
  585.                     bf.append(nomeTabellaSA).append(".id_servizio_applicativo=?");
  586.                     bf.append(") ");
  587.                     conditions.add(bf.toString());
  588.                 }
  589.                 sqlQueryObject.addWhereCondition(false, conditions.toArray(new String[1]));
  590.             }
  591.            
  592.             queryString = sqlQueryObject.createSQLQuery();
  593.             stmt = con.prepareStatement(queryString);
  594.             int parameterIndex = 1;
  595.             stmt.setLong(parameterIndex ++, idPorta);
  596. //          if(azioni != null)
  597. //              stmt.setString(parameterIndex ++, azioni);
  598. //          if(pattern != null)
  599. //              stmt.setString(parameterIndex ++, pattern);
  600. //          if(contentType != null)
  601. //              stmt.setString(parameterIndex ++, contentType);
  602.            
  603.             if(!portaDelegata) {
  604.                 if(soggetti==null || soggetti.isEmpty()) {
  605.                     // nop;
  606.                 }
  607.                 else {
  608.                     for (TrasformazioneRegolaApplicabilitaSoggetto trasformazioneRegolaApplicabilitaSoggetto : soggetti) {
  609.                         stmt.setString(parameterIndex ++, trasformazioneRegolaApplicabilitaSoggetto.getTipo());
  610.                         stmt.setString(parameterIndex ++, trasformazioneRegolaApplicabilitaSoggetto.getNome());
  611.                     }
  612.                 }
  613.             }
  614.            
  615.             if(applicativi==null || applicativi.isEmpty()) {
  616.                 // nop;
  617.             }
  618.             else {
  619.                 for (TrasformazioneRegolaApplicabilitaServizioApplicativo trasformazioneRegolaApplicabilitaSA : applicativi) {
  620.                     long idSA = DBUtils.getIdServizioApplicativo(trasformazioneRegolaApplicabilitaSA.getNome(),
  621.                             trasformazioneRegolaApplicabilitaSA.getTipoSoggettoProprietario(), trasformazioneRegolaApplicabilitaSA.getNomeSoggettoProprietario(), con, this.driver.tipoDB);
  622.                     stmt.setLong(parameterIndex ++, idSA);
  623.                 }
  624.             }
  625.            
  626.             risultato = stmt.executeQuery();
  627.             if (risultato.next()) {
  628.                
  629.                 regola = getEngineTrasformazione(risultato);
  630.             }
  631.            
  632.             risultato.close();
  633.             stmt.close();

  634.             return regola;

  635.         } catch (Exception qe) {
  636.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  637.         } finally {

  638.             //Chiudo statement and resultset
  639.             JDBCUtilities.closeResources(risultato, stmt);

  640.             this.driver.closeConnection(con);
  641.         }
  642.     }
  643.    
  644.     protected TrasformazioneRegola getPortaApplicativaTrasformazione(long idPorta, String nome) throws DriverConfigurazioneException {
  645.         String nomeMetodo = "getPortaApplicativaTrasformazione";
  646.         boolean delegata = false;
  647.         return getEngineTrasformazione(idPorta, nome, nomeMetodo, delegata);
  648.     }
  649.    
  650.     protected TrasformazioneRegola getPortaDelegataTrasformazione(long idPorta, String nome) throws DriverConfigurazioneException {
  651.         String nomeMetodo = "getPortaDelegataTrasformazione";
  652.         boolean delegata = true;
  653.         return getEngineTrasformazione(idPorta, nome, nomeMetodo, delegata);
  654.     }
  655.    
  656.     private TrasformazioneRegola getEngineTrasformazione(long idPorta, String nome, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  657.         Connection con = null;
  658.         PreparedStatement stmt=null;
  659.         ResultSet risultato=null;
  660.         String queryString;
  661.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;

  662.         if (this.driver.atomica) {
  663.             try {
  664.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  665.             } catch (Exception e) {
  666.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  667.             }

  668.         } else
  669.             con = this.driver.globalConnection;

  670.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);
  671.         TrasformazioneRegola regola = null;
  672.         try {

  673.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  674.             sqlQueryObject.addFromTable(nomeTabella);
  675.             sqlQueryObject.addSelectField("*");
  676.             sqlQueryObject.setANDLogicOperator(true);
  677.            
  678.             sqlQueryObject.addWhereCondition("id_porta = ?");
  679.             sqlQueryObject.addWhereCondition("nome = ?");
  680.            
  681.            
  682.             queryString = sqlQueryObject.createSQLQuery();
  683.             stmt = con.prepareStatement(queryString);
  684.             int parameterIndex = 1;
  685.             stmt.setLong(parameterIndex ++, idPorta);
  686.             stmt.setString(parameterIndex ++, nome);
  687.                        
  688.             risultato = stmt.executeQuery();
  689.             if (risultato.next()) {
  690.                
  691.                 regola = getEngineTrasformazione(risultato);
  692.             }
  693.            
  694.             risultato.close();
  695.             stmt.close();

  696.             return regola;

  697.         } catch (Exception qe) {
  698.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  699.         } finally {

  700.             //Chiudo statement and resultset
  701.             JDBCUtilities.closeResources(risultato, stmt);

  702.             this.driver.closeConnection(con);
  703.         }
  704.     }
  705.    
  706.     private TrasformazioneRegola getEngineTrasformazione(ResultSet risultato) throws Exception {
  707.         TrasformazioneRegola regola  = new TrasformazioneRegola();
  708.                
  709.         StatoFunzionalita stato = DriverConfigurazioneDBLib.getEnumStatoFunzionalita(risultato.getString("stato"));
  710.         regola.setStato(stato);
  711.        
  712.         String applicabilita_azioni = risultato.getString("applicabilita_azioni");
  713.         String applicabilita_ct = risultato.getString("applicabilita_ct");
  714.         String applicabilita_pattern = risultato.getString("applicabilita_pattern");
  715.         String applicabilita_connettori = risultato.getString("applicabilita_connettori");
  716.         if( (applicabilita_azioni!=null && !"".equals(applicabilita_azioni)) ||
  717.                 (applicabilita_ct!=null && !"".equals(applicabilita_ct)) ||
  718.                 (applicabilita_pattern!=null && !"".equals(applicabilita_pattern))  ||
  719.                 (applicabilita_connettori!=null && !"".equals(applicabilita_connettori))
  720.                 ) {
  721.             TrasformazioneRegolaApplicabilitaRichiesta applicabilita = new TrasformazioneRegolaApplicabilitaRichiesta();
  722.            
  723.             if( (applicabilita_azioni!=null && !"".equals(applicabilita_azioni)) ) {
  724.                 if(applicabilita_azioni.contains(",")) {
  725.                     String [] tmp = applicabilita_azioni.split(",");
  726.                     for (int i = 0; i < tmp.length; i++) {
  727.                         applicabilita.addAzione(tmp[i].trim());
  728.                     }
  729.                 }
  730.                 else {
  731.                     applicabilita.addAzione(applicabilita_azioni);
  732.                 }
  733.             }
  734.            
  735.             if( (applicabilita_ct!=null && !"".equals(applicabilita_ct)) ) {
  736.                 if(applicabilita_ct.contains(",")) {
  737.                     String [] tmp = applicabilita_ct.split(",");
  738.                     for (int i = 0; i < tmp.length; i++) {
  739.                         applicabilita.addContentType(tmp[i].trim());
  740.                     }
  741.                 }
  742.                 else {
  743.                     applicabilita.addContentType(applicabilita_ct);
  744.                 }
  745.             }
  746.            
  747.             if(applicabilita_pattern!=null && !"".equals(applicabilita_pattern)){
  748.                 applicabilita.setPattern(applicabilita_pattern);
  749.             }
  750.            
  751.             if( (applicabilita_connettori!=null && !"".equals(applicabilita_connettori)) ) {
  752.                 if(applicabilita_connettori.contains(",")) {
  753.                     String [] tmp = applicabilita_connettori.split(",");
  754.                     for (int i = 0; i < tmp.length; i++) {
  755.                         applicabilita.addConnettore(tmp[i].trim());
  756.                     }
  757.                 }
  758.                 else {
  759.                     applicabilita.addConnettore(applicabilita_connettori);
  760.                 }
  761.             }
  762.            
  763.             regola.setApplicabilita(applicabilita);
  764.         }
  765.        
  766.         TrasformazioneRegolaRichiesta richiesta = new TrasformazioneRegolaRichiesta();
  767.        
  768.         int req_conversione_enabled = risultato.getInt("req_conversione_enabled");
  769.         if(CostantiDB.TRUE == req_conversione_enabled) {
  770.             richiesta.setConversione(true);
  771.         }
  772.         else {
  773.             richiesta.setConversione(false);
  774.         }
  775.         richiesta.setConversioneTipo(risultato.getString("req_conversione_tipo"));
  776.         IJDBCAdapter jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(this.driver.tipoDB);
  777.         richiesta.setConversioneTemplate(jdbcAdapter.getBinaryData(risultato, "req_conversione_template"));
  778.         richiesta.setContentType(risultato.getString("req_content_type"));
  779.        
  780.         int trasformazione_rest = risultato.getInt("rest_transformation");
  781.         if(CostantiDB.TRUE == trasformazione_rest) {
  782.             TrasformazioneRest trasformazioneRest = new TrasformazioneRest();
  783.             trasformazioneRest.setMetodo(risultato.getString("rest_method"));
  784.             trasformazioneRest.setPath(risultato.getString("rest_path"));
  785.             richiesta.setTrasformazioneRest(trasformazioneRest);
  786.         }
  787.            
  788.         int trasformazione_soap = risultato.getInt("soap_transformation");
  789.         if(CostantiDB.TRUE == trasformazione_soap) {
  790.             TrasformazioneSoap trasformazioneSoap = new TrasformazioneSoap();
  791.            
  792.             trasformazioneSoap.setVersione(DriverConfigurazioneDBLib.getEnumVersioneSOAP(risultato.getString("soap_version")));
  793.             trasformazioneSoap.setSoapAction(risultato.getString("soap_action"));
  794.            
  795.             int envelope = risultato.getInt("soap_envelope");
  796.             if(CostantiDB.TRUE == envelope) {
  797.                 trasformazioneSoap.setEnvelope(true);
  798.             }
  799.             else {
  800.                 trasformazioneSoap.setEnvelope(false);
  801.             }
  802.            
  803.             int envelope_as_attach = risultato.getInt("soap_envelope_as_attach");
  804.             if(CostantiDB.TRUE == envelope_as_attach) {
  805.                 trasformazioneSoap.setEnvelopeAsAttachment(true);
  806.                
  807.                 trasformazioneSoap.setEnvelopeBodyConversioneTipo(risultato.getString("soap_envelope_tipo"));
  808.                 trasformazioneSoap.setEnvelopeBodyConversioneTemplate(jdbcAdapter.getBinaryData(risultato, "soap_envelope_template"));
  809.             }
  810.             else {
  811.                 trasformazioneSoap.setEnvelopeAsAttachment(false);
  812.             }
  813.            
  814.             richiesta.setTrasformazioneSoap(trasformazioneSoap);
  815.         }
  816.        
  817.         regola.setId(risultato.getLong("id"));
  818.        
  819.         regola.setRichiesta(richiesta);
  820.        
  821.         return regola;

  822.     }
  823.    
  824.     protected boolean existsPortaApplicativaTrasformazione(long idPorta, String azioni, String pattern, String contentType, String connettori) throws DriverConfigurazioneException {
  825.         String nomeMetodo = "existsPortaApplicativaTrasformazione";
  826.         boolean delegata = false;
  827.         return _existsTrasformazione(idPorta, azioni, pattern, contentType, connettori, nomeMetodo, delegata);
  828.     }
  829.    
  830.     protected boolean existsPortaDelegataTrasformazione(long idPorta, String azioni, String pattern, String contentType, String connettori) throws DriverConfigurazioneException {
  831.         String nomeMetodo = "existsPortaDelegataTrasformazione";
  832.         boolean delegata = true;
  833.         return _existsTrasformazione(idPorta, azioni, pattern, contentType, connettori, nomeMetodo, delegata);
  834.     }
  835.    
  836.     private boolean _existsTrasformazione(long idPorta, String azioni, String pattern, String contentType, String connettori, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  837.         Connection con = null;
  838.         PreparedStatement stmt=null;
  839.         ResultSet risultato=null;
  840.         String queryString;
  841.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;

  842.         if (this.driver.atomica) {
  843.             try {
  844.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  845.             } catch (Exception e) {
  846.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  847.             }

  848.         } else
  849.             con = this.driver.globalConnection;

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

  851.         try {

  852.             int count = 0;
  853.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  854.             sqlQueryObject.addFromTable(nomeTabella);
  855.             sqlQueryObject.addSelectCountField(nomeTabella+".id", "cont");
  856.             sqlQueryObject.setANDLogicOperator(true);
  857.            
  858.             sqlQueryObject.addWhereCondition("id_porta = ?");
  859.            
  860.             if(azioni != null) {
  861.                 //sqlQueryObject.addWhereCondition("applicabilita_azioni = ?");
  862.                 sqlQueryObject.addWhereLikeCondition("applicabilita_azioni", azioni, false, false);
  863.             } else {
  864.                 sqlQueryObject.addWhereIsNullCondition("applicabilita_azioni");
  865.             }
  866.            
  867.             if(pattern != null) {
  868.                 //sqlQueryObject.addWhereCondition("applicabilita_pattern = ?");
  869.                 sqlQueryObject.addWhereLikeCondition("applicabilita_pattern", pattern, false, false);
  870.             } else {
  871.                 sqlQueryObject.addWhereIsNullCondition("applicabilita_pattern");
  872.             }
  873.            
  874.             if(contentType != null) {
  875.                 //sqlQueryObject.addWhereCondition("applicabilita_ct = ?");
  876.                 sqlQueryObject.addWhereLikeCondition("applicabilita_ct", contentType, false, false);
  877.             } else {
  878.                 sqlQueryObject.addWhereIsNullCondition("applicabilita_ct");
  879.             }
  880.            
  881.             if(connettori != null) {
  882.                 //sqlQueryObject.addWhereCondition("applicabilita_connettori = ?");
  883.                 sqlQueryObject.addWhereLikeCondition("applicabilita_connettori", connettori, false, false);
  884.             } else {
  885.                 sqlQueryObject.addWhereIsNullCondition("applicabilita_connettori");
  886.             }
  887.            
  888.             queryString = sqlQueryObject.createSQLQuery();
  889.             stmt = con.prepareStatement(queryString);
  890.             int parameterIndex = 1;
  891.             stmt.setLong(parameterIndex ++, idPorta);
  892. //          if(azioni != null)
  893. //              stmt.setString(parameterIndex ++, azioni);
  894. //          if(pattern != null)
  895. //              stmt.setString(parameterIndex ++, pattern);
  896. //          if(contentType != null)
  897. //              stmt.setString(parameterIndex ++, contentType);
  898.            
  899.             risultato = stmt.executeQuery();
  900.             if (risultato.next())
  901.                 count = risultato.getInt(1);
  902.             risultato.close();
  903.             stmt.close();

  904.             return count > 0;

  905.         } catch (Exception qe) {
  906.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  907.         } finally {

  908.             //Chiudo statement and resultset
  909.             JDBCUtilities.closeResources(risultato, stmt);

  910.             this.driver.closeConnection(con);
  911.         }
  912.     }
  913.    
  914.     protected boolean existsPortaApplicativaTrasformazione(long idPorta, String nome) throws DriverConfigurazioneException {
  915.         String nomeMetodo = "existsPortaApplicativaTrasformazione";
  916.         boolean delegata = false;
  917.         return _existsTrasformazione(idPorta, nome, nomeMetodo, delegata);
  918.     }
  919.    
  920.     protected boolean existsPortaDelegataTrasformazione(long idPorta, String nome) throws DriverConfigurazioneException {
  921.         String nomeMetodo = "existsPortaDelegataTrasformazione";
  922.         boolean delegata = true;
  923.         return _existsTrasformazione(idPorta, nome, nomeMetodo, delegata);
  924.     }
  925.    
  926.     private boolean _existsTrasformazione(long idPorta, String nome, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  927.         Connection con = null;
  928.         PreparedStatement stmt=null;
  929.         ResultSet risultato=null;
  930.         String queryString;
  931.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;

  932.         if (this.driver.atomica) {
  933.             try {
  934.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  935.             } catch (Exception e) {
  936.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  937.             }

  938.         } else
  939.             con = this.driver.globalConnection;

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

  941.         try {

  942.             int count = 0;
  943.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  944.             sqlQueryObject.addFromTable(nomeTabella);
  945.             sqlQueryObject.addSelectCountField(nomeTabella+".id", "cont");
  946.             sqlQueryObject.setANDLogicOperator(true);
  947.            
  948.             sqlQueryObject.addWhereCondition("id_porta = ?");
  949.             sqlQueryObject.addWhereCondition("nome = ?");
  950.                        
  951.             queryString = sqlQueryObject.createSQLQuery();
  952.             stmt = con.prepareStatement(queryString);
  953.             int parameterIndex = 1;
  954.             stmt.setLong(parameterIndex ++, idPorta);
  955.             stmt.setString(parameterIndex ++, nome);
  956.            
  957.             risultato = stmt.executeQuery();
  958.             if (risultato.next())
  959.                 count = risultato.getInt(1);
  960.             risultato.close();
  961.             stmt.close();

  962.             return count > 0;

  963.         } catch (Exception qe) {
  964.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  965.         } finally {

  966.             //Chiudo statement and resultset
  967.             JDBCUtilities.closeResources(risultato, stmt);

  968.             this.driver.closeConnection(con);
  969.         }
  970.     }
  971.    
  972.    
  973.     protected List<TrasformazioneRegolaRisposta> porteDelegateTrasformazioniRispostaList(long idPD, long idTrasformazione, ISearch ricerca) throws DriverConfigurazioneException {
  974.         int idLista = Liste.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE;
  975.         String nomeMetodo = "porteDelegateTrasformazioniRispostaList";
  976.         boolean delegata = true;
  977.         return getEngineTrasformazioniRispostaList(idPD, idTrasformazione, ricerca, idLista, nomeMetodo, delegata);
  978.     }
  979.    
  980.     protected List<TrasformazioneRegolaRisposta> porteApplicativeTrasformazioniRispostaList(long idPA, long idTrasformazione, ISearch ricerca) throws DriverConfigurazioneException {
  981.         int idLista = Liste.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE;
  982.         String nomeMetodo = "porteApplicativeTrasformazioniRispostaList";
  983.         boolean delegata = false;
  984.         return getEngineTrasformazioniRispostaList(idPA, idTrasformazione, ricerca, idLista, nomeMetodo, delegata);
  985.     }
  986.    
  987.     private List<TrasformazioneRegolaRisposta> getEngineTrasformazioniRispostaList(long idPA, long idTrasformazione, ISearch ricerca, int idLista, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  988.         int offset;
  989.         int limit;
  990.         String queryString;

  991.         limit = ricerca.getPageSize(idLista);
  992.         offset = ricerca.getIndexIniziale(idLista);

  993.         Connection con = null;
  994.         PreparedStatement stmt = null;
  995.         ResultSet rs = null;
  996.        
  997.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  998.         String nomeTabellaRisposta = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE;

  999.         if (this.driver.atomica) {
  1000.             try {
  1001.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  1002.             } catch (Exception e) {
  1003.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1004.             }

  1005.         } else
  1006.             con = this.driver.globalConnection;

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

  1008.         List<TrasformazioneRegolaRisposta> lista = new ArrayList<>();
  1009.         try {
  1010.            
  1011.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1012.             sqlQueryObject.addFromTable(nomeTabella);
  1013.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1014.             sqlQueryObject.addSelectCountField(nomeTabellaRisposta+".id", "cont");
  1015.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1016.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  1017.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1018.             sqlQueryObject.setSelectDistinct(true);
  1019.             sqlQueryObject.setANDLogicOperator(true);
  1020.             queryString = sqlQueryObject.createSQLQuery();
  1021.             stmt = con.prepareStatement(queryString);
  1022.             stmt.setLong(1, idPA);
  1023.             stmt.setLong(2, idTrasformazione);

  1024.             rs = stmt.executeQuery();
  1025.             if (rs.next())
  1026.                 ricerca.setNumEntries(idLista,rs.getInt(1));
  1027.             rs.close();
  1028.             stmt.close();

  1029.             // ricavo le entries
  1030.             if (limit == 0) // con limit
  1031.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  1032.            
  1033.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1034.             sqlQueryObject.addFromTable(nomeTabella);
  1035.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1036.             sqlQueryObject.addSelectAliasField(nomeTabellaRisposta, "id", "idTrasRisposta");
  1037.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".posizione");
  1038.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".nome");
  1039.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1040.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  1041.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1042.             sqlQueryObject.setSelectDistinct(true);
  1043.             sqlQueryObject.setANDLogicOperator(true);
  1044.             sqlQueryObject.addOrderBy(nomeTabellaRisposta+".posizione");
  1045.             sqlQueryObject.addOrderBy(nomeTabellaRisposta+".nome");
  1046.             sqlQueryObject.setSortType(true);
  1047.             sqlQueryObject.setLimit(limit);
  1048.             sqlQueryObject.setOffset(offset);
  1049.             queryString = sqlQueryObject.createSQLQuery();
  1050.             stmt = con.prepareStatement(queryString);
  1051.             stmt.setLong(1, idPA);
  1052.             stmt.setLong(2, idTrasformazione);

  1053.             rs = stmt.executeQuery();

  1054.             List<Long> idTrasformazioneRisposta = new ArrayList<>();
  1055.             while (rs.next()) {
  1056.                 idTrasformazioneRisposta.add(rs.getLong("idTrasRisposta"));
  1057.             }
  1058.             rs.close();
  1059.             stmt.close();
  1060.            
  1061.             if(idTrasformazioneRisposta!=null && !idTrasformazioneRisposta.isEmpty()) {
  1062.                 for (Long idLongTrasformazioneRisposta : idTrasformazioneRisposta) {
  1063.                        
  1064.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1065.                     sqlQueryObject.addFromTable(nomeTabella);
  1066.                     sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1067.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".nome");
  1068.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".posizione");
  1069.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_status_min");
  1070.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_status_max");
  1071.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_ct");
  1072.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_pattern");
  1073.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".conversione_enabled");
  1074.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".conversione_tipo");
  1075.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".conversione_template");
  1076.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".content_type");
  1077.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".return_code");
  1078.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope");
  1079.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope_as_attach");
  1080.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope_tipo");
  1081.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope_template");
  1082.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".id");
  1083.                     sqlQueryObject.addSelectField(nomeTabellaRisposta+".id_trasformazione");
  1084.                     sqlQueryObject.addSelectField(nomeTabella+".rest_transformation"); // serve per capire se nella risposta devo abilitare la soap trasformation
  1085.                     sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id=?");
  1086.                     sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1087.                     sqlQueryObject.setANDLogicOperator(true);
  1088.                     queryString = sqlQueryObject.createSQLQuery();
  1089.                     stmt = con.prepareStatement(queryString);
  1090.                     stmt.setLong(1, idLongTrasformazioneRisposta);

  1091.                     rs = stmt.executeQuery();
  1092.                    
  1093.                     if (rs.next()) {
  1094.                         TrasformazioneRegolaRisposta risposta = _readTrasformazioneRegolaRisposta(rs);
  1095.                         lista.add(risposta);
  1096.                     }
  1097.                    
  1098.                     rs.close();
  1099.                     stmt.close();
  1100.                 }
  1101.             }

  1102.         } catch (Exception qe) {
  1103.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1104.         } finally {

  1105.             //Chiudo statement and resultset
  1106.             JDBCUtilities.closeResources(rs, stmt);

  1107.             this.driver.closeConnection(con);
  1108.         }
  1109.        
  1110.         return lista;
  1111.     }
  1112.    
  1113.     protected TrasformazioneRegolaRisposta getPortaApplicativaTrasformazioneRisposta(long idPorta, long idTrasformazione, Integer statusMin, Integer statusMax, String pattern, String contentType) throws DriverConfigurazioneException {
  1114.         String nomeMetodo = "getPortaApplicativaTrasformazioneRisposta";
  1115.         boolean delegata = false;
  1116.         return getEngineTrasformazioneRisposta(idPorta, idTrasformazione, statusMin, statusMax, pattern, contentType, nomeMetodo, delegata);
  1117.     }
  1118.    
  1119.     protected TrasformazioneRegolaRisposta getPortaDelegataTrasformazioneRisposta(long idPorta, long idTrasformazione, Integer statusMin, Integer statusMax, String pattern, String contentType) throws DriverConfigurazioneException {
  1120.         String nomeMetodo = "getPortaDelegataTrasformazioneRisposta";
  1121.         boolean delegata = true;
  1122.         return getEngineTrasformazioneRisposta(idPorta, idTrasformazione, statusMin, statusMax, pattern, contentType, nomeMetodo, delegata);
  1123.     }
  1124.    
  1125.     private TrasformazioneRegolaRisposta getEngineTrasformazioneRisposta(long idPorta, long idTrasformazione, Integer statusMin, Integer statusMax, String pattern, String contentType, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  1126.         Connection con = null;
  1127.         PreparedStatement stmt=null;
  1128.         ResultSet rs =null;
  1129.         String queryString;
  1130.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  1131.         String nomeTabellaRisposta = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE;
  1132.        
  1133.         if (this.driver.atomica) {
  1134.             try {
  1135.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  1136.             } catch (Exception e) {
  1137.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1138.             }

  1139.         } else
  1140.             con = this.driver.globalConnection;

  1141.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);
  1142.         TrasformazioneRegolaRisposta risposta = null;
  1143.         try {

  1144.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1145.             sqlQueryObject.addFromTable(nomeTabella);
  1146.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1147.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".nome");
  1148.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".posizione");
  1149.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_status_min");
  1150.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_status_max");
  1151.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_ct");
  1152.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_pattern");
  1153.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".conversione_enabled");
  1154.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".conversione_tipo");
  1155.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".conversione_template");
  1156.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".content_type");
  1157.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".return_code");
  1158.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope");
  1159.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope_as_attach");
  1160.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope_tipo");
  1161.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope_template");
  1162.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".id");
  1163.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".id_trasformazione");
  1164.             sqlQueryObject.addSelectField(nomeTabella+".rest_transformation"); // serve per capire se nella risposta devo abilitare la soap trasformation
  1165.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1166.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  1167.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1168.             sqlQueryObject.setANDLogicOperator(true);
  1169.            
  1170.             if(statusMin != null) {
  1171.                 sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".applicabilita_status_min = ?");
  1172.             } else {
  1173.                 sqlQueryObject.addWhereIsNullCondition(nomeTabellaRisposta+".applicabilita_status_min");
  1174.             }
  1175.            
  1176.             if(statusMax != null) {
  1177.                 sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".applicabilita_status_max = ?");
  1178.             } else {
  1179.                 sqlQueryObject.addWhereIsNullCondition(nomeTabellaRisposta+".applicabilita_status_max");
  1180.             }
  1181.            
  1182.             if(pattern != null) {
  1183.                 sqlQueryObject.addWhereLikeCondition(nomeTabellaRisposta+".applicabilita_pattern", pattern, false, false);
  1184.             } else {
  1185.                 sqlQueryObject.addWhereIsNullCondition(nomeTabellaRisposta+".applicabilita_pattern");
  1186.             }
  1187.            
  1188.             if(contentType != null) {
  1189.                 sqlQueryObject.addWhereLikeCondition(nomeTabellaRisposta+".applicabilita_ct", contentType, false, false);
  1190.             } else {
  1191.                 sqlQueryObject.addWhereIsNullCondition(nomeTabellaRisposta+".applicabilita_ct");
  1192.             }
  1193.            
  1194.             queryString = sqlQueryObject.createSQLQuery();
  1195.             stmt = con.prepareStatement(queryString);
  1196.             int parameterIndex = 1;
  1197.             stmt.setLong(parameterIndex ++, idPorta);
  1198.             stmt.setLong(parameterIndex ++, idTrasformazione);
  1199.            
  1200.             if(statusMin != null)
  1201.                 stmt.setInt(parameterIndex ++, statusMin);
  1202.             if(statusMax != null)
  1203.                 stmt.setInt(parameterIndex ++, statusMax);
  1204.            
  1205.             rs = stmt.executeQuery();
  1206.             if (rs.next()) {
  1207.                
  1208.                 risposta = _readTrasformazioneRegolaRisposta(rs);
  1209.             }
  1210.            
  1211.             rs.close();
  1212.             stmt.close();

  1213.             return risposta;

  1214.         } catch (Exception qe) {
  1215.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1216.         } finally {

  1217.             //Chiudo statement and resultset
  1218.             JDBCUtilities.closeResources(rs, stmt);

  1219.             this.driver.closeConnection(con);
  1220.         }
  1221.     }
  1222.    
  1223.     protected TrasformazioneRegolaRisposta getPortaApplicativaTrasformazioneRisposta(long idPorta, long idTrasformazione, String nome) throws DriverConfigurazioneException {
  1224.         String nomeMetodo = "getPortaApplicativaTrasformazioneRisposta";
  1225.         boolean delegata = false;
  1226.         return getEngineTrasformazioneRisposta(idPorta, idTrasformazione, nome, nomeMetodo, delegata);
  1227.     }
  1228.    
  1229.     protected TrasformazioneRegolaRisposta getPortaDelegataTrasformazioneRisposta(long idPorta, long idTrasformazione, String nome) throws DriverConfigurazioneException {
  1230.         String nomeMetodo = "getPortaDelegataTrasformazioneRisposta";
  1231.         boolean delegata = true;
  1232.         return getEngineTrasformazioneRisposta(idPorta, idTrasformazione, nome, nomeMetodo, delegata);
  1233.     }
  1234.    
  1235.     private TrasformazioneRegolaRisposta getEngineTrasformazioneRisposta(long idPorta, long idTrasformazione, String nome, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  1236.         Connection con = null;
  1237.         PreparedStatement stmt=null;
  1238.         ResultSet rs =null;
  1239.         String queryString;
  1240.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  1241.         String nomeTabellaRisposta = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE;
  1242.        
  1243.         if (this.driver.atomica) {
  1244.             try {
  1245.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  1246.             } catch (Exception e) {
  1247.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1248.             }

  1249.         } else
  1250.             con = this.driver.globalConnection;

  1251.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);
  1252.         TrasformazioneRegolaRisposta risposta = null;
  1253.         try {

  1254.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1255.             sqlQueryObject.addFromTable(nomeTabella);
  1256.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1257.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".nome");
  1258.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".posizione");
  1259.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_status_min");
  1260.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_status_max");
  1261.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_ct");
  1262.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".applicabilita_pattern");
  1263.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".conversione_enabled");
  1264.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".conversione_tipo");
  1265.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".conversione_template");
  1266.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".content_type");
  1267.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".return_code");
  1268.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope");
  1269.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope_as_attach");
  1270.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope_tipo");
  1271.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".soap_envelope_template");
  1272.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".id");
  1273.             sqlQueryObject.addSelectField(nomeTabellaRisposta+".id_trasformazione");
  1274.             sqlQueryObject.addSelectField(nomeTabella+".rest_transformation"); // serve per capire se nella risposta devo abilitare la soap trasformation
  1275.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1276.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  1277.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1278.             sqlQueryObject.setANDLogicOperator(true);
  1279.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".nome = ?");
  1280.            
  1281.            
  1282.             queryString = sqlQueryObject.createSQLQuery();
  1283.             stmt = con.prepareStatement(queryString);
  1284.             int parameterIndex = 1;
  1285.             stmt.setLong(parameterIndex ++, idPorta);
  1286.             stmt.setLong(parameterIndex ++, idTrasformazione);
  1287.            
  1288.             stmt.setString(parameterIndex ++, nome);
  1289.            
  1290.             rs = stmt.executeQuery();
  1291.             if (rs.next()) {
  1292.                
  1293.                 risposta = _readTrasformazioneRegolaRisposta(rs);
  1294.             }
  1295.            
  1296.             rs.close();
  1297.             stmt.close();

  1298.             return risposta;

  1299.         } catch (Exception qe) {
  1300.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1301.         } finally {

  1302.             //Chiudo statement and resultset
  1303.             JDBCUtilities.closeResources(rs, stmt);

  1304.             this.driver.closeConnection(con);
  1305.         }
  1306.     }
  1307.    
  1308.     private TrasformazioneRegolaRisposta _readTrasformazioneRegolaRisposta(ResultSet rs) throws Exception{
  1309.         TrasformazioneRegolaRisposta risposta = new TrasformazioneRegolaRisposta();
  1310.        
  1311.         String nome = rs.getString("nome");
  1312.         risposta.setNome(nome);

  1313.         int posizione = rs.getInt("posizione");
  1314.         risposta.setPosizione(posizione);
  1315.        
  1316.         int applicabilita_status_min = rs.getInt("applicabilita_status_min");
  1317.         int applicabilita_status_max = rs.getInt("applicabilita_status_max");
  1318.         String applicabilita_ct = rs.getString("applicabilita_ct");
  1319.         String applicabilita_pattern = rs.getString("applicabilita_pattern");
  1320.         if( (applicabilita_status_min >0 || applicabilita_status_max>0) ||
  1321.                 (applicabilita_ct!=null && !"".equals(applicabilita_ct)) ||
  1322.                 (applicabilita_pattern!=null && !"".equals(applicabilita_pattern))
  1323.                 ) {
  1324.             TrasformazioneRegolaApplicabilitaRisposta applicabilita = new TrasformazioneRegolaApplicabilitaRisposta();
  1325.            
  1326.             if(applicabilita_status_min>0) {
  1327.                 applicabilita.setReturnCodeMin(applicabilita_status_min);
  1328.             }
  1329.             if(applicabilita_status_max>0) {
  1330.                 applicabilita.setReturnCodeMax(applicabilita_status_max);
  1331.             }

  1332.             if( (applicabilita_ct!=null && !"".equals(applicabilita_ct)) ) {
  1333.                 if(applicabilita_ct.contains(",")) {
  1334.                     String [] tmp = applicabilita_ct.split(",");
  1335.                     for (int i = 0; i < tmp.length; i++) {
  1336.                         applicabilita.addContentType(tmp[i].trim());
  1337.                     }
  1338.                 }
  1339.                 else {
  1340.                     applicabilita.addContentType(applicabilita_ct);
  1341.                 }
  1342.             }
  1343.            
  1344.             if(applicabilita_pattern!=null && !"".equals(applicabilita_pattern)){
  1345.                 applicabilita.setPattern(applicabilita_pattern);
  1346.             }
  1347.            
  1348.             risposta.setApplicabilita(applicabilita);
  1349.         }
  1350.        
  1351.         int conversione_enabled = rs.getInt("conversione_enabled");
  1352.         if(CostantiDB.TRUE == conversione_enabled) {
  1353.             risposta.setConversione(true);
  1354.         }
  1355.         else {
  1356.             risposta.setConversione(false);
  1357.         }
  1358.         risposta.setConversioneTipo(rs.getString("conversione_tipo"));
  1359.         IJDBCAdapter jdbcAdapter = JDBCAdapterFactory.createJDBCAdapter(this.driver.tipoDB);
  1360.         risposta.setConversioneTemplate(jdbcAdapter.getBinaryData(rs, "conversione_template"));
  1361.         risposta.setContentType(rs.getString("content_type"));
  1362.         risposta.setReturnCode(rs.getString("return_code"));
  1363.        
  1364.         int trasformazione_rest = rs.getInt("rest_transformation");
  1365.         if(CostantiDB.TRUE == trasformazione_rest) {
  1366.        
  1367.             // la risposta deve essere ritornata in SOAP
  1368.            
  1369.             TrasformazioneSoapRisposta trasformazioneSoap = new TrasformazioneSoapRisposta();
  1370.            
  1371.             int envelope = rs.getInt("soap_envelope");
  1372.             if(CostantiDB.TRUE == envelope) {
  1373.                 trasformazioneSoap.setEnvelope(true);
  1374.             }
  1375.             else {
  1376.                 trasformazioneSoap.setEnvelope(false);
  1377.             }
  1378.            
  1379.             int envelope_as_attach = rs.getInt("soap_envelope_as_attach");
  1380.             if(CostantiDB.TRUE == envelope_as_attach) {
  1381.                 trasformazioneSoap.setEnvelopeAsAttachment(true);
  1382.                
  1383.                 trasformazioneSoap.setEnvelopeBodyConversioneTipo(rs.getString("soap_envelope_tipo"));
  1384.                 trasformazioneSoap.setEnvelopeBodyConversioneTemplate(jdbcAdapter.getBinaryData(rs, "soap_envelope_template"));
  1385.             }
  1386.             else {
  1387.                 trasformazioneSoap.setEnvelopeAsAttachment(false);
  1388.             }
  1389.            
  1390.             risposta.setTrasformazioneSoap(trasformazioneSoap);
  1391.            
  1392.         }

  1393.         risposta.setId(rs.getLong("id"));
  1394.        
  1395.         return  risposta;
  1396.     }
  1397.    
  1398.     protected boolean existsPortaApplicativaTrasformazioneRisposta(long idPorta, long idTrasformazione, Integer statusMin, Integer statusMax, String pattern, String contentType) throws DriverConfigurazioneException {
  1399.         String nomeMetodo = "existsPortaApplicativaTrasformazioneRisposta";
  1400.         boolean delegata = false;
  1401.         return _existsTrasformazioneRisposta(idPorta, idTrasformazione, statusMin, statusMax, pattern, contentType, nomeMetodo, delegata);
  1402.     }
  1403.    
  1404.     protected boolean existsPortaDelegataTrasformazioneRisposta(long idPorta, long idTrasformazione, Integer statusMin, Integer statusMax, String pattern, String contentType) throws DriverConfigurazioneException {
  1405.         String nomeMetodo = "existsPortaDelegataTrasformazioneRisposta";
  1406.         boolean delegata = true;
  1407.         return _existsTrasformazioneRisposta(idPorta, idTrasformazione, statusMin, statusMax, pattern, contentType, nomeMetodo, delegata);
  1408.     }
  1409.    
  1410.     private boolean _existsTrasformazioneRisposta(long idPorta, long idTrasformazione, Integer statusMin, Integer statusMax, String pattern, String contentType, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  1411.         Connection con = null;
  1412.         PreparedStatement stmt=null;
  1413.         ResultSet risultato=null;
  1414.         String queryString;
  1415.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  1416.         String nomeTabellaRisposta = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE;

  1417.         if (this.driver.atomica) {
  1418.             try {
  1419.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  1420.             } catch (Exception e) {
  1421.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1422.             }

  1423.         } else
  1424.             con = this.driver.globalConnection;

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

  1426.         try {

  1427.             int count = 0;
  1428.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1429.             sqlQueryObject.addFromTable(nomeTabella);
  1430.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1431.             sqlQueryObject.addSelectCountField(nomeTabellaRisposta+".id", "cont");
  1432.             sqlQueryObject.setANDLogicOperator(true);
  1433.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1434.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  1435.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1436.            
  1437.            
  1438.             if(statusMin != null) {
  1439.                 sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".applicabilita_status_min = ?");
  1440.             } else {
  1441.                 sqlQueryObject.addWhereIsNullCondition(nomeTabellaRisposta+".applicabilita_status_min");
  1442.             }
  1443.            
  1444.             if(statusMax != null) {
  1445.                 sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".applicabilita_status_max = ?");
  1446.             } else {
  1447.                 sqlQueryObject.addWhereIsNullCondition(nomeTabellaRisposta+".applicabilita_status_max");
  1448.             }
  1449.            
  1450.             if(pattern != null) {
  1451.                 //sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".applicabilita_pattern = ?");
  1452.                 sqlQueryObject.addWhereLikeCondition(nomeTabellaRisposta+".applicabilita_pattern", pattern, false, false);
  1453.             } else {
  1454.                 sqlQueryObject.addWhereIsNullCondition(nomeTabellaRisposta+".applicabilita_pattern");
  1455.             }
  1456.            
  1457.             if(contentType != null) {
  1458.                 //sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".applicabilita_ct = ?");
  1459.                 sqlQueryObject.addWhereLikeCondition(nomeTabellaRisposta+".applicabilita_ct", contentType, false, false);
  1460.             } else {
  1461.                 sqlQueryObject.addWhereIsNullCondition(nomeTabellaRisposta+".applicabilita_ct");
  1462.             }
  1463.            
  1464.             queryString = sqlQueryObject.createSQLQuery();
  1465.             stmt = con.prepareStatement(queryString);
  1466.             int parameterIndex = 1;
  1467.             stmt.setLong(parameterIndex ++, idPorta);
  1468.             stmt.setLong(parameterIndex ++, idTrasformazione);
  1469.            
  1470.             if(statusMin != null)
  1471.                 stmt.setInt(parameterIndex ++, statusMin);
  1472.             if(statusMax != null)
  1473.                 stmt.setInt(parameterIndex ++, statusMax);
  1474. //          if(pattern != null)
  1475. //              stmt.setString(parameterIndex ++, pattern);
  1476. //          if(contentType != null)
  1477. //              stmt.setString(parameterIndex ++, contentType);
  1478.            
  1479.             risultato = stmt.executeQuery();
  1480.             if (risultato.next())
  1481.                 count = risultato.getInt(1);
  1482.             risultato.close();
  1483.             stmt.close();

  1484.             return count > 0;

  1485.         } catch (Exception qe) {
  1486.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1487.         } finally {

  1488.             //Chiudo statement and resultset
  1489.             JDBCUtilities.closeResources(risultato, stmt);

  1490.             this.driver.closeConnection(con);
  1491.         }
  1492.     }
  1493.    
  1494.     protected boolean existsPortaApplicativaTrasformazioneRisposta(long idPorta, long idTrasformazione, String nome) throws DriverConfigurazioneException {
  1495.         String nomeMetodo = "existsPortaApplicativaTrasformazioneRisposta";
  1496.         boolean delegata = false;
  1497.         return _existsTrasformazioneRisposta(idPorta, idTrasformazione, nome, nomeMetodo, delegata);
  1498.     }
  1499.    
  1500.     protected boolean existsPortaDelegataTrasformazioneRisposta(long idPorta, long idTrasformazione, String nome) throws DriverConfigurazioneException {
  1501.         String nomeMetodo = "existsPortaDelegataTrasformazioneRisposta";
  1502.         boolean delegata = true;
  1503.         return _existsTrasformazioneRisposta(idPorta, idTrasformazione, nome, nomeMetodo, delegata);
  1504.     }
  1505.    
  1506.     private boolean _existsTrasformazioneRisposta(long idPorta, long idTrasformazione, String nome, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  1507.         Connection con = null;
  1508.         PreparedStatement stmt=null;
  1509.         ResultSet risultato=null;
  1510.         String queryString;
  1511.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  1512.         String nomeTabellaRisposta = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE;

  1513.         if (this.driver.atomica) {
  1514.             try {
  1515.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  1516.             } catch (Exception e) {
  1517.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1518.             }

  1519.         } else
  1520.             con = this.driver.globalConnection;

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

  1522.         try {

  1523.             int count = 0;
  1524.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1525.             sqlQueryObject.addFromTable(nomeTabella);
  1526.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1527.             sqlQueryObject.addSelectCountField(nomeTabellaRisposta+".id", "cont");
  1528.             sqlQueryObject.setANDLogicOperator(true);
  1529.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1530.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  1531.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1532.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".nome = ?");
  1533.            
  1534.            
  1535.             queryString = sqlQueryObject.createSQLQuery();
  1536.             stmt = con.prepareStatement(queryString);
  1537.             int parameterIndex = 1;
  1538.             stmt.setLong(parameterIndex ++, idPorta);
  1539.             stmt.setLong(parameterIndex ++, idTrasformazione);
  1540.            
  1541.             stmt.setString(parameterIndex ++, nome);
  1542.            
  1543.             risultato = stmt.executeQuery();
  1544.             if (risultato.next())
  1545.                 count = risultato.getInt(1);
  1546.             risultato.close();
  1547.             stmt.close();

  1548.             return count > 0;

  1549.         } catch (Exception qe) {
  1550.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1551.         } finally {

  1552.             //Chiudo statement and resultset
  1553.             JDBCUtilities.closeResources(risultato, stmt);

  1554.             this.driver.closeConnection(con);
  1555.         }
  1556.     }
  1557.    
  1558.     protected List<TrasformazioneRegolaApplicabilitaServizioApplicativo> porteDelegateTrasformazioniServiziApplicativiList(long idPD, long idTrasformazione, ISearch ricerca) throws DriverConfigurazioneException {
  1559.         int idLista = Liste.PORTE_DELEGATE_TRASFORMAZIONI_SERVIZIO_APPLICATIVO;
  1560.         String nomeMetodo = "porteDelegateTrasformazioniServiziApplicativiList";
  1561.         boolean delegata = true;
  1562.         return getEngineTrasformazioniServiziApplicativiList(idPD, idTrasformazione, ricerca, idLista, nomeMetodo, delegata);
  1563.     }
  1564.    
  1565.     protected List<TrasformazioneRegolaApplicabilitaServizioApplicativo> porteApplicativeTrasformazioniServiziApplicativiList(long idPA, long idTrasformazione, ISearch ricerca) throws DriverConfigurazioneException {
  1566.         int idLista = Liste.PORTE_APPLICATIVE_TRASFORMAZIONI_SERVIZIO_APPLICATIVO_AUTORIZZATO;
  1567.         String nomeMetodo = "porteApplicativeTrasformazioniServiziApplicativiList";
  1568.         boolean delegata = false;
  1569.         return getEngineTrasformazioniServiziApplicativiList(idPA, idTrasformazione, ricerca, idLista, nomeMetodo, delegata);
  1570.     }
  1571.    
  1572.     private List<TrasformazioneRegolaApplicabilitaServizioApplicativo> getEngineTrasformazioniServiziApplicativiList(long idPA, long idTrasformazione, ISearch ricerca, int idLista, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  1573.         int offset;
  1574.         int limit;
  1575.         String queryString;

  1576.         limit = ricerca.getPageSize(idLista);
  1577.         offset = ricerca.getIndexIniziale(idLista);

  1578.         Connection con = null;
  1579.         PreparedStatement stmt = null;
  1580.         ResultSet rs = null;
  1581.        
  1582.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  1583.         String nomeTabellaTrasformazioneSA = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA;
  1584.         String nomeTabellaSA = CostantiDB.SERVIZI_APPLICATIVI;
  1585.         String nomeTabellaSoggetti = CostantiDB.SOGGETTI;

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

  1591.             }

  1592.         } else
  1593.             con = this.driver.globalConnection;

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

  1595.         List<TrasformazioneRegolaApplicabilitaServizioApplicativo> lista = new ArrayList<>();
  1596.         try {
  1597.            
  1598.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1599.             sqlQueryObject.addFromTable(nomeTabella);
  1600.             sqlQueryObject.addFromTable(nomeTabellaTrasformazioneSA);
  1601.             sqlQueryObject.addSelectCountField(nomeTabellaTrasformazioneSA+".id", "cont");
  1602.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1603.             sqlQueryObject.addWhereCondition(nomeTabellaTrasformazioneSA+".id_trasformazione=?");
  1604.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaTrasformazioneSA+".id_trasformazione");
  1605.             sqlQueryObject.setSelectDistinct(true);
  1606.             sqlQueryObject.setANDLogicOperator(true);
  1607.             queryString = sqlQueryObject.createSQLQuery();
  1608.             stmt = con.prepareStatement(queryString);
  1609.             stmt.setLong(1, idPA);
  1610.             stmt.setLong(2, idTrasformazione);

  1611.             rs = stmt.executeQuery();
  1612.             if (rs.next())
  1613.                 ricerca.setNumEntries(idLista,rs.getInt(1));
  1614.             rs.close();
  1615.             stmt.close();

  1616.             // ricavo le entries
  1617.             if (limit == 0) // con limit
  1618.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  1619.            
  1620.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1621.             sqlQueryObject.addFromTable(nomeTabella);
  1622.             sqlQueryObject.addFromTable(nomeTabellaTrasformazioneSA);
  1623.             sqlQueryObject.addFromTable(nomeTabellaSA);
  1624.             sqlQueryObject.addFromTable(nomeTabellaSoggetti);
  1625.             sqlQueryObject.addSelectAliasField(nomeTabellaTrasformazioneSA, "id", "idTrasSA");
  1626.             sqlQueryObject.addSelectField(nomeTabellaSA+".nome");
  1627.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1628.             sqlQueryObject.addWhereCondition(nomeTabellaTrasformazioneSA+".id_trasformazione=?");
  1629.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaTrasformazioneSA+".id_trasformazione");
  1630.             sqlQueryObject.addWhereCondition(nomeTabellaSA+".id="+nomeTabellaTrasformazioneSA+".id_servizio_applicativo");
  1631.             sqlQueryObject.addWhereCondition(nomeTabellaSA+".id_soggetto="+nomeTabellaSoggetti+".id");
  1632.             sqlQueryObject.setSelectDistinct(true);
  1633.             sqlQueryObject.setANDLogicOperator(true);
  1634.             sqlQueryObject.addOrderBy(nomeTabellaSA+".nome");
  1635.             sqlQueryObject.setSortType(true);
  1636.             sqlQueryObject.setLimit(limit);
  1637.             sqlQueryObject.setOffset(offset);
  1638.             queryString = sqlQueryObject.createSQLQuery();
  1639.             stmt = con.prepareStatement(queryString);
  1640.             stmt.setLong(1, idPA);
  1641.             stmt.setLong(2, idTrasformazione);

  1642.             rs = stmt.executeQuery();

  1643.             List<Long> idLong = new ArrayList<>();
  1644.             while (rs.next()) {
  1645.                 idLong.add(rs.getLong("idTrasSA"));
  1646.             }
  1647.             rs.close();
  1648.             stmt.close();
  1649.            
  1650.             if(!idLong.isEmpty()) {
  1651.                
  1652.                 for (Long idLongTrasf : idLong) {
  1653.                    
  1654.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1655.                     sqlQueryObject.addFromTable(nomeTabella);
  1656.                     sqlQueryObject.addFromTable(nomeTabellaTrasformazioneSA);
  1657.                     sqlQueryObject.addFromTable(nomeTabellaSA);
  1658.                     sqlQueryObject.addFromTable(nomeTabellaSoggetti);
  1659.                     sqlQueryObject.addSelectField(nomeTabellaSA+".nome");
  1660.                     sqlQueryObject.addSelectField(nomeTabellaSoggetti+".tipo_soggetto");
  1661.                     sqlQueryObject.addSelectField(nomeTabellaSoggetti+".nome_soggetto");
  1662.                     sqlQueryObject.addSelectField(nomeTabellaTrasformazioneSA+".id");
  1663.                     sqlQueryObject.addSelectField(nomeTabellaTrasformazioneSA+".id_trasformazione");
  1664.                     sqlQueryObject.addSelectField(nomeTabellaTrasformazioneSA+".id_servizio_applicativo");
  1665.                     sqlQueryObject.addWhereCondition(nomeTabellaTrasformazioneSA+".id=?");
  1666.                     sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaTrasformazioneSA+".id_trasformazione");
  1667.                     sqlQueryObject.addWhereCondition(nomeTabellaSA+".id="+nomeTabellaTrasformazioneSA+".id_servizio_applicativo");
  1668.                     sqlQueryObject.addWhereCondition(nomeTabellaSA+".id_soggetto="+nomeTabellaSoggetti+".id");
  1669.                     sqlQueryObject.setANDLogicOperator(true);
  1670.                     queryString = sqlQueryObject.createSQLQuery();
  1671.                     stmt = con.prepareStatement(queryString);
  1672.                     stmt.setLong(1, idLongTrasf);
  1673.                    
  1674.                     rs = stmt.executeQuery();
  1675.                     if(rs.next()) {
  1676.                         TrasformazioneRegolaApplicabilitaServizioApplicativo risposta = new TrasformazioneRegolaApplicabilitaServizioApplicativo();
  1677.                         risposta.setId(rs.getLong("id"));
  1678.                         risposta.setNome(rs.getString("nome"));
  1679.                         risposta.setTipoSoggettoProprietario(rs.getString("tipo_soggetto"));
  1680.                         risposta.setNomeSoggettoProprietario(rs.getString("nome_soggetto"));
  1681.                         lista.add(risposta);        
  1682.                     }
  1683.                    
  1684.                     rs.close();
  1685.                     stmt.close();
  1686.                    
  1687.                 }
  1688.                
  1689.             }

  1690.         } catch (Exception qe) {
  1691.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1692.         } finally {

  1693.             //Chiudo statement and resultset
  1694.             JDBCUtilities.closeResources(rs, stmt);

  1695.             this.driver.closeConnection(con);
  1696.         }
  1697.        
  1698.         return lista;
  1699.     }
  1700.    
  1701.     protected List<TrasformazioneRegolaApplicabilitaSoggetto> porteApplicativeTrasformazioniSoggettiList(long idPA, long idTrasformazione, ISearch ricerca) throws DriverConfigurazioneException {
  1702.         int idLista = Liste.PORTE_APPLICATIVE_TRASFORMAZIONI_SOGGETTO;
  1703.         String nomeMetodo = "porteApplicativeTrasformazioniSoggettiList";
  1704.         boolean delegata = false;
  1705.         return getEngineTrasformazioniSoggettiList(idPA, idTrasformazione, ricerca, idLista, nomeMetodo, delegata);
  1706.     }
  1707.    
  1708.     private List<TrasformazioneRegolaApplicabilitaSoggetto> getEngineTrasformazioniSoggettiList(long idPA, long idTrasformazione, ISearch ricerca, int idLista, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  1709.         int offset;
  1710.         int limit;
  1711.         String queryString;

  1712.         limit = ricerca.getPageSize(idLista);
  1713.         offset = ricerca.getIndexIniziale(idLista);

  1714.         Connection con = null;
  1715.         PreparedStatement stmt = null;
  1716.         ResultSet rs = null;
  1717.        
  1718.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  1719.         String nomeTabellaSoggetti = CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SOGGETTI;

  1720.         if (this.driver.atomica) {
  1721.             try {
  1722.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  1723.             } catch (Exception e) {
  1724.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1725.             }

  1726.         } else
  1727.             con = this.driver.globalConnection;

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

  1729.         List<TrasformazioneRegolaApplicabilitaSoggetto> lista = new ArrayList<>();
  1730.         try {
  1731.            
  1732.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1733.             sqlQueryObject.addFromTable(nomeTabella);
  1734.             sqlQueryObject.addFromTable(nomeTabellaSoggetti);
  1735.             sqlQueryObject.addSelectCountField(nomeTabellaSoggetti+".id", "cont");
  1736.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1737.             sqlQueryObject.addWhereCondition(nomeTabellaSoggetti+".id_trasformazione=?");
  1738.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaSoggetti+".id_trasformazione");
  1739.             sqlQueryObject.setSelectDistinct(true);
  1740.             sqlQueryObject.setANDLogicOperator(true);
  1741.             queryString = sqlQueryObject.createSQLQuery();
  1742.             stmt = con.prepareStatement(queryString);
  1743.             stmt.setLong(1, idPA);
  1744.             stmt.setLong(2, idTrasformazione);

  1745.             rs = stmt.executeQuery();
  1746.             if (rs.next())
  1747.                 ricerca.setNumEntries(idLista,rs.getInt(1));
  1748.             rs.close();
  1749.             stmt.close();

  1750.             // ricavo le entries
  1751.             if (limit == 0) // con limit
  1752.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  1753.            
  1754.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1755.             sqlQueryObject.addFromTable(nomeTabella);
  1756.             sqlQueryObject.addFromTable(nomeTabellaSoggetti);
  1757.             sqlQueryObject.addSelectAliasField(nomeTabellaSoggetti, "id", "idTrasSoggetto");
  1758.             sqlQueryObject.addSelectField(nomeTabellaSoggetti+".tipo_soggetto");
  1759.             sqlQueryObject.addSelectField(nomeTabellaSoggetti+".nome_soggetto");
  1760.             sqlQueryObject.addSelectField(nomeTabellaSoggetti+".id");
  1761.             sqlQueryObject.addSelectField(nomeTabellaSoggetti+".id_trasformazione");
  1762.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1763.             sqlQueryObject.addWhereCondition(nomeTabellaSoggetti+".id_trasformazione=?");
  1764.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaSoggetti+".id_trasformazione");
  1765.             sqlQueryObject.setSelectDistinct(true);
  1766.             sqlQueryObject.setANDLogicOperator(true);
  1767.             sqlQueryObject.addOrderBy(nomeTabellaSoggetti+".tipo_soggetto");
  1768.             sqlQueryObject.addOrderBy(nomeTabellaSoggetti+".nome_soggetto");
  1769.             sqlQueryObject.setSortType(true);
  1770.             sqlQueryObject.setLimit(limit);
  1771.             sqlQueryObject.setOffset(offset);
  1772.             queryString = sqlQueryObject.createSQLQuery();
  1773.             stmt = con.prepareStatement(queryString);
  1774.             stmt.setLong(1, idPA);
  1775.             stmt.setLong(2, idTrasformazione);

  1776.             rs = stmt.executeQuery();

  1777.             List<Long> idLong = new ArrayList<>();
  1778.             while (rs.next()) {
  1779.                 idLong.add(rs.getLong("idTrasSoggetto"));
  1780.             }
  1781.             rs.close();
  1782.             stmt.close();
  1783.            
  1784.             if(!idLong.isEmpty()) {
  1785.                
  1786.                 for (Long idLongTrasf : idLong) {
  1787.                    
  1788.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1789.                     sqlQueryObject.addFromTable(nomeTabella);
  1790.                     sqlQueryObject.addFromTable(nomeTabellaSoggetti);
  1791.                     sqlQueryObject.addSelectField(nomeTabellaSoggetti+".tipo_soggetto");
  1792.                     sqlQueryObject.addSelectField(nomeTabellaSoggetti+".nome_soggetto");
  1793.                     sqlQueryObject.addSelectField(nomeTabellaSoggetti+".id");
  1794.                     sqlQueryObject.addSelectField(nomeTabellaSoggetti+".id_trasformazione");
  1795.                     sqlQueryObject.addWhereCondition(nomeTabellaSoggetti+".id=?");
  1796.                     sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaSoggetti+".id_trasformazione");
  1797.                     sqlQueryObject.setANDLogicOperator(true);
  1798.                     queryString = sqlQueryObject.createSQLQuery();
  1799.                     stmt = con.prepareStatement(queryString);
  1800.                     stmt.setLong(1, idLongTrasf);

  1801.                     rs = stmt.executeQuery();
  1802.                    
  1803.                     if(rs.next()) {
  1804.                         TrasformazioneRegolaApplicabilitaSoggetto risposta = new TrasformazioneRegolaApplicabilitaSoggetto();
  1805.                         risposta.setId(rs.getLong("id"));
  1806.                         risposta.setTipo(rs.getString("tipo_soggetto"));
  1807.                         risposta.setNome(rs.getString("nome_soggetto"));
  1808.                         lista.add(risposta);
  1809.                     }
  1810.                    
  1811.                     rs.close();
  1812.                     stmt.close();
  1813.                    
  1814.                 }
  1815.                
  1816.             }

  1817.         } catch (Exception qe) {
  1818.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1819.         } finally {

  1820.             //Chiudo statement and resultset
  1821.             JDBCUtilities.closeResources(rs, stmt);

  1822.             this.driver.closeConnection(con);
  1823.         }
  1824.        
  1825.         return lista;
  1826.     }
  1827.    
  1828.    
  1829.     protected List<TrasformazioneRegolaParametro> porteDelegateTrasformazioniRispostaHeaderList(long idPD, long idTrasformazione, long idTrasformazioneRisposta, ISearch ricerca) throws DriverConfigurazioneException {
  1830.         int idLista = Liste.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE_HEADER;
  1831.         String nomeMetodo = "porteDelegateTrasformazioniRispostaHeaderList";
  1832.         boolean delegata = true;
  1833.         return getEngineTrasformazioniRispostaHeaderList(idPD, idTrasformazione, idTrasformazioneRisposta, ricerca, idLista, nomeMetodo, delegata);
  1834.     }
  1835.    
  1836.     protected List<TrasformazioneRegolaParametro> porteApplicativeTrasformazioniRispostaHeaderList(long idPA, long idTrasformazione, long idTrasformazioneRisposta, ISearch ricerca) throws DriverConfigurazioneException {
  1837.         int idLista = Liste.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE_HEADER;
  1838.         String nomeMetodo = "porteApplicativeTrasformazioniRispostaHeaderList";
  1839.         boolean delegata = false;
  1840.         return getEngineTrasformazioniRispostaHeaderList(idPA, idTrasformazione, idTrasformazioneRisposta, ricerca, idLista, nomeMetodo, delegata);
  1841.     }
  1842.    
  1843.     private List<TrasformazioneRegolaParametro> getEngineTrasformazioniRispostaHeaderList(long idPA, long idTrasformazione, long idTrasformazioneRisposta, ISearch ricerca, int idLista, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  1844.         int offset;
  1845.         int limit;
  1846.         String queryString;

  1847.         limit = ricerca.getPageSize(idLista);
  1848.         offset = ricerca.getIndexIniziale(idLista);

  1849.         Connection con = null;
  1850.         PreparedStatement stmt = null;
  1851.         ResultSet rs = null;
  1852.        
  1853.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  1854.         String nomeTabellaRisposta = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE;
  1855.         String nomeTabellaRispostaHeader = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE_HEADER : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE_HEADER;

  1856.         if (this.driver.atomica) {
  1857.             try {
  1858.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  1859.             } catch (Exception e) {
  1860.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  1861.             }

  1862.         } else
  1863.             con = this.driver.globalConnection;

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

  1865.         List<TrasformazioneRegolaParametro> lista = new ArrayList<>();
  1866.         try {
  1867.            
  1868.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1869.             sqlQueryObject.addFromTable(nomeTabella);
  1870.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1871.             sqlQueryObject.addFromTable(nomeTabellaRispostaHeader);
  1872.             sqlQueryObject.addSelectCountField(nomeTabellaRispostaHeader+".id", "cont");
  1873.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1874.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  1875.             sqlQueryObject.addWhereCondition(nomeTabellaRispostaHeader+".id_transform_risp=?");
  1876.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1877.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id="+nomeTabellaRispostaHeader+".id_transform_risp");
  1878.             sqlQueryObject.setSelectDistinct(true);
  1879.             sqlQueryObject.setANDLogicOperator(true);
  1880.             queryString = sqlQueryObject.createSQLQuery();
  1881.             stmt = con.prepareStatement(queryString);
  1882.             stmt.setLong(1, idPA);
  1883.             stmt.setLong(2, idTrasformazione);
  1884.             stmt.setLong(3, idTrasformazioneRisposta);

  1885.             rs = stmt.executeQuery();
  1886.             if (rs.next())
  1887.                 ricerca.setNumEntries(idLista,rs.getInt(1));
  1888.             rs.close();
  1889.             stmt.close();

  1890.             // ricavo le entries
  1891.             if (limit == 0) // con limit
  1892.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  1893.            
  1894.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1895.             sqlQueryObject.addFromTable(nomeTabella);
  1896.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1897.             sqlQueryObject.addFromTable(nomeTabellaRispostaHeader);
  1898.             sqlQueryObject.addSelectAliasField(nomeTabellaRispostaHeader, "id", "idTrasParametro");
  1899.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".tipo");
  1900.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".nome");
  1901.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".id");
  1902.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".id_transform_risp");
  1903.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  1904.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  1905.             sqlQueryObject.addWhereCondition(nomeTabellaRispostaHeader+".id_transform_risp=?");
  1906.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1907.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id="+nomeTabellaRispostaHeader+".id_transform_risp");
  1908.             sqlQueryObject.setSelectDistinct(true);
  1909.             sqlQueryObject.setANDLogicOperator(true);
  1910.             sqlQueryObject.addOrderBy(nomeTabellaRispostaHeader+".nome");
  1911.             sqlQueryObject.setSortType(true);
  1912.             sqlQueryObject.setLimit(limit);
  1913.             sqlQueryObject.setOffset(offset);
  1914.             queryString = sqlQueryObject.createSQLQuery();
  1915.             stmt = con.prepareStatement(queryString);
  1916.             stmt.setLong(1, idPA);
  1917.             stmt.setLong(2, idTrasformazione);
  1918.             stmt.setLong(3, idTrasformazioneRisposta);

  1919.             rs = stmt.executeQuery();

  1920.             List<Long> idLong = new ArrayList<>();
  1921.             while (rs.next()) {
  1922.                 idLong.add(rs.getLong("idTrasParametro"));
  1923.             }
  1924.             rs.close();
  1925.             stmt.close();
  1926.            
  1927.             if(!idLong.isEmpty()) {
  1928.                
  1929.                 for (Long idLongTrasf : idLong) {
  1930.                    
  1931.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1932.                     sqlQueryObject.addFromTable(nomeTabella);
  1933.                     sqlQueryObject.addFromTable(nomeTabellaRisposta);
  1934.                     sqlQueryObject.addFromTable(nomeTabellaRispostaHeader);
  1935.                     sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".tipo");
  1936.                     sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".nome");
  1937.                     sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".valore");
  1938.                     sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".identificazione_fallita");
  1939.                     sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".id");
  1940.                     sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".id_transform_risp");
  1941.                     sqlQueryObject.addWhereCondition(nomeTabellaRispostaHeader+".id=?");
  1942.                     sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  1943.                     sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id="+nomeTabellaRispostaHeader+".id_transform_risp");
  1944.                     sqlQueryObject.setANDLogicOperator(true);
  1945.                     queryString = sqlQueryObject.createSQLQuery();
  1946.                     stmt = con.prepareStatement(queryString);
  1947.                     stmt.setLong(1, idLongTrasf);

  1948.                     rs = stmt.executeQuery();

  1949.                     if(rs.next()) {
  1950.                        
  1951.                         TrasformazioneRegolaParametro parametro = new TrasformazioneRegolaParametro();
  1952.                         parametro.setConversioneTipo(DriverConfigurazioneDBLib.getEnumTrasformazioneRegolaParametroTipoAzione(rs.getString("tipo")));
  1953.                         parametro.setNome(rs.getString("nome"));
  1954.                         parametro.setValore(rs.getString("valore"));
  1955.                         parametro.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumTrasformazioneIdentificazioneRisorsaFallita(rs.getString("identificazione_fallita")));
  1956.                         parametro.setId(rs.getLong("id"));
  1957.                         lista.add(parametro);
  1958.                        
  1959.                     }
  1960.                    
  1961.                     rs.close();
  1962.                     stmt.close();
  1963.                    
  1964.                 }
  1965.                
  1966.             }

  1967.         } catch (Exception qe) {
  1968.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1969.         } finally {

  1970.             //Chiudo statement and resultset
  1971.             JDBCUtilities.closeResources(rs, stmt);

  1972.             this.driver.closeConnection(con);
  1973.         }
  1974.        
  1975.         return lista;
  1976.     }
  1977.    
  1978.     protected boolean existsPortaApplicativaTrasformazioneRispostaHeader(long idPorta, long idTrasformazione, long idTrasformazioneRisposta,  String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  1979.         String nomeMetodo = "existsPortaApplicativaTrasformazioneRispostaHeader";
  1980.         boolean delegata = false;
  1981.         return _existsTrasformazioneRispostaHeader(idPorta, idTrasformazione, idTrasformazioneRisposta, nome, tipo, checkTipo, nomeMetodo, delegata);
  1982.     }
  1983.    
  1984.     protected boolean existsPortaDelegataTrasformazioneRispostaHeader(long idPorta, long idTrasformazione, long idTrasformazioneRisposta,  String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  1985.         String nomeMetodo = "existsPortaDelegataTrasformazioneRispostaHeader";
  1986.         boolean delegata = true;
  1987.         return _existsTrasformazioneRispostaHeader(idPorta, idTrasformazione, idTrasformazioneRisposta, nome, tipo, checkTipo, nomeMetodo, delegata);
  1988.     }
  1989.    
  1990.     private boolean _existsTrasformazioneRispostaHeader(long idPorta, long idTrasformazione, long idTrasformazioneRisposta,  String nome, String tipo, boolean checkTipo, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  1991.         Connection con = null;
  1992.         PreparedStatement stmt=null;
  1993.         ResultSet risultato=null;
  1994.         String queryString;
  1995.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  1996.         String nomeTabellaRisposta = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE;
  1997.         String nomeTabellaRispostaHeader = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE_HEADER : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE_HEADER;

  1998.         if (this.driver.atomica) {
  1999.             try {
  2000.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2001.             } catch (Exception e) {
  2002.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2003.             }

  2004.         } else
  2005.             con = this.driver.globalConnection;

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

  2007.         try {

  2008.             int count = 0;
  2009.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2010.             sqlQueryObject.addFromTable(nomeTabella);
  2011.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  2012.             sqlQueryObject.addFromTable(nomeTabellaRispostaHeader);
  2013.             sqlQueryObject.addSelectCountField(nomeTabellaRispostaHeader+".id", "cont");
  2014.             sqlQueryObject.setANDLogicOperator(true);
  2015.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2016.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  2017.             sqlQueryObject.addWhereCondition(nomeTabellaRispostaHeader+".id_transform_risp=?");
  2018.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  2019.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id="+nomeTabellaRispostaHeader+".id_transform_risp");
  2020.             sqlQueryObject.addWhereCondition(nomeTabellaRispostaHeader+".nome = ?");
  2021.             if(checkTipo) {
  2022.                 sqlQueryObject.addWhereCondition(nomeTabellaRispostaHeader+".tipo = ?");
  2023.             }
  2024.            
  2025.             queryString = sqlQueryObject.createSQLQuery();
  2026.             stmt = con.prepareStatement(queryString);
  2027.             int parameterIndex = 1;
  2028.             stmt.setLong(parameterIndex ++, idPorta);
  2029.             stmt.setLong(parameterIndex ++, idTrasformazione);
  2030.             stmt.setLong(parameterIndex ++, idTrasformazioneRisposta);
  2031.             stmt.setString(parameterIndex ++, nome);
  2032.             if(checkTipo) {
  2033.                 stmt.setString(parameterIndex ++, tipo);
  2034.             }
  2035.            
  2036.             risultato = stmt.executeQuery();
  2037.             if (risultato.next())
  2038.                 count = risultato.getInt(1);
  2039.             risultato.close();
  2040.             stmt.close();

  2041.             return count > 0;

  2042.         } catch (Exception qe) {
  2043.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2044.         } finally {

  2045.             //Chiudo statement and resultset
  2046.             JDBCUtilities.closeResources(risultato, stmt);

  2047.             this.driver.closeConnection(con);
  2048.         }
  2049.     }
  2050.    
  2051.     protected TrasformazioneRegolaParametro getPortaApplicativaTrasformazioneRispostaHeader(long idPorta, long idTrasformazione, long idTrasformazioneRisposta,  String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2052.         String nomeMetodo = "getPortaApplicativaTrasformazioneRispostaHeader";
  2053.         boolean delegata = false;
  2054.         return getEngineTrasformazioneRispostaHeader(idPorta, idTrasformazione,  idTrasformazioneRisposta, nome, tipo, checkTipo, nomeMetodo, delegata);
  2055.     }
  2056.    
  2057.     protected TrasformazioneRegolaParametro getPortaDelegataTrasformazioneRispostaHeader(long idPorta, long idTrasformazione, long idTrasformazioneRisposta,  String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2058.         String nomeMetodo = "getPortaDelegataTrasformazioneRispostaHeader";
  2059.         boolean delegata = true;
  2060.         return getEngineTrasformazioneRispostaHeader(idPorta, idTrasformazione,  idTrasformazioneRisposta, nome, tipo, checkTipo, nomeMetodo, delegata);
  2061.     }
  2062.    
  2063.     private TrasformazioneRegolaParametro getEngineTrasformazioneRispostaHeader(long idPorta, long idTrasformazione, long idTrasformazioneRisposta,  String nome, String tipo, boolean checkTipo, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  2064.         Connection con = null;
  2065.         PreparedStatement stmt=null;
  2066.         ResultSet rs =null;
  2067.         String queryString;
  2068.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  2069.         String nomeTabellaRisposta = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE;
  2070.         String nomeTabellaRispostaHeader = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_RISPOSTE_HEADER : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_RISPOSTE_HEADER;
  2071.        
  2072.         if (this.driver.atomica) {
  2073.             try {
  2074.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2075.             } catch (Exception e) {
  2076.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2077.             }

  2078.         } else
  2079.             con = this.driver.globalConnection;

  2080.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);
  2081.         TrasformazioneRegolaParametro parametro = null;
  2082.         try {

  2083.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2084.             sqlQueryObject.addFromTable(nomeTabella);
  2085.             sqlQueryObject.addFromTable(nomeTabellaRisposta);
  2086.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".nome");
  2087.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".valore");
  2088.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".tipo");
  2089.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".identificazione_fallita");
  2090.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".id");
  2091.             sqlQueryObject.addSelectField(nomeTabellaRispostaHeader+".id_transform_risp");
  2092.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2093.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id_trasformazione=?");
  2094.             sqlQueryObject.addWhereCondition(nomeTabellaRispostaHeader+".id_transform_risp=?");
  2095.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRisposta+".id_trasformazione");
  2096.             sqlQueryObject.addWhereCondition(nomeTabellaRisposta+".id="+nomeTabellaRispostaHeader+".id_transform_risp");
  2097.             sqlQueryObject.addWhereCondition(nomeTabellaRispostaHeader+".nome = ?");
  2098.             if(checkTipo) {
  2099.                 sqlQueryObject.addWhereCondition(nomeTabellaRispostaHeader+".tipo = ?");
  2100.             }
  2101.             sqlQueryObject.setANDLogicOperator(true);

  2102.             queryString = sqlQueryObject.createSQLQuery();
  2103.             stmt = con.prepareStatement(queryString);
  2104.             int parameterIndex = 1;
  2105.             stmt.setLong(parameterIndex ++, idPorta);
  2106.             stmt.setLong(parameterIndex ++, idTrasformazione);
  2107.             stmt.setLong(parameterIndex ++, idTrasformazioneRisposta);
  2108.             stmt.setString(parameterIndex ++, nome);
  2109.             if(checkTipo) {
  2110.                 stmt.setString(parameterIndex ++, tipo);
  2111.             }
  2112.            
  2113.             rs = stmt.executeQuery();
  2114.             if (rs.next()) {
  2115.                 parametro = new TrasformazioneRegolaParametro();
  2116.                 parametro.setConversioneTipo(DriverConfigurazioneDBLib.getEnumTrasformazioneRegolaParametroTipoAzione(rs.getString("tipo")));
  2117.                 parametro.setNome(rs.getString("nome"));
  2118.                 parametro.setValore(rs.getString("valore"));
  2119.                 parametro.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumTrasformazioneIdentificazioneRisorsaFallita(rs.getString("identificazione_fallita")));
  2120.                 parametro.setId(rs.getLong("id"));
  2121.             }
  2122.            
  2123.             rs.close();
  2124.             stmt.close();

  2125.             return parametro;

  2126.         } catch (Exception qe) {
  2127.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2128.         } finally {

  2129.             //Chiudo statement and resultset
  2130.             JDBCUtilities.closeResources(rs, stmt);

  2131.             this.driver.closeConnection(con);
  2132.         }
  2133.     }
  2134.    
  2135.     protected List<TrasformazioneRegolaParametro> porteDelegateTrasformazioniRichiestaHeaderList(long idPD, long idTrasformazione, ISearch ricerca) throws DriverConfigurazioneException {
  2136.         int idLista = Liste.PORTE_DELEGATE_TRASFORMAZIONI_RICHIESTA_HEADER;
  2137.         String nomeMetodo = "porteDelegateTrasformazioniRichiestaHeaderList";
  2138.         boolean delegata = true;
  2139.         return getEngineTrasformazioniRichiestaHeaderList(idPD, idTrasformazione, ricerca, idLista, nomeMetodo, delegata);
  2140.     }
  2141.    
  2142.     protected List<TrasformazioneRegolaParametro> porteApplicativeTrasformazioniRichiestaHeaderList(long idPA, long idTrasformazione, ISearch ricerca) throws DriverConfigurazioneException {
  2143.         int idLista = Liste.PORTE_APPLICATIVE_TRASFORMAZIONI_RICHIESTA_HEADER;
  2144.         String nomeMetodo = "porteApplicativeTrasformazioniRichiestaHeaderList";
  2145.         boolean delegata = false;
  2146.         return getEngineTrasformazioniRichiestaHeaderList(idPA, idTrasformazione, ricerca, idLista, nomeMetodo, delegata);
  2147.     }
  2148.    
  2149.     private List<TrasformazioneRegolaParametro> getEngineTrasformazioniRichiestaHeaderList(long idPA, long idTrasformazione, ISearch ricerca, int idLista, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  2150.         int offset;
  2151.         int limit;
  2152.         String queryString;

  2153.         limit = ricerca.getPageSize(idLista);
  2154.         offset = ricerca.getIndexIniziale(idLista);

  2155.         Connection con = null;
  2156.         PreparedStatement stmt = null;
  2157.         ResultSet rs = null;
  2158.        
  2159.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  2160.         String nomeTabellaRichiestaHeader = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_HEADER : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_HEADER;

  2161.         if (this.driver.atomica) {
  2162.             try {
  2163.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2164.             } catch (Exception e) {
  2165.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2166.             }

  2167.         } else
  2168.             con = this.driver.globalConnection;

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

  2170.         List<TrasformazioneRegolaParametro> lista = new ArrayList<>();
  2171.         try {
  2172.            
  2173.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2174.             sqlQueryObject.addFromTable(nomeTabella);
  2175.             sqlQueryObject.addFromTable(nomeTabellaRichiestaHeader);
  2176.             sqlQueryObject.addSelectCountField(nomeTabellaRichiestaHeader+".id", "cont");
  2177.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2178.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id_trasformazione=?");
  2179.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2180.             sqlQueryObject.setSelectDistinct(true);
  2181.             sqlQueryObject.setANDLogicOperator(true);
  2182.             queryString = sqlQueryObject.createSQLQuery();
  2183.             stmt = con.prepareStatement(queryString);
  2184.             stmt.setLong(1, idPA);
  2185.             stmt.setLong(2, idTrasformazione);

  2186.             rs = stmt.executeQuery();
  2187.             if (rs.next())
  2188.                 ricerca.setNumEntries(idLista,rs.getInt(1));
  2189.             rs.close();
  2190.             stmt.close();

  2191.             // ricavo le entries
  2192.             if (limit == 0) // con limit
  2193.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  2194.            
  2195.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2196.             sqlQueryObject.addFromTable(nomeTabella);
  2197.             sqlQueryObject.addFromTable(nomeTabellaRichiestaHeader);
  2198.             sqlQueryObject.addSelectAliasField(nomeTabellaRichiestaHeader, "id", "idTrasParametro");
  2199.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".tipo");
  2200.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".nome");
  2201.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id");
  2202.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id_trasformazione");
  2203.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2204.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id_trasformazione=?");
  2205.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2206.             sqlQueryObject.setSelectDistinct(true);
  2207.             sqlQueryObject.setANDLogicOperator(true);
  2208.             sqlQueryObject.addOrderBy(nomeTabellaRichiestaHeader+".nome");
  2209.             sqlQueryObject.setSortType(true);
  2210.             sqlQueryObject.setLimit(limit);
  2211.             sqlQueryObject.setOffset(offset);
  2212.             queryString = sqlQueryObject.createSQLQuery();
  2213.             stmt = con.prepareStatement(queryString);
  2214.             stmt.setLong(1, idPA);
  2215.             stmt.setLong(2, idTrasformazione);

  2216.             rs = stmt.executeQuery();

  2217.             List<Long> idLong = new ArrayList<>();
  2218.             while (rs.next()) {
  2219.                 idLong.add(rs.getLong("idTrasParametro"));
  2220.             }
  2221.             rs.close();
  2222.             stmt.close();
  2223.            
  2224.             if(!idLong.isEmpty()) {
  2225.                
  2226.                 for (Long idLongTrasf : idLong) {
  2227.                    
  2228.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2229.                     sqlQueryObject.addFromTable(nomeTabella);
  2230.                     sqlQueryObject.addFromTable(nomeTabellaRichiestaHeader);
  2231.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".tipo");
  2232.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".nome");
  2233.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".valore");
  2234.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".identificazione_fallita");
  2235.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id");
  2236.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id_trasformazione");
  2237.                     sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id=?");
  2238.                     sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2239.                     sqlQueryObject.setANDLogicOperator(true);
  2240.                     queryString = sqlQueryObject.createSQLQuery();
  2241.                     stmt = con.prepareStatement(queryString);
  2242.                     stmt.setLong(1, idLongTrasf);

  2243.                     rs = stmt.executeQuery();
  2244.                    
  2245.                     if(rs.next()) {
  2246.                        
  2247.                         TrasformazioneRegolaParametro parametro = new TrasformazioneRegolaParametro();
  2248.                         parametro.setConversioneTipo(DriverConfigurazioneDBLib.getEnumTrasformazioneRegolaParametroTipoAzione(rs.getString("tipo")));
  2249.                         parametro.setNome(rs.getString("nome"));
  2250.                         parametro.setValore(rs.getString("valore"));
  2251.                         parametro.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumTrasformazioneIdentificazioneRisorsaFallita(rs.getString("identificazione_fallita")));
  2252.                         parametro.setId(rs.getLong("id"));
  2253.                         lista.add(parametro);
  2254.                        
  2255.                     }
  2256.                    
  2257.                     rs.close();
  2258.                     stmt.close();
  2259.                    
  2260.                 }
  2261.                
  2262.             }
  2263.            

  2264.         } catch (Exception qe) {
  2265.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2266.         } finally {

  2267.             //Chiudo statement and resultset
  2268.             JDBCUtilities.closeResources(rs, stmt);

  2269.             this.driver.closeConnection(con);
  2270.         }
  2271.        
  2272.         return lista;
  2273.     }
  2274.    
  2275.     protected boolean existsPortaApplicativaTrasformazioneRichiestaHeader(long idPorta, long idTrasformazione, String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2276.         String nomeMetodo = "existsPortaApplicativaTrasformazioneRichiestaHeader";
  2277.         boolean delegata = false;
  2278.         return _existsTrasformazioneRichiestaHeader(idPorta, idTrasformazione, nome, tipo, checkTipo, nomeMetodo, delegata);
  2279.     }
  2280.    
  2281.     protected boolean existsPortaDelegataTrasformazioneRichiestaHeader(long idPorta, long idTrasformazione, String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2282.         String nomeMetodo = "existsPortaDelegataTrasformazioneRichiestaHeader";
  2283.         boolean delegata = true;
  2284.         return _existsTrasformazioneRichiestaHeader(idPorta, idTrasformazione, nome, tipo, checkTipo, nomeMetodo, delegata);
  2285.     }
  2286.    
  2287.     private boolean _existsTrasformazioneRichiestaHeader(long idPorta, long idTrasformazione, String nome, String tipo, boolean checkTipo, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  2288.         Connection con = null;
  2289.         PreparedStatement stmt=null;
  2290.         ResultSet risultato=null;
  2291.         String queryString;
  2292.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  2293.         String nomeTabellaRichiestaHeader = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_HEADER : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_HEADER;

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

  2299.             }

  2300.         } else
  2301.             con = this.driver.globalConnection;

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

  2303.         try {

  2304.             int count = 0;
  2305.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2306.             sqlQueryObject.addFromTable(nomeTabella);
  2307.             sqlQueryObject.addFromTable(nomeTabellaRichiestaHeader);
  2308.             sqlQueryObject.addSelectCountField(nomeTabellaRichiestaHeader+".id", "cont");
  2309.             sqlQueryObject.setANDLogicOperator(true);
  2310.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2311.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id_trasformazione=?");
  2312.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2313.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".nome = ?");
  2314.             if(checkTipo) {
  2315.                 sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".tipo = ?");
  2316.             }
  2317.            
  2318.             queryString = sqlQueryObject.createSQLQuery();
  2319.             stmt = con.prepareStatement(queryString);
  2320.             int parameterIndex = 1;
  2321.             stmt.setLong(parameterIndex ++, idPorta);
  2322.             stmt.setLong(parameterIndex ++, idTrasformazione);
  2323.             stmt.setString(parameterIndex ++, nome);
  2324.             if(checkTipo) {
  2325.                 stmt.setString(parameterIndex ++, tipo);
  2326.             }
  2327.            
  2328.             risultato = stmt.executeQuery();
  2329.             if (risultato.next())
  2330.                 count = risultato.getInt(1);
  2331.             risultato.close();
  2332.             stmt.close();

  2333.             return count > 0;

  2334.         } catch (Exception qe) {
  2335.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2336.         } finally {

  2337.             //Chiudo statement and resultset
  2338.             JDBCUtilities.closeResources(risultato, stmt);

  2339.             this.driver.closeConnection(con);
  2340.         }
  2341.     }
  2342.    
  2343.     protected TrasformazioneRegolaParametro getPortaApplicativaTrasformazioneRichiestaHeader(long idPorta, long idTrasformazione,  String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2344.         String nomeMetodo = "getPortaApplicativaTrasformazioneRichiestaHeader";
  2345.         boolean delegata = false;
  2346.         return getEngineTrasformazioneRichiestaHeader(idPorta, idTrasformazione, nome, tipo, checkTipo, nomeMetodo, delegata);
  2347.     }
  2348.    
  2349.     protected TrasformazioneRegolaParametro getPortaDelegataTrasformazioneRichiestaHeader(long idPorta, long idTrasformazione,  String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2350.         String nomeMetodo = "getPortaDelegataTrasformazioneRichiestaHeader";
  2351.         boolean delegata = true;
  2352.         return getEngineTrasformazioneRichiestaHeader(idPorta, idTrasformazione, nome, tipo, checkTipo, nomeMetodo, delegata);
  2353.     }
  2354.    
  2355.     private TrasformazioneRegolaParametro getEngineTrasformazioneRichiestaHeader(long idPorta, long idTrasformazione, String nome, String tipo, boolean checkTipo, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  2356.         Connection con = null;
  2357.         PreparedStatement stmt=null;
  2358.         ResultSet rs =null;
  2359.         String queryString;
  2360.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  2361.         String nomeTabellaRichiestaHeader = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_HEADER : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_HEADER;
  2362.        
  2363.         if (this.driver.atomica) {
  2364.             try {
  2365.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2366.             } catch (Exception e) {
  2367.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2368.             }

  2369.         } else
  2370.             con = this.driver.globalConnection;

  2371.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);
  2372.         TrasformazioneRegolaParametro parametro = null;
  2373.         try {

  2374.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2375.             sqlQueryObject.addFromTable(nomeTabella);
  2376.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".nome");
  2377.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".valore");
  2378.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".tipo");
  2379.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".identificazione_fallita");
  2380.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id");
  2381.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id_trasformazione");
  2382.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2383.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id_trasformazione=?");
  2384.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2385.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".nome = ?");
  2386.             if(checkTipo) {
  2387.                 sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".tipo = ?");
  2388.             }
  2389.             sqlQueryObject.setANDLogicOperator(true);

  2390.             queryString = sqlQueryObject.createSQLQuery();
  2391.             stmt = con.prepareStatement(queryString);
  2392.             int parameterIndex = 1;
  2393.             stmt.setLong(parameterIndex ++, idPorta);
  2394.             stmt.setLong(parameterIndex ++, idTrasformazione);
  2395.             stmt.setString(parameterIndex ++, nome);
  2396.             if(checkTipo) {
  2397.                 stmt.setString(parameterIndex ++, tipo);
  2398.             }
  2399.            
  2400.             rs = stmt.executeQuery();
  2401.             if (rs.next()) {
  2402.                 parametro = new TrasformazioneRegolaParametro();
  2403.                 parametro.setConversioneTipo(DriverConfigurazioneDBLib.getEnumTrasformazioneRegolaParametroTipoAzione(rs.getString("tipo")));
  2404.                 parametro.setNome(rs.getString("nome"));
  2405.                 parametro.setValore(rs.getString("valore"));
  2406.                 parametro.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumTrasformazioneIdentificazioneRisorsaFallita(rs.getString("identificazione_fallita")));
  2407.                 parametro.setId(rs.getLong("id"));
  2408.             }
  2409.            
  2410.             rs.close();
  2411.             stmt.close();

  2412.             return parametro;

  2413.         } catch (Exception qe) {
  2414.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2415.         } finally {

  2416.             //Chiudo statement and resultset
  2417.             JDBCUtilities.closeResources(rs, stmt);

  2418.             this.driver.closeConnection(con);
  2419.         }
  2420.     }
  2421.    
  2422.     protected List<TrasformazioneRegolaParametro> porteDelegateTrasformazioniRichiestaUrlParameterList(long idPD, long idTrasformazione, ISearch ricerca) throws DriverConfigurazioneException {
  2423.         int idLista = Liste.PORTE_DELEGATE_TRASFORMAZIONI_RICHIESTA_PARAMETRI;
  2424.         String nomeMetodo = "porteDelegateTrasformazioniRichiestaUrlParameterList";
  2425.         boolean delegata = true;
  2426.         return getEngineTrasformazioniRichiestaUrlParameterList(idPD, idTrasformazione, ricerca, idLista, nomeMetodo, delegata);
  2427.     }
  2428.    
  2429.     protected List<TrasformazioneRegolaParametro> porteApplicativeTrasformazioniRichiestaUrlParameterList(long idPA, long idTrasformazione, ISearch ricerca) throws DriverConfigurazioneException {
  2430.         int idLista = Liste.PORTE_APPLICATIVE_TRASFORMAZIONI_RICHIESTA_PARAMETRI;
  2431.         String nomeMetodo = "porteApplicativeTrasformazioniRichiestaUrlParameterList";
  2432.         boolean delegata = false;
  2433.         return getEngineTrasformazioniRichiestaUrlParameterList(idPA, idTrasformazione, ricerca, idLista, nomeMetodo, delegata);
  2434.     }
  2435.    
  2436.     private List<TrasformazioneRegolaParametro> getEngineTrasformazioniRichiestaUrlParameterList(long idPA, long idTrasformazione, ISearch ricerca, int idLista, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  2437.         int offset;
  2438.         int limit;
  2439.         String queryString;

  2440.         limit = ricerca.getPageSize(idLista);
  2441.         offset = ricerca.getIndexIniziale(idLista);

  2442.         Connection con = null;
  2443.         PreparedStatement stmt = null;
  2444.         ResultSet rs = null;
  2445.        
  2446.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  2447.         String nomeTabellaRichiestaHeader = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_URL : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_URL;

  2448.         if (this.driver.atomica) {
  2449.             try {
  2450.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2451.             } catch (Exception e) {
  2452.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2453.             }

  2454.         } else
  2455.             con = this.driver.globalConnection;

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

  2457.         List<TrasformazioneRegolaParametro> lista = new ArrayList<>();
  2458.         try {
  2459.            
  2460.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2461.             sqlQueryObject.addFromTable(nomeTabella);
  2462.             sqlQueryObject.addFromTable(nomeTabellaRichiestaHeader);
  2463.             sqlQueryObject.addSelectCountField(nomeTabellaRichiestaHeader+".id", "cont");
  2464.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2465.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id_trasformazione=?");
  2466.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2467.             sqlQueryObject.setSelectDistinct(true);
  2468.             sqlQueryObject.setANDLogicOperator(true);
  2469.             queryString = sqlQueryObject.createSQLQuery();
  2470.             stmt = con.prepareStatement(queryString);
  2471.             stmt.setLong(1, idPA);
  2472.             stmt.setLong(2, idTrasformazione);

  2473.             rs = stmt.executeQuery();
  2474.             if (rs.next())
  2475.                 ricerca.setNumEntries(idLista,rs.getInt(1));
  2476.             rs.close();
  2477.             stmt.close();

  2478.             // ricavo le entries
  2479.             if (limit == 0) // con limit
  2480.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  2481.            
  2482.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2483.             sqlQueryObject.addFromTable(nomeTabella);
  2484.             sqlQueryObject.addFromTable(nomeTabellaRichiestaHeader);
  2485.             sqlQueryObject.addSelectAliasField(nomeTabellaRichiestaHeader, "id", "idTrasParametro");
  2486.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".nome");
  2487.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id");
  2488.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id_trasformazione");
  2489.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2490.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id_trasformazione=?");
  2491.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2492.             sqlQueryObject.setSelectDistinct(true);
  2493.             sqlQueryObject.setANDLogicOperator(true);
  2494.             sqlQueryObject.addOrderBy(nomeTabellaRichiestaHeader+".nome");
  2495.             sqlQueryObject.setSortType(true);
  2496.             sqlQueryObject.setLimit(limit);
  2497.             sqlQueryObject.setOffset(offset);
  2498.             queryString = sqlQueryObject.createSQLQuery();
  2499.             stmt = con.prepareStatement(queryString);
  2500.             stmt.setLong(1, idPA);
  2501.             stmt.setLong(2, idTrasformazione);

  2502.             rs = stmt.executeQuery();

  2503.             List<Long> idLong = new ArrayList<>();
  2504.             while (rs.next()) {
  2505.                 idLong.add(rs.getLong("idTrasParametro"));
  2506.             }
  2507.             rs.close();
  2508.             stmt.close();
  2509.            
  2510.             if(!idLong.isEmpty()) {
  2511.                
  2512.                 for (Long idLongTrasf : idLong) {
  2513.                    
  2514.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2515.                     sqlQueryObject.addFromTable(nomeTabella);
  2516.                     sqlQueryObject.addFromTable(nomeTabellaRichiestaHeader);
  2517.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".tipo");
  2518.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".nome");
  2519.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".valore");
  2520.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".identificazione_fallita");
  2521.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id");
  2522.                     sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id_trasformazione");
  2523.                     sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id=?");
  2524.                     sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2525.                     sqlQueryObject.setANDLogicOperator(true);
  2526.                     queryString = sqlQueryObject.createSQLQuery();
  2527.                     stmt = con.prepareStatement(queryString);
  2528.                     stmt.setLong(1, idLongTrasf);
  2529.                    
  2530.                     rs = stmt.executeQuery();
  2531.                    
  2532.                     if(rs.next()) {
  2533.                         TrasformazioneRegolaParametro parametro = new TrasformazioneRegolaParametro();
  2534.                         parametro.setConversioneTipo(DriverConfigurazioneDBLib.getEnumTrasformazioneRegolaParametroTipoAzione(rs.getString("tipo")));
  2535.                         parametro.setNome(rs.getString("nome"));
  2536.                         parametro.setValore(rs.getString("valore"));
  2537.                         parametro.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumTrasformazioneIdentificazioneRisorsaFallita(rs.getString("identificazione_fallita")));
  2538.                         parametro.setId(rs.getLong("id"));
  2539.                         lista.add(parametro);
  2540.                     }
  2541.                    
  2542.                     rs.close();
  2543.                     stmt.close();
  2544.                    
  2545.                 }
  2546.             }

  2547.         } catch (Exception qe) {
  2548.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2549.         } finally {

  2550.             //Chiudo statement and resultset
  2551.             JDBCUtilities.closeResources(rs, stmt);

  2552.             this.driver.closeConnection(con);
  2553.         }
  2554.        
  2555.         return lista;
  2556.     }
  2557.    
  2558.     protected boolean existsPortaApplicativaTrasformazioneRichiestaUrlParameter(long idPorta, long idTrasformazione, String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2559.         String nomeMetodo = "existsPortaApplicativaTrasformazioneRichiestaUrlParameter";
  2560.         boolean delegata = false;
  2561.         return _existsTrasformazioneRichiestaUrlParameter(idPorta, idTrasformazione, nome, tipo, checkTipo, nomeMetodo, delegata);
  2562.     }
  2563.    
  2564.     protected boolean existsPortaDelegataTrasformazioneRichiestaUrlParameter(long idPorta, long idTrasformazione, String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2565.         String nomeMetodo = "existsPortaDelegataTrasformazioneRichiestaUrlParameter";
  2566.         boolean delegata = true;
  2567.         return _existsTrasformazioneRichiestaUrlParameter(idPorta, idTrasformazione, nome, tipo, checkTipo, nomeMetodo, delegata);
  2568.     }
  2569.    
  2570.     private boolean _existsTrasformazioneRichiestaUrlParameter(long idPorta, long idTrasformazione, String nome, String tipo, boolean checkTipo, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  2571.         Connection con = null;
  2572.         PreparedStatement stmt=null;
  2573.         ResultSet risultato=null;
  2574.         String queryString;
  2575.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  2576.         String nomeTabellaRichiestaHeader = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_URL : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_URL;

  2577.         if (this.driver.atomica) {
  2578.             try {
  2579.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2580.             } catch (Exception e) {
  2581.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2582.             }

  2583.         } else
  2584.             con = this.driver.globalConnection;

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

  2586.         try {

  2587.             int count = 0;
  2588.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2589.             sqlQueryObject.addFromTable(nomeTabella);
  2590.             sqlQueryObject.addFromTable(nomeTabellaRichiestaHeader);
  2591.             sqlQueryObject.addSelectCountField(nomeTabellaRichiestaHeader+".id", "cont");
  2592.             sqlQueryObject.setANDLogicOperator(true);
  2593.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2594.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id_trasformazione=?");
  2595.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2596.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".nome = ?");
  2597.             if(checkTipo) {
  2598.                 sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".tipo = ?");
  2599.             }
  2600.            
  2601.             queryString = sqlQueryObject.createSQLQuery();
  2602.             stmt = con.prepareStatement(queryString);
  2603.             int parameterIndex = 1;
  2604.             stmt.setLong(parameterIndex ++, idPorta);
  2605.             stmt.setLong(parameterIndex ++, idTrasformazione);
  2606.             stmt.setString(parameterIndex ++, nome);
  2607.             if(checkTipo) {
  2608.                 stmt.setString(parameterIndex ++, tipo);
  2609.             }
  2610.            
  2611.             risultato = stmt.executeQuery();
  2612.             if (risultato.next())
  2613.                 count = risultato.getInt(1);
  2614.             risultato.close();
  2615.             stmt.close();

  2616.             return count > 0;

  2617.         } catch (Exception qe) {
  2618.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2619.         } finally {

  2620.             //Chiudo statement and resultset
  2621.             JDBCUtilities.closeResources(risultato, stmt);

  2622.             this.driver.closeConnection(con);
  2623.         }
  2624.     }
  2625.    
  2626.     protected TrasformazioneRegolaParametro getPortaApplicativaTrasformazioneRichiestaUrlParameter(long idPorta, long idTrasformazione,  String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2627.         String nomeMetodo = "getPortaApplicativaTrasformazioneRichiestaUrlParameter";
  2628.         boolean delegata = false;
  2629.         return getEngineTrasformazioneRichiestaUrlParameter(idPorta, idTrasformazione, nome, tipo, checkTipo, nomeMetodo, delegata);
  2630.     }
  2631.    
  2632.     protected TrasformazioneRegolaParametro getPortaDelegataTrasformazioneRichiestaUrlParameter(long idPorta, long idTrasformazione,  String nome, String tipo, boolean checkTipo) throws DriverConfigurazioneException {
  2633.         String nomeMetodo = "getPortaDelegataTrasformazioneRichiestaUrlParameter";
  2634.         boolean delegata = true;
  2635.         return getEngineTrasformazioneRichiestaUrlParameter(idPorta, idTrasformazione, nome, tipo, checkTipo, nomeMetodo, delegata);
  2636.     }
  2637.    
  2638.     private TrasformazioneRegolaParametro getEngineTrasformazioneRichiestaUrlParameter(long idPorta, long idTrasformazione, String nome, String tipo, boolean checkTipo, String nomeMetodo, boolean portaDelegata) throws DriverConfigurazioneException {
  2639.         Connection con = null;
  2640.         PreparedStatement stmt=null;
  2641.         ResultSet rs =null;
  2642.         String queryString;
  2643.         String nomeTabella = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI;
  2644.         String nomeTabellaRichiestaHeader = portaDelegata ? CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_URL : CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_URL;
  2645.        
  2646.         if (this.driver.atomica) {
  2647.             try {
  2648.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2649.             } catch (Exception e) {
  2650.                 throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  2651.             }

  2652.         } else
  2653.             con = this.driver.globalConnection;

  2654.         this.driver.logDebug("operazione this.driver.atomica = " + this.driver.atomica);
  2655.         TrasformazioneRegolaParametro parametro = null;
  2656.         try {

  2657.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2658.             sqlQueryObject.addFromTable(nomeTabella);
  2659.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".nome");
  2660.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".valore");
  2661.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".tipo");
  2662.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".identificazione_fallita");
  2663.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id");
  2664.             sqlQueryObject.addSelectField(nomeTabellaRichiestaHeader+".id_trasformazione");
  2665.             sqlQueryObject.addWhereCondition(nomeTabella+".id_porta=?");
  2666.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".id_trasformazione=?");
  2667.             sqlQueryObject.addWhereCondition(nomeTabella+".id="+nomeTabellaRichiestaHeader+".id_trasformazione");
  2668.             sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".nome = ?");
  2669.             if(checkTipo) {
  2670.                 sqlQueryObject.addWhereCondition(nomeTabellaRichiestaHeader+".tipo = ?");
  2671.             }
  2672.             sqlQueryObject.setANDLogicOperator(true);

  2673.             queryString = sqlQueryObject.createSQLQuery();
  2674.             stmt = con.prepareStatement(queryString);
  2675.             int parameterIndex = 1;
  2676.             stmt.setLong(parameterIndex ++, idPorta);
  2677.             stmt.setLong(parameterIndex ++, idTrasformazione);
  2678.             stmt.setString(parameterIndex ++, nome);
  2679.             if(checkTipo) {
  2680.                 stmt.setString(parameterIndex ++, tipo);
  2681.             }
  2682.            
  2683.             rs = stmt.executeQuery();
  2684.             if (rs.next()) {
  2685.                 parametro = new TrasformazioneRegolaParametro();
  2686.                 parametro.setConversioneTipo(DriverConfigurazioneDBLib.getEnumTrasformazioneRegolaParametroTipoAzione(rs.getString("tipo")));
  2687.                 parametro.setNome(rs.getString("nome"));
  2688.                 parametro.setValore(rs.getString("valore"));
  2689.                 parametro.setIdentificazioneFallita(DriverConfigurazioneDBLib.getEnumTrasformazioneIdentificazioneRisorsaFallita(rs.getString("identificazione_fallita")));
  2690.                 parametro.setId(rs.getLong("id"));
  2691.             }
  2692.            
  2693.             rs.close();
  2694.             stmt.close();

  2695.             return parametro;

  2696.         } catch (Exception qe) {
  2697.             throw new DriverConfigurazioneException("[DriverConfigurazioneDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  2698.         } finally {

  2699.             //Chiudo statement and resultset
  2700.             JDBCUtilities.closeResources(rs, stmt);

  2701.             this.driver.closeConnection(con);
  2702.         }
  2703.     }
  2704. }