DriverRegistroServiziDB_accordiParteSpecificaSearchDriver.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.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.Filtri;
  28. import org.openspcoop2.core.commons.ISearch;
  29. import org.openspcoop2.core.commons.Liste;
  30. import org.openspcoop2.core.commons.SearchUtils;
  31. import org.openspcoop2.core.constants.CostantiDB;
  32. import org.openspcoop2.core.constants.TipiConnettore;
  33. import org.openspcoop2.core.id.IDAccordo;
  34. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  35. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  36. import org.openspcoop2.core.registry.Fruitore;
  37. import org.openspcoop2.core.registry.Soggetto;
  38. import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
  39. import org.openspcoop2.core.registry.constants.PddTipologia;
  40. import org.openspcoop2.core.registry.constants.TipologiaServizio;
  41. import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
  42. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  43. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  44. import org.openspcoop2.utils.sql.ISQLQueryObject;
  45. import org.openspcoop2.utils.sql.SQLObjectFactory;

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

  56.     private DriverRegistroServiziDB driver = null;
  57.    
  58.     protected DriverRegistroServiziDB_accordiParteSpecificaSearchDriver(DriverRegistroServiziDB driver) {
  59.         this.driver = driver;
  60.     }
  61.        
  62.     protected List<AccordoServizioParteSpecifica> serviziList(String superuser,ISearch ricerca) throws DriverRegistroServiziException {
  63.         String nomeMetodo = "serviziList";
  64.         int idLista = Liste.SERVIZI;
  65.         int offset;
  66.         int limit;
  67.         String search;
  68.         String queryString;

  69.         limit = ricerca.getPageSize(idLista);
  70.         offset = ricerca.getIndexIniziale(idLista);
  71.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  72.         ricerca.getSearchString(idLista);

  73.         this.driver.logDebug("search : " + search);

  74.         Connection con = null;
  75.         PreparedStatement stmt = null;
  76.         ResultSet risultato = null;
  77.         ArrayList<AccordoServizioParteSpecifica> lista = new ArrayList<AccordoServizioParteSpecifica>();

  78.         if (this.driver.atomica) {
  79.             try {
  80.                 con = this.driver.getConnectionFromDatasource("serviziList");
  81.             } catch (Exception e) {
  82.                 throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  83.             }

  84.         } else
  85.             con = this.driver.globalConnection;

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

  87.         try {

  88.             if (!search.equals("")) {
  89.                 //query con search
  90.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  91.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  92.                 sqlQueryObject.addSelectCountField("*", "cont");
  93.                 sqlQueryObject.setANDLogicOperator(true);
  94.                 sqlQueryObject.addWhereLikeCondition("nome_servizio", search, true, true);
  95.                 if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  96.                     sqlQueryObject.addWhereCondition("superuser = ?");

  97.                 queryString = sqlQueryObject.createSQLQuery();
  98.             } else {
  99.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  100.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  101.                 sqlQueryObject.addSelectCountField("*", "cont");
  102.                 sqlQueryObject.setANDLogicOperator(true);
  103.                 if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  104.                     sqlQueryObject.addWhereCondition("superuser = ?");
  105.                 queryString = sqlQueryObject.createSQLQuery();
  106.             }
  107.             stmt = con.prepareStatement(queryString);
  108.             if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  109.                 stmt.setString(1, superuser);
  110.             risultato = stmt.executeQuery();
  111.             if (risultato.next())
  112.                 ricerca.setNumEntries(idLista,risultato.getInt(1));
  113.             risultato.close();
  114.             stmt.close();

  115.             // ricavo le entries
  116.             if (limit == 0) // con limit
  117.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  118.             if (!search.equals("")) { // con search
  119.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  120.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  121.                 sqlQueryObject.addSelectField("id");
  122.                 sqlQueryObject.addSelectField("nome_servizio");
  123.                 sqlQueryObject.addSelectField("tipo_servizio");
  124.                 sqlQueryObject.addSelectField("versione_servizio");
  125.                 sqlQueryObject.addSelectField("id_soggetto");
  126.                 sqlQueryObject.addSelectField("id_accordo");
  127.                 sqlQueryObject.addSelectField("servizio_correlato");
  128.                 sqlQueryObject.addSelectField("stato");
  129.                 sqlQueryObject.setANDLogicOperator(true);
  130.                 sqlQueryObject.addWhereLikeCondition("nome_servizio", search, true, true);
  131.                 if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  132.                     sqlQueryObject.addWhereCondition("superuser = ?");
  133.                 sqlQueryObject.addOrderBy("tipo_servizio");
  134.                 sqlQueryObject.addOrderBy("nome_servizio");
  135.                 sqlQueryObject.setSortType(true);
  136.                 sqlQueryObject.setLimit(limit);
  137.                 sqlQueryObject.setOffset(offset);
  138.                 queryString = sqlQueryObject.createSQLQuery();
  139.             } else {
  140.                 // senza search
  141.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  142.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  143.                 sqlQueryObject.addSelectField("id");
  144.                 sqlQueryObject.addSelectField("nome_servizio");
  145.                 sqlQueryObject.addSelectField("tipo_servizio");
  146.                 sqlQueryObject.addSelectField("versione_servizio");
  147.                 sqlQueryObject.addSelectField("id_soggetto");
  148.                 sqlQueryObject.addSelectField("id_accordo");
  149.                 sqlQueryObject.addSelectField("servizio_correlato");
  150.                 sqlQueryObject.addSelectField("stato");
  151.                 sqlQueryObject.setANDLogicOperator(true);
  152.                 if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  153.                     sqlQueryObject.addWhereCondition("superuser = ?");
  154.                 sqlQueryObject.addOrderBy("tipo_servizio");
  155.                 sqlQueryObject.addOrderBy("nome_servizio");
  156.                 sqlQueryObject.setSortType(true);
  157.                 sqlQueryObject.setLimit(limit);
  158.                 sqlQueryObject.setOffset(offset);
  159.                 queryString = sqlQueryObject.createSQLQuery();
  160.             }

  161.             this.driver.logDebug("query : " + queryString);

  162.             stmt = con.prepareStatement(queryString);
  163.             if(this.driver.useSuperUser && superuser!=null && (!superuser.equals("")))
  164.                 stmt.setString(1, superuser);
  165.             risultato = stmt.executeQuery();

  166.             AccordoServizioParteSpecifica asps;
  167.             while (risultato.next()) {

  168.                 asps = new AccordoServizioParteSpecifica();
  169.                
  170.                 asps.setId(risultato.getLong("id"));
  171.                 asps.setNome(risultato.getString("nome_servizio"));
  172.                 asps.setTipo(risultato.getString("tipo_servizio"));
  173.                 asps.setVersione(risultato.getInt("versione_servizio"));
  174.                 asps.setIdSoggetto(risultato.getLong("id_soggetto"));
  175.                 asps.setIdAccordo(risultato.getLong("id_accordo"));
  176.                 String servizio_correlato = risultato.getString("servizio_correlato");
  177.                 if ( (servizio_correlato != null) &&
  178.                         (servizio_correlato.equalsIgnoreCase(CostantiRegistroServizi.ABILITATO.toString()) || TipologiaServizio.CORRELATO.toString().equals(servizio_correlato))
  179.                         ){
  180.                     asps.setTipologiaServizio(TipologiaServizio.CORRELATO);
  181.                 }else{
  182.                     asps.setTipologiaServizio(TipologiaServizio.NORMALE);
  183.                 }

  184.                 // informazioni su soggetto
  185.                 Soggetto sog = this.driver.getSoggetto(asps.getIdSoggetto(),con);
  186.                 String nomeErogatore = sog.getNome();
  187.                 String tipoErogatore = sog.getTipo();

  188.                 asps.setNomeSoggettoErogatore(nomeErogatore);
  189.                 asps.setTipoSoggettoErogatore(tipoErogatore);

  190.                 // informazioni su accordo
  191.                 AccordoServizioParteComune as = this.driver.getAccordoServizioParteComune(asps.getIdAccordo(),con);
  192.                 asps.setAccordoServizioParteComune(this.driver.idAccordoFactory.getUriFromAccordo(as));

  193.                 // Stato
  194.                 asps.setStatoPackage(risultato.getString("stato"));

  195.                 lista.add(asps);
  196.             }

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

  198.             return lista;

  199.         } catch (Exception qe) {
  200.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  201.         } finally {

  202.             //Chiudo statement and resultset
  203.             JDBCUtilities.closeResources(risultato, stmt);

  204.             this.driver.closeConnection(con);
  205.         }
  206.     }

  207.    
  208.     protected List<Soggetto> accordiErogatoriList(long idAccordo, ISearch ricerca) throws DriverRegistroServiziException {
  209.         String nomeMetodo = "accordiErogatoriList";
  210.         int idLista = Liste.ACCORDI_EROGATORI;
  211.         int offset;
  212.         int limit;
  213.         String search;
  214.         String queryString;

  215.         limit = ricerca.getPageSize(idLista);
  216.         offset = ricerca.getIndexIniziale(idLista);
  217.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  218.         ricerca.getSearchString(idLista);

  219.         Connection con = null;
  220.         PreparedStatement stmt = null;
  221.         ResultSet risultato = null;
  222.         PreparedStatement stmt2 = null;
  223.         ResultSet risultato2 = null;

  224.         ArrayList<Soggetto> lista = new ArrayList<Soggetto>();

  225.         if (this.driver.atomica) {
  226.             try {
  227.                 con = this.driver.getConnectionFromDatasource("accordiErogatoriList");

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

  230.             }

  231.         } else
  232.             con = this.driver.globalConnection;

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

  234.         try {

  235.             if (!search.equals("")) {
  236.                 //query con search
  237.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  238.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  239.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  240.                 sqlQueryObject.addSelectCountField("*", "cont");
  241.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI + ".id_accordo = ?");
  242.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI + ".id_soggetto = " + CostantiDB.SOGGETTI + ".id");
  243.                 sqlQueryObject.addWhereCondition(false, sqlQueryObject.getWhereLikeCondition(CostantiDB.SOGGETTI + ".nome_soggetto",search,true,true),
  244.                         sqlQueryObject.getWhereLikeCondition(CostantiDB.SOGGETTI + ".tipo_soggetto",search,true,true));
  245.                 sqlQueryObject.setANDLogicOperator(true);
  246.                 queryString = sqlQueryObject.createSQLQuery();
  247.             } else {
  248.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  249.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  250.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  251.                 sqlQueryObject.addSelectCountField("*", "cont");
  252.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_accordo = ?");
  253.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  254.                 sqlQueryObject.setANDLogicOperator(true);
  255.                 queryString = sqlQueryObject.createSQLQuery();
  256.             }
  257.             stmt = con.prepareStatement(queryString);
  258.             stmt.setLong(1,idAccordo);
  259.             risultato = stmt.executeQuery();
  260.             if (risultato.next())
  261.                 ricerca.setNumEntries(idLista,risultato.getInt("cont"));
  262.             risultato.close();
  263.             stmt.close();

  264.             // ricavo le entries
  265.             if (limit == 0) // con limit
  266.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  267.             if (!search.equals("")) { // con search
  268.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  269.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  270.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  271.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".nome_soggetto");
  272.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".tipo_soggetto");
  273.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".id");
  274.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".descrizione");
  275.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".identificativo_porta");
  276.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".codice_ipa");
  277.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".id", "servid");
  278.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".nome_servizio");
  279.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".tipo_servizio");
  280.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".versione_servizio");
  281.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".servizio_correlato");
  282.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".id_accordo");
  283.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".id_soggetto");
  284.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI + ".id_accordo = ?");
  285.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI + ".id_soggetto = " + CostantiDB.SOGGETTI + ".id");
  286.                 sqlQueryObject.addWhereCondition(false, sqlQueryObject.getWhereLikeCondition(CostantiDB.SOGGETTI + ".nome_soggetto",search,true,true),
  287.                         sqlQueryObject.getWhereLikeCondition(CostantiDB.SOGGETTI + ".tipo_soggetto",search,true,true));
  288.                 sqlQueryObject.setANDLogicOperator(true);
  289.                 sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI + ".tipo_soggetto");
  290.                 sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI + ".nome_soggetto");
  291.                 sqlQueryObject.setSortType(true);
  292.                 sqlQueryObject.setLimit(limit);
  293.                 sqlQueryObject.setOffset(offset);
  294.                 queryString = sqlQueryObject.createSQLQuery();
  295.             } else {
  296.                 // senza search
  297.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  298.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  299.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  300.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".nome_soggetto");
  301.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".tipo_soggetto");
  302.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".id");
  303.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".descrizione");
  304.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".identificativo_porta");
  305.                 sqlQueryObject.addSelectField(CostantiDB.SOGGETTI+".codice_ipa");
  306.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".id", "servid");
  307.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".nome_servizio");
  308.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".tipo_servizio");
  309.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".versione_servizio");
  310.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".servizio_correlato");
  311.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".id_accordo");
  312.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".id_soggetto");
  313.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_accordo = ?");
  314.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  315.                 sqlQueryObject.setANDLogicOperator(true);
  316.                 sqlQueryObject.addOrderBy("tipo_soggetto");
  317.                 sqlQueryObject.addOrderBy("nome_soggetto");
  318.                 sqlQueryObject.setSortType(true);
  319.                 sqlQueryObject.setLimit(limit);
  320.                 sqlQueryObject.setOffset(offset);
  321.                 queryString = sqlQueryObject.createSQLQuery();
  322.             }
  323.             stmt = con.prepareStatement(queryString);
  324.             stmt.setLong(1, idAccordo);
  325.             risultato = stmt.executeQuery();

  326.             Soggetto sog = null;
  327.             String oldNome = "";
  328.             String oldTipo = "";
  329.             while (risultato.next()) {
  330.                 String newNome = risultato.getString("nome_soggetto");
  331.                 String newTipo = risultato.getString("tipo_soggetto");

  332.                 // se il nome o il tipo sono diversi allora e' un soggetto nuovo
  333.                 // altrimenti e' sempre lo stesso soggetto
  334.                 // il controllo va fatto prima sul tipo in quanto il risultato
  335.                 // e' ordinato come tipo/nome
  336.                 if (sog == null || !oldTipo.equals(newTipo) || !oldNome.equals(newNome)) {

  337.                     oldTipo=newTipo;
  338.                     oldNome=newNome;
  339.                     // se sog e' null e' la prima volta che visito il result set
  340.                     // e non devo aggiunger nulla alla lista
  341.                     // altrimenti ho finito di aggiungere i servizi ad un
  342.                     // soggetto e devo metterlo nella lista
  343.                     // e iniziare ad aggiungere i servizi al nuovo soggetto
  344.                     // trovato
  345.                     if (sog != null)
  346.                         lista.add(sog);

  347.                     // creo il nuovo soggetto
  348.                     sog = new Soggetto();

  349.                     sog.setId(risultato.getLong("id"));
  350.                     sog.setNome(risultato.getString("nome_soggetto"));
  351.                     sog.setTipo(risultato.getString("tipo_soggetto"));
  352.                     sog.setDescrizione(risultato.getString("descrizione"));
  353.                     sog.setIdentificativoPorta(risultato.getString("identificativo_porta"));
  354.                     sog.setCodiceIpa(risultato.getString("codice_ipa"));
  355.                 }

  356.                 AccordoServizioParteSpecifica serv = new AccordoServizioParteSpecifica();
  357.                 serv.setId(risultato.getLong("servid"));
  358.                 serv.setNome(risultato.getString("nome_servizio"));
  359.                 serv.setTipo(risultato.getString("tipo_servizio"));
  360.                 serv.setVersione(risultato.getInt("versione_servizio"));

  361.                 if ( risultato.getString("servizio_correlato").equals(CostantiRegistroServizi.ABILITATO.toString()) ||
  362.                         TipologiaServizio.CORRELATO.toString().equals(risultato.getString("servizio_correlato"))) {
  363.                     serv.setTipologiaServizio(TipologiaServizio.CORRELATO);
  364.                 }
  365.                 else{
  366.                     serv.setTipologiaServizio(TipologiaServizio.NORMALE);
  367.                 }
  368.                
  369.                 ISQLQueryObject sqlQueryObjectFruitori = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  370.                 sqlQueryObjectFruitori.addFromTable(CostantiDB.SERVIZI);
  371.                 sqlQueryObjectFruitori.addFromTable(CostantiDB.SERVIZI_FRUITORI);
  372.                 sqlQueryObjectFruitori.addFromTable(CostantiDB.SOGGETTI);
  373.                 sqlQueryObjectFruitori.addSelectField(CostantiDB.SOGGETTI,"tipo_soggetto");
  374.                 sqlQueryObjectFruitori.addSelectField(CostantiDB.SOGGETTI,"nome_soggetto");
  375.                 sqlQueryObjectFruitori.addWhereCondition(CostantiDB.SERVIZI+".id = ?");
  376.                 sqlQueryObjectFruitori.addWhereCondition(CostantiDB.SERVIZI+".id = "+CostantiDB.SERVIZI_FRUITORI+".id_servizio");
  377.                 sqlQueryObjectFruitori.addWhereCondition(CostantiDB.SOGGETTI+".id = "+CostantiDB.SERVIZI_FRUITORI+".id_soggetto");
  378.                 sqlQueryObjectFruitori.setANDLogicOperator(true);
  379.                 sqlQueryObjectFruitori.setSelectDistinct(true);
  380.                 String queryStringFruitori = sqlQueryObjectFruitori.createSQLQuery();
  381.                 stmt2 = con.prepareStatement(queryStringFruitori);
  382.                 stmt2.setLong(1, serv.getId());
  383.                 risultato2 = stmt2.executeQuery();

  384.                 while (risultato2.next()) {
  385.                     String nome = risultato2.getString("nome_soggetto");
  386.                     String tipo = risultato2.getString("tipo_soggetto");
  387.                     Fruitore fruitore = new Fruitore();
  388.                     fruitore.setTipo(tipo);
  389.                     fruitore.setNome(nome);
  390.                     serv.addFruitore(fruitore);
  391.                 }
  392.                 risultato2.close();
  393.                 stmt2.close();

  394.                 serv.setTipoSoggettoErogatore(sog.getTipo());
  395.                 serv.setNomeSoggettoErogatore(sog.getNome());
  396.                 sog.addAccordoServizioParteSpecifica(serv);
  397.             }

  398.             //aggiungo l'ultimo soggetto alla lista
  399.             if(sog!=null) lista.add(sog);

  400.             return lista;

  401.         } catch (Exception se) {

  402.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  403.         } finally {
  404.             //Chiudo statement and resultset
  405.             JDBCUtilities.closeResources(risultato, stmt);
  406.             JDBCUtilities.closeResources(risultato2, stmt2);
  407.             this.driver.closeConnection(con);
  408.         }
  409.     }

  410.        
  411.     protected List<AccordoServizioParteSpecifica> getServiziByIdErogatore(long idErogatore,ISearch filters) throws DriverRegistroServiziException {
  412.         return getServiziByIdErogatoreAndFilters(idErogatore, filters);    
  413.     }

  414.     private List<AccordoServizioParteSpecifica> getServiziByIdErogatoreAndFilters(long idErogatore,ISearch filters) throws DriverRegistroServiziException {

  415.         String nomeMetodo = "getServiziByIdErogatoreAndFilters";
  416.         String queryString;
  417.         int idLista = Liste.SERVIZI;
  418.         Connection con = null;
  419.         PreparedStatement stmt = null;
  420.         ResultSet risultato = null;

  421.         int limit = filters.getPageSize(idLista);
  422.         int offset = filters.getIndexIniziale(idLista);
  423.         String search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(filters.getSearchString(idLista)) ? "" : filters.getSearchString(idLista));

  424.         ArrayList<AccordoServizioParteSpecifica> lista = null;

  425.         if (this.driver.atomica) {
  426.             try {
  427.                 con = this.driver.getConnectionFromDatasource("getServiziByIdErogatoreAndFilters");

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

  430.             }

  431.         } else {
  432.             con = this.driver.globalConnection;
  433.         }

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

  435.         try {

  436.             //count
  437.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  438.             sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  439.             sqlQueryObject.addSelectCountField("*", "cont");
  440.             sqlQueryObject.addWhereCondition("id_soggetto = ?");
  441.             sqlQueryObject.setANDLogicOperator(true);
  442.             if (!search.equals("")) {
  443.                 //query con search
  444.                 sqlQueryObject.addWhereLikeCondition("nome_servizio", search, true, true);
  445.             }
  446.             queryString = sqlQueryObject.createSQLQuery();

  447.             stmt = con.prepareStatement(queryString);
  448.             stmt.setLong(1, idErogatore);
  449.             risultato = stmt.executeQuery();
  450.             if (risultato.next())
  451.                 filters.setNumEntries(idLista,risultato.getInt(1));
  452.             risultato.close();
  453.             stmt.close();



  454.             // ricavo le entries
  455.             if (limit == 0) // con limit
  456.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;

  457.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  458.             sqlQueryObject.setANDLogicOperator(true);
  459.             sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  460.             sqlQueryObject.addSelectField("id");
  461.             sqlQueryObject.addSelectField("nome_servizio");
  462.             sqlQueryObject.addSelectField("tipo_servizio");
  463.             sqlQueryObject.addSelectField("versione_servizio");
  464.             sqlQueryObject.addSelectField("id_soggetto");  
  465.             sqlQueryObject.addWhereCondition("id_soggetto = ?");
  466.             if (!search.equals("")) { // con search
  467.                 sqlQueryObject.addWhereLikeCondition("nome_servizio", search, true, true);
  468.             }

  469.             sqlQueryObject.addOrderBy("nome_servizio");
  470.             sqlQueryObject.addOrderBy("versione_servizio");
  471.             sqlQueryObject.addOrderBy("tipo_servizio");
  472.             sqlQueryObject.setSortType(true);
  473.             sqlQueryObject.setLimit(limit);
  474.             sqlQueryObject.setOffset(offset);
  475.             queryString = sqlQueryObject.createSQLQuery();

  476.             stmt = con.prepareStatement(queryString);
  477.             stmt.setLong(1, idErogatore);
  478.             risultato = stmt.executeQuery();

  479.             lista = new ArrayList<AccordoServizioParteSpecifica>();
  480.             while (risultato.next()) {
  481.                 long id=risultato.getLong("id");
  482.                 AccordoServizioParteSpecifica se=this.driver.getAccordoServizioParteSpecifica(id, con);
  483.                 lista.add(se);
  484.             }

  485.             return lista;

  486.         } catch (Exception se) {

  487.             throw new DriverRegistroServiziException("[DriverControlStationDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  488.         } finally {
  489.             //Chiudo statement and resultset
  490.             JDBCUtilities.closeResources(risultato, stmt);
  491.             this.driver.closeConnection(con);
  492.         }

  493.     }

  494.     protected List<AccordoServizioParteSpecifica> soggettiServizioList(String superuser, ISearch ricerca,boolean [] permessiUtente,
  495.             boolean gestioneFruitori, boolean gestioneErogatori) throws DriverRegistroServiziException {
  496.         String nomeMetodo = "soggettiServizioList";
  497.         int idLista = Liste.SERVIZI;
  498.         int offset;
  499.         int limit;
  500.         String searchAPIErogazioneFruizione;
  501.         String queryString;
  502.         Connection con = null;
  503.         PreparedStatement stmt=null;
  504.         ResultSet risultato=null;
  505.         ArrayList<AccordoServizioParteSpecifica> serviziList = new ArrayList<>();

  506.         String aliasSoggettiFruitori = "soggettoFruitore";
  507.        
  508.         String aliasSoggettiReferenti = "soggettoReferente";
  509.                
  510.         limit = ricerca.getPageSize(idLista);
  511.         offset = ricerca.getIndexIniziale(idLista);
  512.         searchAPIErogazioneFruizione = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  513.         ricerca.getSearchString(idLista);

  514.         String filterProtocollo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLO);
  515.         String filterProtocolli = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLI);
  516.         List<String> tipoServiziProtocollo = null;
  517.         try {
  518.             tipoServiziProtocollo = Filtri.convertToTipiServizi(filterProtocollo, filterProtocolli);
  519.         }catch(Exception e) {
  520.             throw new DriverRegistroServiziException(e.getMessage(),e);
  521.         }

  522.         String filterTipoAPI = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SERVICE_BINDING);
  523.         if(filterTipoAPI!=null && filterTipoAPI.equals("")) {
  524.             filterTipoAPI = null;
  525.         }
  526.        
  527.         String filterGruppo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_GRUPPO);
  528.         if(filterGruppo!=null && filterGruppo.equals("")) {
  529.             filterGruppo = null;
  530.         }
  531.        
  532.         String filterApi = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_API);
  533.         IDAccordo idAccordoApi = null;
  534.         if(filterApi!=null && filterApi.equals("")) {
  535.             filterApi = null;
  536.         }
  537.         if(filterApi!=null) {
  538.             try {
  539.                 idAccordoApi = IDAccordoFactory.getInstance().getIDAccordoFromUri(filterApi);
  540.             }catch(Exception e) {
  541.                 throw new DriverRegistroServiziException(e.getMessage(),e);
  542.             }
  543.         }
  544.        
  545.         String filterCanale = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CANALE);
  546.         boolean searchCanale = false;
  547.         boolean canaleDefault = false;
  548.         if(gestioneFruitori || gestioneErogatori) {
  549.             if(filterCanale!=null && !filterCanale.equals("")) {
  550.                 searchCanale = true;
  551.                 if(filterCanale.startsWith(Filtri.PREFIX_VALUE_CANALE_DEFAULT)) {
  552.                     filterCanale = filterCanale.substring(Filtri.PREFIX_VALUE_CANALE_DEFAULT.length());
  553.                     canaleDefault = true;
  554.                 }
  555.             }
  556.         }
  557.        
  558.         String filterDominio = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_DOMINIO);
  559.         PddTipologia pddTipologia = null;
  560.         if(filterDominio!=null && !"".equals(filterDominio)) {
  561.             pddTipologia = PddTipologia.toPddTipologia(filterDominio);
  562.         }
  563.        
  564.         String filterStatoAccordo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_STATO_ACCORDO);
  565.        
  566.         String filterSoggettoTipoNome = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_SOGGETTO);
  567.         String filterSoggettoTipo = null;
  568.         String filterSoggettoNome = null;
  569.         if(filterSoggettoTipoNome!=null && !"".equals(filterSoggettoTipoNome)) {
  570.             filterSoggettoTipo = filterSoggettoTipoNome.split("/")[0];
  571.             filterSoggettoNome = filterSoggettoTipoNome.split("/")[1];
  572.         }
  573.        
  574.         String filterSoggettoErogatoreContains = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_SOGGETTO_EROGATORE_CONTAINS);
  575.        
  576.         String filtroStatoAPIImpl = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_STATO);
  577.         if((filtroStatoAPIImpl!=null && "".equals(filtroStatoAPIImpl))) {
  578.             filtroStatoAPIImpl=null;
  579.         }
  580.        
  581.         String filtroAutenticazioneTokenPolicy = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_AUTENTICAZIONE_TOKEN_TIPO);
  582.         if((filtroAutenticazioneTokenPolicy!=null && "".equals(filtroAutenticazioneTokenPolicy))) {
  583.             filtroAutenticazioneTokenPolicy=null;
  584.         }
  585.        
  586.         String filtroAutenticazioneTrasportoTipo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_AUTENTICAZIONE_TRASPORTO_TIPO);
  587.         if((filtroAutenticazioneTrasportoTipo!=null && "".equals(filtroAutenticazioneTrasportoTipo))) {
  588.             filtroAutenticazioneTrasportoTipo=null;
  589.         }
  590.         String filtroAutenticazioneTrasportoTipoPlugin = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_AUTENTICAZIONE_TRASPORTO_TIPO_PLUGIN);
  591.         if((filtroAutenticazioneTrasportoTipoPlugin!=null && "".equals(filtroAutenticazioneTrasportoTipoPlugin))) {
  592.             filtroAutenticazioneTrasportoTipoPlugin=null;
  593.         }
  594.         if(filtroAutenticazioneTrasportoTipoPlugin!=null && !org.openspcoop2.core.constants.Costanti.VALUE_PARAMETRO_CUSTOM_IN_SELECT.equals(filtroAutenticazioneTrasportoTipo)) {
  595.             filtroAutenticazioneTrasportoTipoPlugin=null;
  596.         }
  597.         String filtroAutenticazioneTrasporto = (filtroAutenticazioneTrasportoTipoPlugin!=null) ? filtroAutenticazioneTrasportoTipoPlugin : filtroAutenticazioneTrasportoTipo;
  598.        
  599.         String filtroRateLimitingStato = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_RATE_LIMITING_STATO);
  600.         if((filtroRateLimitingStato!=null && "".equals(filtroRateLimitingStato))) {
  601.             filtroRateLimitingStato=null;
  602.         }
  603.        
  604.         String filtroValidazioneStato = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_VALIDAZIONE_STATO);
  605.         if((filtroValidazioneStato!=null && "".equals(filtroValidazioneStato))) {
  606.             filtroValidazioneStato=null;
  607.         }
  608.        
  609.         String filtroCacheRispostaStato = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_CACHE_RISPOSTA_STATO);
  610.         if((filtroCacheRispostaStato!=null && "".equals(filtroCacheRispostaStato))) {
  611.             filtroCacheRispostaStato=null;
  612.         }
  613.        
  614.         String filtroMessageSecurityStato = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_MESSAGE_SECURITY_STATO);
  615.         if((filtroMessageSecurityStato!=null && "".equals(filtroMessageSecurityStato))) {
  616.             filtroMessageSecurityStato=null;
  617.         }
  618.        
  619.         String filtroMTOMStato = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_MTOM_STATO);
  620.         if((filtroMTOMStato!=null && "".equals(filtroMTOMStato))) {
  621.             filtroMTOMStato=null;
  622.         }
  623.         if(filtroMTOMStato!=null && "rest".equalsIgnoreCase(filterTipoAPI)) {
  624.             filtroMTOMStato=null;
  625.         }
  626.        
  627.         String filtroTrasformazione = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_TRASFORMAZIONE_STATO);
  628.         if((filtroTrasformazione!=null && "".equals(filtroTrasformazione))) {
  629.             filtroTrasformazione=null;
  630.         }
  631.        
  632.         String filtroConfigurazioneTransazioni = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_TRANSAZIONI);
  633.         if((filtroConfigurazioneTransazioni!=null && "".equals(filtroConfigurazioneTransazioni))) {
  634.             filtroConfigurazioneTransazioni=null;
  635.         }
  636.        
  637.         String filtroCorrelazioneApplicativa = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_CORRELAZIONE_APPLICATIVA_STATO);
  638.         if((filtroCorrelazioneApplicativa!=null && "".equals(filtroCorrelazioneApplicativa))) {
  639.             filtroCorrelazioneApplicativa=null;
  640.         }
  641.        
  642.         String filtroConfigurazioneDumpTipo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_DUMP_TIPO);
  643.         if((filtroConfigurazioneDumpTipo!=null && "".equals(filtroConfigurazioneDumpTipo))) {
  644.             filtroConfigurazioneDumpTipo=null;
  645.         }
  646.        
  647.         String filtroCORS = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_CORS_TIPO);
  648.         if((filtroCORS!=null && "".equals(filtroCORS))) {
  649.             filtroCORS=null;
  650.         }
  651.         String filtroCORSorigin = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONFIGURAZIONE_CORS_ORIGIN);
  652.         if((filtroCORSorigin!=null && "".equals(filtroCORSorigin))) {
  653.             filtroCORSorigin=null;
  654.         }
  655.         if((filtroCORSorigin!=null && !Filtri.FILTRO_CONFIGURAZIONE_CORS_TIPO_VALORE_RIDEFINITO_ABILITATO.equals(filtroCORS))) {
  656.             filtroCORSorigin=null;
  657.         }
  658.        
  659.         String filtroConnettoreTipo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_TIPO);
  660.         String filtroConnettoreTipoPlugin = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_TIPO_PLUGIN);
  661.         String filtroConnettoreTokenPolicy = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_TOKEN_POLICY);
  662.         String filtroConnettoreEndpoint = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_ENDPOINT);
  663.         String filtroConnettoreKeystore = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_KEYSTORE);
  664.         String filtroConnettoreDebug = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_DEBUG);
  665.         if((filtroConnettoreTipo!=null && "".equals(filtroConnettoreTipo))) {
  666.             filtroConnettoreTipo=null;
  667.         }
  668.         if((filtroConnettoreTipoPlugin!=null && "".equals(filtroConnettoreTipoPlugin))) {
  669.             filtroConnettoreTipoPlugin=null;
  670.         }
  671.         if((filtroConnettoreTokenPolicy!=null && "".equals(filtroConnettoreTokenPolicy))) {
  672.             filtroConnettoreTokenPolicy=null;
  673.         }
  674.         if((filtroConnettoreEndpoint!=null && "".equals(filtroConnettoreEndpoint))) {
  675.             filtroConnettoreEndpoint=null;
  676.         }
  677.         if((filtroConnettoreKeystore!=null && "".equals(filtroConnettoreKeystore))) {
  678.             filtroConnettoreKeystore=null;
  679.         }
  680.         if((filtroConnettoreDebug!=null && "".equals(filtroConnettoreDebug))) {
  681.             filtroConnettoreDebug=null;
  682.         }
  683.         boolean joinConnettore =  filtroConnettoreTipo!=null    || filtroConnettoreTokenPolicy!=null || filtroConnettoreEndpoint!=null || filtroConnettoreKeystore!=null || filtroConnettoreDebug!=null;
  684.         TipiConnettore tipoConnettore = null;
  685.         String endpointType = null;
  686.         boolean tipoConnettoreIntegrationManager = false;
  687.         if(filtroConnettoreTipo!=null && !"".equals(filtroConnettoreTipo)) {
  688.             if(Filtri.FILTRO_CONNETTORE_TIPO_VALORE_IM.equals(filtroConnettoreTipo)) {
  689.                 tipoConnettoreIntegrationManager = true;
  690.             }
  691.             else {
  692.                 tipoConnettore = TipiConnettore.toEnumFromName(filtroConnettoreTipo);
  693.                 if(tipoConnettore!=null) {
  694.                     endpointType = (TipiConnettore.CUSTOM.equals(tipoConnettore)) ? filtroConnettoreTipoPlugin : tipoConnettore.getNome();
  695.                 }
  696.             }
  697.         }
  698.          
  699.         String filtroModISicurezzaCanale = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_CANALE);
  700.         String filtroModISicurezzaMessaggio = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_MESSAGGIO);
  701.         String filtroModISorgenteToken = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SORGENTE_TOKEN);
  702.         String filtroModIKeystorePath = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_KEYSTORE_PATH);
  703.         String filtroModIAudience = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_AUDIENCE);
  704.         String filtroModIInfoUtente = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_INFORMAZIONI_UTENTE);
  705.         String filtroModIDigestRichiesta = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_DIGEST_RICHIESTA);
  706.         if((filtroModISicurezzaCanale!=null && "".equals(filtroModISicurezzaCanale))) {
  707.             filtroModISicurezzaCanale=null;
  708.         }
  709.         if((filtroModISicurezzaMessaggio!=null && "".equals(filtroModISicurezzaMessaggio))) {
  710.             filtroModISicurezzaMessaggio=null;
  711.         }
  712.         if((filtroModISorgenteToken!=null && "".equals(filtroModISorgenteToken))) {
  713.             filtroModISorgenteToken=null;
  714.         }
  715.         Boolean filtroModIDigestRichiestaEnabled = null;
  716.         if(CostantiDB.STATO_FUNZIONALITA_ABILITATO.equals(filtroModIDigestRichiesta)) {
  717.             filtroModIDigestRichiestaEnabled = true;
  718.         }
  719.         else if(CostantiDB.STATO_FUNZIONALITA_DISABILITATO.equals(filtroModIDigestRichiesta)) {
  720.             filtroModIDigestRichiestaEnabled = false;
  721.         }
  722.         if((filtroModIInfoUtente!=null && "".equals(filtroModIInfoUtente))) {
  723.             filtroModIInfoUtente=null;
  724.         }
  725.         if((filtroModIKeystorePath!=null && "".equals(filtroModIKeystorePath))) {
  726.             filtroModIKeystorePath=null;
  727.         }
  728.         if((filtroModIAudience!=null && "".equals(filtroModIAudience))) {
  729.             filtroModIAudience=null;
  730.         }
  731.         boolean filtroModI = filtroModISicurezzaCanale!=null || filtroModISicurezzaMessaggio!=null ||
  732.                 filtroModISorgenteToken!=null ||
  733.                 filtroModIDigestRichiestaEnabled!=null || filtroModIInfoUtente!=null ||
  734.                 filtroModIKeystorePath!=null || filtroModIAudience!=null;
  735.        
  736.         String filtroProprietaNome = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROPRIETA_NOME);
  737.         String filtroProprietaValore = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROPRIETA_VALORE);
  738.         if((filtroProprietaNome!=null && "".equals(filtroProprietaNome))) {
  739.             filtroProprietaNome=null;
  740.         }
  741.         if((filtroProprietaValore!=null && "".equals(filtroProprietaValore))) {
  742.             filtroProprietaValore=null;
  743.         }
  744.         boolean filtroProprieta = filtroProprietaNome!=null || filtroProprietaValore!=null;
  745.        
  746.         this.driver.logDebug("search : " + searchAPIErogazioneFruizione);
  747.         this.driver.logDebug("filterSoggettoErogatoreContains : "+filterSoggettoErogatoreContains);
  748.         this.driver.logDebug("filterProtocollo : " + filterProtocollo);
  749.         this.driver.logDebug("filterProtocolli : " + filterProtocolli);
  750.         this.driver.logDebug("filterTipoAPI : " + filterTipoAPI);
  751.         this.driver.logDebug("filterGruppo : " + filterGruppo);
  752.         this.driver.logDebug("filterApi : " + filterApi);
  753.         this.driver.logDebug("filterCanale : " + filterCanale);
  754.         this.driver.logDebug("filterDominio : " + filterDominio);
  755.         this.driver.logDebug("filterStatoAccordo : " + filterStatoAccordo);
  756.         this.driver.logDebug("filterSoggettoNome : " + filterSoggettoNome);
  757.         this.driver.logDebug("filterSoggettoTipo : " + filterSoggettoTipo);
  758.         this.driver.logDebug("filtroStatoAPIImpl : " + filtroStatoAPIImpl);
  759.         this.driver.logDebug("filtroAutenticazioneTokenPolicy : " + filtroAutenticazioneTokenPolicy);
  760.         this.driver.logDebug("filtroAutenticazioneTrasporto : " + filtroAutenticazioneTrasporto);
  761.         this.driver.logDebug("filtroRateLimitingStato : " + filtroRateLimitingStato);
  762.         this.driver.logDebug("filtroValidazioneStato : " + filtroValidazioneStato);
  763.         this.driver.logDebug("filtroCacheRispostaStato : " + filtroCacheRispostaStato);
  764.         this.driver.logDebug("filtroMessageSecurityStato : " + filtroMessageSecurityStato);
  765.         this.driver.logDebug("filtroMTOMStato : " + filtroMTOMStato);
  766.         this.driver.logDebug("filtroTrasformazione : " + filtroTrasformazione);
  767.         this.driver.logDebug("filtroConfigurazioneTransazioni : " + filtroConfigurazioneTransazioni);
  768.         this.driver.logDebug("filtroCorrelazioneApplicativa : " + filtroCorrelazioneApplicativa);
  769.         this.driver.logDebug("filtroConfigurazioneDumpTipo : " + filtroConfigurazioneDumpTipo);
  770.         this.driver.logDebug("filtroCORS : " + filtroCORS);
  771.         this.driver.logDebug("filtroCORS_origin : " + filtroCORSorigin);
  772.         this.driver.logDebug("filtroConnettoreTipo : " + filtroConnettoreTipo);
  773.         this.driver.logDebug("filtroConnettoreTipoPlugin : " + filtroConnettoreTipoPlugin);
  774.         this.driver.logDebug("filtroConnettoreTokenPolicy : " + filtroConnettoreTokenPolicy);
  775.         this.driver.logDebug("filtroConnettoreEndpoint : " + filtroConnettoreEndpoint);
  776.         this.driver.logDebug("filtroConnettoreKeystore : " + filtroConnettoreKeystore);
  777.         this.driver.logDebug("filtroConnettoreDebug : " + filtroConnettoreDebug);
  778.         this.driver.logDebug("filtroConnettoreTipoPlugin : " + filtroConnettoreTipoPlugin);
  779.         this.driver.logDebug("filtroModISicurezzaCanale : " + filtroModISicurezzaCanale);
  780.         this.driver.logDebug("filtroModISicurezzaMessaggio : " + filtroModISicurezzaMessaggio);
  781.         this.driver.logDebug("filtroModISorgenteToken : " + filtroModISorgenteToken);
  782.         this.driver.logDebug("filtroModIKeystorePath : " + filtroModIKeystorePath);
  783.         this.driver.logDebug("filtroModIAudience : " + filtroModIAudience);
  784.         this.driver.logDebug("filtroModIInfoUtente : " + filtroModIInfoUtente);
  785.         this.driver.logDebug("filtroModIDigestRichiesta : " + filtroModIDigestRichiesta);
  786.         this.driver.logDebug("filtroProprietaNome : " + filtroProprietaNome);
  787.         this.driver.logDebug("filtroProprietaValore : " + filtroProprietaValore);
  788.        
  789.         if (this.driver.atomica) {
  790.             try {
  791.                 con = this.driver.getConnectionFromDatasource("soggettiServizioList");
  792.             } catch (Exception e) {
  793.                 throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception accedendo al datasource :" + e.getMessage(),e);

  794.             }

  795.         } else
  796.             con = this.driver.globalConnection;

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

  798.         try {

  799.             ISQLQueryObject sqlQueryObjectAccordiComposti = null;          
  800.             if (permessiUtente != null) {
  801.                 sqlQueryObjectAccordiComposti = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  802.                 sqlQueryObjectAccordiComposti.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  803.                 sqlQueryObjectAccordiComposti.addSelectField(CostantiDB.ACCORDI_SERVIZI_COMPOSTO, "id");
  804.                 sqlQueryObjectAccordiComposti.setANDLogicOperator(true);
  805.                 sqlQueryObjectAccordiComposti.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo="+CostantiDB.ACCORDI+".id");
  806.             }

  807.             ISQLQueryObject sqlQueryObjectSoggettiErogatoreContains = null;
  808.             if (!filterSoggettoErogatoreContains.equals("")) {
  809.                 sqlQueryObjectSoggettiErogatoreContains = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  810.                 sqlQueryObjectSoggettiErogatoreContains.addFromTable(CostantiDB.SOGGETTI);
  811.                 sqlQueryObjectSoggettiErogatoreContains.addSelectField(CostantiDB.SOGGETTI, "tipo_soggetto");
  812.                 sqlQueryObjectSoggettiErogatoreContains.addSelectField(CostantiDB.SOGGETTI, "nome_soggetto");
  813.                 sqlQueryObjectSoggettiErogatoreContains.setANDLogicOperator(true);
  814.                 sqlQueryObjectSoggettiErogatoreContains.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto="+CostantiDB.SOGGETTI+".id");
  815.                 sqlQueryObjectSoggettiErogatoreContains.addWhereCondition(false,
  816.                         //sqlQueryObjectSoggettiErogatoreContains.getWhereLikeCondition("tipo_soggetto", search, true, true),
  817.                         sqlQueryObjectSoggettiErogatoreContains.getWhereLikeCondition("nome_soggetto", filterSoggettoErogatoreContains, true, true));
  818.             }

  819.             ISQLQueryObject sqlQueryObjectPdd = null;
  820.             if(pddTipologia!=null && PddTipologia.ESTERNO.equals(pddTipologia)) {
  821.                 ISQLQueryObject sqlQueryObjectExistsPdd = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  822.                 sqlQueryObjectExistsPdd.addSelectField(CostantiDB.PDD+".nome");
  823.                 sqlQueryObjectExistsPdd.addFromTable(CostantiDB.PDD);
  824.                 sqlQueryObjectExistsPdd.setANDLogicOperator(true);
  825.                 sqlQueryObjectExistsPdd.addWhereCondition(CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server");
  826.                 sqlQueryObjectExistsPdd.addWhereCondition(CostantiDB.PDD+".tipo=?");
  827.                
  828.                 sqlQueryObjectPdd = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  829.                 sqlQueryObjectPdd.setANDLogicOperator(false);
  830.                 sqlQueryObjectPdd.addWhereIsNullCondition(CostantiDB.SOGGETTI+".server");
  831.                 sqlQueryObjectPdd.addWhereExistsCondition(false, sqlQueryObjectExistsPdd);
  832.             }
  833.                        
  834.             if (!searchAPIErogazioneFruizione.equals("")) {
  835.                 //query con search
  836.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  837.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  838.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  839.                 if(permessiUtente!=null || filterTipoAPI!=null || filterGruppo!=null || idAccordoApi!=null || searchCanale || filtroModI
  840.                         || !searchAPIErogazioneFruizione.equals("") // aggiunto per cercare anche sul nome dell'API (parte comune)
  841.                     ) {
  842.                     sqlQueryObject.addFromTable(CostantiDB.ACCORDI);
  843.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_accordo="+CostantiDB.ACCORDI+".id");
  844.                     if(filterGruppo!=null) {
  845.                         sqlQueryObject.addFromTable(CostantiDB.ACCORDI_GRUPPI);
  846.                         sqlQueryObject.addFromTable(CostantiDB.GRUPPI);
  847.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_accordo="+CostantiDB.ACCORDI+".id");
  848.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_gruppo="+CostantiDB.GRUPPI+".id");
  849.                     }
  850.                     if(idAccordoApi!=null) {
  851.                         sqlQueryObject.addFromTable(CostantiDB.SOGGETTI, aliasSoggettiReferenti);
  852.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".id_referente="+aliasSoggettiReferenti+".id");
  853.                     }
  854.                 }
  855.                 if(gestioneFruitori) {
  856.                     sqlQueryObject.addFromTable(CostantiDB.MAPPING_FRUIZIONE_PD);
  857.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
  858.                     sqlQueryObject.addFromTable(CostantiDB.SOGGETTI, aliasSoggettiFruitori);
  859.                     if(searchCanale) {
  860.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  861.                     }
  862.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_fruizione="+CostantiDB.SERVIZI_FRUITORI+".id");
  863.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".is_default=1");
  864.                     if(searchCanale) {
  865.                         sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_porta="+CostantiDB.PORTE_DELEGATE+".id");
  866.                     }
  867.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_servizio="+CostantiDB.SERVIZI+".id");
  868.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_soggetto="+aliasSoggettiFruitori+".id");
  869.                     if(joinConnettore) {
  870.                         DBUtils.setFiltriConnettoreFruizione(sqlQueryObject, this.driver.tipoDB,
  871.                                 tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  872.                                 filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  873.                     }
  874.                     if(filtroModI) {
  875.                         DBUtils.setFiltriModIFruizione(sqlQueryObject, this.driver.tipoDB,
  876.                                 filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  877.                                 filtroModISorgenteToken,
  878.                                 filtroModIDigestRichiestaEnabled, filtroModIInfoUtente,
  879.                                 filtroModIKeystorePath, filtroModIAudience);
  880.                     }
  881.                     if(filtroProprieta) {
  882.                         DBUtils.setFiltriProprietaFruizione(sqlQueryObject, this.driver.tipoDB,
  883.                                 filtroProprietaNome, filtroProprietaValore);
  884.                     }
  885.                     if(filtroStatoAPIImpl!=null ||
  886.                             filtroAutenticazioneTokenPolicy!=null || filtroAutenticazioneTrasporto!=null ||
  887.                             filtroRateLimitingStato!=null ||
  888.                             filtroValidazioneStato!=null ||
  889.                             filtroCacheRispostaStato!=null ||
  890.                             filtroMessageSecurityStato!=null ||
  891.                             filtroMTOMStato!=null ||
  892.                             filtroTrasformazione!=null ||
  893.                             filtroConfigurazioneTransazioni!=null ||
  894.                             filtroCorrelazioneApplicativa!=null ||
  895.                             filtroConfigurazioneDumpTipo!=null ||
  896.                             filtroCORS!=null) {
  897.                         DBUtils.setFiltriConfigurazioneFruizione(sqlQueryObject, this.driver.tipoDB,
  898.                                 filtroStatoAPIImpl,
  899.                                 filtroAutenticazioneTokenPolicy, filtroAutenticazioneTrasporto,
  900.                                 filtroRateLimitingStato,
  901.                                 filtroValidazioneStato,
  902.                                 filtroCacheRispostaStato,
  903.                                 filtroMessageSecurityStato,
  904.                                 filtroMTOMStato,
  905.                                 filtroTrasformazione,
  906.                                 filtroConfigurazioneTransazioni,
  907.                                 filtroCorrelazioneApplicativa,
  908.                                 filtroConfigurazioneDumpTipo,
  909.                                 filtroCORS, filtroCORSorigin);
  910.                     }                  
  911.                 }
  912.                 if(gestioneErogatori) {
  913.                     sqlQueryObject.addFromTable(CostantiDB.MAPPING_EROGAZIONE_PA);
  914.                     if(searchCanale) {
  915.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  916.                     }
  917.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_erogazione="+CostantiDB.SERVIZI+".id");
  918.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".is_default=1");
  919.                     if(searchCanale) {
  920.                         sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_porta="+CostantiDB.PORTE_APPLICATIVE+".id");
  921.                     }
  922.                     if(joinConnettore) {
  923.                         DBUtils.setFiltriConnettoreErogazione(sqlQueryObject, this.driver.tipoDB,
  924.                                 tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  925.                                 filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  926.                     }
  927.                     if(filtroModI) {
  928.                         DBUtils.setFiltriModIErogazione(sqlQueryObject, this.driver.tipoDB,
  929.                                 filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  930.                                 filtroModISorgenteToken,
  931.                                 filtroModIDigestRichiestaEnabled, filtroModIInfoUtente,
  932.                                 filtroModIKeystorePath, filtroModIAudience);
  933.                     }
  934.                     if(filtroProprieta) {
  935.                         DBUtils.setFiltriProprietaErogazione(sqlQueryObject, this.driver.tipoDB,
  936.                                 filtroProprietaNome, filtroProprietaValore);
  937.                     }
  938.                     if(filtroStatoAPIImpl!=null ||
  939.                             filtroAutenticazioneTokenPolicy!=null || filtroAutenticazioneTrasporto!=null ||
  940.                             filtroRateLimitingStato!=null ||
  941.                             filtroValidazioneStato!=null ||
  942.                             filtroCacheRispostaStato!=null ||
  943.                             filtroMessageSecurityStato!=null ||
  944.                             filtroMTOMStato!=null ||
  945.                             filtroTrasformazione!=null ||
  946.                             filtroConfigurazioneTransazioni!=null ||
  947.                             filtroCorrelazioneApplicativa!=null ||
  948.                             filtroConfigurazioneDumpTipo!=null ||
  949.                             filtroCORS!=null) {
  950.                         DBUtils.setFiltriConfigurazioneErogazione(sqlQueryObject, this.driver.tipoDB,
  951.                                 filtroStatoAPIImpl,
  952.                                 filtroAutenticazioneTokenPolicy, filtroAutenticazioneTrasporto,
  953.                                 filtroRateLimitingStato,
  954.                                 filtroValidazioneStato,
  955.                                 filtroCacheRispostaStato,
  956.                                 filtroMessageSecurityStato,
  957.                                 filtroMTOMStato,
  958.                                 filtroTrasformazione,
  959.                                 filtroConfigurazioneTransazioni,
  960.                                 filtroCorrelazioneApplicativa,
  961.                                 filtroConfigurazioneDumpTipo,
  962.                                 filtroCORS, filtroCORSorigin);
  963.                     }
  964.                 }
  965.                 sqlQueryObject.addSelectCountField("*", "cont");
  966.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  967.                 if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  968.                     if(gestioneFruitori) {
  969.                         sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".tipo_soggetto=?");
  970.                         sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".nome_soggetto=?");
  971.                     }
  972.                     else {
  973.                         sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto=?");
  974.                         sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto=?");
  975.                     }
  976.                 }
  977.                 if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  978.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".superuser = ?");
  979.                 if(tipoServiziProtocollo!=null && tipoServiziProtocollo.size()>0) {
  980.                     sqlQueryObject.addWhereINCondition(CostantiDB.SERVIZI+".tipo_servizio", true, tipoServiziProtocollo.toArray(new String[1]));
  981.                 }
  982.                 if(filterTipoAPI!=null && !filterTipoAPI.equals("")) {
  983.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".service_binding = ?");
  984.                 }
  985.                 if(filterGruppo!=null && !filterGruppo.equals("")) {
  986.                     sqlQueryObject.addWhereCondition(CostantiDB.GRUPPI+".nome = ?");
  987.                 }
  988.                 if(idAccordoApi!=null) {
  989.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".nome = ?");
  990.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".versione = ?");
  991.                     sqlQueryObject.addWhereCondition(aliasSoggettiReferenti+".tipo_soggetto = ?");
  992.                     sqlQueryObject.addWhereCondition(aliasSoggettiReferenti+".nome_soggetto = ?");
  993.                 }
  994.                 if(pddTipologia!=null) {
  995.                     if(PddTipologia.ESTERNO.equals(pddTipologia)) {
  996.                         sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());                          
  997.                     }
  998.                     else {
  999.                         sqlQueryObject.addFromTable(CostantiDB.PDD);
  1000.                         sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server",CostantiDB.PDD+".tipo=?");
  1001.                     }
  1002.                 }
  1003.                 if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  1004.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".stato = ?");
  1005.                 }
  1006.                 if(sqlQueryObjectSoggettiErogatoreContains!=null) {
  1007.                     sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectSoggettiErogatoreContains);
  1008.                 }
  1009.                 sqlQueryObject.addWhereCondition(false,
  1010.                        
  1011.                         // - ricerca su tipo/nome/versione servizio
  1012.                         //sqlQueryObject.getWhereLikeCondition("tipo_servizio", search, true, true),
  1013.                         sqlQueryObject.getWhereLikeCondition("nome_servizio", searchAPIErogazioneFruizione, true, true),
  1014.                         //sqlQueryObject.getWhereLikeCondition("versione_servizio", search, true, true),
  1015.                        
  1016.                         // - ricerca su nome dell'API (parte comune)
  1017.                         sqlQueryObject.getWhereLikeCondition(CostantiDB.ACCORDI+".nome", searchAPIErogazioneFruizione, true, true)
  1018.                        
  1019.                     );

  1020.                 if(permessiUtente != null){
  1021.                     // solo S
  1022.                     if(permessiUtente[0] && !permessiUtente[1])
  1023.                         sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectAccordiComposti);

  1024.                     // solo P
  1025.                     if(!permessiUtente[0] && permessiUtente[1])
  1026.                         sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectAccordiComposti);

  1027.                     // P che S come ora non aggiungo la condizione
  1028.                 }

  1029.                 if(searchCanale) {
  1030.                     String tabellaPorta = gestioneErogatori ? CostantiDB.PORTE_APPLICATIVE : CostantiDB.PORTE_DELEGATE;
  1031.                     if(canaleDefault) {
  1032.                         sqlQueryObject.addWhereCondition(false,
  1033.                                 (tabellaPorta+".canale = ?"),
  1034.                                 ("( "+ tabellaPorta+".canale is null AND ("+CostantiDB.ACCORDI+".canale = ?  OR "+CostantiDB.ACCORDI+".canale is null) )"));
  1035.                     }
  1036.                     else {
  1037.                         sqlQueryObject.addWhereCondition(false,
  1038.                                 (tabellaPorta+".canale = ?"),
  1039.                                 ("( "+ tabellaPorta+".canale is null AND "+CostantiDB.ACCORDI+".canale = ? )"));
  1040.                     }
  1041.                 }
  1042.                
  1043.                 sqlQueryObject.setANDLogicOperator(true);
  1044.                 queryString = sqlQueryObject.createSQLQuery();
  1045.             } else {
  1046.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1047.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  1048.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1049.                 if(permessiUtente!=null || filterTipoAPI!=null || filterGruppo!=null || idAccordoApi!=null || searchCanale || filtroModI) {
  1050.                     sqlQueryObject.addFromTable(CostantiDB.ACCORDI);
  1051.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_accordo="+CostantiDB.ACCORDI+".id");
  1052.                     if(filterGruppo!=null) {
  1053.                         sqlQueryObject.addFromTable(CostantiDB.ACCORDI_GRUPPI);
  1054.                         sqlQueryObject.addFromTable(CostantiDB.GRUPPI);
  1055.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_accordo="+CostantiDB.ACCORDI+".id");
  1056.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_gruppo="+CostantiDB.GRUPPI+".id");
  1057.                     }
  1058.                     if(idAccordoApi!=null) {
  1059.                         sqlQueryObject.addFromTable(CostantiDB.SOGGETTI, aliasSoggettiReferenti);
  1060.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".id_referente="+aliasSoggettiReferenti+".id");
  1061.                     }
  1062.                 }
  1063.                 if(gestioneFruitori) {
  1064.                     sqlQueryObject.addFromTable(CostantiDB.MAPPING_FRUIZIONE_PD);
  1065.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
  1066.                     sqlQueryObject.addFromTable(CostantiDB.SOGGETTI, aliasSoggettiFruitori);
  1067.                     if(searchCanale) {
  1068.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1069.                     }
  1070.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_fruizione="+CostantiDB.SERVIZI_FRUITORI+".id");
  1071.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".is_default=1");
  1072.                     if(searchCanale) {
  1073.                         sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_porta="+CostantiDB.PORTE_DELEGATE+".id");
  1074.                     }
  1075.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_servizio="+CostantiDB.SERVIZI+".id");
  1076.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_soggetto="+aliasSoggettiFruitori+".id");
  1077.                     if(joinConnettore) {
  1078.                         DBUtils.setFiltriConnettoreFruizione(sqlQueryObject, this.driver.tipoDB,
  1079.                                 tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1080.                                 filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1081.                     }
  1082.                     if(filtroModI) {
  1083.                         DBUtils.setFiltriModIFruizione(sqlQueryObject, this.driver.tipoDB,
  1084.                                 filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  1085.                                 filtroModISorgenteToken,
  1086.                                 filtroModIDigestRichiestaEnabled, filtroModIInfoUtente,
  1087.                                 filtroModIKeystorePath, filtroModIAudience);
  1088.                     }
  1089.                     if(filtroProprieta) {
  1090.                         DBUtils.setFiltriProprietaFruizione(sqlQueryObject, this.driver.tipoDB,
  1091.                                 filtroProprietaNome, filtroProprietaValore);
  1092.                     }
  1093.                     if(filtroStatoAPIImpl!=null ||
  1094.                             filtroAutenticazioneTokenPolicy!=null || filtroAutenticazioneTrasporto!=null ||
  1095.                             filtroRateLimitingStato!=null ||
  1096.                             filtroValidazioneStato!=null ||
  1097.                             filtroCacheRispostaStato!=null ||
  1098.                             filtroMessageSecurityStato!=null ||
  1099.                             filtroMTOMStato!=null ||
  1100.                             filtroTrasformazione!=null ||
  1101.                             filtroConfigurazioneTransazioni!=null ||
  1102.                             filtroCorrelazioneApplicativa!=null ||
  1103.                             filtroConfigurazioneDumpTipo!=null ||
  1104.                             filtroCORS!=null) {
  1105.                         DBUtils.setFiltriConfigurazioneFruizione(sqlQueryObject, this.driver.tipoDB,
  1106.                                 filtroStatoAPIImpl,
  1107.                                 filtroAutenticazioneTokenPolicy, filtroAutenticazioneTrasporto,
  1108.                                 filtroRateLimitingStato,
  1109.                                 filtroValidazioneStato,
  1110.                                 filtroCacheRispostaStato,
  1111.                                 filtroMessageSecurityStato,
  1112.                                 filtroMTOMStato,
  1113.                                 filtroTrasformazione,
  1114.                                 filtroConfigurazioneTransazioni,
  1115.                                 filtroCorrelazioneApplicativa,
  1116.                                 filtroConfigurazioneDumpTipo,
  1117.                                 filtroCORS, filtroCORSorigin);
  1118.                     }
  1119.                 }
  1120.                 if(gestioneErogatori) {
  1121.                     sqlQueryObject.addFromTable(CostantiDB.MAPPING_EROGAZIONE_PA);
  1122.                     if(searchCanale) {
  1123.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  1124.                     }
  1125.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_erogazione="+CostantiDB.SERVIZI+".id");
  1126.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".is_default=1");
  1127.                     if(searchCanale) {
  1128.                         sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_porta="+CostantiDB.PORTE_APPLICATIVE+".id");
  1129.                     }
  1130.                     if(joinConnettore) {
  1131.                         DBUtils.setFiltriConnettoreErogazione(sqlQueryObject, this.driver.tipoDB,
  1132.                                 tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1133.                                 filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1134.                     }
  1135.                     if(filtroModI) {
  1136.                         DBUtils.setFiltriModIErogazione(sqlQueryObject, this.driver.tipoDB,
  1137.                                 filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  1138.                                 filtroModISorgenteToken,
  1139.                                 filtroModIDigestRichiestaEnabled, filtroModIInfoUtente,
  1140.                                 filtroModIKeystorePath, filtroModIAudience);
  1141.                     }
  1142.                     if(filtroProprieta) {
  1143.                         DBUtils.setFiltriProprietaErogazione(sqlQueryObject, this.driver.tipoDB,
  1144.                                 filtroProprietaNome, filtroProprietaValore);
  1145.                     }
  1146.                     if(filtroStatoAPIImpl!=null ||
  1147.                             filtroAutenticazioneTokenPolicy!=null || filtroAutenticazioneTrasporto!=null ||
  1148.                             filtroRateLimitingStato!=null ||
  1149.                             filtroValidazioneStato!=null ||
  1150.                             filtroCacheRispostaStato!=null ||
  1151.                             filtroMessageSecurityStato!=null ||
  1152.                             filtroMTOMStato!=null ||
  1153.                             filtroTrasformazione!=null ||
  1154.                             filtroConfigurazioneTransazioni!=null ||
  1155.                             filtroCorrelazioneApplicativa!=null ||
  1156.                             filtroConfigurazioneDumpTipo!=null ||
  1157.                             filtroCORS!=null) {
  1158.                         DBUtils.setFiltriConfigurazioneErogazione(sqlQueryObject, this.driver.tipoDB,
  1159.                                 filtroStatoAPIImpl,
  1160.                                 filtroAutenticazioneTokenPolicy, filtroAutenticazioneTrasporto,
  1161.                                 filtroRateLimitingStato,
  1162.                                 filtroValidazioneStato,
  1163.                                 filtroCacheRispostaStato,
  1164.                                 filtroMessageSecurityStato,
  1165.                                 filtroMTOMStato,
  1166.                                 filtroTrasformazione,
  1167.                                 filtroConfigurazioneTransazioni,
  1168.                                 filtroCorrelazioneApplicativa,
  1169.                                 filtroConfigurazioneDumpTipo,
  1170.                                 filtroCORS, filtroCORSorigin);
  1171.                     }
  1172.                 }
  1173.                 sqlQueryObject.addSelectCountField("*", "cont");
  1174.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  1175.                 if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1176.                     if(gestioneFruitori) {
  1177.                         sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".tipo_soggetto=?");
  1178.                         sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".nome_soggetto=?");
  1179.                     }
  1180.                     else {
  1181.                         sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto=?");
  1182.                         sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto=?");
  1183.                     }
  1184.                 }
  1185.                 if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  1186.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".superuser = ?");
  1187.                 if(tipoServiziProtocollo!=null && tipoServiziProtocollo.size()>0) {
  1188.                     sqlQueryObject.addWhereINCondition(CostantiDB.SERVIZI+".tipo_servizio", true, tipoServiziProtocollo.toArray(new String[1]));
  1189.                 }
  1190.                 if(filterTipoAPI!=null && !filterTipoAPI.equals("")) {
  1191.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".service_binding = ?");
  1192.                 }
  1193.                 if(filterGruppo!=null && !filterGruppo.equals("")) {
  1194.                     sqlQueryObject.addWhereCondition(CostantiDB.GRUPPI+".nome = ?");
  1195.                 }
  1196.                 if(idAccordoApi!=null) {
  1197.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".nome = ?");
  1198.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".versione = ?");
  1199.                     sqlQueryObject.addWhereCondition(aliasSoggettiReferenti+".tipo_soggetto = ?");
  1200.                     sqlQueryObject.addWhereCondition(aliasSoggettiReferenti+".nome_soggetto = ?");
  1201.                 }
  1202.                 if(pddTipologia!=null) {
  1203.                     if(PddTipologia.ESTERNO.equals(pddTipologia)) {
  1204.                         sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());                          
  1205.                     }
  1206.                     else {
  1207.                         sqlQueryObject.addFromTable(CostantiDB.PDD);
  1208.                         sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server",CostantiDB.PDD+".tipo=?");
  1209.                     }
  1210.                 }
  1211.                 if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  1212.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".stato = ?");
  1213.                 }
  1214.                 if(sqlQueryObjectSoggettiErogatoreContains!=null) {
  1215.                     sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectSoggettiErogatoreContains);
  1216.                 }

  1217.                 if(permessiUtente != null){
  1218.                     // solo S
  1219.                     if(permessiUtente[0] && !permessiUtente[1])
  1220.                         sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectAccordiComposti);

  1221.                     // solo P
  1222.                     if(!permessiUtente[0] && permessiUtente[1])
  1223.                         sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectAccordiComposti);

  1224.                     // P che S come ora non aggiungo la condizione
  1225.                 }

  1226.                 if(searchCanale) {
  1227.                     String tabellaPorta = gestioneErogatori ? CostantiDB.PORTE_APPLICATIVE : CostantiDB.PORTE_DELEGATE;
  1228.                     if(canaleDefault) {
  1229.                         sqlQueryObject.addWhereCondition(false,
  1230.                                 (tabellaPorta+".canale = ?"),
  1231.                                 ("( "+ tabellaPorta+".canale is null AND ("+CostantiDB.ACCORDI+".canale = ?  OR "+CostantiDB.ACCORDI+".canale is null) )"));
  1232.                     }
  1233.                     else {
  1234.                         sqlQueryObject.addWhereCondition(false,
  1235.                                 (tabellaPorta+".canale = ?"),
  1236.                                 ("( "+ tabellaPorta+".canale is null AND "+CostantiDB.ACCORDI+".canale = ? )"));
  1237.                     }
  1238.                 }
  1239.                
  1240.                 sqlQueryObject.setANDLogicOperator(true);
  1241.                 queryString = sqlQueryObject.createSQLQuery();
  1242.             }
  1243.             stmt = con.prepareStatement(queryString);
  1244.             int index = 1;
  1245.             if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1246.                 stmt.setString(index++, filterSoggettoTipo);
  1247.                 stmt.setString(index++, filterSoggettoNome);
  1248.             }
  1249.             if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  1250.                 stmt.setString(index++, superuser);
  1251.             if(filterTipoAPI!=null && !filterTipoAPI.equals("")) {
  1252.                 stmt.setString(index++, filterTipoAPI);
  1253.             }
  1254.             if(filterGruppo!=null && !filterGruppo.equals("")) {
  1255.                 stmt.setString(index++, filterGruppo);
  1256.             }
  1257.             if(idAccordoApi!=null) {
  1258.                 stmt.setString(index++, idAccordoApi.getNome());
  1259.                 stmt.setInt(index++, idAccordoApi.getVersione());
  1260.                 stmt.setString(index++, idAccordoApi.getSoggettoReferente().getTipo());
  1261.                 stmt.setString(index++, idAccordoApi.getSoggettoReferente().getNome());
  1262.             }
  1263.             if(pddTipologia!=null) {
  1264.                 stmt.setString(index++, pddTipologia.toString());
  1265.             }
  1266.             if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  1267.                 stmt.setString(index++, filterStatoAccordo);
  1268.             }
  1269.             if(searchCanale) {
  1270.                 stmt.setString(index++, filterCanale);
  1271.                 stmt.setString(index++, filterCanale);
  1272.             }
  1273.             risultato = stmt.executeQuery();
  1274.             if (risultato.next())
  1275.                 ricerca.setNumEntries(idLista,risultato.getInt(1));
  1276.             risultato.close();
  1277.             stmt.close();

  1278.             // ricavo le entries
  1279.             if (limit == 0) // con limit
  1280.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  1281.             if (!searchAPIErogazioneFruizione.equals("")) { // con search
  1282.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1283.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  1284.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1285.                 if(permessiUtente!=null || filterTipoAPI!=null || filterGruppo!=null || idAccordoApi!=null || searchCanale || filtroModI
  1286.                         || !searchAPIErogazioneFruizione.equals("") // aggiunto per cercare anche sul nome dell'API (parte comune)
  1287.                     ) {
  1288.                     sqlQueryObject.addFromTable(CostantiDB.ACCORDI);
  1289.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_accordo="+CostantiDB.ACCORDI+".id");
  1290.                     if(filterGruppo!=null) {
  1291.                         sqlQueryObject.addFromTable(CostantiDB.ACCORDI_GRUPPI);
  1292.                         sqlQueryObject.addFromTable(CostantiDB.GRUPPI);
  1293.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_accordo="+CostantiDB.ACCORDI+".id");
  1294.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_gruppo="+CostantiDB.GRUPPI+".id");
  1295.                     }
  1296.                     if(idAccordoApi!=null) {
  1297.                         sqlQueryObject.addFromTable(CostantiDB.SOGGETTI, aliasSoggettiReferenti);
  1298.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".id_referente="+aliasSoggettiReferenti+".id");
  1299.                     }
  1300.                 }
  1301.                 if(gestioneFruitori) {
  1302.                     sqlQueryObject.addFromTable(CostantiDB.MAPPING_FRUIZIONE_PD);
  1303.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
  1304.                     sqlQueryObject.addFromTable(CostantiDB.SOGGETTI, aliasSoggettiFruitori);
  1305.                     if(searchCanale) {
  1306.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1307.                     }
  1308.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_fruizione="+CostantiDB.SERVIZI_FRUITORI+".id");
  1309.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".is_default=1");
  1310.                     if(searchCanale) {
  1311.                         sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_porta="+CostantiDB.PORTE_DELEGATE+".id");
  1312.                     }
  1313.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_servizio="+CostantiDB.SERVIZI+".id");
  1314.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_soggetto="+aliasSoggettiFruitori+".id");
  1315.                     if(joinConnettore) {
  1316.                         DBUtils.setFiltriConnettoreFruizione(sqlQueryObject, this.driver.tipoDB,
  1317.                                 tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1318.                                 filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1319.                     }
  1320.                     if(filtroModI) {
  1321.                         DBUtils.setFiltriModIFruizione(sqlQueryObject, this.driver.tipoDB,
  1322.                                 filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  1323.                                 filtroModISorgenteToken,
  1324.                                 filtroModIDigestRichiestaEnabled, filtroModIInfoUtente,
  1325.                                 filtroModIKeystorePath, filtroModIAudience);
  1326.                     }
  1327.                     if(filtroProprieta) {
  1328.                         DBUtils.setFiltriProprietaFruizione(sqlQueryObject, this.driver.tipoDB,
  1329.                                 filtroProprietaNome, filtroProprietaValore);
  1330.                     }
  1331.                     if(filtroStatoAPIImpl!=null ||
  1332.                             filtroAutenticazioneTokenPolicy!=null || filtroAutenticazioneTrasporto!=null ||
  1333.                             filtroRateLimitingStato!=null ||
  1334.                             filtroValidazioneStato!=null ||
  1335.                             filtroCacheRispostaStato!=null ||
  1336.                             filtroMessageSecurityStato!=null ||
  1337.                             filtroMTOMStato!=null ||
  1338.                             filtroTrasformazione!=null ||
  1339.                             filtroConfigurazioneTransazioni!=null ||
  1340.                             filtroCorrelazioneApplicativa!=null ||
  1341.                             filtroConfigurazioneDumpTipo!=null ||
  1342.                             filtroCORS!=null) {
  1343.                         DBUtils.setFiltriConfigurazioneFruizione(sqlQueryObject, this.driver.tipoDB,
  1344.                                 filtroStatoAPIImpl,
  1345.                                 filtroAutenticazioneTokenPolicy, filtroAutenticazioneTrasporto,
  1346.                                 filtroRateLimitingStato,
  1347.                                 filtroValidazioneStato,
  1348.                                 filtroCacheRispostaStato,
  1349.                                 filtroMessageSecurityStato,
  1350.                                 filtroMTOMStato,
  1351.                                 filtroTrasformazione,
  1352.                                 filtroConfigurazioneTransazioni,
  1353.                                 filtroCorrelazioneApplicativa,
  1354.                                 filtroConfigurazioneDumpTipo,
  1355.                                 filtroCORS, filtroCORSorigin);
  1356.                     }
  1357.                 }
  1358.                 if(gestioneErogatori) {
  1359.                     sqlQueryObject.addFromTable(CostantiDB.MAPPING_EROGAZIONE_PA);
  1360.                     if(searchCanale) {
  1361.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  1362.                     }
  1363.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_erogazione="+CostantiDB.SERVIZI+".id");
  1364.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".is_default=1");
  1365.                     if(searchCanale) {
  1366.                         sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_porta="+CostantiDB.PORTE_APPLICATIVE+".id");
  1367.                     }
  1368.                     if(joinConnettore) {
  1369.                         DBUtils.setFiltriConnettoreErogazione(sqlQueryObject, this.driver.tipoDB,
  1370.                                 tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1371.                                 filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1372.                     }
  1373.                     if(filtroModI) {
  1374.                         DBUtils.setFiltriModIErogazione(sqlQueryObject, this.driver.tipoDB,
  1375.                                 filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  1376.                                 filtroModISorgenteToken,
  1377.                                 filtroModIDigestRichiestaEnabled, filtroModIInfoUtente,
  1378.                                 filtroModIKeystorePath, filtroModIAudience);
  1379.                     }
  1380.                     if(filtroProprieta) {
  1381.                         DBUtils.setFiltriProprietaErogazione(sqlQueryObject, this.driver.tipoDB,
  1382.                                 filtroProprietaNome, filtroProprietaValore);
  1383.                     }
  1384.                     if(filtroStatoAPIImpl!=null ||
  1385.                             filtroAutenticazioneTokenPolicy!=null || filtroAutenticazioneTrasporto!=null ||
  1386.                             filtroRateLimitingStato!=null ||
  1387.                             filtroValidazioneStato!=null ||
  1388.                             filtroCacheRispostaStato!=null ||
  1389.                             filtroMessageSecurityStato!=null ||
  1390.                             filtroMTOMStato!=null ||
  1391.                             filtroTrasformazione!=null ||
  1392.                             filtroConfigurazioneTransazioni!=null ||
  1393.                             filtroCorrelazioneApplicativa!=null ||
  1394.                             filtroConfigurazioneDumpTipo!=null ||
  1395.                             filtroCORS!=null) {
  1396.                         DBUtils.setFiltriConfigurazioneErogazione(sqlQueryObject, this.driver.tipoDB,
  1397.                                 filtroStatoAPIImpl,
  1398.                                 filtroAutenticazioneTokenPolicy, filtroAutenticazioneTrasporto,
  1399.                                 filtroRateLimitingStato,
  1400.                                 filtroValidazioneStato,
  1401.                                 filtroCacheRispostaStato,
  1402.                                 filtroMessageSecurityStato,
  1403.                                 filtroMTOMStato,
  1404.                                 filtroTrasformazione,
  1405.                                 filtroConfigurazioneTransazioni,
  1406.                                 filtroCorrelazioneApplicativa,
  1407.                                 filtroConfigurazioneDumpTipo,
  1408.                                 filtroCORS, filtroCORSorigin);
  1409.                     }
  1410.                 }
  1411.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".id");
  1412.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".nome_servizio", "nomeServizio");
  1413.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".tipo_servizio", "tipoServizio");
  1414.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".versione_servizio", "versioneServizio");
  1415.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".id_soggetto","idSoggettoErogatore");
  1416.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".id_accordo");
  1417.                 sqlQueryObject.addSelectField("servizio_correlato");
  1418.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".stato","statoServizio");
  1419.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI,"descrizione","descrizioneServizio");
  1420.                 sqlQueryObject.addSelectAliasField(CostantiDB.SOGGETTI+".nome_soggetto","nomeSoggettoErogatore");
  1421.                 sqlQueryObject.addSelectAliasField(CostantiDB.SOGGETTI+".tipo_soggetto","tipoSoggettoErogatore");
  1422.                 sqlQueryObject.addSelectField("port_type");
  1423.                 if(gestioneFruitori) {
  1424.                     sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI_FRUITORI+".id","idFruizione");
  1425.                     sqlQueryObject.addSelectAliasField(aliasSoggettiFruitori+".id","idSoggettoFruitore");
  1426.                     sqlQueryObject.addSelectAliasField(aliasSoggettiFruitori+".nome_soggetto","nomeSoggettoFruitore");
  1427.                     sqlQueryObject.addSelectAliasField(aliasSoggettiFruitori+".tipo_soggetto","tipoSoggettoFruitore");
  1428.                 }
  1429.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  1430.                 if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1431.                     if(gestioneFruitori) {
  1432.                         sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".tipo_soggetto=?");
  1433.                         sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".nome_soggetto=?");
  1434.                     }
  1435.                     else {
  1436.                         sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto=?");
  1437.                         sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto=?");
  1438.                     }
  1439.                 }
  1440.                 if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  1441.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".superuser = ?");
  1442.                 if(tipoServiziProtocollo!=null && tipoServiziProtocollo.size()>0) {
  1443.                     sqlQueryObject.addWhereINCondition(CostantiDB.SERVIZI+".tipo_servizio", true, tipoServiziProtocollo.toArray(new String[1]));
  1444.                 }
  1445.                 if(filterTipoAPI!=null && !filterTipoAPI.equals("")) {
  1446.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".service_binding = ?");
  1447.                 }
  1448.                 if(filterGruppo!=null && !filterGruppo.equals("")) {
  1449.                     sqlQueryObject.addWhereCondition(CostantiDB.GRUPPI+".nome = ?");
  1450.                 }
  1451.                 if(idAccordoApi!=null) {
  1452.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".nome = ?");
  1453.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".versione = ?");
  1454.                     sqlQueryObject.addWhereCondition(aliasSoggettiReferenti+".tipo_soggetto = ?");
  1455.                     sqlQueryObject.addWhereCondition(aliasSoggettiReferenti+".nome_soggetto = ?");
  1456.                 }
  1457.                 if(pddTipologia!=null) {
  1458.                     if(PddTipologia.ESTERNO.equals(pddTipologia)) {
  1459.                         sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());                          
  1460.                     }
  1461.                     else {
  1462.                         sqlQueryObject.addFromTable(CostantiDB.PDD);
  1463.                         sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server",CostantiDB.PDD+".tipo=?");
  1464.                     }
  1465.                 }
  1466.                 if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  1467.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".stato = ?");
  1468.                 }
  1469.                 if(sqlQueryObjectSoggettiErogatoreContains!=null) {
  1470.                     sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectSoggettiErogatoreContains);
  1471.                 }
  1472.                 sqlQueryObject.addWhereCondition(false,
  1473.                        
  1474.                         // - ricerca su tipo/nome/versione servizio
  1475.                         //sqlQueryObject.getWhereLikeCondition("tipo_servizio", search, true, true),
  1476.                         sqlQueryObject.getWhereLikeCondition("nome_servizio", searchAPIErogazioneFruizione, true, true),
  1477.                         //sqlQueryObject.getWhereLikeCondition("versione_servizio", search, true, true),
  1478.                        
  1479.                         // - ricerca su nome dell'API (parte comune)
  1480.                         sqlQueryObject.getWhereLikeCondition(CostantiDB.ACCORDI+".nome", searchAPIErogazioneFruizione, true, true)
  1481.                     );
  1482.                
  1483.                 if(permessiUtente != null){
  1484.                     // solo S
  1485.                     if(permessiUtente[0] && !permessiUtente[1])
  1486.                         sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectAccordiComposti);

  1487.                     // solo P
  1488.                     if(!permessiUtente[0] && permessiUtente[1])
  1489.                         sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectAccordiComposti);

  1490.                     // P che S come ora non aggiungo la condizione
  1491.                 }
  1492.                
  1493.                 if(searchCanale) {
  1494.                     String tabellaPorta = gestioneErogatori ? CostantiDB.PORTE_APPLICATIVE : CostantiDB.PORTE_DELEGATE;
  1495.                     if(canaleDefault) {
  1496.                         sqlQueryObject.addWhereCondition(false,
  1497.                                 (tabellaPorta+".canale = ?"),
  1498.                                 ("( "+ tabellaPorta+".canale is null AND ("+CostantiDB.ACCORDI+".canale = ?  OR "+CostantiDB.ACCORDI+".canale is null) )"));
  1499.                     }
  1500.                     else {
  1501.                         sqlQueryObject.addWhereCondition(false,
  1502.                                 (tabellaPorta+".canale = ?"),
  1503.                                 ("( "+ tabellaPorta+".canale is null AND "+CostantiDB.ACCORDI+".canale = ? )"));
  1504.                     }
  1505.                 }
  1506.                
  1507.                 sqlQueryObject.setANDLogicOperator(true);
  1508.                 sqlQueryObject.addOrderBy("nomeServizio");
  1509.                 sqlQueryObject.addOrderBy("versioneServizio");
  1510.                 sqlQueryObject.addOrderBy("nomeSoggettoErogatore");
  1511.                 sqlQueryObject.addOrderBy("tipoServizio");
  1512.                 sqlQueryObject.addOrderBy("tipoSoggettoErogatore");
  1513.                 if(gestioneFruitori) {
  1514.                     sqlQueryObject.addOrderBy("nomeSoggettoFruitore");
  1515.                     sqlQueryObject.addOrderBy("tipoSoggettoFruitore");
  1516.                 }

  1517.                 sqlQueryObject.setSortType(true);
  1518.                 sqlQueryObject.setLimit(limit);
  1519.                 sqlQueryObject.setOffset(offset);
  1520.                 queryString = sqlQueryObject.createSQLQuery();
  1521.             } else {
  1522.                 // senza search
  1523.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1524.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  1525.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1526.                 if(permessiUtente!=null || filterTipoAPI!=null || filterGruppo!=null || idAccordoApi!=null || searchCanale || filtroModI) {
  1527.                     sqlQueryObject.addFromTable(CostantiDB.ACCORDI);
  1528.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_accordo="+CostantiDB.ACCORDI+".id");
  1529.                     if(filterGruppo!=null) {
  1530.                         sqlQueryObject.addFromTable(CostantiDB.ACCORDI_GRUPPI);
  1531.                         sqlQueryObject.addFromTable(CostantiDB.GRUPPI);
  1532.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_accordo="+CostantiDB.ACCORDI+".id");
  1533.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_GRUPPI+".id_gruppo="+CostantiDB.GRUPPI+".id");
  1534.                     }
  1535.                     if(idAccordoApi!=null) {
  1536.                         sqlQueryObject.addFromTable(CostantiDB.SOGGETTI, aliasSoggettiReferenti);
  1537.                         sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".id_referente="+aliasSoggettiReferenti+".id");
  1538.                     }
  1539.                 }
  1540.                 if(gestioneFruitori) {
  1541.                     sqlQueryObject.addFromTable(CostantiDB.MAPPING_FRUIZIONE_PD);
  1542.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
  1543.                     sqlQueryObject.addFromTable(CostantiDB.SOGGETTI, aliasSoggettiFruitori);
  1544.                     if(searchCanale) {
  1545.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_DELEGATE);
  1546.                     }
  1547.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_fruizione="+CostantiDB.SERVIZI_FRUITORI+".id");
  1548.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".is_default=1");
  1549.                     if(searchCanale) {
  1550.                         sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_FRUIZIONE_PD+".id_porta="+CostantiDB.PORTE_DELEGATE+".id");
  1551.                     }
  1552.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_servizio="+CostantiDB.SERVIZI+".id");
  1553.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_FRUITORI+".id_soggetto="+aliasSoggettiFruitori+".id");
  1554.                     if(joinConnettore) {
  1555.                         DBUtils.setFiltriConnettoreFruizione(sqlQueryObject, this.driver.tipoDB,
  1556.                                 tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1557.                                 filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1558.                     }
  1559.                     if(filtroModI) {
  1560.                         DBUtils.setFiltriModIFruizione(sqlQueryObject, this.driver.tipoDB,
  1561.                                 filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  1562.                                 filtroModISorgenteToken,
  1563.                                 filtroModIDigestRichiestaEnabled, filtroModIInfoUtente,
  1564.                                 filtroModIKeystorePath, filtroModIAudience);
  1565.                     }
  1566.                     if(filtroProprieta) {
  1567.                         DBUtils.setFiltriProprietaFruizione(sqlQueryObject, this.driver.tipoDB,
  1568.                                 filtroProprietaNome, filtroProprietaValore);
  1569.                     }
  1570.                     if(filtroStatoAPIImpl!=null ||
  1571.                             filtroAutenticazioneTokenPolicy!=null || filtroAutenticazioneTrasporto!=null ||
  1572.                             filtroRateLimitingStato!=null ||
  1573.                             filtroValidazioneStato!=null ||
  1574.                             filtroCacheRispostaStato!=null ||
  1575.                             filtroMessageSecurityStato!=null ||
  1576.                             filtroMTOMStato!=null ||
  1577.                             filtroTrasformazione!=null ||
  1578.                             filtroConfigurazioneTransazioni!=null ||
  1579.                             filtroCorrelazioneApplicativa!=null ||
  1580.                             filtroConfigurazioneDumpTipo!=null ||
  1581.                             filtroCORS!=null) {
  1582.                         DBUtils.setFiltriConfigurazioneFruizione(sqlQueryObject, this.driver.tipoDB,
  1583.                                 filtroStatoAPIImpl,
  1584.                                 filtroAutenticazioneTokenPolicy, filtroAutenticazioneTrasporto,
  1585.                                 filtroRateLimitingStato,
  1586.                                 filtroValidazioneStato,
  1587.                                 filtroCacheRispostaStato,
  1588.                                 filtroMessageSecurityStato,
  1589.                                 filtroMTOMStato,
  1590.                                 filtroTrasformazione,
  1591.                                 filtroConfigurazioneTransazioni,
  1592.                                 filtroCorrelazioneApplicativa,
  1593.                                 filtroConfigurazioneDumpTipo,
  1594.                                 filtroCORS, filtroCORSorigin);
  1595.                     }
  1596.                 }
  1597.                 if(gestioneErogatori) {
  1598.                     sqlQueryObject.addFromTable(CostantiDB.MAPPING_EROGAZIONE_PA);
  1599.                     if(searchCanale) {
  1600.                         sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
  1601.                     }
  1602.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_erogazione="+CostantiDB.SERVIZI+".id");
  1603.                     sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".is_default=1");
  1604.                     if(searchCanale) {
  1605.                         sqlQueryObject.addWhereCondition(CostantiDB.MAPPING_EROGAZIONE_PA+".id_porta="+CostantiDB.PORTE_APPLICATIVE+".id");
  1606.                     }
  1607.                     if(joinConnettore) {
  1608.                         DBUtils.setFiltriConnettoreErogazione(sqlQueryObject, this.driver.tipoDB,
  1609.                                 tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1610.                                 filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1611.                     }
  1612.                     if(filtroModI) {
  1613.                         DBUtils.setFiltriModIErogazione(sqlQueryObject, this.driver.tipoDB,
  1614.                                 filtroModISicurezzaCanale, filtroModISicurezzaMessaggio,
  1615.                                 filtroModISorgenteToken,
  1616.                                 filtroModIDigestRichiestaEnabled, filtroModIInfoUtente,
  1617.                                 filtroModIKeystorePath, filtroModIAudience);
  1618.                     }
  1619.                     if(filtroProprieta) {
  1620.                         DBUtils.setFiltriProprietaErogazione(sqlQueryObject, this.driver.tipoDB,
  1621.                                 filtroProprietaNome, filtroProprietaValore);
  1622.                     }
  1623.                     if(filtroStatoAPIImpl!=null ||
  1624.                             filtroAutenticazioneTokenPolicy!=null || filtroAutenticazioneTrasporto!=null ||
  1625.                             filtroRateLimitingStato!=null ||
  1626.                             filtroValidazioneStato!=null ||
  1627.                             filtroCacheRispostaStato!=null ||
  1628.                             filtroMessageSecurityStato!=null ||
  1629.                             filtroMTOMStato!=null ||
  1630.                             filtroTrasformazione!=null ||
  1631.                             filtroConfigurazioneTransazioni!=null ||
  1632.                             filtroCorrelazioneApplicativa!=null ||
  1633.                             filtroConfigurazioneDumpTipo!=null ||
  1634.                             filtroCORS!=null) {
  1635.                         DBUtils.setFiltriConfigurazioneErogazione(sqlQueryObject, this.driver.tipoDB,
  1636.                                 filtroStatoAPIImpl,
  1637.                                 filtroAutenticazioneTokenPolicy, filtroAutenticazioneTrasporto,
  1638.                                 filtroRateLimitingStato,
  1639.                                 filtroValidazioneStato,
  1640.                                 filtroCacheRispostaStato,
  1641.                                 filtroMessageSecurityStato,
  1642.                                 filtroMTOMStato,
  1643.                                 filtroTrasformazione,
  1644.                                 filtroConfigurazioneTransazioni,
  1645.                                 filtroCorrelazioneApplicativa,
  1646.                                 filtroConfigurazioneDumpTipo,
  1647.                                 filtroCORS, filtroCORSorigin);
  1648.                     }
  1649.                 }
  1650.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".id");
  1651.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".nome_servizio", "nomeServizio");
  1652.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".tipo_servizio", "tipoServizio");
  1653.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".versione_servizio", "versioneServizio");
  1654.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".id_soggetto","idSoggettoErogatore");
  1655.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI+".id_accordo");
  1656.                 sqlQueryObject.addSelectField("servizio_correlato");
  1657.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI+".stato","statoServizio");
  1658.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI,"descrizione","descrizioneServizio");
  1659.                 sqlQueryObject.addSelectAliasField(CostantiDB.SOGGETTI+".nome_soggetto","nomeSoggettoErogatore");
  1660.                 sqlQueryObject.addSelectAliasField(CostantiDB.SOGGETTI+".tipo_soggetto","tipoSoggettoErogatore");
  1661.                 sqlQueryObject.addSelectField("port_type");
  1662.                 if(gestioneFruitori) {
  1663.                     sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI_FRUITORI+".id","idFruizione");
  1664.                     sqlQueryObject.addSelectAliasField(aliasSoggettiFruitori+".id","idSoggettoFruitore");
  1665.                     sqlQueryObject.addSelectAliasField(aliasSoggettiFruitori+".nome_soggetto","nomeSoggettoFruitore");
  1666.                     sqlQueryObject.addSelectAliasField(aliasSoggettiFruitori+".tipo_soggetto","tipoSoggettoFruitore");
  1667.                 }
  1668.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id_soggetto = "+CostantiDB.SOGGETTI+".id");
  1669.                 if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1670.                     if(gestioneFruitori) {
  1671.                         sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".tipo_soggetto=?");
  1672.                         sqlQueryObject.addWhereCondition(aliasSoggettiFruitori+".nome_soggetto=?");
  1673.                     }
  1674.                     else {
  1675.                         sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto=?");
  1676.                         sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto=?");
  1677.                     }
  1678.                 }
  1679.                 if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  1680.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".superuser = ?");
  1681.                
  1682.                 if(tipoServiziProtocollo!=null && tipoServiziProtocollo.size()>0) {
  1683.                     sqlQueryObject.addWhereINCondition(CostantiDB.SERVIZI+".tipo_servizio", true, tipoServiziProtocollo.toArray(new String[1]));
  1684.                 }
  1685.                 if(filterTipoAPI!=null && !filterTipoAPI.equals("")) {
  1686.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".service_binding = ?");
  1687.                 }
  1688.                 if(filterGruppo!=null && !filterGruppo.equals("")) {
  1689.                     sqlQueryObject.addWhereCondition(CostantiDB.GRUPPI+".nome = ?");
  1690.                 }
  1691.                 if(idAccordoApi!=null) {
  1692.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".nome = ?");
  1693.                     sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI+".versione = ?");
  1694.                     sqlQueryObject.addWhereCondition(aliasSoggettiReferenti+".tipo_soggetto = ?");
  1695.                     sqlQueryObject.addWhereCondition(aliasSoggettiReferenti+".nome_soggetto = ?");
  1696.                 }
  1697.                 if(pddTipologia!=null) {
  1698.                     if(PddTipologia.ESTERNO.equals(pddTipologia)) {
  1699.                         sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());                          
  1700.                     }
  1701.                     else {
  1702.                         sqlQueryObject.addFromTable(CostantiDB.PDD);
  1703.                         sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+".nome="+CostantiDB.SOGGETTI+".server",CostantiDB.PDD+".tipo=?");
  1704.                     }
  1705.                 }
  1706.                 if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  1707.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".stato = ?");
  1708.                 }
  1709.                 if(sqlQueryObjectSoggettiErogatoreContains!=null) {
  1710.                     sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectSoggettiErogatoreContains);
  1711.                 }
  1712.                
  1713.                 if(permessiUtente != null){
  1714.                     // solo S
  1715.                     if(permessiUtente[0] && !permessiUtente[1])
  1716.                         sqlQueryObject.addWhereExistsCondition(true, sqlQueryObjectAccordiComposti);

  1717.                     // solo P
  1718.                     if(!permessiUtente[0] && permessiUtente[1])
  1719.                         sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectAccordiComposti);

  1720.                     // P che S come ora non aggiungo la condizione
  1721.                 }
  1722.                
  1723.                 if(searchCanale) {
  1724.                     String tabellaPorta = gestioneErogatori ? CostantiDB.PORTE_APPLICATIVE : CostantiDB.PORTE_DELEGATE;
  1725.                     if(canaleDefault) {
  1726.                         sqlQueryObject.addWhereCondition(false,
  1727.                                 (tabellaPorta+".canale = ?"),
  1728.                                 ("( "+ tabellaPorta+".canale is null AND ("+CostantiDB.ACCORDI+".canale = ?  OR "+CostantiDB.ACCORDI+".canale is null) )"));
  1729.                     }
  1730.                     else {
  1731.                         sqlQueryObject.addWhereCondition(false,
  1732.                                 (tabellaPorta+".canale = ?"),
  1733.                                 ("( "+ tabellaPorta+".canale is null AND "+CostantiDB.ACCORDI+".canale = ? )"));
  1734.                     }
  1735.                 }
  1736.                
  1737.                 sqlQueryObject.setANDLogicOperator(true);
  1738.                 sqlQueryObject.addOrderBy("nomeServizio");
  1739.                 sqlQueryObject.addOrderBy("versioneServizio");
  1740.                 sqlQueryObject.addOrderBy("nomeSoggettoErogatore");
  1741.                 sqlQueryObject.addOrderBy("tipoServizio");
  1742.                 sqlQueryObject.addOrderBy("tipoSoggettoErogatore");
  1743.                 if(gestioneFruitori) {
  1744.                     sqlQueryObject.addOrderBy("nomeSoggettoFruitore");
  1745.                     sqlQueryObject.addOrderBy("tipoSoggettoFruitore");
  1746.                 }

  1747.                 sqlQueryObject.setSortType(true);
  1748.                 sqlQueryObject.setLimit(limit);
  1749.                 sqlQueryObject.setOffset(offset);
  1750.                 queryString = sqlQueryObject.createSQLQuery();
  1751.             }

  1752.             this.driver.logDebug("query : " + queryString);

  1753.             stmt = con.prepareStatement(queryString);
  1754.             index = 1;
  1755.             if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1756.                 stmt.setString(index++, filterSoggettoTipo);
  1757.                 stmt.setString(index++, filterSoggettoNome);
  1758.             }
  1759.             if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  1760.                 stmt.setString(index++, superuser);
  1761.             if(filterTipoAPI!=null && !filterTipoAPI.equals("")) {
  1762.                 stmt.setString(index++, filterTipoAPI);
  1763.             }
  1764.             if(filterGruppo!=null && !filterGruppo.equals("")) {
  1765.                 stmt.setString(index++, filterGruppo);
  1766.             }
  1767.             if(idAccordoApi!=null) {
  1768.                 stmt.setString(index++, idAccordoApi.getNome());
  1769.                 stmt.setInt(index++, idAccordoApi.getVersione());
  1770.                 stmt.setString(index++, idAccordoApi.getSoggettoReferente().getTipo());
  1771.                 stmt.setString(index++, idAccordoApi.getSoggettoReferente().getNome());
  1772.             }
  1773.             if(pddTipologia!=null) {
  1774.                 stmt.setString(index++, pddTipologia.toString());
  1775.             }
  1776.             if(filterStatoAccordo!=null && !filterStatoAccordo.equals("")) {
  1777.                 stmt.setString(index++, filterStatoAccordo);
  1778.             }
  1779.             if(searchCanale) {
  1780.                 stmt.setString(index++, filterCanale);
  1781.                 stmt.setString(index++, filterCanale);
  1782.             }
  1783.             risultato = stmt.executeQuery();

  1784.             while (risultato.next()) {
  1785.                 AccordoServizioParteSpecifica serv = new AccordoServizioParteSpecifica();
  1786.                
  1787.                 serv.setId(risultato.getLong("id"));
  1788.                 serv.setNome(risultato.getString("nomeServizio"));
  1789.                 serv.setTipo(risultato.getString("tipoServizio"));
  1790.                 serv.setVersione(risultato.getInt("versioneServizio"));
  1791.                 serv.setPortType(risultato.getString("port_type"));
  1792.                 serv.setIdSoggetto(risultato.getLong("idSoggettoErogatore"));
  1793.                 serv.setIdAccordo(risultato.getLong("id_accordo"));
  1794.                 String servizioCorrelato = risultato.getString("servizio_correlato");
  1795.                 if( (servizioCorrelato != null) &&
  1796.                         (servizioCorrelato.equalsIgnoreCase(CostantiRegistroServizi.ABILITATO.toString()) ||
  1797.                                 TipologiaServizio.CORRELATO.toString().equals(servizioCorrelato))){
  1798.                     serv.setTipologiaServizio(TipologiaServizio.CORRELATO);
  1799.                 }else{
  1800.                     serv.setTipologiaServizio(TipologiaServizio.NORMALE);
  1801.                 }
  1802.                 serv.setDescrizione(risultato.getString("descrizioneServizio"));

  1803.                 // informazioni su soggetto
  1804.                 Soggetto sog = this.driver.getSoggetto(serv.getIdSoggetto(),con);
  1805.                 String nomeErogatore = sog.getNome();
  1806.                 String tipoErogatore = sog.getTipo();

  1807.                 serv.setNomeSoggettoErogatore(nomeErogatore);
  1808.                 serv.setTipoSoggettoErogatore(tipoErogatore);

  1809.                 // informazioni su accordo
  1810.                 IDAccordo idAccordo = this.driver.getIdAccordoServizioParteComune(serv.getIdAccordo(), con);
  1811.                 serv.setAccordoServizioParteComune(this.driver.idAccordoFactory.getUriFromIDAccordo(idAccordo));

  1812.                 // Stato
  1813.                 serv.setStatoPackage(risultato.getString("statoServizio"));
  1814.                
  1815.                 if(gestioneFruitori) {
  1816.                    
  1817.                     Fruitore fruitore = new Fruitore();
  1818.                     fruitore.setId(risultato.getLong("idFruizione"));
  1819.                     fruitore.setTipo(risultato.getString("tipoSoggettoFruitore"));
  1820.                     fruitore.setNome(risultato.getString("nomeSoggettoFruitore"));
  1821.                     fruitore.setIdServizio(serv.getId());
  1822.                     fruitore.setIdSoggetto(risultato.getLong("idSoggettoFruitore"));
  1823.                    
  1824.                     serv.addFruitore(fruitore);
  1825.                 }

  1826.                 serviziList.add(serv);
  1827.             }

  1828.             return serviziList;

  1829.         } catch (Exception qe) {
  1830.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Errore : " + qe.getMessage(),qe);
  1831.         } finally {

  1832.             //Chiudo statement and resultset
  1833.             JDBCUtilities.closeResources(risultato, stmt);

  1834.             this.driver.closeConnection(con);
  1835.         }
  1836.     }
  1837. }