DriverRegistroServiziDB_accordiSinteticiDriver.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.registry.driver.db;

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

  27. import org.openspcoop2.core.commons.DBUtils;
  28. import org.openspcoop2.core.commons.Filtri;
  29. import org.openspcoop2.core.commons.ISearch;
  30. import org.openspcoop2.core.commons.Liste;
  31. import org.openspcoop2.core.commons.SearchUtils;
  32. import org.openspcoop2.core.constants.CostantiDB;
  33. import org.openspcoop2.core.id.IDAccordo;
  34. import org.openspcoop2.core.id.IDAccordoCooperazione;
  35. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  36. import org.openspcoop2.core.registry.IdSoggetto;
  37. import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneServizioCompostoServizioComponenteSintetico;
  38. import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneServizioCompostoSintetico;
  39. import org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico;
  40. import org.openspcoop2.core.registry.beans.GruppoSintetico;
  41. import org.openspcoop2.core.registry.beans.PortTypeSintetico;
  42. import org.openspcoop2.core.registry.beans.ResourceSintetica;
  43. import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
  44. import org.openspcoop2.core.registry.constants.ProfiloCollaborazione;
  45. import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
  46. import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
  47. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  48. import org.openspcoop2.utils.sql.ISQLQueryObject;
  49. import org.openspcoop2.utils.sql.SQLObjectFactory;

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

  60.     private DriverRegistroServiziDB driver = null;
  61.    
  62.     protected DriverRegistroServiziDB_accordiSinteticiDriver(DriverRegistroServiziDB driver) {
  63.         this.driver = driver;
  64.     }
  65.    
  66.     protected org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico getAccordoServizioParteComuneSintetico(IDAccordo idAccordo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
  67.         // conrollo consistenza
  68.         if (idAccordo == null)
  69.             throw new DriverRegistroServiziException("[getAccordoServizioParteComuneSintetico] Parametro idAccordo is null");
  70.         if (idAccordo.getNome() == null)
  71.             throw new DriverRegistroServiziException("[getAccordoServizioParteComuneSintetico] Parametro idAccordo.getNome is null");
  72.         if (idAccordo.getNome().trim().equals(""))
  73.             throw new DriverRegistroServiziException("[getAccordoServizioParteComuneSintetico] Parametro idAccordo.getNome non e' definito");

  74.         this.driver.logDebug("richiesto getAccordoServizioParteComuneSintetico: " + idAccordo.toString());

  75.         long idAccordoLong = -1;
  76.         Connection con = null;
  77.         try {
  78.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  79.             // prendo la connessione dal pool
  80.             if (this.driver.atomica)
  81.                 con = this.driver.getConnectionFromDatasource("getAccordoServizioParteComuneSintetico(idAccordo)");
  82.             else
  83.                 con = this.driver.globalConnection;
  84.            
  85.             idAccordoLong = DBUtils.getIdAccordoServizioParteComune(idAccordo, con, this.driver.tipoDB);
  86.             if(idAccordoLong<=0){
  87.                 throw new DriverRegistroServiziNotFound("[DriverRegistroServiziDB::getAccordoServizioParteComuneSintetico] Accordo non trovato (id:"+idAccordo+")");
  88.             }
  89.         }
  90.         catch (DriverRegistroServiziNotFound se) {
  91.             throw se;
  92.         }
  93.         catch (Exception se) {
  94.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getAccordoServizioParteComuneSintetico] Exception :" + se.getMessage(),se);
  95.         } finally {

  96.             this.driver.closeConnection(con);

  97.         }
  98.         return getAccordoServizioParteComuneSintetico(idAccordoLong);
  99.     }  
  100.    
  101.     protected org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico getAccordoServizioParteComuneSintetico(long idAccordo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
  102.         return getAccordoServizioParteComuneSintetico(idAccordo, null);
  103.     }
  104.            
  105.     protected org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico getAccordoServizioParteComuneSintetico(long idAccordo, Connection conParam) throws DriverRegistroServiziException,DriverRegistroServiziNotFound {
  106.            
  107.         org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico accordoServizio = null;
  108.         Connection con = null;
  109.         PreparedStatement stm = null;
  110.         ResultSet rs = null;

  111.         try {

  112.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  113.             if(conParam==null) {
  114.                 // prendo la connessione dal pool
  115.                 if (this.driver.atomica)
  116.                     con = this.driver.getConnectionFromDatasource("getAccordoServizioParteComuneSintetico(idAccordoLong)");
  117.                 else
  118.                     con = this.driver.globalConnection;
  119.             }
  120.             else {
  121.                 con = conParam;
  122.             }

  123.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  124.             sqlQueryObject.addFromTable(CostantiDB.ACCORDI);
  125.             sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  126.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"id");
  127.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"nome");
  128.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"descrizione");
  129.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"service_binding");
  130.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"profilo_collaborazione");
  131.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"formato_specifica");
  132.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"wsdl_definitorio");
  133.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"wsdl_concettuale");
  134.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"wsdl_logico_erogatore");
  135.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"wsdl_logico_fruitore");
  136.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"spec_conv_concettuale");
  137.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"spec_conv_erogatore");
  138.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"spec_conv_fruitore");
  139.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"utilizzo_senza_azione");
  140.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"superuser");
  141.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"privato");
  142.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"ora_registrazione");
  143.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"id_referente");
  144.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE);
  145.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE);
  146.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA);
  147.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA);
  148.             sqlQueryObject.addSelectField(CostantiDB.SOGGETTI,"tipo_soggetto");
  149.             sqlQueryObject.addSelectField(CostantiDB.SOGGETTI,"nome_soggetto");
  150.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"versione");
  151.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"stato");
  152.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI,"canale");
  153.             sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".id = ?");
  154.             sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".id_referente = "+CostantiDB.SOGGETTI+".id");
  155.             sqlQueryObject.setANDLogicOperator(true);
  156.             String sqlQuery = sqlQueryObject.createSQLQuery();

  157.             stm = con.prepareStatement(sqlQuery);

  158.             stm.setLong(1, idAccordo);


  159.             this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idAccordo));
  160.             rs = stm.executeQuery();

  161.             if (rs.next()) {
  162.                 accordoServizio = new org.openspcoop2.core.registry.beans.AccordoServizioParteComuneSintetico();

  163.                 accordoServizio.setId(rs.getLong("id"));

  164.                 String tmp = rs.getString("nome");
  165.                 // se tmp==null oppure tmp=="" then setNome(null) else
  166.                 // setNome(tmp)
  167.                 accordoServizio.setNome(((tmp == null || tmp.equals("")) ? null : tmp));

  168.                 tmp = rs.getString("descrizione");
  169.                 accordoServizio.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));

  170.                 tmp = rs.getString("service_binding");
  171.                 accordoServizio.setServiceBinding(DriverRegistroServiziDB_LIB.getEnumServiceBinding((tmp == null || tmp.equals("")) ? null : tmp));
  172.                
  173.                 // controllare i vari casi di profcoll (one-way....)
  174.                 tmp = rs.getString("profilo_collaborazione");
  175.                 accordoServizio.setProfiloCollaborazione(DriverRegistroServiziDB_LIB.getEnumProfiloCollaborazione((tmp == null || tmp.equals("")) ? null : tmp));
  176.                 if(accordoServizio.getProfiloCollaborazione()==null){
  177.                     // puo' essere null se e' stato ridefinito nei port type e nelle operation
  178.                     // inserisco comunque un default (usato anche nelle interfacce)
  179.                     accordoServizio.setProfiloCollaborazione(ProfiloCollaborazione.ONEWAY);
  180.                 }

  181.                 tmp = rs.getString("formato_specifica");
  182.                 accordoServizio.setFormatoSpecifica(DriverRegistroServiziDB_LIB.getEnumFormatoSpecifica((tmp == null || tmp.equals("")) ? null : tmp));
  183.                
  184.                 tmp = rs.getString("wsdl_definitorio");
  185.                 accordoServizio.setByteWsdlDefinitorio(((tmp == null || tmp.trim().equals("")) ? null : tmp.getBytes()));

  186.                 tmp = rs.getString("wsdl_concettuale");
  187.                 accordoServizio.setByteWsdlConcettuale(((tmp == null || tmp.trim().equals("")) ? null : tmp.getBytes()));

  188.                 tmp = rs.getString("wsdl_logico_erogatore");
  189.                 accordoServizio.setByteWsdlLogicoErogatore(((tmp == null || tmp.trim().equals("")) ? null : tmp.getBytes()));

  190.                 tmp = rs.getString("wsdl_logico_fruitore");
  191.                 accordoServizio.setByteWsdlLogicoFruitore(((tmp == null || tmp.trim().equals("")) ? null : tmp.getBytes()));

  192.                 tmp = rs.getString("spec_conv_concettuale");
  193.                 accordoServizio.setByteSpecificaConversazioneConcettuale(((tmp == null || tmp.trim().equals("")) ? null : tmp.getBytes()));

  194.                 tmp = rs.getString("spec_conv_erogatore");
  195.                 accordoServizio.setByteSpecificaConversazioneErogatore(((tmp == null || tmp.trim().equals("")) ? null : tmp.getBytes()));

  196.                 tmp = rs.getString("spec_conv_fruitore");
  197.                 accordoServizio.setByteSpecificaConversazioneFruitore(((tmp == null || tmp.trim().equals("")) ? null : tmp.getBytes()));

  198.                 accordoServizio.setUtilizzoSenzaAzione(rs.getInt("utilizzo_senza_azione") == CostantiDB.TRUE ? true : false);

  199.                 tmp = rs.getString("superuser");
  200.                 accordoServizio.setSuperUser(((tmp == null || tmp.equals("")) ? null : tmp));

  201.                 if(rs.getInt("privato")==1)
  202.                     accordoServizio.setPrivato(true);
  203.                 else
  204.                     accordoServizio.setPrivato(false);

  205.                 // Ora Registrazione
  206.                 if(rs.getTimestamp("ora_registrazione")!=null){
  207.                     accordoServizio.setOraRegistrazione(new Date(rs.getTimestamp("ora_registrazione").getTime()));
  208.                 }

  209.                 // Soggetto referente
  210.                 if(rs.getLong("id_referente")>0) {
  211.                     IdSoggetto assr = new IdSoggetto();
  212.                     assr.setTipo(rs.getString("tipo_soggetto"));
  213.                     assr.setNome(rs.getString("nome_soggetto"));
  214.                     assr.setId(rs.getLong("id_referente"));
  215.                     accordoServizio.setSoggettoReferente(assr);
  216.                 }

  217.                 //Versione
  218.                 if(rs.getString("versione")!=null && !"".equals(rs.getString("versione")))
  219.                     accordoServizio.setVersione(rs.getInt("versione"));

  220.                 // Stato
  221.                 tmp = rs.getString("stato");
  222.                 accordoServizio.setStatoPackage(((tmp == null || tmp.equals("")) ? null : tmp));

  223.                 // Canali
  224.                 String canale = rs.getString("canale");
  225.                 accordoServizio.setCanale(canale);
  226.                
  227.                 // Proprieta Oggetto
  228.                 accordoServizio.setProprietaOggetto(DriverRegistroServiziDB_utilsDriver.readProprietaOggettoSintetico(rs, false));
  229.                
  230.                 rs.close();
  231.                 stm.close();


  232.                 // Aggiungo azione

  233.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  234.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_AZIONI);
  235.                 sqlQueryObject.addSelectField("nome");
  236.                 sqlQueryObject.addSelectField("profilo_collaborazione");
  237.                 sqlQueryObject.addSelectField("correlata");
  238.                 sqlQueryObject.addSelectField("profilo_azione");
  239.                 sqlQueryObject.addSelectField("id");
  240.                 sqlQueryObject.addWhereCondition("id_accordo = ?");
  241.                 sqlQueryObject.setANDLogicOperator(true);
  242.                 sqlQueryObject.addOrderBy("nome");
  243.                 sqlQueryObject.setSortType(true);
  244.                 sqlQuery = sqlQueryObject.createSQLQuery();

  245.                 stm = con.prepareStatement(sqlQuery);
  246.                 stm.setLong(1, idAccordo);

  247.                 this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idAccordo));

  248.                 rs = stm.executeQuery();

  249.                 org.openspcoop2.core.registry.beans.AzioneSintetica azione = null;
  250.                 while (rs.next()) {

  251.                     azione = new org.openspcoop2.core.registry.beans.AzioneSintetica();

  252.                     tmp = rs.getString("nome");
  253.                     azione.setNome(((tmp == null || tmp.equals("")) ? null : tmp));

  254.                     tmp = rs.getString("profilo_collaborazione");
  255.                     azione.setProfiloCollaborazione(DriverRegistroServiziDB_LIB.getEnumProfiloCollaborazione(((tmp == null || tmp.equals("")) ? null : tmp)));

  256.                     tmp = rs.getString("correlata");
  257.                     azione.setCorrelata(((tmp == null || tmp.equals("")) ? null : tmp));

  258.                     tmp = rs.getString("profilo_azione");
  259.                     if (tmp == null || tmp.equals(""))
  260.                         azione.setProfAzione(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT);
  261.                     else
  262.                         azione.setProfAzione(tmp);

  263.                     long idAzione = rs.getLong("id");
  264.                     azione.setId(idAzione);

  265.                     accordoServizio.getAzione().add(azione);

  266.                 }
  267.                 rs.close();
  268.                 stm.close();


  269.                 // read port type
  270.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  271.                 sqlQueryObject.addFromTable(CostantiDB.PORT_TYPE);
  272.                 sqlQueryObject.addSelectField("nome");
  273.                 sqlQueryObject.addSelectField("descrizione");
  274.                 sqlQueryObject.addSelectField("profilo_collaborazione");
  275.                 sqlQueryObject.addSelectField("profilo_pt");
  276.                 sqlQueryObject.addSelectField("id");
  277.                 sqlQueryObject.addWhereCondition("id_accordo = ?");
  278.                 sqlQueryObject.setANDLogicOperator(true);
  279.                 sqlQueryObject.addOrderBy("nome");
  280.                 sqlQueryObject.setSortType(true);
  281.                 sqlQuery = sqlQueryObject.createSQLQuery();
  282.                 stm = con.prepareStatement(sqlQuery);
  283.                 stm.setLong(1, idAccordo);

  284.                 this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idAccordo));
  285.                 rs = stm.executeQuery();

  286.                 while (rs.next()) {

  287.                     PortTypeSintetico pt = new PortTypeSintetico();

  288.                     tmp = rs.getString("nome");
  289.                     pt.setNome(((tmp == null || tmp.equals("")) ? null : tmp));

  290.                     tmp = rs.getString("descrizione");
  291.                     pt.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));

  292.                     tmp = rs.getString("profilo_collaborazione");
  293.                     pt.setProfiloCollaborazione(DriverRegistroServiziDB_LIB.getEnumProfiloCollaborazione(((tmp == null || tmp.equals("")) ? null : tmp)));

  294.                     tmp = rs.getString("profilo_pt");
  295.                     if (tmp == null || tmp.equals(""))
  296.                         pt.setProfiloPT(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT);
  297.                     else
  298.                         pt.setProfiloPT(tmp);

  299.                     pt.setIdAccordo(idAccordo);

  300.                     long idPortType = rs.getLong("id");
  301.                     pt.setId(idPortType);
  302.                    
  303.                     accordoServizio.getPortType().add(pt);

  304.                 }
  305.                 rs.close();
  306.                 stm.close();

  307.                 // port type azioni
  308.                 if(!accordoServizio.getPortType().isEmpty()) {
  309.                     for (PortTypeSintetico pt : accordoServizio.getPortType()) {
  310.                        
  311.                         sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  312.                         sqlQueryObject.addFromTable(CostantiDB.PORT_TYPE_AZIONI);
  313.                         sqlQueryObject.addSelectField("nome");
  314.                         sqlQueryObject.addSelectField("profilo_collaborazione");
  315.                         sqlQueryObject.addSelectField("correlata_servizio");
  316.                         sqlQueryObject.addSelectField("correlata");
  317.                         sqlQueryObject.addSelectField("profilo_pt_azione");
  318.                         sqlQueryObject.addSelectField("id");
  319.                         sqlQueryObject.addWhereCondition("id_port_type = ?");
  320.                         sqlQueryObject.setANDLogicOperator(true);
  321.                         sqlQueryObject.addOrderBy("nome");
  322.                         sqlQueryObject.setSortType(true);
  323.                         sqlQuery = sqlQueryObject.createSQLQuery();
  324.                         stm = con.prepareStatement(sqlQuery);
  325.                         stm.setLong(1, pt.getId());

  326.                         this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, pt.getId()));

  327.                         rs = stm.executeQuery();

  328.                         org.openspcoop2.core.registry.beans.OperationSintetica azionePT = null;
  329.                         while (rs.next()) {

  330.                             azionePT = new org.openspcoop2.core.registry.beans.OperationSintetica();

  331.                             tmp = rs.getString("nome");
  332.                             azionePT.setNome(((tmp == null || tmp.equals("")) ? null : tmp));

  333.                             tmp = rs.getString("profilo_collaborazione");
  334.                             azionePT.setProfiloCollaborazione(DriverRegistroServiziDB_LIB.getEnumProfiloCollaborazione(((tmp == null || tmp.equals("")) ? null : tmp)));

  335.                             tmp = rs.getString("correlata_servizio");
  336.                             azionePT.setCorrelataServizio(((tmp == null || tmp.equals("")) ? null : tmp));

  337.                             tmp = rs.getString("correlata");
  338.                             azionePT.setCorrelata(((tmp == null || tmp.equals("")) ? null : tmp));

  339.                             tmp = rs.getString("profilo_pt_azione");
  340.                             if (tmp == null || tmp.equals(""))
  341.                                 azionePT.setProfAzione(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT);
  342.                             else
  343.                                 azionePT.setProfAzione(tmp);

  344.                             azionePT.setIdPortType(pt.getId());

  345.                             long idAzionePortType = rs.getLong("id");
  346.                             azionePT.setId(idAzionePortType);
  347.                            
  348.                             pt.getAzione().add(azionePT);

  349.                         }
  350.                         rs.close();
  351.                         stm.close();
  352.                        
  353.                     }
  354.                 }
  355.                
  356.                
  357.                 // read resources
  358.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  359.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES);
  360.                 sqlQueryObject.addSelectField("nome");
  361.                 sqlQueryObject.addSelectField("descrizione");
  362.                 sqlQueryObject.addSelectField("http_method");
  363.                 sqlQueryObject.addSelectField("path");
  364.                 sqlQueryObject.addSelectField("profilo_azione");
  365.                 sqlQueryObject.addSelectField("id");
  366.                 sqlQueryObject.addWhereCondition("id_accordo = ?");
  367.                 sqlQueryObject.setANDLogicOperator(true);
  368.                 sqlQueryObject.addOrderBy("path");
  369.                 sqlQueryObject.addOrderBy("http_method");
  370.                 sqlQueryObject.setSortType(true);
  371.                 sqlQuery = sqlQueryObject.createSQLQuery();
  372.                 stm = con.prepareStatement(sqlQuery);
  373.                 stm.setLong(1, idAccordo);

  374.                 this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idAccordo));
  375.                 rs = stm.executeQuery();

  376.                 while (rs.next()) {

  377.                     ResourceSintetica resource = new ResourceSintetica();

  378.                     tmp = rs.getString("nome");
  379.                     resource.setNome(((tmp == null || tmp.equals("")) ? null : tmp));

  380.                     tmp = rs.getString("descrizione");
  381.                     resource.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));

  382.                     tmp = rs.getString("http_method");
  383.                     resource.setMethod(DriverRegistroServiziDB_LIB.getEnumHttpMethod(((tmp == null || tmp.equals("")) ? null : tmp)));

  384.                     tmp = rs.getString("path");
  385.                     if(tmp!=null) {
  386.                         if(CostantiDB.API_RESOURCE_PATH_ALL_VALUE.equals(tmp.trim())==false) {
  387.                             resource.setPath(tmp);
  388.                         }
  389.                     }
  390.                    
  391.                     tmp = rs.getString("profilo_azione");
  392.                     if (tmp == null || tmp.equals(""))
  393.                         resource.setProfAzione(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT);
  394.                     else
  395.                         resource.setProfAzione(tmp);
  396.                                
  397.                    
  398.                     resource.setIdAccordo(idAccordo);

  399.                     long idResource = rs.getLong("id");
  400.                     resource.setId(idResource);

  401.                     accordoServizio.getResource().add(resource);

  402.                 }
  403.                 rs.close();
  404.                 stm.close();
  405.                
  406.                
  407.                 // read gruppi
  408.                
  409.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  410.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_GRUPPI);
  411.                 sqlQueryObject.addFromTable(CostantiDB.GRUPPI);
  412.                 sqlQueryObject.addSelectAliasField(CostantiDB.GRUPPI, "id", "identificativoGruppo");
  413.                 sqlQueryObject.addSelectAliasField(CostantiDB.GRUPPI, "nome", "nomeGruppo");
  414.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_gruppo = "+CostantiDB.GRUPPI+".id");
  415.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_accordo = ?");
  416.                 sqlQueryObject.setANDLogicOperator(true);
  417.                 sqlQueryObject.addOrderBy(CostantiDB.GRUPPI+".nome");
  418.                 sqlQueryObject.setSortType(true);
  419.                 sqlQuery = sqlQueryObject.createSQLQuery();
  420.                 stm = con.prepareStatement(sqlQuery);
  421.                 stm.setLong(1, idAccordo);

  422.                 this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idAccordo));
  423.                 rs = stm.executeQuery();

  424.                 while (rs.next()) {
  425.                     GruppoSintetico gruppo = new GruppoSintetico();
  426.                     gruppo.setId(rs.getLong("identificativoGruppo"));
  427.                     gruppo.setNome(rs.getString("nomeGruppo"));
  428.                     accordoServizio.getGruppo().add(gruppo);
  429.                 }
  430.                 rs.close();
  431.                 stm.close();
  432.            


  433.                 // read AccordoServizioComposto

  434.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  435.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  436.                 sqlQueryObject.addSelectField("*");
  437.                 sqlQueryObject.addWhereCondition("id_accordo = ?");
  438.                 sqlQueryObject.setANDLogicOperator(true);
  439.                 sqlQuery = sqlQueryObject.createSQLQuery();
  440.                 stm = con.prepareStatement(sqlQuery);
  441.                 stm.setLong(1, idAccordo);

  442.                 this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idAccordo));
  443.                 rs = stm.executeQuery();

  444.                 AccordoServizioParteComuneServizioCompostoSintetico asComposto = null;
  445.                 if (rs.next()) {

  446.                     asComposto = new AccordoServizioParteComuneServizioCompostoSintetico();
  447.                     asComposto.setId(rs.getLong("id"));
  448.                     asComposto.setIdAccordoCooperazione(rs.getLong("id_accordo_cooperazione"));

  449.                     IDAccordoCooperazione idAccordoCooperazione = this.driver.getIdAccordoCooperazione(asComposto.getIdAccordoCooperazione(), con);
  450.                     String uriAccordo = this.driver.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordoCooperazione);
  451.                     asComposto.setAccordoCooperazione(uriAccordo);
  452.                 }
  453.                 rs.close();
  454.                 stm.close();

  455.                 if(asComposto!=null){

  456.                     // read servizi componenti
  457.                     sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  458.                     sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPONENTI);
  459.                     sqlQueryObject.addSelectField("*");
  460.                     sqlQueryObject.addWhereCondition("id_servizio_composto = ?");
  461.                     sqlQueryObject.setANDLogicOperator(true);
  462.                     sqlQuery = sqlQueryObject.createSQLQuery();
  463.                     stm = con.prepareStatement(sqlQuery);
  464.                     stm.setLong(1, asComposto.getId());
  465.                     this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, asComposto.getId()));
  466.                     rs = stm.executeQuery();

  467.                     while (rs.next()) {

  468.                         AccordoServizioParteComuneServizioCompostoServizioComponenteSintetico asComponente = new AccordoServizioParteComuneServizioCompostoServizioComponenteSintetico();
  469.                         asComponente.setIdServizioComponente(rs.getLong("id_servizio_componente"));
  470.                         asComponente.setAzione(rs.getString("azione"));

  471.                         AccordoServizioParteSpecifica aspsServizioComponente = this.driver.getAccordoServizioParteSpecifica(asComponente.getIdServizioComponente(),con);
  472.                         asComponente.setTipo(aspsServizioComponente.getTipo());
  473.                         asComponente.setNome(aspsServizioComponente.getNome());
  474.                         asComponente.setVersione(aspsServizioComponente.getVersione());
  475.                         asComponente.setTipoSoggetto(aspsServizioComponente.getTipoSoggettoErogatore());
  476.                         asComponente.setNomeSoggetto(aspsServizioComponente.getNomeSoggettoErogatore());

  477.                         asComposto.getServizioComponente().add(asComponente);
  478.                     }
  479.                     rs.close();
  480.                     stm.close();


  481.                     // setto all'interno dell'accordo
  482.                     accordoServizio.setServizioComposto(asComposto);
  483.                 }

  484.             } else {
  485.                 throw new DriverRegistroServiziNotFound("[DriverRegistroServiziDB::getAccordoServizioParteComuneSintetico] rs.next non ha restituito valori con la seguente interrogazione :\n" + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idAccordo));
  486.             }


  487. //          if(accordoServizio!=null){
  488. //              // nomiAzione setting
  489. //              accordoServizio.setNomiAzione(accordoServizio.readNomiAzione());
  490. //          }
  491.             return accordoServizio;

  492.         }catch (DriverRegistroServiziNotFound e) {
  493.             throw e;
  494.         }catch (Exception se) {
  495.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::getAccordoServizioParteComuneSintetico] Exception :" + se.getMessage(),se);
  496.         } finally {

  497.             JDBCUtilities.closeResources(rs, stm);

  498.             this.driver.closeConnection(conParam, con);

  499.         }
  500.     }
  501.    
  502.    
  503.     protected List<AccordoServizioParteComuneSintetico> accordiList(String superuser, ISearch ricerca) throws DriverRegistroServiziException {
  504.         return accordiListEngine(superuser,ricerca,false,false);
  505.     }
  506.     protected List<AccordoServizioParteComuneSintetico> accordiServizioParteComuneList(String superuser, ISearch ricerca) throws DriverRegistroServiziException {
  507.         return accordiListEngine(superuser,ricerca,false,true);
  508.     }
  509.     protected List<AccordoServizioParteComuneSintetico> accordiServizioCompostiList(String superuser, ISearch ricerca) throws DriverRegistroServiziException {
  510.         return accordiListEngine(superuser,ricerca,true,false);
  511.     }
  512.     private List<AccordoServizioParteComuneSintetico> accordiListEngine(String superuser, ISearch ricerca,boolean excludeASParteComune,boolean excludeASComposti) throws DriverRegistroServiziException {
  513.         String nomeMetodo = "accordiList";
  514.         int idLista = Liste.ACCORDI;
  515.         int offset;
  516.         int limit;
  517.         String search;
  518.         String queryString;

  519.         limit = ricerca.getPageSize(idLista);
  520.         offset = ricerca.getIndexIniziale(idLista);
  521.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  522.        
  523.         String filterProtocollo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLO);
  524.         String filterProtocolli = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLI);
  525.         List<String> tipoSoggettiProtocollo = null;
  526.         try {
  527.             tipoSoggettiProtocollo = Filtri.convertToTipiSoggetti(filterProtocollo, filterProtocolli);
  528.         }catch(Exception e) {
  529.             throw new DriverRegistroServiziException(e.getMessage(),e);
  530.         }
  531.         boolean searchByTipoSoggetto = (tipoSoggettiProtocollo!=null && tipoSoggettiProtocollo.size()>0);
  532.        
  533.         String filterTipoAPI = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SERVICE_BINDING);
  534.        
  535.         String filterStatoAccordo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_STATO_ACCORDO);
  536.        
  537.         String filterGruppo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_GRUPPO);
  538.        
  539.         String filterCanale = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CANALE);
  540.        
  541.         String filtroModISicurezzaCanale = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_CANALE);
  542.         String filtroModISicurezzaMessaggio = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_MESSAGGIO);
  543.         String filtroModISorgenteToken = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SORGENTE_TOKEN);
  544.         String filtroModIDigestRichiesta = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_DIGEST_RICHIESTA);
  545.         String filtroModIInfoUtente = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_INFORMAZIONI_UTENTE);
  546.         if((filtroModISicurezzaCanale!=null && "".equals(filtroModISicurezzaCanale))) {
  547.             filtroModISicurezzaCanale=null;
  548.         }
  549.         if((filtroModISicurezzaMessaggio!=null && "".equals(filtroModISicurezzaMessaggio))) {
  550.             filtroModISicurezzaMessaggio=null;
  551.         }
  552.         if((filtroModISorgenteToken!=null && "".equals(filtroModISorgenteToken))) {
  553.             filtroModISorgenteToken=null;
  554.         }
  555.         Boolean filtroModIDigestRichiestaEnabled = null;
  556.         if(CostantiDB.STATO_FUNZIONALITA_ABILITATO.equals(filtroModIDigestRichiesta)) {
  557.             filtroModIDigestRichiestaEnabled = true;
  558.         }
  559.         else if(CostantiDB.STATO_FUNZIONALITA_DISABILITATO.equals(filtroModIDigestRichiesta)) {
  560.             filtroModIDigestRichiestaEnabled = false;
  561.         }
  562.         if((filtroModIInfoUtente!=null && "".equals(filtroModIInfoUtente))) {
  563.             filtroModIInfoUtente=null;
  564.         }
  565.         boolean filtroModI = filtroModISicurezzaCanale!=null || filtroModISicurezzaMessaggio!=null ||
  566.                 filtroModISorgenteToken!=null ||
  567.                 filtroModIDigestRichiestaEnabled!=null || filtroModIInfoUtente!=null;
  568.        
  569.         boolean searchCanale = false;
  570.         boolean canaleDefault = false;
  571.         if(filterCanale!=null && !filterCanale.equals("")) {
  572.             searchCanale = true;
  573.             if(filterCanale.startsWith(Filtri.PREFIX_VALUE_CANALE_DEFAULT)) {
  574.                 filterCanale = filterCanale.substring(Filtri.PREFIX_VALUE_CANALE_DEFAULT.length());
  575.                 canaleDefault = true;
  576.             }
  577.         }

  578.         this.driver.logDebug("search : " + search);
  579.         this.driver.logDebug("filterProtocollo : " + filterProtocollo);
  580.         this.driver.logDebug("filterProtocolli : " + filterProtocolli);
  581.         this.driver.logDebug("filterTipoAPI : " + filterTipoAPI);
  582.         this.driver.logDebug("filterStatoAccordo : " + filterStatoAccordo);
  583.         this.driver.logDebug("filterGruppo : " + filterGruppo);
  584.         this.driver.logDebug("filterCanale : " + filterCanale);
  585.         this.driver.logDebug("filtroModISicurezzaCanale : " + filtroModISicurezzaCanale);
  586.         this.driver.logDebug("filtroModISicurezzaMessaggio : " + filtroModISicurezzaMessaggio);
  587.         this.driver.logDebug("filtroModISorgenteToken : " + filtroModISorgenteToken);
  588.         this.driver.logDebug("filtroModIDigestRichiesta : " + filtroModIDigestRichiesta);
  589.         this.driver.logDebug("filtroModIInfoUtente : " + filtroModIInfoUtente);

  590.         Connection con = null;
  591.         PreparedStatement stmt = null;
  592.         ResultSet risultato = null;

  593.         ArrayList<AccordoServizioParteComuneSintetico> lista = new ArrayList<AccordoServizioParteComuneSintetico>();

  594.         if (this.driver.atomica) {
  595.             try {
  596.                 con = this.driver.getConnectionFromDatasource("accordiListEngine");

  597.             } catch (Exception e) {
  598.                 throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  599.             }

  600.         } else
  601.             con = this.driver.globalConnection;

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

  603.         try {

  604.             if(excludeASComposti && excludeASParteComune){
  605.                 throw new Exception("Non e' possibile invocare il metodo accordiListEngine con entrambi i parametri excludeASParteComune,excludeASComposti impostati al valore true");
  606.             }


  607.             ISQLQueryObject sqlQueryObjectExclude = null;
  608.             if(excludeASComposti || excludeASParteComune){
  609.                 sqlQueryObjectExclude = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  610.                 sqlQueryObjectExclude.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  611.                 sqlQueryObjectExclude.addSelectField(CostantiDB.ACCORDI_SERVIZI_COMPOSTO, "id_accordo");
  612.                 sqlQueryObjectExclude.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo="+CostantiDB.ACCORDI+".id");
  613.             }

  614.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  615.             sqlQueryObject.addFromTable(CostantiDB.ACCORDI);
  616.             sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  617.             sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".id_referente="+CostantiDB.SOGGETTI+".id");
  618.             sqlQueryObject.addSelectCountField("*", "cont");
  619.             if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  620.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".superuser = ?");
  621.            
  622.             //query con search
  623.             if (!search.equals("")) {
  624.                 sqlQueryObject.addWhereCondition(false,
  625.                         sqlQueryObject.getWhereLikeCondition(CostantiDB.ACCORDI+".nome", search, true, true));
  626.                         //sqlQueryObject.getWhereLikeCondition("versione", search, true, true), // la versione e' troppo, tutte hanno 1 ....
  627.                         //sqlQueryObject.getWhereLikeCondition(CostantiDB.SOGGETTI+".nome_soggetto", search, true, true));  // fa confusone nei protocolli che non supportano il referente
  628.             }
  629.             if (searchByTipoSoggetto) {
  630.                 sqlQueryObject.addWhereINCondition("tipo_soggetto", true, tipoSoggettiProtocollo.toArray(new String[1]));      
  631.             }
  632.            
  633.             if(filterTipoAPI!=null && !filterTipoAPI.equals("")) {
  634.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".service_binding = ?");
  635.             }
  636.             if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  637.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".stato = ?");
  638.             }
  639.             if(filterGruppo!=null && !filterGruppo.equals("")) {
  640.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_GRUPPI);
  641.                 sqlQueryObject.addFromTable(CostantiDB.GRUPPI);
  642.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_accordo="+CostantiDB.ACCORDI+".id");
  643.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_gruppo="+CostantiDB.GRUPPI+".id");
  644.                 sqlQueryObject.addWhereCondition(CostantiDB.GRUPPI+".nome = ?");
  645.             }
  646.            
  647.             if(excludeASParteComune){
  648.                 sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectExclude);
  649.             }
  650.             if(excludeASComposti){
  651.                 sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectExclude);
  652.             }
  653.            
  654.             if(searchCanale) {
  655.                 if(canaleDefault) {
  656.                     sqlQueryObject.addWhereCondition(false, CostantiDB.ACCORDI+".canale = ?", CostantiDB.ACCORDI+".canale is null");
  657.                 }
  658.                 else {
  659.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".canale = ?");
  660.                 }
  661.             }
  662.            
  663.             if(filtroModI) {
  664.                 DBUtils.setFiltriModI(sqlQueryObject, this.driver.tipoDB,
  665.                         filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  666.                         filtroModISorgenteToken,
  667.                         filtroModIDigestRichiestaEnabled, filtroModIInfoUtente);
  668.             }
  669.            
  670.             sqlQueryObject.setANDLogicOperator(true);
  671.             queryString = sqlQueryObject.createSQLQuery();
  672.             stmt = con.prepareStatement(queryString);
  673.             int index = 1;
  674.             if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  675.                 stmt.setString(index++, superuser);
  676.             if(filterTipoAPI!=null && !filterTipoAPI.equals("")) {
  677.                 stmt.setString(index++, filterTipoAPI);
  678.             }
  679.             if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  680.                 stmt.setString(index++, filterStatoAccordo);
  681.             }
  682.             if(filterGruppo!=null && !filterGruppo.equals("")) {
  683.                 stmt.setString(index++, filterGruppo);
  684.             }
  685.             if(searchCanale) {
  686.                 stmt.setString(index++, filterCanale);
  687.             }
  688.            
  689.             risultato = stmt.executeQuery();
  690.             if (risultato.next())
  691.                 ricerca.setNumEntries(idLista,risultato.getInt(1));
  692.             risultato.close();
  693.             stmt.close();

  694.             // ricavo le entries
  695.             if (limit == 0) // con limit
  696.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  697.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  698.             sqlQueryObject.addFromTable(CostantiDB.ACCORDI);
  699.             sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  700.             sqlQueryObject.addSelectAliasField(CostantiDB.ACCORDI, "id", "idAccordo");
  701.             sqlQueryObject.addSelectAliasField(CostantiDB.ACCORDI, "nome", "nomeAccordo");
  702.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI, "versione");
  703.             sqlQueryObject.addSelectField(CostantiDB.SOGGETTI, "tipo_soggetto");
  704.             sqlQueryObject.addSelectField(CostantiDB.SOGGETTI, "nome_soggetto");
  705.             sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".id_referente="+CostantiDB.SOGGETTI+".id");
  706.             //sqlQueryObject.addSelectField("id_referente");
  707.             if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  708.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".superuser = ?");
  709.            
  710.             if (!search.equals("")) { // con search
  711.                 sqlQueryObject.addWhereCondition(false,
  712.                         sqlQueryObject.getWhereLikeCondition(CostantiDB.ACCORDI+".nome", search, true, true));
  713.                 //sqlQueryObject.getWhereLikeCondition("versione", search, true, true), // la versione e' troppo, tutte hanno 1 ....
  714.                 //sqlQueryObject.getWhereLikeCondition(CostantiDB.SOGGETTI+".nome_soggetto", search, true, true));  // fa confusone nei protocolli che non supportano il referente
  715.             }
  716.             if (searchByTipoSoggetto) {
  717.                 sqlQueryObject.addWhereINCondition("tipo_soggetto", true, tipoSoggettiProtocollo.toArray(new String[1]));      
  718.             }

  719.             if(filterTipoAPI!=null && !filterTipoAPI.equals("")) { // con filter
  720.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".service_binding = ?");
  721.             }
  722.             if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  723.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".stato = ?");
  724.             }
  725.             if(filterGruppo!=null && !filterGruppo.equals("")) {
  726.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_GRUPPI);
  727.                 sqlQueryObject.addFromTable(CostantiDB.GRUPPI);
  728.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_accordo="+CostantiDB.ACCORDI+".id");
  729.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_gruppo="+CostantiDB.GRUPPI+".id");
  730.                 sqlQueryObject.addWhereCondition(CostantiDB.GRUPPI+".nome = ?");
  731.             }
  732.            
  733.             if(excludeASParteComune){
  734.                 sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectExclude);
  735.             }
  736.             if(excludeASComposti){
  737.                 sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectExclude);
  738.             }
  739.            
  740.             if(searchCanale) {
  741.                 if(canaleDefault) {
  742.                     sqlQueryObject.addWhereCondition(false, CostantiDB.ACCORDI+".canale = ?", CostantiDB.ACCORDI+".canale is null");
  743.                 }
  744.                 else {
  745.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".canale = ?");
  746.                 }
  747.             }
  748.            
  749.             if(filtroModI) {
  750.                 DBUtils.setFiltriModI(sqlQueryObject, this.driver.tipoDB,
  751.                         filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  752.                         filtroModISorgenteToken,
  753.                         filtroModIDigestRichiestaEnabled, filtroModIInfoUtente);
  754.             }
  755.            
  756.             sqlQueryObject.setANDLogicOperator(true);
  757.             sqlQueryObject.addOrderBy("nomeAccordo");
  758.             sqlQueryObject.addOrderBy("versione");
  759.             sqlQueryObject.addOrderBy("nome_soggetto");
  760.             sqlQueryObject.addOrderBy("tipo_soggetto");
  761.             sqlQueryObject.setSortType(true);
  762.             sqlQueryObject.setLimit(limit);
  763.             sqlQueryObject.setOffset(offset);
  764.             queryString = sqlQueryObject.createSQLQuery();

  765.             this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(queryString));

  766.             stmt = con.prepareStatement(queryString);
  767.             index = 1;
  768.             if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  769.                 stmt.setString(index++, superuser);
  770.             if(filterTipoAPI!=null && !filterTipoAPI.equals("")) {
  771.                 stmt.setString(index++, filterTipoAPI);
  772.             }
  773.             if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  774.                 stmt.setString(index++, filterStatoAccordo);
  775.             }
  776.             if(filterGruppo!=null && !filterGruppo.equals("")) {
  777.                 stmt.setString(index++, filterGruppo);
  778.             }
  779.             if(searchCanale) {
  780.                 stmt.setString(index++, filterCanale);
  781.             }
  782.             risultato = stmt.executeQuery();

  783.             AccordoServizioParteComuneSintetico accordo = null;

  784.             while (risultato.next()) {

  785.                 Long id = risultato.getLong("idAccordo");
  786.                 accordo = this.getAccordoServizioParteComuneSintetico(id, con);
  787.                 lista.add(accordo);

  788.             }

  789.             this.driver.logDebug("size lista :" + ((lista == null) ? null : lista.size()));

  790.             return lista;

  791.         } catch (Exception se) {

  792.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  793.         } finally {

  794.             //Chiudo statement and resultset
  795.             JDBCUtilities.closeResources(risultato, stmt);

  796.             this.driver.closeConnection(con);
  797.         }
  798.     }
  799. }