DriverConfigurazioneDBServiziApplicativiSearch.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */
  20. package org.openspcoop2.core.config.driver.db;

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

  26. import org.apache.commons.lang.StringUtils;
  27. import org.openspcoop2.core.commons.DBUtils;
  28. import org.openspcoop2.core.commons.Filtri;
  29. import org.openspcoop2.core.commons.ISearch;
  30. import org.openspcoop2.core.commons.Liste;
  31. import org.openspcoop2.core.commons.SearchUtils;
  32. import org.openspcoop2.core.config.Proprieta;
  33. import org.openspcoop2.core.config.ServizioApplicativo;
  34. import org.openspcoop2.core.config.Soggetto;
  35. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  36. import org.openspcoop2.core.config.constants.RicercaTipologiaErogazione;
  37. import org.openspcoop2.core.config.constants.RicercaTipologiaFruizione;
  38. import org.openspcoop2.core.config.constants.TipoAutenticazione;
  39. import org.openspcoop2.core.config.constants.TipologiaErogazione;
  40. import org.openspcoop2.core.config.constants.TipologiaFruizione;
  41. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  42. import org.openspcoop2.core.config.driver.TipologiaServizioApplicativo;
  43. import org.openspcoop2.core.constants.CostantiDB;
  44. import org.openspcoop2.core.constants.TipiConnettore;
  45. import org.openspcoop2.core.constants.TipoPdD;
  46. import org.openspcoop2.core.id.IDFruizione;
  47. import org.openspcoop2.core.id.IDServizio;
  48. import org.openspcoop2.core.id.IDServizioApplicativo;
  49. import org.openspcoop2.core.id.IDSoggetto;
  50. import org.openspcoop2.core.registry.constants.PddTipologia;
  51. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  52. import org.openspcoop2.utils.sql.ISQLQueryObject;
  53. import org.openspcoop2.utils.sql.LikeConfig;
  54. import org.openspcoop2.utils.sql.SQLObjectFactory;

  55. /**
  56.  * DriverConfigurazioneDB_serviziApplicativiSearchDriver
  57.  *
  58.  *
  59.  * @author Sandra Giangrandi (sandra@link.it)
  60.  * @author Stefano Corallo (corallo@link.it)
  61.  * @author $Author$
  62.  * @version $Rev$, $Date$
  63.  */
  64. public class DriverConfigurazioneDBServiziApplicativiSearch {

  65.     private DriverConfigurazioneDB driver = null;
  66.     private DriverConfigurazioneDBSoggetti soggettiDriver = null;
  67.     private DriverConfigurazioneDB_serviziApplicativiDriver serviziApplicativiDriver = null;
  68.    
  69.     protected DriverConfigurazioneDBServiziApplicativiSearch(DriverConfigurazioneDB driver) {
  70.         this.driver = driver;
  71.         this.soggettiDriver = new DriverConfigurazioneDBSoggetti(driver);
  72.         this.serviziApplicativiDriver = new DriverConfigurazioneDB_serviziApplicativiDriver(driver);
  73.     }
  74.    
  75.     private static final String PREFIX_ATOMICA = "operazione this.driver.atomica = ";
  76.    
  77.     private String getPrefixError(String nomeMetodo) {
  78.         return "[DriverConfigurazioneDB::" + nomeMetodo + "] ";
  79.     }
  80.     private String getMessageError(String nomeMetodo, Exception e) {
  81.         return getPrefixError(nomeMetodo)+"Exception: " + e.getMessage();
  82.     }
  83.     private String getMessageDatasourceError(String nomeMetodo, Exception e) {
  84.         return getPrefixError(nomeMetodo)+"Exception accedendo al datasource :" + e.getMessage();
  85.     }
  86.     private String getMessageProprietarioNonEsiste(String nomeMetodo, IDSoggetto proprietario) {
  87.         return getPrefixError(nomeMetodo)+"Il proprietario ["+proprietario.toString()+"] non esiste.";
  88.     }
  89.    
  90.     private List<ServizioApplicativo> servizioApplicativoList(ISearch ricerca,Long idProprietario) throws DriverConfigurazioneException{
  91.         String nomeMetodo = "servizioApplicativoList(search,idProprietario)";
  92.         int idLista = Liste.SERVIZIO_APPLICATIVO;
  93.         int offset;
  94.         int limit;
  95.         String search;
  96.         String queryString;

  97.         limit = ricerca.getPageSize(idLista);
  98.         offset = ricerca.getIndexIniziale(idLista);
  99.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));


  100.         Connection con = null;
  101.         PreparedStatement stmt=null;
  102.         ResultSet risultato=null;
  103.         ArrayList<ServizioApplicativo> lista = new ArrayList<>();

  104.         if (this.driver.atomica) {
  105.             try {
  106.                 con = this.driver.getConnectionFromDatasource("servizioApplicativoList");
  107.             } catch (Exception e) {
  108.                 throw new DriverConfigurazioneException(getMessageDatasourceError(nomeMetodo,  e),e);

  109.             }

  110.         } else
  111.             con = this.driver.globalConnection;

  112.         this.driver.logDebug(PREFIX_ATOMICA + this.driver.atomica);

  113.         try {

  114.             if (!search.equals("")) {
  115.                 //query con search
  116.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  117.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  118.                 sqlQueryObject.setANDLogicOperator(true);
  119.                 sqlQueryObject.addSelectCountField("*", "cont");
  120.                 sqlQueryObject.addWhereLikeCondition("nome", search, true, true);

  121.                 if(idProprietario!=null) sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+"=?");

  122.                 queryString = sqlQueryObject.createSQLQuery();
  123.             } else {
  124.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  125.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  126.                 sqlQueryObject.setANDLogicOperator(true);
  127.                 sqlQueryObject.addSelectCountField("*", "cont");

  128.                 if(idProprietario!=null) sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+"=?");

  129.                 queryString = sqlQueryObject.createSQLQuery();
  130.             }
  131.             stmt = con.prepareStatement(queryString);
  132.             if(idProprietario!=null) stmt.setLong(1, idProprietario);
  133.             risultato = stmt.executeQuery();
  134.             if (risultato.next())
  135.                 ricerca.setNumEntries(idLista,risultato.getInt(1));
  136.             risultato.close();
  137.             stmt.close();

  138.             // ricavo le entries
  139.             if (limit == 0) // con limit
  140.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;

  141.             if (!search.equals("")) { // con search
  142.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  143.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  144.                 sqlQueryObject.setANDLogicOperator(true);
  145.                 sqlQueryObject.addSelectField("id");
  146.                 sqlQueryObject.addSelectField("nome");
  147.                 sqlQueryObject.addWhereLikeCondition("nome", search, true, true);
  148.                 if(idProprietario!=null) sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+"=?");
  149.                 sqlQueryObject.addOrderBy("nome");
  150.                 sqlQueryObject.setSortType(true);
  151.                 sqlQueryObject.setLimit(limit);
  152.                 sqlQueryObject.setOffset(offset);
  153.                 queryString = sqlQueryObject.createSQLQuery();
  154.             } else {
  155.                 // senza search
  156.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  157.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  158.                 sqlQueryObject.setANDLogicOperator(true);
  159.                 sqlQueryObject.addSelectField("id");
  160.                 sqlQueryObject.addSelectField("nome");
  161.                 if(idProprietario!=null) sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+"=?");
  162.                 sqlQueryObject.addOrderBy("nome");
  163.                 sqlQueryObject.setSortType(true);
  164.                 sqlQueryObject.setLimit(limit);
  165.                 sqlQueryObject.setOffset(offset);
  166.                 queryString = sqlQueryObject.createSQLQuery();
  167.             }
  168.             stmt = con.prepareStatement(queryString);
  169.             if(idProprietario!=null) stmt.setLong(1, idProprietario);
  170.             risultato = stmt.executeQuery();

  171.             ServizioApplicativo sa;
  172.             while (risultato.next()) {

  173.                 sa=this.serviziApplicativiDriver.getServizioApplicativo(risultato.getLong("id"));
  174.                 lista.add(sa);

  175.             }

  176.             return lista;

  177.         } catch (Exception qe) {
  178.             throw new DriverConfigurazioneException(getMessageError(nomeMetodo,  qe),qe);
  179.         } finally {

  180.             //Chiudo statement and resultset
  181.             JDBCUtilities.closeResources(risultato, stmt);

  182.             this.driver.closeConnection(con);
  183.         }
  184.     }

  185.     /**
  186.      * Recupera tutti i servizi applicativi in base ai parametri di ricerca passati
  187.      */
  188.     protected List<ServizioApplicativo> servizioApplicativoList(ISearch ricerca) throws DriverConfigurazioneException {
  189.         return this.servizioApplicativoList(ricerca, null);
  190.     }

  191.     protected List<ServizioApplicativo> servizioApplicativoList(IDSoggetto idSO,ISearch ricerca) throws DriverConfigurazioneException {
  192.         String nomeMetodo = "servizioApplicativoList";
  193.         Connection con = null;

  194.         if (this.driver.atomica) {
  195.             try {
  196.                 con = this.driver.getConnectionFromDatasource("servizioApplicativoList(idSoggetto)");
  197.             } catch (Exception e) {
  198.                 throw new DriverConfigurazioneException(getMessageDatasourceError(nomeMetodo,  e),e);

  199.             }

  200.         } else
  201.             con = this.driver.globalConnection;

  202.         this.driver.logDebug(PREFIX_ATOMICA + this.driver.atomica);

  203.         try {

  204.             return this.servizioApplicativoList(ricerca, DBUtils.getIdSoggetto(idSO.getNome(), idSO.getTipo(), con, this.driver.tipoDB));

  205.         } catch (Exception qe) {
  206.             throw new DriverConfigurazioneException(getMessageError(nomeMetodo,  qe),qe);
  207.         } finally {

  208.             this.driver.closeConnection(con);
  209.         }
  210.     }
  211.    
  212.     private ISQLQueryObject buildSqlQueryObjectAutorizzazioniPorteDelegate(String nomeTabella,
  213.             String aliasPDSA, String aliasPD, String aliasSERVIZI, String aliasACCORDI, String aliasACCORDIGRUPPI, String aliasGRUPPI, String aliasSOGGETTI,
  214.             boolean isFilterGruppoFruizione, IDFruizione apiImplementazioneFruizione, String filterGruppo,
  215.             List<Object> existsParameters) throws DriverConfigurazioneException {
  216.         try {
  217.             ISQLQueryObject sqlQueryObjectAutorizzazioniPorteDelegate = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  218.             sqlQueryObjectAutorizzazioniPorteDelegate.addFromTable(nomeTabella,aliasPDSA);
  219.             sqlQueryObjectAutorizzazioniPorteDelegate.addFromTable(CostantiDB.PORTE_DELEGATE,aliasPD);
  220.             if(isFilterGruppoFruizione) {
  221.                 sqlQueryObjectAutorizzazioniPorteDelegate.addFromTable(CostantiDB.SERVIZI,aliasSERVIZI);
  222.                 sqlQueryObjectAutorizzazioniPorteDelegate.addFromTable(CostantiDB.ACCORDI,aliasACCORDI);
  223.                 sqlQueryObjectAutorizzazioniPorteDelegate.addFromTable(CostantiDB.ACCORDI_GRUPPI,aliasACCORDIGRUPPI);
  224.                 sqlQueryObjectAutorizzazioniPorteDelegate.addFromTable(CostantiDB.GRUPPI,aliasGRUPPI);
  225.             }
  226.             if(apiImplementazioneFruizione!=null) {
  227.                 sqlQueryObjectAutorizzazioniPorteDelegate.addFromTable(CostantiDB.SOGGETTI,aliasSOGGETTI);
  228.             }
  229.             sqlQueryObjectAutorizzazioniPorteDelegate.addSelectAliasField(aliasPDSA, "id", aliasPDSA+"id");
  230.             sqlQueryObjectAutorizzazioniPorteDelegate.setANDLogicOperator(true);
  231.             sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasPDSA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF+" = "+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  232.             sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasPDSA+"."+CostantiDB.PORTA_COLUMN_ID_REF+" = "+aliasPD+"."+CostantiDB.COLUMN_ID);
  233.             if(isFilterGruppoFruizione) {
  234.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_REF+" = "+aliasSERVIZI+"."+CostantiDB.COLUMN_ID);
  235.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasSERVIZI+"."+CostantiDB.SERVIZI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  236.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  237.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_GRUPPO_REF+" = "+aliasGRUPPI+"."+CostantiDB.COLUMN_ID);
  238.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasGRUPPI+"."+CostantiDB.GRUPPI_COLUMN_NOME+" = ?");
  239.                 existsParameters.add(filterGruppo);
  240.             }
  241.             if(apiImplementazioneFruizione!=null) {
  242.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_ID_SOGGETTO_REF+" = "+aliasSOGGETTI+"."+CostantiDB.COLUMN_ID);
  243.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+" = ?");
  244.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+" = ?");
  245.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_TIPO_SOGGETTO_EROGATORE+" = ?");
  246.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_SOGGETTO_EROGATORE+" = ?");
  247.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_TIPO_SERVIZIO+" = ?");
  248.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_SERVIZIO+" = ?");
  249.                 sqlQueryObjectAutorizzazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_VERSIONE_SERVIZIO+" = ?");
  250.                 existsParameters.add(apiImplementazioneFruizione.getIdFruitore().getTipo());
  251.                 existsParameters.add(apiImplementazioneFruizione.getIdFruitore().getNome());
  252.                 existsParameters.add(apiImplementazioneFruizione.getIdServizio().getSoggettoErogatore().getTipo());
  253.                 existsParameters.add(apiImplementazioneFruizione.getIdServizio().getSoggettoErogatore().getNome());
  254.                 existsParameters.add(apiImplementazioneFruizione.getIdServizio().getTipo());
  255.                 existsParameters.add(apiImplementazioneFruizione.getIdServizio().getNome());
  256.                 existsParameters.add(apiImplementazioneFruizione.getIdServizio().getVersione());
  257.             }
  258.             return sqlQueryObjectAutorizzazioniPorteDelegate;
  259.         } catch (Exception e) {
  260.             throw new DriverConfigurazioneException(e.getMessage(),e);
  261.         }
  262.     }
  263.    
  264.     private ISQLQueryObject buildSqlQueryObjectAutorizzazioniPorteApplicative(String nomeTabella,
  265.             String aliasPASA, String aliasPA, String aliasSERVIZI, String aliasACCORDI, String aliasACCORDIGRUPPI, String aliasGRUPPI, String aliasSOGGETTI,
  266.             boolean isFilterGruppoErogazione, IDServizio apiImplementazioneErogazione, String filterGruppo,
  267.             List<Object> existsParameters) throws DriverConfigurazioneException {
  268.         try {
  269.             ISQLQueryObject sqlQueryObjectAutorizzazioniPorteApplicative = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  270.             sqlQueryObjectAutorizzazioniPorteApplicative.addFromTable(nomeTabella,aliasPASA);
  271.             sqlQueryObjectAutorizzazioniPorteApplicative.addFromTable(CostantiDB.PORTE_APPLICATIVE,aliasPA);
  272.             if(isFilterGruppoErogazione) {
  273.                 sqlQueryObjectAutorizzazioniPorteApplicative.addFromTable(CostantiDB.SERVIZI,aliasSERVIZI);
  274.                 sqlQueryObjectAutorizzazioniPorteApplicative.addFromTable(CostantiDB.ACCORDI,aliasACCORDI);
  275.                 sqlQueryObjectAutorizzazioniPorteApplicative.addFromTable(CostantiDB.ACCORDI_GRUPPI,aliasACCORDIGRUPPI);
  276.                 sqlQueryObjectAutorizzazioniPorteApplicative.addFromTable(CostantiDB.GRUPPI,aliasGRUPPI);
  277.             }
  278.             if(apiImplementazioneErogazione!=null) {
  279.                 sqlQueryObjectAutorizzazioniPorteApplicative.addFromTable(CostantiDB.SOGGETTI,aliasSOGGETTI);
  280.             }
  281.             sqlQueryObjectAutorizzazioniPorteApplicative.addSelectAliasField(aliasPASA, "id", aliasPASA+"id");
  282.             sqlQueryObjectAutorizzazioniPorteApplicative.setANDLogicOperator(true);
  283.             sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasPASA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF+" = "+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  284.             sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasPASA+"."+CostantiDB.PORTA_COLUMN_ID_REF+" = "+aliasPA+"."+CostantiDB.COLUMN_ID);
  285.             if(isFilterGruppoErogazione) {
  286.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_REF+" = "+aliasSERVIZI+"."+CostantiDB.COLUMN_ID);
  287.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasSERVIZI+"."+CostantiDB.SERVIZI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  288.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  289.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_GRUPPO_REF+" = "+aliasGRUPPI+"."+CostantiDB.COLUMN_ID);
  290.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasGRUPPI+"."+CostantiDB.GRUPPI_COLUMN_NOME+" = ?");
  291.                 existsParameters.add(filterGruppo);
  292.             }
  293.             if(apiImplementazioneErogazione!=null) {
  294.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SOGGETTO_REF+" = "+aliasSOGGETTI+"."+CostantiDB.COLUMN_ID);
  295.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+" = ?");
  296.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+" = ?");
  297.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_TIPO_SERVIZIO+" = ?");
  298.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_SERVIZIO+" = ?");
  299.                 sqlQueryObjectAutorizzazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_VERSIONE_SERVIZIO+" = ?");
  300.                 existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getTipo());
  301.                 existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getNome());
  302.                 existsParameters.add(apiImplementazioneErogazione.getTipo());
  303.                 existsParameters.add(apiImplementazioneErogazione.getNome());
  304.                 existsParameters.add(apiImplementazioneErogazione.getVersione());
  305.             }
  306.             return sqlQueryObjectAutorizzazioniPorteApplicative;
  307.         } catch (Exception e) {
  308.             throw new DriverConfigurazioneException(e.getMessage(),e);
  309.         }
  310.     }
  311.    
  312.     protected List<ServizioApplicativo> soggettiServizioApplicativoList(String superuser, ISearch ricerca) throws DriverConfigurazioneException {
  313.         String nomeMetodo = "soggettiServizioApplicativoList";
  314.         int idLista = Liste.SERVIZIO_APPLICATIVO;
  315.         int offset;
  316.         int limit;
  317.         String search;
  318.         String queryString;

  319.         limit = ricerca.getPageSize(idLista);
  320.         offset = ricerca.getIndexIniziale(idLista);
  321.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));

  322.         String filterProtocollo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLO);
  323.         String filterProtocolli = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLI);
  324.         List<String> tipoSoggettiProtocollo = null;
  325.         try {
  326.             tipoSoggettiProtocollo = Filtri.convertToTipiSoggetti(filterProtocollo, filterProtocolli);
  327.         }catch(Exception e) {
  328.             throw new DriverConfigurazioneException(e.getMessage(),e);
  329.         }
  330.        
  331.         String filterRuoloServizioApplicativo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_RUOLO_SERVIZIO_APPLICATIVO);
  332.         TipologiaFruizione tipologiaFruizione = null;
  333.         TipologiaErogazione tipologiaErogazione = null;
  334.         if(filterRuoloServizioApplicativo!=null && !"".equals(filterRuoloServizioApplicativo)) {
  335.             if(Filtri.VALUE_FILTRO_RUOLO_SERVIZIO_APPLICATIVO_EROGATORE.equals(filterRuoloServizioApplicativo)) {
  336.                 tipologiaErogazione = TipologiaErogazione.DISABILITATO;
  337.             }
  338.             else if(Filtri.VALUE_FILTRO_RUOLO_SERVIZIO_APPLICATIVO_FRUITORE.equals(filterRuoloServizioApplicativo)) {
  339.                 tipologiaFruizione = TipologiaFruizione.DISABILITATO;
  340.             }
  341.         }
  342.        
  343.         String filterSoggettoTipoNome = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_SOGGETTO);
  344.         String filterSoggettoTipo = null;
  345.         String filterSoggettoNome = null;
  346.         if(filterSoggettoTipoNome!=null && !"".equals(filterSoggettoTipoNome)) {
  347.             filterSoggettoTipo = filterSoggettoTipoNome.split("/")[0];
  348.             filterSoggettoNome = filterSoggettoTipoNome.split("/")[1];
  349.         }
  350.        
  351.         String filterDominio = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_DOMINIO);
  352.         PddTipologia pddTipologia = null;
  353.         if(filterDominio!=null && !"".equals(filterDominio)) {
  354.             pddTipologia = PddTipologia.toPddTipologia(filterDominio);
  355.         }
  356.        
  357.         String filterRuolo = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_RUOLO);
  358.        
  359.         String filterTipoServizioApplicativo = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_TIPO_SERVIZIO_APPLICATIVO);
  360.        
  361.         String filterTipoCredenziali = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_TIPO_CREDENZIALI);
  362.         String filterCredenziale = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_CREDENZIALE);
  363.         String filterCredenzialeIssuer = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_CREDENZIALE_ISSUER);
  364.         if(filterCredenzialeIssuer!=null && "".equals(filterCredenzialeIssuer)) {
  365.             filterCredenzialeIssuer = null;
  366.         }
  367.         if(filterCredenzialeIssuer!=null && !"ssl".equals(filterTipoCredenziali)) {
  368.             filterCredenzialeIssuer = null;
  369.         }
  370.         String filterCredenzialeTokenPolicy = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_CREDENZIALE_TOKEN_POLICY);
  371.        
  372.         boolean isFilterGruppoErogazione = false;
  373.         boolean isFilterGruppoFruizione = false;
  374.         String filterGruppo = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_GRUPPO);
  375.         if(filterGruppo!=null && !"".equals(filterGruppo)) {
  376.             isFilterGruppoErogazione = true;
  377.             isFilterGruppoFruizione = true;
  378.         }

  379.         TipoPdD apiContesto = null;
  380.         String filterApiContesto = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_API_CONTESTO);
  381.         if(filterApiContesto!=null && !"".equals(filterApiContesto)) {
  382.             apiContesto = TipoPdD.toTipoPdD(filterApiContesto);
  383.             if(TipoPdD.APPLICATIVA.equals(apiContesto)) {
  384.                 isFilterGruppoFruizione = false;
  385.             }
  386.             else if(TipoPdD.DELEGATA.equals(apiContesto)) {
  387.                 isFilterGruppoErogazione = false;
  388.             }
  389.             else {
  390.                 apiContesto = null;
  391.             }
  392.         }
  393.        
  394.         String filterApiImplementazione = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_API_IMPLEMENTAZIONE);
  395.         IDServizio apiImplementazioneErogazione = null;
  396.         IDFruizione apiImplementazioneFruizione = null;
  397.         if(filterApiImplementazione!=null && !"".equals(filterApiImplementazione)) {
  398.             if(TipoPdD.APPLICATIVA.equals(apiContesto)) {
  399.                 try {
  400.                     apiImplementazioneErogazione = IDServizio.toIDServizio(filterApiImplementazione);
  401.                     isFilterGruppoErogazione=false; // non ha piu' senso ho selezionato una erogazione puntuale
  402.                 }catch(Exception e) {
  403.                     throw new DriverConfigurazioneException("Filtro API Implementazione '"+filterApiImplementazione+"' non valido: "+e.getMessage(),e);
  404.                 }
  405.             }
  406.             else if(TipoPdD.DELEGATA.equals(apiContesto)) {
  407.                 try {
  408.                     apiImplementazioneFruizione = IDFruizione.toIDFruizione(filterApiImplementazione);
  409.                     isFilterGruppoFruizione=false; // non ha piu' senso ho selezionato una fruizione puntuale
  410.                 }catch(Exception e) {
  411.                     throw new DriverConfigurazioneException("Filtro API Implementazione '"+filterApiImplementazione+"' non valido: "+e.getMessage(),e);
  412.                 }
  413.             }
  414.         }
  415.        
  416.         String filtroConnettoreTipo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_TIPO);
  417.         String filtroConnettoreTipoPlugin = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_TIPO_PLUGIN);
  418.         String filtroConnettoreTokenPolicy = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_TOKEN_POLICY);
  419.         String filtroConnettoreEndpoint = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_ENDPOINT);
  420.         String filtroConnettoreKeystore = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_KEYSTORE);
  421.         String filtroConnettoreDebug = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_DEBUG);
  422.         if((filtroConnettoreTipo!=null && "".equals(filtroConnettoreTipo))) {
  423.             filtroConnettoreTipo=null;
  424.         }
  425.         if((filtroConnettoreTipoPlugin!=null && "".equals(filtroConnettoreTipoPlugin))) {
  426.             filtroConnettoreTipoPlugin=null;
  427.         }
  428.         if((filtroConnettoreTokenPolicy!=null && "".equals(filtroConnettoreTokenPolicy))) {
  429.             filtroConnettoreTokenPolicy=null;
  430.         }
  431.         if((filtroConnettoreEndpoint!=null && "".equals(filtroConnettoreEndpoint))) {
  432.             filtroConnettoreEndpoint=null;
  433.         }
  434.         if((filtroConnettoreKeystore!=null && "".equals(filtroConnettoreKeystore))) {
  435.             filtroConnettoreKeystore=null;
  436.         }
  437.         if((filtroConnettoreDebug!=null && "".equals(filtroConnettoreDebug))) {
  438.             filtroConnettoreDebug=null;
  439.         }
  440.         boolean joinConnettore =  filtroConnettoreTipo!=null    || filtroConnettoreTokenPolicy!=null || filtroConnettoreEndpoint!=null || filtroConnettoreKeystore!=null || filtroConnettoreDebug!=null;
  441.         TipiConnettore tipoConnettore = null;
  442.         String endpointType = null;
  443.         boolean tipoConnettoreIntegrationManager = false;
  444.         if(filtroConnettoreTipo!=null && !"".equals(filtroConnettoreTipo)) {
  445.             if(Filtri.FILTRO_CONNETTORE_TIPO_VALORE_IM.equals(filtroConnettoreTipo)) {
  446.                 tipoConnettoreIntegrationManager = true;
  447.             }
  448.             else {
  449.                 tipoConnettore = TipiConnettore.toEnumFromName(filtroConnettoreTipo);
  450.                 if(tipoConnettore!=null) {
  451.                     endpointType = (TipiConnettore.CUSTOM.equals(tipoConnettore)) ? filtroConnettoreTipoPlugin : tipoConnettore.getNome();
  452.                 }
  453.             }
  454.         }
  455.        
  456.         String filtroModISicurezzaMessaggio = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_MESSAGGIO);
  457.         String filtroModIKeystorePath = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_KEYSTORE_PATH);
  458.         String filtroModIKeystoreSubject = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_KEYSTORE_SUBJECT);
  459.         String filtroModIKeystoreIssuer = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_KEYSTORE_ISSUER);
  460.         String filtroModISicurezzaToken = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_TOKEN);
  461.         String filtroModITokenPolicy = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_TOKEN_POLICY);
  462.         String filtroModITokenClientId = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_TOKEN_CLIENT_ID);
  463.         String filtroModIAudience = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_AUDIENCE);
  464.         Boolean filtroModISicurezzaMessaggioEnabled = null;
  465.         if(CostantiDB.STATO_FUNZIONALITA_ABILITATO.equals(filtroModISicurezzaMessaggio)) {
  466.             filtroModISicurezzaMessaggioEnabled = true;
  467.         }
  468.         else if(CostantiDB.STATO_FUNZIONALITA_DISABILITATO.equals(filtroModISicurezzaMessaggio)) {
  469.             filtroModISicurezzaMessaggioEnabled = false;
  470.         }
  471.         if(filtroModISicurezzaMessaggioEnabled!=null && filtroModISicurezzaMessaggioEnabled) {
  472.             if((filtroModIKeystorePath!=null && "".equals(filtroModIKeystorePath))) {
  473.                 filtroModIKeystorePath=null;
  474.             }
  475.             if((filtroModIKeystoreSubject!=null && "".equals(filtroModIKeystoreSubject))) {
  476.                 filtroModIKeystoreSubject=null;
  477.             }
  478.             if((filtroModIKeystoreIssuer!=null && "".equals(filtroModIKeystoreIssuer))) {
  479.                 filtroModIKeystoreIssuer=null;
  480.             }
  481.         }
  482.         else {
  483.             filtroModIKeystorePath=null;
  484.             filtroModIKeystoreSubject=null;
  485.             filtroModIKeystoreIssuer=null;
  486.         }
  487.         Boolean filtroModISicurezzaTokenEnabled = null;
  488.         if(CostantiDB.STATO_FUNZIONALITA_ABILITATO.equals(filtroModISicurezzaToken)) {
  489.             filtroModISicurezzaTokenEnabled = true;
  490.         }
  491.         else if(CostantiDB.STATO_FUNZIONALITA_DISABILITATO.equals(filtroModISicurezzaToken)) {
  492.             filtroModISicurezzaTokenEnabled = false;
  493.         }
  494.         if(filtroModISicurezzaTokenEnabled!=null && filtroModISicurezzaTokenEnabled) {
  495.             if((filtroModITokenPolicy!=null && "".equals(filtroModITokenPolicy))) {
  496.                 filtroModITokenPolicy=null;
  497.             }
  498.             if((filtroModITokenClientId!=null && "".equals(filtroModITokenClientId))) {
  499.                 filtroModITokenClientId=null;
  500.             }
  501.         }
  502.         else {
  503.             filtroModITokenPolicy=null;
  504.             filtroModITokenClientId=null;
  505.         }
  506.         if((filtroModIAudience!=null && "".equals(filtroModIAudience))) {
  507.             filtroModIAudience=null;
  508.         }
  509.         boolean filtroModI = filtroModISicurezzaMessaggioEnabled!=null ||
  510.                 filtroModIKeystorePath!=null || filtroModIKeystoreSubject!=null || filtroModIKeystoreIssuer!=null ||
  511.                 filtroModISicurezzaTokenEnabled!=null ||
  512.                 filtroModITokenPolicy!=null || filtroModITokenClientId!=null ||
  513.                 filtroModIAudience!=null;
  514.        
  515.         boolean checkCredenzialiBase = false;
  516.         if( (filterTipoCredenziali==null || "".equals(filterTipoCredenziali))
  517.                 &&
  518.                 (filterCredenziale==null || "".equals(filterCredenziale))
  519.                 &&
  520.                 (filterCredenzialeIssuer==null || "".equals(filterCredenzialeIssuer))
  521.             ) {
  522.             checkCredenzialiBase = true;
  523.         }
  524.        
  525.         String filtroProprietaNome = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROPRIETA_NOME);
  526.         String filtroProprietaValore = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROPRIETA_VALORE);
  527.         if((filtroProprietaNome!=null && "".equals(filtroProprietaNome))) {
  528.             filtroProprietaNome=null;
  529.         }
  530.         if((filtroProprietaValore!=null && "".equals(filtroProprietaValore))) {
  531.             filtroProprietaValore=null;
  532.         }
  533.         boolean filtroProprieta = filtroProprietaNome!=null || filtroProprietaValore!=null;
  534.        
  535.         this.driver.logDebug("search : " + search);
  536.         this.driver.logDebug("filterProtocollo : " + filterProtocollo);
  537.         this.driver.logDebug("filterProtocolli : " + filterProtocolli);
  538.         this.driver.logDebug("filterDominio : " + filterDominio);
  539.         this.driver.logDebug("filterSoggettoNome : " + filterSoggettoNome);
  540.         this.driver.logDebug("filterSoggettoTipo : " + filterSoggettoTipo);
  541.         this.driver.logDebug("filterRuoloServizioApplicativo : " + filterRuoloServizioApplicativo);
  542.         this.driver.logDebug("filterRuolo : " + filterRuolo);
  543.         this.driver.logDebug("filterTipoServizioApplicativo : " + filterTipoServizioApplicativo);
  544.         this.driver.logDebug("filterTipoCredenziali : " + filterTipoCredenziali);
  545.         this.driver.logDebug("filterCredenziale : " + filterCredenziale);
  546.         this.driver.logDebug("filterCredenzialeIssuer : " + filterCredenzialeIssuer);
  547.         this.driver.logDebug("filterCredenzialeTokenPolicy : " + filterCredenzialeTokenPolicy);
  548.         this.driver.logDebug("filterGruppo : " + filterGruppo);
  549.         this.driver.logDebug("filterApiContesto : " + filterApiContesto);
  550.         this.driver.logDebug("filterApiImplementazione : " + filterApiImplementazione);
  551.         this.driver.logDebug("filtroConnettoreTipo : " + filtroConnettoreTipo);
  552.         this.driver.logDebug("filtroConnettoreTokenPolicy : " + filtroConnettoreTokenPolicy);
  553.         this.driver.logDebug("filtroConnettoreEndpoint : " + filtroConnettoreEndpoint);
  554.         this.driver.logDebug("filtroConnettoreKeystore : " + filtroConnettoreKeystore);
  555.         this.driver.logDebug("filtroConnettoreDebug : " + filtroConnettoreDebug);
  556.         this.driver.logDebug("filtroConnettoreTipoPlugin : " + filtroConnettoreTipoPlugin);
  557.         this.driver.logDebug("filtroModISicurezzaMessaggio : " + filtroModISicurezzaMessaggio);
  558.         this.driver.logDebug("filtroModIKeystorePath : " + filtroModIKeystorePath);
  559.         this.driver.logDebug("filtroModIKeystoreSubject : " + filtroModIKeystoreSubject);
  560.         this.driver.logDebug("filtroModIKeystoreIssuer : " + filtroModIKeystoreIssuer);
  561.         this.driver.logDebug("filtroModISicurezzaToken : " + filtroModISicurezzaToken);
  562.         this.driver.logDebug("filtroModITokenPolicy : " + filtroModITokenPolicy);
  563.         this.driver.logDebug("filtroModITokenClientId : " + filtroModITokenClientId);
  564.         this.driver.logDebug("filtroModIAudience : " + filtroModIAudience);
  565.         this.driver.logDebug("filtroProprietaNome : " + filtroProprietaNome);
  566.         this.driver.logDebug("filtroProprietaValore : " + filtroProprietaValore);
  567.        
  568.         Connection con = null;
  569.         PreparedStatement stmt=null;
  570.         ResultSet risultato=null;
  571.         ArrayList<ServizioApplicativo> silList = new ArrayList<>();

  572.         if (this.driver.atomica) {
  573.             try {
  574.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  575.             } catch (Exception e) {
  576.                 throw new DriverConfigurazioneException(getMessageDatasourceError(nomeMetodo,  e),e);

  577.             }

  578.         } else
  579.             con = this.driver.globalConnection;

  580.         this.driver.logDebug(PREFIX_ATOMICA + this.driver.atomica);

  581.         try {

  582.             /* === Filtro Dominio === */

  583.             ISQLQueryObject sqlQueryObjectPdd = null;
  584.             if(pddTipologia!=null && PddTipologia.ESTERNO.equals(pddTipologia)) {
  585.                 ISQLQueryObject sqlQueryObjectExistsPdd = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  586.                 sqlQueryObjectExistsPdd.addSelectField(CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_NOME);
  587.                 sqlQueryObjectExistsPdd.addFromTable(CostantiDB.PDD);
  588.                 sqlQueryObjectExistsPdd.setANDLogicOperator(true);
  589.                 sqlQueryObjectExistsPdd.addWhereCondition(CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_NOME+"="+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SERVER);
  590.                 sqlQueryObjectExistsPdd.addWhereCondition(CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_TIPO+"=?");
  591.                
  592.                 sqlQueryObjectPdd = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  593.                 sqlQueryObjectPdd.setANDLogicOperator(false);
  594.                 sqlQueryObjectPdd.addWhereIsNullCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SERVER);
  595.                 sqlQueryObjectPdd.addWhereExistsCondition(false, sqlQueryObjectExistsPdd);
  596.             }  
  597.            
  598.            
  599.            
  600.             /* === Filtro Gruppo, Tipo Erogazione/Fruizione, Implementazione API === */
  601.            
  602.             List<String> existsConditions = new ArrayList<>();
  603.             List<Object> existsParameters = new ArrayList<>();
  604.             String aliasCT = "ct";
  605.             String aliasALLARMI = "alarm";
  606.             String aliasPDSA = "pdsa";
  607.             String aliasPDTOKENSA = "pdtokensa";
  608.             String aliasPD = "pd";
  609.             String aliasPDTRASFORMAZIONISA = "pdtsa";
  610.             String aliasPDTRASFORMAZIONI = "pdt";
  611.             String aliasPASA = "pasa";
  612.             String aliasPATOKENSA = "patokensa";
  613.             String aliasPA = "pa";
  614.             String aliasPATRASFORMAZIONISA = "patsa";
  615.             String aliasPATRASFORMAZIONI = "pat";
  616.             String aliasSERVIZI = "s";
  617.             String aliasACCORDI = "a";
  618.             String aliasACCORDIGRUPPI = "ag";
  619.             String aliasGRUPPI = "g";
  620.             String aliasSOGGETTI = "sProprietario";
  621.            
  622.    
  623.            
  624.             // autorizzazioni porte delegate
  625.             /** select * from servizi_applicativi sa WHERE EXISTS (select pdsa.id from porte_delegate_sa pdsa, porte_delegate pd, servizi s, accordi a, accordi_gruppi ag, gruppi g
  626.                  WHERE pdsa.id_servizio_applicativo=sa.id AND pdsa.id_porta=pd.id AND pd.id_servizio=s.id AND s.id_accordo=a.id AND ag.id_accordo=a.id AND ag.id_gruppo=g.id AND g.nome='TAG');*/
  627.             if(isFilterGruppoFruizione  || TipoPdD.DELEGATA.equals(apiContesto) || apiImplementazioneFruizione!=null) {
  628.                 ISQLQueryObject sqlQueryObjectAutorizzazioniPorteDelegate = buildSqlQueryObjectAutorizzazioniPorteDelegate(CostantiDB.PORTE_DELEGATE_SA,
  629.                         aliasPDSA, aliasPD, aliasSERVIZI, aliasACCORDI, aliasACCORDIGRUPPI, aliasGRUPPI, aliasSOGGETTI,
  630.                         isFilterGruppoFruizione, apiImplementazioneFruizione, filterGruppo,
  631.                         existsParameters);
  632.                 existsConditions.add(sqlQueryObjectAutorizzazioniPorteDelegate.getWhereExistsCondition(false, sqlQueryObjectAutorizzazioniPorteDelegate));
  633.             }
  634.            
  635.             // autorizzazioni token porte delegate
  636.             /** select * from servizi_applicativi sa WHERE EXISTS (select pdsa.id from porte_delegate_sa pdsa, porte_delegate pd, servizi s, accordi a, accordi_gruppi ag, gruppi g
  637.                  WHERE pdsa.id_servizio_applicativo=sa.id AND pdsa.id_porta=pd.id AND pd.id_servizio=s.id AND s.id_accordo=a.id AND ag.id_accordo=a.id AND ag.id_gruppo=g.id AND g.nome='TAG');*/
  638.             if(isFilterGruppoFruizione  || TipoPdD.DELEGATA.equals(apiContesto) || apiImplementazioneFruizione!=null) {
  639.                 ISQLQueryObject sqlQueryObjectAutorizzazioniPorteDelegate = buildSqlQueryObjectAutorizzazioniPorteDelegate(CostantiDB.PORTE_DELEGATE_TOKEN_SA,
  640.                         aliasPDTOKENSA, aliasPD, aliasSERVIZI, aliasACCORDI, aliasACCORDIGRUPPI, aliasGRUPPI, aliasSOGGETTI,
  641.                         isFilterGruppoFruizione, apiImplementazioneFruizione, filterGruppo,
  642.                         existsParameters);
  643.                 existsConditions.add(sqlQueryObjectAutorizzazioniPorteDelegate.getWhereExistsCondition(false, sqlQueryObjectAutorizzazioniPorteDelegate));
  644.             }
  645.            
  646.             // autorizzazioni porte applicative
  647.             /** select * from servizi_applicativi sa WHERE EXISTS (select pasa.id from porte_applicative_sa_auth pasa, porte_applicative pa, servizi s, accordi a, accordi_gruppi ag, gruppi g
  648.                 WHERE pasa.id_servizio_applicativo=sa.id AND pasa.id_porta=pa.id AND pa.id_servizio=s.id AND s.id_accordo=a.id AND ag.id_accordo=a.id AND ag.id_gruppo=g.id AND g.nome='TAG');*/
  649.             if(isFilterGruppoErogazione  || TipoPdD.APPLICATIVA.equals(apiContesto) || apiImplementazioneErogazione!=null) {
  650.                 ISQLQueryObject sqlQueryObjectAutorizzazioniPorteApplicative = buildSqlQueryObjectAutorizzazioniPorteApplicative(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI,
  651.                         aliasPASA, aliasPA, aliasSERVIZI, aliasACCORDI, aliasACCORDIGRUPPI, aliasGRUPPI, aliasSOGGETTI,
  652.                         isFilterGruppoErogazione, apiImplementazioneErogazione, filterGruppo,
  653.                         existsParameters);
  654.                 existsConditions.add(sqlQueryObjectAutorizzazioniPorteApplicative.getWhereExistsCondition(false, sqlQueryObjectAutorizzazioniPorteApplicative));
  655.             }
  656.            
  657.             // autorizzazioni token porte applicative
  658.             /** select * from servizi_applicativi sa WHERE EXISTS (select pasa.id from porte_applicative_sa_auth pasa, porte_applicative pa, servizi s, accordi a, accordi_gruppi ag, gruppi g
  659.                 WHERE pasa.id_servizio_applicativo=sa.id AND pasa.id_porta=pa.id AND pa.id_servizio=s.id AND s.id_accordo=a.id AND ag.id_accordo=a.id AND ag.id_gruppo=g.id AND g.nome='TAG');*/
  660.             if(isFilterGruppoErogazione  || TipoPdD.APPLICATIVA.equals(apiContesto) || apiImplementazioneErogazione!=null) {
  661.                 ISQLQueryObject sqlQueryObjectAutorizzazioniPorteApplicative = buildSqlQueryObjectAutorizzazioniPorteApplicative(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA,
  662.                         aliasPATOKENSA, aliasPA, aliasSERVIZI, aliasACCORDI, aliasACCORDIGRUPPI, aliasGRUPPI, aliasSOGGETTI,
  663.                         isFilterGruppoErogazione, apiImplementazioneErogazione, filterGruppo,
  664.                         existsParameters);
  665.                 existsConditions.add(sqlQueryObjectAutorizzazioniPorteApplicative.getWhereExistsCondition(false, sqlQueryObjectAutorizzazioniPorteApplicative));
  666.             }
  667.            
  668.             // server sulle porte applicative
  669.             /** select * from servizi_applicativi sa WHERE EXISTS (select pasa.id from porte_applicative_sa pasa, porte_applicative pa, servizi s, accordi a, accordi_gruppi ag, gruppi g
  670.              WHERE pasa.id_servizio_applicativo=sa.id AND pasa.id_porta=pa.id AND pa.id_servizio=s.id AND s.id_accordo=a.id AND ag.id_accordo=a.id AND ag.id_gruppo=g.id AND g.nome='TAG');*/
  671.             if(isFilterGruppoErogazione  || TipoPdD.APPLICATIVA.equals(apiContesto) || apiImplementazioneErogazione!=null) {
  672.                 ISQLQueryObject sqlQueryObjectServerPorteApplicative = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  673.                 sqlQueryObjectServerPorteApplicative.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA,aliasPASA);
  674.                 sqlQueryObjectServerPorteApplicative.addFromTable(CostantiDB.PORTE_APPLICATIVE,aliasPA);
  675.                 if(isFilterGruppoErogazione) {
  676.                     sqlQueryObjectServerPorteApplicative.addFromTable(CostantiDB.SERVIZI,aliasSERVIZI);
  677.                     sqlQueryObjectServerPorteApplicative.addFromTable(CostantiDB.ACCORDI,aliasACCORDI);
  678.                     sqlQueryObjectServerPorteApplicative.addFromTable(CostantiDB.ACCORDI_GRUPPI,aliasACCORDIGRUPPI);
  679.                     sqlQueryObjectServerPorteApplicative.addFromTable(CostantiDB.GRUPPI,aliasGRUPPI);
  680.                 }
  681.                 if(apiImplementazioneErogazione!=null) {
  682.                     sqlQueryObjectServerPorteApplicative.addFromTable(CostantiDB.SOGGETTI,aliasSOGGETTI);
  683.                 }
  684.                 sqlQueryObjectServerPorteApplicative.addSelectAliasField(aliasPASA, "id", aliasPASA+"id");
  685.                 sqlQueryObjectServerPorteApplicative.setANDLogicOperator(true);
  686.                 sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasPASA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF+" = "+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  687.                 sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasPASA+"."+CostantiDB.PORTA_COLUMN_ID_REF+" = "+aliasPA+"."+CostantiDB.COLUMN_ID);
  688.                 if(isFilterGruppoErogazione) {
  689.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_REF+" = "+aliasSERVIZI+"."+CostantiDB.COLUMN_ID);
  690.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasSERVIZI+"."+CostantiDB.SERVIZI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  691.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  692.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_GRUPPO_REF+" = "+aliasGRUPPI+"."+CostantiDB.COLUMN_ID);
  693.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasGRUPPI+"."+CostantiDB.GRUPPI_COLUMN_NOME+" = ?");
  694.                     existsParameters.add(filterGruppo);
  695.                 }
  696.                 if(apiImplementazioneErogazione!=null) {
  697.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SOGGETTO_REF+" = "+aliasSOGGETTI+"."+CostantiDB.COLUMN_ID);
  698.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+" = ?");
  699.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+" = ?");
  700.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_TIPO_SERVIZIO+" = ?");
  701.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_SERVIZIO+" = ?");
  702.                     sqlQueryObjectServerPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_VERSIONE_SERVIZIO+" = ?");
  703.                     existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getTipo());
  704.                     existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getNome());
  705.                     existsParameters.add(apiImplementazioneErogazione.getTipo());
  706.                     existsParameters.add(apiImplementazioneErogazione.getNome());
  707.                     existsParameters.add(apiImplementazioneErogazione.getVersione());
  708.                 }
  709.                
  710.                 existsConditions.add(sqlQueryObjectServerPorteApplicative.getWhereExistsCondition(false, sqlQueryObjectServerPorteApplicative));
  711.             }
  712.            
  713.        
  714.             // controllo del traffico
  715.             /**
  716.              * select * from servizi_applicativi sa, soggetti soggetti WHERE sa.id_soggetto=soggetti.id  
  717.              * AND EXISTS (select ct.id from ct_active_policy ct WHERE ct.filtro_tipo_fruitore=soggetti.tipo_soggetto AND ct.filtro_nome_fruitore=soggetti.nome_soggetto AND ct.filtro_sa_fruitore=sa.nome AND
  718. (
  719.   (filtro_ruolo='applicativa' AND EXISTS (select pa.id from porte_applicative pa, servizi s, accordi a, accordi_gruppi ag, gruppi g WHERE pa.nome_porta=filtro_porta AND pa.id_servizio=s.id AND s.id_accordo=a.id AND ag.id_accordo=a.id AND ag.id_gruppo=g.id AND g.nome='TAG'))
  720.   OR
  721.   (filtro_ruolo='delegata' AND EXISTS (select pd.id from porte_delegate pd, servizi s, accordi a, accordi_gruppi ag, gruppi g WHERE pd.nome_porta=filtro_porta AND pd.id_servizio=s.id AND s.id_accordo=a.id AND ag.id_accordo=a.id AND ag.id_gruppo=g.id AND g.nome='TAG'))
  722. ));
  723.              *
  724.              * */
  725.            
  726.             // Controllo del traffico sulle porte delegate
  727.             if(isFilterGruppoFruizione  || TipoPdD.DELEGATA.equals(apiContesto) || apiImplementazioneFruizione!=null) {
  728.                 ISQLQueryObject sqlQueryObjectControlloTrafficoPorteDelegate = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  729.                 sqlQueryObjectControlloTrafficoPorteDelegate.addFromTable(CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY,aliasCT);
  730.                 if(isFilterGruppoFruizione || apiImplementazioneFruizione!=null) {
  731.                     sqlQueryObjectControlloTrafficoPorteDelegate.addFromTable(CostantiDB.PORTE_DELEGATE,aliasPD);
  732.                     if(isFilterGruppoFruizione) {
  733.                         sqlQueryObjectControlloTrafficoPorteDelegate.addFromTable(CostantiDB.SERVIZI,aliasSERVIZI);
  734.                         sqlQueryObjectControlloTrafficoPorteDelegate.addFromTable(CostantiDB.ACCORDI,aliasACCORDI);
  735.                         sqlQueryObjectControlloTrafficoPorteDelegate.addFromTable(CostantiDB.ACCORDI_GRUPPI,aliasACCORDIGRUPPI);
  736.                         sqlQueryObjectControlloTrafficoPorteDelegate.addFromTable(CostantiDB.GRUPPI,aliasGRUPPI);
  737.                     }
  738.                     if(apiImplementazioneFruizione!=null) {
  739.                         sqlQueryObjectControlloTrafficoPorteDelegate.addFromTable(CostantiDB.SOGGETTI,aliasSOGGETTI);
  740.                     }
  741.                 }
  742.                 sqlQueryObjectControlloTrafficoPorteDelegate.addSelectAliasField(aliasCT, "id", aliasCT+"id");
  743.                 sqlQueryObjectControlloTrafficoPorteDelegate.setANDLogicOperator(true);
  744.                 sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_TIPO_FRUITORE+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO);
  745.                 sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_NOME_FRUITORE+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO);
  746.                 sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_SA_FRUITORE+" = "+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_NOME);
  747.                 sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_RUOLO+" = 'delegata'");
  748.                 if(isFilterGruppoFruizione || apiImplementazioneFruizione!=null) {
  749.                     sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_PORTA+" = "+aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_PORTA);
  750.                     if(isFilterGruppoFruizione) {
  751.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_REF+" = "+aliasSERVIZI+"."+CostantiDB.COLUMN_ID);
  752.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasSERVIZI+"."+CostantiDB.SERVIZI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  753.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  754.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_GRUPPO_REF+" = "+aliasGRUPPI+"."+CostantiDB.COLUMN_ID);
  755.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasGRUPPI+"."+CostantiDB.GRUPPI_COLUMN_NOME+" = ?");
  756.                         existsParameters.add(filterGruppo);
  757.                     }
  758.                     if(apiImplementazioneFruizione!=null) {
  759.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_ID_SOGGETTO_REF+" = "+aliasSOGGETTI+"."+CostantiDB.COLUMN_ID);
  760.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+" = ?");
  761.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+" = ?");
  762.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_TIPO_SOGGETTO_EROGATORE+" = ?");
  763.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_SOGGETTO_EROGATORE+" = ?");
  764.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_TIPO_SERVIZIO+" = ?");
  765.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_SERVIZIO+" = ?");
  766.                         sqlQueryObjectControlloTrafficoPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_VERSIONE_SERVIZIO+" = ?");
  767.                         existsParameters.add(apiImplementazioneFruizione.getIdFruitore().getTipo());
  768.                         existsParameters.add(apiImplementazioneFruizione.getIdFruitore().getNome());
  769.                         existsParameters.add(apiImplementazioneFruizione.getIdServizio().getSoggettoErogatore().getTipo());
  770.                         existsParameters.add(apiImplementazioneFruizione.getIdServizio().getSoggettoErogatore().getNome());
  771.                         existsParameters.add(apiImplementazioneFruizione.getIdServizio().getTipo());
  772.                         existsParameters.add(apiImplementazioneFruizione.getIdServizio().getNome());
  773.                         existsParameters.add(apiImplementazioneFruizione.getIdServizio().getVersione());
  774.                     }
  775.                 }
  776.                
  777.                 existsConditions.add(sqlQueryObjectControlloTrafficoPorteDelegate.getWhereExistsCondition(false, sqlQueryObjectControlloTrafficoPorteDelegate));
  778.             }
  779.            
  780.             // Controllo del traffico sulle porte applicative
  781.             if(isFilterGruppoErogazione  || TipoPdD.APPLICATIVA.equals(apiContesto) || apiImplementazioneErogazione!=null) {
  782.                 ISQLQueryObject sqlQueryObjectControlloTrafficoPorteApplicative = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  783.                 sqlQueryObjectControlloTrafficoPorteApplicative.addFromTable(CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY,aliasCT);
  784.                 if(isFilterGruppoErogazione || apiImplementazioneErogazione!=null) {
  785.                     sqlQueryObjectControlloTrafficoPorteApplicative.addFromTable(CostantiDB.PORTE_APPLICATIVE,aliasPA);
  786.                     if(isFilterGruppoErogazione) {
  787.                         sqlQueryObjectControlloTrafficoPorteApplicative.addFromTable(CostantiDB.SERVIZI,aliasSERVIZI);
  788.                         sqlQueryObjectControlloTrafficoPorteApplicative.addFromTable(CostantiDB.ACCORDI,aliasACCORDI);
  789.                         sqlQueryObjectControlloTrafficoPorteApplicative.addFromTable(CostantiDB.ACCORDI_GRUPPI,aliasACCORDIGRUPPI);
  790.                         sqlQueryObjectControlloTrafficoPorteApplicative.addFromTable(CostantiDB.GRUPPI,aliasGRUPPI);
  791.                     }
  792.                     if(apiImplementazioneErogazione!=null) {
  793.                         sqlQueryObjectControlloTrafficoPorteApplicative.addFromTable(CostantiDB.SOGGETTI,aliasSOGGETTI);
  794.                     }
  795.                 }
  796.                 sqlQueryObjectControlloTrafficoPorteApplicative.addSelectAliasField(aliasCT, "id", aliasCT+"id");
  797.                 sqlQueryObjectControlloTrafficoPorteApplicative.setANDLogicOperator(true);
  798.                 sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_TIPO_FRUITORE+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO);
  799.                 sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_NOME_FRUITORE+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO);
  800.                 sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_SA_FRUITORE+" = "+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_NOME);
  801.                 sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_RUOLO+" = 'applicativa'");
  802.                 if(isFilterGruppoErogazione || apiImplementazioneErogazione!=null) {
  803.                     sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasCT+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_PORTA+" = "+aliasPA+"."+CostantiDB.PORTA_COLUMN_NOME_PORTA);
  804.                     if(isFilterGruppoErogazione) {
  805.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_REF+" = "+aliasSERVIZI+"."+CostantiDB.COLUMN_ID);
  806.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasSERVIZI+"."+CostantiDB.SERVIZI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  807.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  808.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_GRUPPO_REF+" = "+aliasGRUPPI+"."+CostantiDB.COLUMN_ID);
  809.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasGRUPPI+"."+CostantiDB.GRUPPI_COLUMN_NOME+" = ?");
  810.                         existsParameters.add(filterGruppo);
  811.                     }
  812.                     if(apiImplementazioneErogazione!=null) {
  813.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SOGGETTO_REF+" = "+aliasSOGGETTI+"."+CostantiDB.COLUMN_ID);
  814.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+" = ?");
  815.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+" = ?");
  816.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_TIPO_SERVIZIO+" = ?");
  817.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_SERVIZIO+" = ?");
  818.                         sqlQueryObjectControlloTrafficoPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_VERSIONE_SERVIZIO+" = ?");
  819.                         existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getTipo());
  820.                         existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getNome());
  821.                         existsParameters.add(apiImplementazioneErogazione.getTipo());
  822.                         existsParameters.add(apiImplementazioneErogazione.getNome());
  823.                         existsParameters.add(apiImplementazioneErogazione.getVersione());
  824.                     }
  825.                 }
  826.                
  827.                 existsConditions.add(sqlQueryObjectControlloTrafficoPorteApplicative.getWhereExistsCondition(false, sqlQueryObjectControlloTrafficoPorteApplicative));
  828.             }
  829.            
  830.             if(CostantiDB.isAllarmiEnabled()) {
  831.                
  832.                 // Allarmi sulle porte delegate
  833.                 if(isFilterGruppoFruizione  || TipoPdD.DELEGATA.equals(apiContesto) || apiImplementazioneFruizione!=null) {
  834.                     ISQLQueryObject sqlQueryObjectAllarmiPorteDelegate = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  835.                     sqlQueryObjectAllarmiPorteDelegate.addFromTable(CostantiDB.ALLARMI,aliasALLARMI);
  836.                     if(isFilterGruppoFruizione || apiImplementazioneFruizione!=null) {
  837.                         sqlQueryObjectAllarmiPorteDelegate.addFromTable(CostantiDB.PORTE_DELEGATE,aliasPD);
  838.                         if(isFilterGruppoFruizione) {
  839.                             sqlQueryObjectAllarmiPorteDelegate.addFromTable(CostantiDB.SERVIZI,aliasSERVIZI);
  840.                             sqlQueryObjectAllarmiPorteDelegate.addFromTable(CostantiDB.ACCORDI,aliasACCORDI);
  841.                             sqlQueryObjectAllarmiPorteDelegate.addFromTable(CostantiDB.ACCORDI_GRUPPI,aliasACCORDIGRUPPI);
  842.                             sqlQueryObjectAllarmiPorteDelegate.addFromTable(CostantiDB.GRUPPI,aliasGRUPPI);
  843.                         }
  844.                         if(apiImplementazioneFruizione!=null) {
  845.                             sqlQueryObjectAllarmiPorteDelegate.addFromTable(CostantiDB.SOGGETTI,aliasSOGGETTI);
  846.                         }
  847.                     }
  848.                     sqlQueryObjectAllarmiPorteDelegate.addSelectAliasField(aliasALLARMI, "id", aliasALLARMI+"id");
  849.                     sqlQueryObjectAllarmiPorteDelegate.setANDLogicOperator(true);
  850.                     sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_TIPO_FRUITORE+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO);
  851.                     sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_NOME_FRUITORE+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO);
  852.                     sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_SA_FRUITORE+" = "+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_NOME);
  853.                     sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_RUOLO+" = 'delegata'");
  854.                     if(isFilterGruppoFruizione || apiImplementazioneFruizione!=null) {
  855.                         sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_PORTA+" = "+aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_PORTA);
  856.                         if(isFilterGruppoFruizione) {
  857.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_REF+" = "+aliasSERVIZI+"."+CostantiDB.COLUMN_ID);
  858.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasSERVIZI+"."+CostantiDB.SERVIZI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  859.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  860.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_GRUPPO_REF+" = "+aliasGRUPPI+"."+CostantiDB.COLUMN_ID);
  861.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasGRUPPI+"."+CostantiDB.GRUPPI_COLUMN_NOME+" = ?");
  862.                             existsParameters.add(filterGruppo);
  863.                         }
  864.                         if(apiImplementazioneFruizione!=null) {
  865.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_ID_SOGGETTO_REF+" = "+aliasSOGGETTI+"."+CostantiDB.COLUMN_ID);
  866.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+" = ?");
  867.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+" = ?");
  868.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_TIPO_SOGGETTO_EROGATORE+" = ?");
  869.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_SOGGETTO_EROGATORE+" = ?");
  870.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_TIPO_SERVIZIO+" = ?");
  871.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_SERVIZIO+" = ?");
  872.                             sqlQueryObjectAllarmiPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_VERSIONE_SERVIZIO+" = ?");
  873.                             existsParameters.add(apiImplementazioneFruizione.getIdFruitore().getTipo());
  874.                             existsParameters.add(apiImplementazioneFruizione.getIdFruitore().getNome());
  875.                             existsParameters.add(apiImplementazioneFruizione.getIdServizio().getSoggettoErogatore().getTipo());
  876.                             existsParameters.add(apiImplementazioneFruizione.getIdServizio().getSoggettoErogatore().getNome());
  877.                             existsParameters.add(apiImplementazioneFruizione.getIdServizio().getTipo());
  878.                             existsParameters.add(apiImplementazioneFruizione.getIdServizio().getNome());
  879.                             existsParameters.add(apiImplementazioneFruizione.getIdServizio().getVersione());
  880.                         }
  881.                     }
  882.                    
  883.                     existsConditions.add(sqlQueryObjectAllarmiPorteDelegate.getWhereExistsCondition(false, sqlQueryObjectAllarmiPorteDelegate));
  884.                 }
  885.                
  886.                 // Allarmi sulle porte applicative
  887.                 if(isFilterGruppoErogazione  || TipoPdD.APPLICATIVA.equals(apiContesto) || apiImplementazioneErogazione!=null) {
  888.                     ISQLQueryObject sqlQueryObjectAllarmiPorteApplicative = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  889.                     sqlQueryObjectAllarmiPorteApplicative.addFromTable(CostantiDB.ALLARMI,aliasALLARMI);
  890.                     if(isFilterGruppoErogazione || apiImplementazioneErogazione!=null) {
  891.                         sqlQueryObjectAllarmiPorteApplicative.addFromTable(CostantiDB.PORTE_APPLICATIVE,aliasPA);
  892.                         if(isFilterGruppoErogazione) {
  893.                             sqlQueryObjectAllarmiPorteApplicative.addFromTable(CostantiDB.SERVIZI,aliasSERVIZI);
  894.                             sqlQueryObjectAllarmiPorteApplicative.addFromTable(CostantiDB.ACCORDI,aliasACCORDI);
  895.                             sqlQueryObjectAllarmiPorteApplicative.addFromTable(CostantiDB.ACCORDI_GRUPPI,aliasACCORDIGRUPPI);
  896.                             sqlQueryObjectAllarmiPorteApplicative.addFromTable(CostantiDB.GRUPPI,aliasGRUPPI);
  897.                         }
  898.                         if(apiImplementazioneErogazione!=null) {
  899.                             sqlQueryObjectAllarmiPorteApplicative.addFromTable(CostantiDB.SOGGETTI,aliasSOGGETTI);
  900.                         }
  901.                     }
  902.                     sqlQueryObjectAllarmiPorteApplicative.addSelectAliasField(aliasALLARMI, "id", aliasALLARMI+"id");
  903.                     sqlQueryObjectAllarmiPorteApplicative.setANDLogicOperator(true);
  904.                     sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_TIPO_FRUITORE+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO);
  905.                     sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_NOME_FRUITORE+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO);
  906.                     sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_SA_FRUITORE+" = "+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_NOME);
  907.                     sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_RUOLO+" = 'applicativa'");
  908.                     if(isFilterGruppoErogazione || apiImplementazioneErogazione!=null) {
  909.                         sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasALLARMI+"."+CostantiDB.CONTROLLO_TRAFFICO_ACTIVE_POLICY_COLUMN_FILTRO_PORTA+" = "+aliasPA+"."+CostantiDB.PORTA_COLUMN_NOME_PORTA);
  910.                         if(isFilterGruppoErogazione) {
  911.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_REF+" = "+aliasSERVIZI+"."+CostantiDB.COLUMN_ID);
  912.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasSERVIZI+"."+CostantiDB.SERVIZI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  913.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  914.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_GRUPPO_REF+" = "+aliasGRUPPI+"."+CostantiDB.COLUMN_ID);
  915.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasGRUPPI+"."+CostantiDB.GRUPPI_COLUMN_NOME+" = ?");
  916.                             existsParameters.add(filterGruppo);
  917.                         }
  918.                         if(apiImplementazioneErogazione!=null) {
  919.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SOGGETTO_REF+" = "+aliasSOGGETTI+"."+CostantiDB.COLUMN_ID);
  920.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+" = ?");
  921.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+" = ?");
  922.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_TIPO_SERVIZIO+" = ?");
  923.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_SERVIZIO+" = ?");
  924.                             sqlQueryObjectAllarmiPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_VERSIONE_SERVIZIO+" = ?");
  925.                             existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getTipo());
  926.                             existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getNome());
  927.                             existsParameters.add(apiImplementazioneErogazione.getTipo());
  928.                             existsParameters.add(apiImplementazioneErogazione.getNome());
  929.                             existsParameters.add(apiImplementazioneErogazione.getVersione());
  930.                         }
  931.                     }
  932.                    
  933.                     existsConditions.add(sqlQueryObjectAllarmiPorteApplicative.getWhereExistsCondition(false, sqlQueryObjectAllarmiPorteApplicative));
  934.                 }
  935.             }
  936.            
  937.            
  938.             // porte_delegate trasformazioni
  939.             /**
  940.              * select * from servizi_applicativi sa WHERE EXISTS (select pdtsa.id from pd_transform_sa pdtsa, pd_transform pdt, porte_delegate pd, servizi s, accordi a, accordi_gruppi ag, gruppi g
  941.              *    WHERE pdtsa.id_servizio_applicativo=sa.id AND pdtsa.id_trasformazione=pdt.id AND pdt.id_porta=pd.id AND pd.id_servizio=s.id AND s.id_accordo=a.id AND ag.id_accordo=a.id AND ag.id_gruppo=g.id AND g.nome='TAG');
  942.              **/
  943.             if(isFilterGruppoFruizione  || TipoPdD.DELEGATA.equals(apiContesto) || apiImplementazioneFruizione!=null) {
  944.                 ISQLQueryObject sqlQueryObjectTrasformazioniPorteDelegate = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  945.                 sqlQueryObjectTrasformazioniPorteDelegate.addFromTable(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI_SA,aliasPDTRASFORMAZIONISA);
  946.                 sqlQueryObjectTrasformazioniPorteDelegate.addFromTable(CostantiDB.PORTE_DELEGATE_TRASFORMAZIONI,aliasPDTRASFORMAZIONI);
  947.                 sqlQueryObjectTrasformazioniPorteDelegate.addFromTable(CostantiDB.PORTE_DELEGATE,aliasPD);
  948.                 if(isFilterGruppoFruizione) {
  949.                     sqlQueryObjectTrasformazioniPorteDelegate.addFromTable(CostantiDB.SERVIZI,aliasSERVIZI);
  950.                     sqlQueryObjectTrasformazioniPorteDelegate.addFromTable(CostantiDB.ACCORDI,aliasACCORDI);
  951.                     sqlQueryObjectTrasformazioniPorteDelegate.addFromTable(CostantiDB.ACCORDI_GRUPPI,aliasACCORDIGRUPPI);
  952.                     sqlQueryObjectTrasformazioniPorteDelegate.addFromTable(CostantiDB.GRUPPI,aliasGRUPPI);
  953.                 }
  954.                 if(apiImplementazioneFruizione!=null) {
  955.                     sqlQueryObjectTrasformazioniPorteDelegate.addFromTable(CostantiDB.SOGGETTI,aliasSOGGETTI);
  956.                 }
  957.                 sqlQueryObjectTrasformazioniPorteDelegate.addSelectAliasField(aliasPDTRASFORMAZIONISA, "id", aliasPDTRASFORMAZIONISA+"id");
  958.                 sqlQueryObjectTrasformazioniPorteDelegate.setANDLogicOperator(true);
  959.                 sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPDTRASFORMAZIONISA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF+" = "+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  960.                 sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPDTRASFORMAZIONISA+".id_trasformazione = "+aliasPDTRASFORMAZIONI+"."+CostantiDB.COLUMN_ID);
  961.                 sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPDTRASFORMAZIONI+"."+CostantiDB.PORTA_COLUMN_ID_REF+" = "+aliasPD+"."+CostantiDB.COLUMN_ID);
  962.                 if(isFilterGruppoFruizione) {
  963.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_REF+" = "+aliasSERVIZI+"."+CostantiDB.COLUMN_ID);
  964.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasSERVIZI+"."+CostantiDB.SERVIZI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  965.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  966.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_GRUPPO_REF+" = "+aliasGRUPPI+"."+CostantiDB.COLUMN_ID);
  967.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasGRUPPI+"."+CostantiDB.GRUPPI_COLUMN_NOME+" = ?");
  968.                     existsParameters.add(filterGruppo);
  969.                 }
  970.                 if(apiImplementazioneFruizione!=null) {
  971.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_ID_SOGGETTO_REF+" = "+aliasSOGGETTI+"."+CostantiDB.COLUMN_ID);
  972.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+" = ?");
  973.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+" = ?");
  974.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_TIPO_SOGGETTO_EROGATORE+" = ?");
  975.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_SOGGETTO_EROGATORE+" = ?");
  976.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_TIPO_SERVIZIO+" = ?");
  977.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_NOME_SERVIZIO+" = ?");
  978.                     sqlQueryObjectTrasformazioniPorteDelegate.addWhereCondition(aliasPD+"."+CostantiDB.PORTA_COLUMN_VERSIONE_SERVIZIO+" = ?");
  979.                     existsParameters.add(apiImplementazioneFruizione.getIdFruitore().getTipo());
  980.                     existsParameters.add(apiImplementazioneFruizione.getIdFruitore().getNome());
  981.                     existsParameters.add(apiImplementazioneFruizione.getIdServizio().getSoggettoErogatore().getTipo());
  982.                     existsParameters.add(apiImplementazioneFruizione.getIdServizio().getSoggettoErogatore().getNome());
  983.                     existsParameters.add(apiImplementazioneFruizione.getIdServizio().getTipo());
  984.                     existsParameters.add(apiImplementazioneFruizione.getIdServizio().getNome());
  985.                     existsParameters.add(apiImplementazioneFruizione.getIdServizio().getVersione());
  986.                 }
  987.                
  988.                 existsConditions.add(sqlQueryObjectTrasformazioniPorteDelegate.getWhereExistsCondition(false, sqlQueryObjectTrasformazioniPorteDelegate));
  989.             }
  990.    
  991.             // porte_applicative trasformazioni
  992.             /**
  993.              * select * from servizi_applicativi sa WHERE EXISTS (select patsa.id from pa_transform_sa patsa, pa_transform pat, porte_applicative pa, servizi s, accordi a, accordi_gruppi ag, gruppi g
  994.              * WHERE patsa.id_servizio_applicativo=sa.id AND patsa.id_trasformazione=pat.id AND pat.id_porta=pa.id AND pa.id_servizio=s.id AND s.id_accordo=a.id AND ag.id_accordo=a.id AND ag.id_gruppo=g.id AND g.nome='TAG');
  995.              **/
  996.            
  997.             if(isFilterGruppoErogazione  || TipoPdD.APPLICATIVA.equals(apiContesto) || apiImplementazioneErogazione!=null) {
  998.                 ISQLQueryObject sqlQueryObjectTrasformazioniPorteApplicative = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  999.                 sqlQueryObjectTrasformazioniPorteApplicative.addFromTable(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI_SA,aliasPATRASFORMAZIONISA);
  1000.                 sqlQueryObjectTrasformazioniPorteApplicative.addFromTable(CostantiDB.PORTE_APPLICATIVE_TRASFORMAZIONI,aliasPATRASFORMAZIONI);
  1001.                 sqlQueryObjectTrasformazioniPorteApplicative.addFromTable(CostantiDB.PORTE_APPLICATIVE,aliasPA);
  1002.                 if(isFilterGruppoErogazione) {
  1003.                     sqlQueryObjectTrasformazioniPorteApplicative.addFromTable(CostantiDB.SERVIZI,aliasSERVIZI);
  1004.                     sqlQueryObjectTrasformazioniPorteApplicative.addFromTable(CostantiDB.ACCORDI,aliasACCORDI);
  1005.                     sqlQueryObjectTrasformazioniPorteApplicative.addFromTable(CostantiDB.ACCORDI_GRUPPI,aliasACCORDIGRUPPI);
  1006.                     sqlQueryObjectTrasformazioniPorteApplicative.addFromTable(CostantiDB.GRUPPI,aliasGRUPPI);
  1007.                 }
  1008.                 if(apiImplementazioneErogazione!=null) {
  1009.                     sqlQueryObjectTrasformazioniPorteApplicative.addFromTable(CostantiDB.SOGGETTI,aliasSOGGETTI);
  1010.                 }
  1011.                 sqlQueryObjectTrasformazioniPorteApplicative.addSelectAliasField(aliasPATRASFORMAZIONISA, "id", aliasPATRASFORMAZIONISA+"id");
  1012.                 sqlQueryObjectTrasformazioniPorteApplicative.setANDLogicOperator(true);
  1013.                 sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasPATRASFORMAZIONISA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF+" = "+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  1014.                 sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasPATRASFORMAZIONISA+".id_trasformazione = "+aliasPATRASFORMAZIONI+"."+CostantiDB.COLUMN_ID);
  1015.                 sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasPATRASFORMAZIONI+"."+CostantiDB.PORTA_COLUMN_ID_REF+" = "+aliasPA+"."+CostantiDB.COLUMN_ID);
  1016.                 if(isFilterGruppoErogazione) {
  1017.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SERVIZIO_REF+" = "+aliasSERVIZI+"."+CostantiDB.COLUMN_ID);
  1018.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasSERVIZI+"."+CostantiDB.SERVIZI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  1019.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_ACCORDO_REF+" = "+aliasACCORDI+"."+CostantiDB.COLUMN_ID);
  1020.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasACCORDIGRUPPI+"."+CostantiDB.ACCORDI_GRUPPI_COLUMN_ID_GRUPPO_REF+" = "+aliasGRUPPI+"."+CostantiDB.COLUMN_ID);
  1021.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasGRUPPI+"."+CostantiDB.GRUPPI_COLUMN_NOME+" = ?");
  1022.                     existsParameters.add(filterGruppo);
  1023.                 }
  1024.                 if(apiImplementazioneErogazione!=null) {
  1025.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_ID_SOGGETTO_REF+" = "+aliasSOGGETTI+"."+CostantiDB.COLUMN_ID);
  1026.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+" = ?");
  1027.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasSOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+" = ?");
  1028.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_TIPO_SERVIZIO+" = ?");
  1029.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_SERVIZIO+" = ?");
  1030.                     sqlQueryObjectTrasformazioniPorteApplicative.addWhereCondition(aliasPA+"."+CostantiDB.PORTA_COLUMN_VERSIONE_SERVIZIO+" = ?");
  1031.                     existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getTipo());
  1032.                     existsParameters.add(apiImplementazioneErogazione.getSoggettoErogatore().getNome());
  1033.                     existsParameters.add(apiImplementazioneErogazione.getTipo());
  1034.                     existsParameters.add(apiImplementazioneErogazione.getNome());
  1035.                     existsParameters.add(apiImplementazioneErogazione.getVersione());
  1036.                 }
  1037.                
  1038.                 existsConditions.add(sqlQueryObjectTrasformazioniPorteApplicative.getWhereExistsCondition(false, sqlQueryObjectTrasformazioniPorteApplicative));
  1039.             }
  1040.                        
  1041.             // QUERY FINALE
  1042.            
  1043.             if (!search.equals("")) {
  1044.                 //query con search
  1045.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1046.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1047.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1048.                 sqlQueryObject.addSelectCountField("*", "cont");
  1049.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.COLUMN_ID);
  1050.                 if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  1051.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SUPERUSER+" = ?");
  1052.                 sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_NOME, search, true, true);
  1053.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  1054.                     sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+"", true, tipoSoggettiProtocollo.toArray(new String[1]));
  1055.                 }
  1056.                 if(tipologiaFruizione!=null) {
  1057.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+"<>?");
  1058.                 }
  1059.                 else if(tipologiaErogazione!=null) {
  1060.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+"<>?");
  1061.                 }
  1062.                 if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1063.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+"=?");
  1064.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+"=?");
  1065.                 }
  1066.                 if(filterRuolo!=null && !"".equals(filterRuolo)) {
  1067.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_RUOLI);
  1068.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_ID_SERVIZIO_APPLICATIVO_REF);
  1069.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO+"=?");
  1070.                 }
  1071.                 if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  1072.                     if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  1073.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" =?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+"=?");
  1074.                     }
  1075.                     else if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  1076.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_AS_CLIENT+" = ?");
  1077.                     }
  1078.                     else {
  1079.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?");
  1080.                     }
  1081.                 }
  1082.                 if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  1083.                     if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1084.                         sqlQueryObject.addWhereCondition(false,
  1085.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?",
  1086.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?"+
  1087.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" "+CostantiDB.CONDITION_IS_NOT_NULL+
  1088.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE+" "+CostantiDB.CONDITION_IS_NOT_NULL);
  1089.                            
  1090.                     }
  1091.                     else {
  1092.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?");
  1093.                     }
  1094.                     if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  1095.                         if(CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1096.                             sqlQueryObject.addWhereCondition(false,
  1097.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_SUBJECT, filterCredenziale,
  1098.                                             LikeConfig.contains(true,true)),
  1099.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_SUBJECT, filterCredenziale,
  1100.                                             LikeConfig.contains(true,true)));
  1101.                         }
  1102.                         else if(CostantiConfigurazione.CREDENZIALE_BASIC.toString().equals(filterTipoCredenziali) ||
  1103.                                 CostantiConfigurazione.CREDENZIALE_PRINCIPAL.toString().equals(filterTipoCredenziali) ||
  1104.                                 CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1105.                             sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE,
  1106.                                     filterCredenziale, LikeConfig.contains(true,true));
  1107.                         }
  1108.                     }
  1109.                     if(filterCredenzialeIssuer!=null && !"".equals(filterCredenzialeIssuer) &&
  1110.                         CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1111.                         sqlQueryObject.addWhereCondition(false,
  1112.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_ISSUER, filterCredenzialeIssuer,
  1113.                                         LikeConfig.contains(true,true)),
  1114.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ISSUER, filterCredenzialeIssuer,
  1115.                                         LikeConfig.contains(true,true)));
  1116.                     }
  1117.                     if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  1118.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" = ?");
  1119.                     }
  1120.                 }
  1121.                 if(pddTipologia!=null) {
  1122.                     if(PddTipologia.ESTERNO.equals(pddTipologia)) {                    
  1123.                         sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());                          
  1124.                     }
  1125.                     else {
  1126.                         sqlQueryObject.addFromTable(CostantiDB.PDD);
  1127.                         sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_NOME+"="+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SERVER,CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_TIPO+"=?");
  1128.                     }
  1129.                 }
  1130.                 if(!existsConditions.isEmpty()) {
  1131.                     sqlQueryObject.addWhereCondition(false, existsConditions.toArray(new String[1]));
  1132.                 }  
  1133.                 if(joinConnettore) {
  1134.                     DBUtils.setFiltriConnettoreApplicativo(sqlQueryObject, this.driver.tipoDB,
  1135.                             tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1136.                             filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1137.                 }
  1138.                 if(filtroModI) {
  1139.                     DBUtils.setFiltriModIApplicativi(sqlQueryObject, this.driver.tipoDB,
  1140.                             filtroModISicurezzaMessaggioEnabled,
  1141.                             filtroModIKeystorePath, filtroModIKeystoreSubject, filtroModIKeystoreIssuer,
  1142.                             filtroModISicurezzaTokenEnabled,
  1143.                             filtroModITokenPolicy, filtroModITokenClientId,
  1144.                             filtroModIAudience,
  1145.                             checkCredenzialiBase);
  1146.                 }
  1147.                 if(filtroProprieta) {
  1148.                     DBUtils.setFiltriProprietaApplicativo(sqlQueryObject, this.driver.tipoDB,
  1149.                             filtroProprietaNome, filtroProprietaValore);
  1150.                 }
  1151.                 sqlQueryObject.setANDLogicOperator(true);
  1152.                 queryString = sqlQueryObject.createSQLQuery();
  1153.             } else {
  1154.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1155.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1156.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1157.                 sqlQueryObject.addSelectCountField("*", "cont");
  1158.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.COLUMN_ID);
  1159.                 if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  1160.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SUPERUSER+" = ?");
  1161.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  1162.                     sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+"", true, tipoSoggettiProtocollo.toArray(new String[1]));
  1163.                 }
  1164.                 if(tipologiaFruizione!=null) {
  1165.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+"<>?");
  1166.                 }
  1167.                 else if(tipologiaErogazione!=null) {
  1168.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+"<>?");
  1169.                 }
  1170.                 if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1171.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+"=?");
  1172.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+"=?");
  1173.                 }
  1174.                 if(filterRuolo!=null && !"".equals(filterRuolo)) {
  1175.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_RUOLI);
  1176.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_ID_SERVIZIO_APPLICATIVO_REF);
  1177.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO+"=?");
  1178.                 }
  1179.                 if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  1180.                     if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  1181.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" =?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+"=?");
  1182.                     }
  1183.                     else if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  1184.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_AS_CLIENT+" = ?");
  1185.                     }
  1186.                     else {
  1187.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?");
  1188.                     }
  1189.                 }
  1190.                 if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  1191.                     if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1192.                         sqlQueryObject.addWhereCondition(false,
  1193.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?",
  1194.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?"+
  1195.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" "+CostantiDB.CONDITION_IS_NOT_NULL+
  1196.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE+" "+CostantiDB.CONDITION_IS_NOT_NULL);
  1197.                            
  1198.                     }
  1199.                     else {
  1200.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?");
  1201.                     }
  1202.                     if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  1203.                         if(CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1204.                             sqlQueryObject.addWhereCondition(false,
  1205.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_SUBJECT, filterCredenziale,
  1206.                                             LikeConfig.contains(true,true)),
  1207.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_SUBJECT, filterCredenziale,
  1208.                                             LikeConfig.contains(true,true)));
  1209.                         }
  1210.                         else if(CostantiConfigurazione.CREDENZIALE_BASIC.toString().equals(filterTipoCredenziali) ||
  1211.                                 CostantiConfigurazione.CREDENZIALE_PRINCIPAL.toString().equals(filterTipoCredenziali) ||
  1212.                                 CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1213.                             sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE,
  1214.                                     filterCredenziale, LikeConfig.contains(true,true));
  1215.                         }
  1216.                     }
  1217.                     if(filterCredenzialeIssuer!=null && !"".equals(filterCredenzialeIssuer) &&
  1218.                         CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1219.                         sqlQueryObject.addWhereCondition(false,
  1220.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_ISSUER, filterCredenzialeIssuer,
  1221.                                         LikeConfig.contains(true,true)),
  1222.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ISSUER, filterCredenzialeIssuer,
  1223.                                         LikeConfig.contains(true,true)));
  1224.                     }
  1225.                     if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  1226.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" = ?");
  1227.                     }
  1228.                 }
  1229.                 if(pddTipologia!=null) {
  1230.                     if(PddTipologia.ESTERNO.equals(pddTipologia)) {                    
  1231.                         sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());                          
  1232.                     }
  1233.                     else {
  1234.                         sqlQueryObject.addFromTable(CostantiDB.PDD);
  1235.                         sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_NOME+"="+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SERVER,CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_TIPO+"=?");
  1236.                     }
  1237.                 }
  1238.                 if(!existsConditions.isEmpty()) {
  1239.                     sqlQueryObject.addWhereCondition(false, existsConditions.toArray(new String[1]));
  1240.                 }
  1241.                 if(joinConnettore) {
  1242.                     DBUtils.setFiltriConnettoreApplicativo(sqlQueryObject, this.driver.tipoDB,
  1243.                             tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1244.                             filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1245.                 }
  1246.                 if(filtroModI) {
  1247.                     DBUtils.setFiltriModIApplicativi(sqlQueryObject, this.driver.tipoDB,
  1248.                             filtroModISicurezzaMessaggioEnabled,
  1249.                             filtroModIKeystorePath, filtroModIKeystoreSubject, filtroModIKeystoreIssuer,
  1250.                             filtroModISicurezzaTokenEnabled,
  1251.                             filtroModITokenPolicy, filtroModITokenClientId,
  1252.                             filtroModIAudience,
  1253.                             checkCredenzialiBase);
  1254.                 }
  1255.                 if(filtroProprieta) {
  1256.                     DBUtils.setFiltriProprietaApplicativo(sqlQueryObject, this.driver.tipoDB,
  1257.                             filtroProprietaNome, filtroProprietaValore);
  1258.                 }
  1259.                 sqlQueryObject.setANDLogicOperator(true);
  1260.                 queryString = sqlQueryObject.createSQLQuery();
  1261.             }
  1262.             stmt = con.prepareStatement(queryString);
  1263.             this.driver.logDebug("Execute query: "+queryString);
  1264.             int index = 1;
  1265.             if(this.driver.useSuperUser && superuser!=null && !superuser.equals("")) {
  1266.                 stmt.setString(index++, superuser);
  1267.             }
  1268.             if(tipologiaFruizione!=null) {
  1269.                 stmt.setString(index++, tipologiaFruizione.getValue());
  1270.             }
  1271.             else if(tipologiaErogazione!=null) {
  1272.                 stmt.setString(index++, tipologiaErogazione.getValue());
  1273.             }
  1274.             if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1275.                 stmt.setString(index++, filterSoggettoTipo);
  1276.                 stmt.setString(index++, filterSoggettoNome);
  1277.             }
  1278.             if(filterRuolo!=null && !"".equals(filterRuolo)) {
  1279.                 stmt.setString(index++, filterRuolo);
  1280.             }
  1281.             if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  1282.                 if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  1283.                     stmt.setString(index++, CostantiConfigurazione.SERVER);
  1284.                     stmt.setString(index++, CostantiConfigurazione.CLIENT);
  1285.                 } else {
  1286.                     stmt.setString(index++, filterTipoServizioApplicativo);
  1287.                     if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  1288.                         stmt.setInt(index++, CostantiDB.TRUE);
  1289.                     }
  1290.                 }
  1291.             }
  1292.             if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  1293.                 stmt.setString(index++, filterTipoCredenziali);
  1294.                 if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1295.                     stmt.setString(index++,CostantiConfigurazione.CREDENZIALE_SSL.toString());
  1296.                 }
  1297. /**             if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  1298. //                  // like
  1299. //              }*/
  1300.                 if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  1301.                     stmt.setString(index++, filterCredenzialeTokenPolicy);
  1302.                 }
  1303.             }
  1304.             if(pddTipologia!=null) {
  1305.                 stmt.setString(index++, pddTipologia.toString());
  1306.             }
  1307.             if(existsParameters!=null && !existsParameters.isEmpty()) {
  1308.                 for (Object object : existsParameters) {
  1309.                     if(object instanceof String) {
  1310.                         stmt.setString(index++, (String) object);
  1311.                     }
  1312.                     else {
  1313.                         stmt.setInt(index++, (Integer) object);
  1314.                     }
  1315.                 }
  1316.             }
  1317.             risultato = stmt.executeQuery();
  1318.             if (risultato.next())
  1319.                 ricerca.setNumEntries(idLista,risultato.getInt(1));
  1320.             risultato.close();
  1321.             stmt.close();

  1322.             // ricavo le entries
  1323.             String aliasNomeServizioApplicativo="appnome";
  1324.             String aliasTipoSoggetto="orgtipo";
  1325.             String aliasNomeSoggetto="orgnome";
  1326.             if (limit == 0) // con limit
  1327.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  1328.             if (!search.equals("")) { // con search
  1329.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1330.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1331.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1332.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI,"id");
  1333.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI_APPLICATIVI,"nome",aliasNomeServizioApplicativo);
  1334.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO);
  1335.                 sqlQueryObject.addSelectAliasField(CostantiDB.SOGGETTI,CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO, aliasTipoSoggetto);
  1336.                 sqlQueryObject.addSelectAliasField(CostantiDB.SOGGETTI,CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO, aliasNomeSoggetto);
  1337.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.COLUMN_ID);
  1338.                 if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  1339.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SUPERUSER+" = ?");
  1340.                 sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_NOME, search, true, true);
  1341.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  1342.                     sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO, true, tipoSoggettiProtocollo.toArray(new String[1]));
  1343.                 }
  1344.                 if(tipologiaFruizione!=null) {
  1345.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+"<>?");
  1346.                 }
  1347.                 else if(tipologiaErogazione!=null) {
  1348.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+"<>?");
  1349.                 }
  1350.                 if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1351.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+"=?");
  1352.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+"=?");
  1353.                 }
  1354.                 if(filterRuolo!=null && !"".equals(filterRuolo)) {
  1355.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_RUOLI);
  1356.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_ID_SERVIZIO_APPLICATIVO_REF);
  1357.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO+"=?");
  1358.                 }
  1359.                 if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  1360.                     if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  1361.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" =?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+"=?");
  1362.                     }
  1363.                     else if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  1364.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_AS_CLIENT+" = ?");
  1365.                     }
  1366.                     else {
  1367.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?");
  1368.                     }
  1369.                 }
  1370.                 if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  1371.                     if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1372.                         sqlQueryObject.addWhereCondition(false,
  1373.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?",
  1374.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?"+
  1375.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" "+CostantiDB.CONDITION_IS_NOT_NULL+
  1376.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE+" "+CostantiDB.CONDITION_IS_NOT_NULL);
  1377.                            
  1378.                     }
  1379.                     else {
  1380.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?");
  1381.                     }
  1382.                     if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  1383.                         if(CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1384.                             sqlQueryObject.addWhereCondition(false,
  1385.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_SUBJECT, filterCredenziale,
  1386.                                             LikeConfig.contains(true,true)),
  1387.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_SUBJECT, filterCredenziale,
  1388.                                             LikeConfig.contains(true,true)));
  1389.                         }
  1390.                         else if(CostantiConfigurazione.CREDENZIALE_BASIC.toString().equals(filterTipoCredenziali) ||
  1391.                                 CostantiConfigurazione.CREDENZIALE_PRINCIPAL.toString().equals(filterTipoCredenziali) ||
  1392.                                 CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1393.                             sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE,
  1394.                                     filterCredenziale, LikeConfig.contains(true,true));
  1395.                         }
  1396.                     }
  1397.                     if(filterCredenzialeIssuer!=null && !"".equals(filterCredenzialeIssuer) &&
  1398.                         CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1399.                         sqlQueryObject.addWhereCondition(false,
  1400.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_ISSUER, filterCredenzialeIssuer,
  1401.                                         LikeConfig.contains(true,true)),
  1402.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ISSUER, filterCredenzialeIssuer,
  1403.                                         LikeConfig.contains(true,true)));
  1404.                     }
  1405.                     if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  1406.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" = ?");
  1407.                     }
  1408.                 }
  1409.                 if(pddTipologia!=null) {
  1410.                     if(PddTipologia.ESTERNO.equals(pddTipologia)) {                    
  1411.                         sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());                          
  1412.                     }
  1413.                     else {
  1414.                         sqlQueryObject.addFromTable(CostantiDB.PDD);
  1415.                         sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_NOME+"="+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SERVER,CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_TIPO+"=?");
  1416.                     }
  1417.                 }
  1418.                 if(!existsConditions.isEmpty()) {
  1419.                     sqlQueryObject.addWhereCondition(false, existsConditions.toArray(new String[1]));
  1420.                 }
  1421.                 if(joinConnettore) {
  1422.                     DBUtils.setFiltriConnettoreApplicativo(sqlQueryObject, this.driver.tipoDB,
  1423.                             tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1424.                             filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1425.                 }
  1426.                 if(filtroModI) {
  1427.                     DBUtils.setFiltriModIApplicativi(sqlQueryObject, this.driver.tipoDB,
  1428.                             filtroModISicurezzaMessaggioEnabled,
  1429.                             filtroModIKeystorePath, filtroModIKeystoreSubject, filtroModIKeystoreIssuer,
  1430.                             filtroModISicurezzaTokenEnabled,
  1431.                             filtroModITokenPolicy, filtroModITokenClientId,
  1432.                             filtroModIAudience,
  1433.                             checkCredenzialiBase);
  1434.                 }
  1435.                 if(filtroProprieta) {
  1436.                     DBUtils.setFiltriProprietaApplicativo(sqlQueryObject, this.driver.tipoDB,
  1437.                             filtroProprietaNome, filtroProprietaValore);
  1438.                 }
  1439.                 sqlQueryObject.setANDLogicOperator(true);
  1440.                 sqlQueryObject.addOrderBy(aliasNomeServizioApplicativo);
  1441.                 sqlQueryObject.addOrderBy(aliasNomeSoggetto);
  1442.                 sqlQueryObject.addOrderBy(aliasTipoSoggetto);
  1443.                 sqlQueryObject.setSortType(true);
  1444.                 sqlQueryObject.setLimit(limit);
  1445.                 sqlQueryObject.setOffset(offset);
  1446.                 queryString = sqlQueryObject.createSQLQuery();
  1447.             } else {
  1448.                 // senza search
  1449.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1450.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1451.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1452.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI,"id");
  1453.                 sqlQueryObject.addSelectAliasField(CostantiDB.SERVIZI_APPLICATIVI,"nome",aliasNomeServizioApplicativo);
  1454.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO);
  1455.                 sqlQueryObject.addSelectAliasField(CostantiDB.SOGGETTI,CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO, aliasTipoSoggetto);
  1456.                 sqlQueryObject.addSelectAliasField(CostantiDB.SOGGETTI,CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO, aliasNomeSoggetto);
  1457.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.COLUMN_ID);
  1458.                 if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser)))
  1459.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SUPERUSER+" = ?");
  1460.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  1461.                     sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO, true, tipoSoggettiProtocollo.toArray(new String[1]));
  1462.                 }
  1463.                 if(tipologiaFruizione!=null) {
  1464.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+"<>?");
  1465.                 }
  1466.                 else if(tipologiaErogazione!=null) {
  1467.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+"<>?");
  1468.                 }
  1469.                 if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1470.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO+"=?");
  1471.                     sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO+"=?");
  1472.                 }
  1473.                 if(filterRuolo!=null && !"".equals(filterRuolo)) {
  1474.                     sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_RUOLI);
  1475.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_ID_SERVIZIO_APPLICATIVO_REF);
  1476.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO+"=?");
  1477.                 }
  1478.                 if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  1479.                     if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  1480.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" =?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+"=?");
  1481.                     }
  1482.                     else if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  1483.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_AS_CLIENT+" = ?");
  1484.                     }
  1485.                     else {
  1486.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?");
  1487.                     }
  1488.                 }
  1489.                 if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  1490.                     if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1491.                         sqlQueryObject.addWhereCondition(false,
  1492.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?",
  1493.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?"+
  1494.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" "+CostantiDB.CONDITION_IS_NOT_NULL+
  1495.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE+" "+CostantiDB.CONDITION_IS_NOT_NULL);
  1496.                            
  1497.                     }
  1498.                     else {
  1499.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?");
  1500.                     }
  1501.                     if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  1502.                         if(CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1503.                             sqlQueryObject.addWhereCondition(false,
  1504.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_SUBJECT, filterCredenziale,
  1505.                                             LikeConfig.contains(true,true)),
  1506.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_SUBJECT, filterCredenziale,
  1507.                                             LikeConfig.contains(true,true)));
  1508.                         }
  1509.                         else if(CostantiConfigurazione.CREDENZIALE_BASIC.toString().equals(filterTipoCredenziali) ||
  1510.                                 CostantiConfigurazione.CREDENZIALE_PRINCIPAL.toString().equals(filterTipoCredenziali) ||
  1511.                                 CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1512.                             sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE,
  1513.                                     filterCredenziale, LikeConfig.contains(true,true));
  1514.                         }
  1515.                     }
  1516.                     if(filterCredenzialeIssuer!=null && !"".equals(filterCredenzialeIssuer) &&
  1517.                         CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1518.                         sqlQueryObject.addWhereCondition(false,
  1519.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_ISSUER, filterCredenzialeIssuer,
  1520.                                         LikeConfig.contains(true,true)),
  1521.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ISSUER, filterCredenzialeIssuer,
  1522.                                         LikeConfig.contains(true,true)));
  1523.                     }
  1524.                     if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  1525.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" = ?");
  1526.                     }
  1527.                 }
  1528.                 if(pddTipologia!=null) {
  1529.                     if(PddTipologia.ESTERNO.equals(pddTipologia)) {                    
  1530.                         sqlQueryObject.addWhereCondition(sqlQueryObjectPdd.createSQLConditions());                          
  1531.                     }
  1532.                     else {
  1533.                         sqlQueryObject.addFromTable(CostantiDB.PDD);
  1534.                         sqlQueryObject.addWhereCondition(true,CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_NOME+"="+CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_SERVER,CostantiDB.PDD+"."+CostantiDB.PDD_COLUMN_TIPO+"=?");
  1535.                     }
  1536.                 }
  1537.                 if(!existsConditions.isEmpty()) {
  1538.                     sqlQueryObject.addWhereCondition(false, existsConditions.toArray(new String[1]));
  1539.                 }
  1540.                 if(joinConnettore) {
  1541.                     DBUtils.setFiltriConnettoreApplicativo(sqlQueryObject, this.driver.tipoDB,
  1542.                             tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1543.                             filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1544.                 }
  1545.                 if(filtroModI) {
  1546.                     DBUtils.setFiltriModIApplicativi(sqlQueryObject, this.driver.tipoDB,
  1547.                             filtroModISicurezzaMessaggioEnabled,
  1548.                             filtroModIKeystorePath, filtroModIKeystoreSubject, filtroModIKeystoreIssuer,
  1549.                             filtroModISicurezzaTokenEnabled,
  1550.                             filtroModITokenPolicy, filtroModITokenClientId,
  1551.                             filtroModIAudience,
  1552.                             checkCredenzialiBase);
  1553.                 }
  1554.                 if(filtroProprieta) {
  1555.                     DBUtils.setFiltriProprietaApplicativo(sqlQueryObject, this.driver.tipoDB,
  1556.                             filtroProprietaNome, filtroProprietaValore);
  1557.                 }
  1558.                 sqlQueryObject.setANDLogicOperator(true);
  1559.                 sqlQueryObject.addOrderBy(aliasNomeServizioApplicativo);
  1560.                 sqlQueryObject.addOrderBy(aliasNomeSoggetto);
  1561.                 sqlQueryObject.addOrderBy(aliasTipoSoggetto);
  1562.                 sqlQueryObject.setSortType(true);
  1563.                 sqlQueryObject.setLimit(limit);
  1564.                 sqlQueryObject.setOffset(offset);
  1565.                 queryString = sqlQueryObject.createSQLQuery();
  1566.             }
  1567.             stmt = con.prepareStatement(queryString);
  1568.             this.driver.logDebug("Execute query: "+queryString);
  1569.             index = 1;
  1570.             if(this.driver.useSuperUser && superuser!=null && (!"".equals(superuser))) {
  1571.                 stmt.setString(index++, superuser);
  1572.             }
  1573.             if(tipologiaFruizione!=null) {
  1574.                 stmt.setString(index++, tipologiaFruizione.getValue());
  1575.             }
  1576.             else if(tipologiaErogazione!=null) {
  1577.                 stmt.setString(index++, tipologiaErogazione.getValue());
  1578.             }
  1579.             if(filterSoggettoNome!=null && !"".equals(filterSoggettoNome)) {
  1580.                 stmt.setString(index++, filterSoggettoTipo);
  1581.                 stmt.setString(index++, filterSoggettoNome);
  1582.             }
  1583.             if(filterRuolo!=null && !"".equals(filterRuolo)) {
  1584.                 stmt.setString(index++, filterRuolo);
  1585.             }
  1586.             if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  1587.                 if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  1588.                     stmt.setString(index++, CostantiConfigurazione.SERVER);
  1589.                     stmt.setString(index++, CostantiConfigurazione.CLIENT);
  1590.                 }
  1591.                 else {
  1592.                     stmt.setString(index++, filterTipoServizioApplicativo);
  1593.                     if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  1594.                         stmt.setInt(index++, CostantiDB.TRUE);
  1595.                     }
  1596.                 }
  1597.             }
  1598.             if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  1599.                 stmt.setString(index++, filterTipoCredenziali);
  1600.                 if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1601.                     stmt.setString(index++,CostantiConfigurazione.CREDENZIALE_SSL.toString());
  1602.                 }
  1603. /**             if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  1604. //                  // like
  1605. //              }*/
  1606.                 if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  1607.                     stmt.setString(index++, filterCredenzialeTokenPolicy);
  1608.                 }
  1609.             }
  1610.             if(pddTipologia!=null) {
  1611.                 stmt.setString(index++, pddTipologia.toString());
  1612.             }
  1613.             if(existsParameters!=null && !existsParameters.isEmpty()) {
  1614.                 for (Object object : existsParameters) {
  1615.                     if(object instanceof String) {
  1616.                         stmt.setString(index++, (String) object);
  1617.                     }
  1618.                     else {
  1619.                         stmt.setInt(index++, (Integer) object);
  1620.                     }
  1621.                 }
  1622.             }
  1623.             risultato = stmt.executeQuery();

  1624.             while (risultato.next()) {
  1625.                 ServizioApplicativo sa = this.serviziApplicativiDriver.getServizioApplicativo(risultato.getLong("id"));
  1626.                 silList.add(sa);
  1627.             }

  1628.             return silList;

  1629.         } catch (Exception qe) {
  1630.             throw new DriverConfigurazioneException(getMessageError(nomeMetodo,  qe),qe);
  1631.         } finally {

  1632.             //Chiudo statement and resultset
  1633.             JDBCUtilities.closeResources(risultato, stmt);

  1634.             this.driver.closeConnection(con);
  1635.         }
  1636.     }

  1637.     protected List<ServizioApplicativo> soggettiServizioApplicativoList(Long idSoggetto, ISearch ricerca) throws DriverConfigurazioneException {
  1638.         String nomeMetodo = "soggettiServizioApplicativoList";
  1639.         int idLista = Liste.SERVIZI_APPLICATIVI_BY_SOGGETTO;
  1640.         int offset;
  1641.         int limit;
  1642.         String search;
  1643.         String queryString;

  1644.         limit = ricerca.getPageSize(idLista);
  1645.         offset = ricerca.getIndexIniziale(idLista);
  1646.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));

  1647.         List<String> tipoSoggettiProtocollo = null;
  1648.         String filterProtocollo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLO);
  1649.         String filterProtocolli = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROTOCOLLI);
  1650.         if(idSoggetto==null || idSoggetto <=0) {
  1651.             try {
  1652.                 tipoSoggettiProtocollo = Filtri.convertToTipiSoggetti(filterProtocollo, filterProtocolli);
  1653.             }catch(Exception e) {
  1654.                 throw new DriverConfigurazioneException(e.getMessage(),e);
  1655.             }
  1656.         }
  1657.        
  1658.         String filterRuoloServizioApplicativo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_RUOLO_SERVIZIO_APPLICATIVO);
  1659.         TipologiaFruizione tipologiaFruizione = null;
  1660.         TipologiaErogazione tipologiaErogazione = null;
  1661.         if(filterRuoloServizioApplicativo!=null && !"".equals(filterRuoloServizioApplicativo)) {
  1662.             if(Filtri.VALUE_FILTRO_RUOLO_SERVIZIO_APPLICATIVO_EROGATORE.equals(filterRuoloServizioApplicativo)) {
  1663.                 tipologiaErogazione = TipologiaErogazione.DISABILITATO;
  1664.             }
  1665.             else if(Filtri.VALUE_FILTRO_RUOLO_SERVIZIO_APPLICATIVO_FRUITORE.equals(filterRuoloServizioApplicativo)) {
  1666.                 tipologiaFruizione = TipologiaFruizione.DISABILITATO;
  1667.             }
  1668.         }
  1669.        
  1670.         String filterTipoServizioApplicativo = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_TIPO_SERVIZIO_APPLICATIVO);
  1671.        
  1672.         String filterTipoCredenziali = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_TIPO_CREDENZIALI);
  1673.         String filterCredenziale = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_CREDENZIALE);
  1674.         String filterCredenzialeIssuer = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_CREDENZIALE_ISSUER);
  1675.         if(filterCredenzialeIssuer!=null && "".equals(filterCredenzialeIssuer)) {
  1676.             filterCredenzialeIssuer = null;
  1677.         }
  1678.         if(filterCredenzialeIssuer!=null && !"ssl".equals(filterTipoCredenziali)) {
  1679.             filterCredenzialeIssuer = null;
  1680.         }
  1681.         String filterCredenzialeTokenPolicy = SearchUtils.getFilter(ricerca, idLista,  Filtri.FILTRO_CREDENZIALE_TOKEN_POLICY);
  1682.        
  1683.         String filtroConnettoreTipo = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_TIPO);
  1684.         String filtroConnettoreTipoPlugin = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_TIPO_PLUGIN);
  1685.         String filtroConnettoreTokenPolicy = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_TOKEN_POLICY);
  1686.         String filtroConnettoreEndpoint = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_ENDPOINT);
  1687.         String filtroConnettoreKeystore = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_KEYSTORE);
  1688.         String filtroConnettoreDebug = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_CONNETTORE_DEBUG);
  1689.         if((filtroConnettoreTipo!=null && "".equals(filtroConnettoreTipo))) {
  1690.             filtroConnettoreTipo=null;
  1691.         }
  1692.         if((filtroConnettoreTipoPlugin!=null && "".equals(filtroConnettoreTipoPlugin))) {
  1693.             filtroConnettoreTipoPlugin=null;
  1694.         }
  1695.         if((filtroConnettoreTokenPolicy!=null && "".equals(filtroConnettoreTokenPolicy))) {
  1696.             filtroConnettoreTokenPolicy=null;
  1697.         }
  1698.         if((filtroConnettoreEndpoint!=null && "".equals(filtroConnettoreEndpoint))) {
  1699.             filtroConnettoreEndpoint=null;
  1700.         }
  1701.         if((filtroConnettoreKeystore!=null && "".equals(filtroConnettoreKeystore))) {
  1702.             filtroConnettoreKeystore=null;
  1703.         }
  1704.         if((filtroConnettoreDebug!=null && "".equals(filtroConnettoreDebug))) {
  1705.             filtroConnettoreDebug=null;
  1706.         }
  1707.         boolean joinConnettore =  filtroConnettoreTipo!=null    || filtroConnettoreTokenPolicy!=null || filtroConnettoreEndpoint!=null || filtroConnettoreKeystore!=null || filtroConnettoreDebug!=null;
  1708.         TipiConnettore tipoConnettore = null;
  1709.         String endpointType = null;
  1710.         boolean tipoConnettoreIntegrationManager = false;
  1711.         if(filtroConnettoreTipo!=null && !"".equals(filtroConnettoreTipo)) {
  1712.             if(Filtri.FILTRO_CONNETTORE_TIPO_VALORE_IM.equals(filtroConnettoreTipo)) {
  1713.                 tipoConnettoreIntegrationManager = true;
  1714.             }
  1715.             else {
  1716.                 tipoConnettore = TipiConnettore.toEnumFromName(filtroConnettoreTipo);
  1717.                 if(tipoConnettore!=null) {
  1718.                     endpointType = (TipiConnettore.CUSTOM.equals(tipoConnettore)) ? filtroConnettoreTipoPlugin : tipoConnettore.getNome();
  1719.                 }
  1720.             }
  1721.         }
  1722.        
  1723.         String filtroModISicurezzaMessaggio = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_MESSAGGIO);
  1724.         String filtroModIKeystorePath = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_KEYSTORE_PATH);
  1725.         String filtroModIKeystoreSubject = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_KEYSTORE_SUBJECT);
  1726.         String filtroModIKeystoreIssuer = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_KEYSTORE_ISSUER);
  1727.         String filtroModISicurezzaToken = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_TOKEN);
  1728.         String filtroModITokenPolicy = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_TOKEN_POLICY);
  1729.         String filtroModITokenClientId = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_SICUREZZA_TOKEN_CLIENT_ID);
  1730.         String filtroModIAudience = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_MODI_AUDIENCE);
  1731.         Boolean filtroModISicurezzaMessaggioEnabled = null;
  1732.         if(CostantiDB.STATO_FUNZIONALITA_ABILITATO.equals(filtroModISicurezzaMessaggio)) {
  1733.             filtroModISicurezzaMessaggioEnabled = true;
  1734.         }
  1735.         else if(CostantiDB.STATO_FUNZIONALITA_DISABILITATO.equals(filtroModISicurezzaMessaggio)) {
  1736.             filtroModISicurezzaMessaggioEnabled = false;
  1737.         }
  1738.         if(filtroModISicurezzaMessaggioEnabled!=null && filtroModISicurezzaMessaggioEnabled) {
  1739.             if((filtroModIKeystorePath!=null && "".equals(filtroModIKeystorePath))) {
  1740.                 filtroModIKeystorePath=null;
  1741.             }
  1742.             if((filtroModIKeystoreSubject!=null && "".equals(filtroModIKeystoreSubject))) {
  1743.                 filtroModIKeystoreSubject=null;
  1744.             }
  1745.             if((filtroModIKeystoreIssuer!=null && "".equals(filtroModIKeystoreIssuer))) {
  1746.                 filtroModIKeystoreIssuer=null;
  1747.             }
  1748.         }
  1749.         else {
  1750.             filtroModIKeystorePath=null;
  1751.             filtroModIKeystoreSubject=null;
  1752.             filtroModIKeystoreIssuer=null;
  1753.         }
  1754.         Boolean filtroModISicurezzaTokenEnabled = null;
  1755.         if(CostantiDB.STATO_FUNZIONALITA_ABILITATO.equals(filtroModISicurezzaToken)) {
  1756.             filtroModISicurezzaTokenEnabled = true;
  1757.         }
  1758.         else if(CostantiDB.STATO_FUNZIONALITA_DISABILITATO.equals(filtroModISicurezzaToken)) {
  1759.             filtroModISicurezzaTokenEnabled = false;
  1760.         }
  1761.         if(filtroModISicurezzaTokenEnabled!=null && filtroModISicurezzaTokenEnabled) {
  1762.             if((filtroModITokenPolicy!=null && "".equals(filtroModITokenPolicy))) {
  1763.                 filtroModITokenPolicy=null;
  1764.             }
  1765.             if((filtroModITokenClientId!=null && "".equals(filtroModITokenClientId))) {
  1766.                 filtroModITokenClientId=null;
  1767.             }
  1768.         }
  1769.         else {
  1770.             filtroModITokenPolicy=null;
  1771.             filtroModITokenClientId=null;
  1772.         }
  1773.         if((filtroModIAudience!=null && "".equals(filtroModIAudience))) {
  1774.             filtroModIAudience=null;
  1775.         }
  1776.         boolean filtroModI = filtroModISicurezzaMessaggioEnabled!=null ||
  1777.                 filtroModIKeystorePath!=null || filtroModIKeystoreSubject!=null || filtroModIKeystoreIssuer!=null ||
  1778.                 filtroModISicurezzaTokenEnabled!=null ||
  1779.                 filtroModITokenPolicy!=null || filtroModITokenClientId!=null ||
  1780.                 filtroModIAudience!=null;
  1781.        
  1782.         boolean checkCredenzialiBase = false;
  1783.         if( (filterTipoCredenziali==null || "".equals(filterTipoCredenziali))
  1784.                 &&
  1785.                 (filterCredenziale==null || "".equals(filterCredenziale))
  1786.                 &&
  1787.                 (filterCredenzialeIssuer==null || "".equals(filterCredenzialeIssuer))
  1788.             ) {
  1789.             checkCredenzialiBase = true;
  1790.         }
  1791.        
  1792.         String filtroProprietaNome = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROPRIETA_NOME);
  1793.         String filtroProprietaValore = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_PROPRIETA_VALORE);
  1794.         if((filtroProprietaNome!=null && "".equals(filtroProprietaNome))) {
  1795.             filtroProprietaNome=null;
  1796.         }
  1797.         if((filtroProprietaValore!=null && "".equals(filtroProprietaValore))) {
  1798.             filtroProprietaValore=null;
  1799.         }
  1800.         boolean filtroProprieta = filtroProprietaNome!=null || filtroProprietaValore!=null;
  1801.        
  1802.        
  1803.         this.driver.logDebug("search : " + search);
  1804.         this.driver.logDebug("filterProtocollo : " + filterProtocollo);
  1805.         this.driver.logDebug("filterProtocolli : " + filterProtocolli);
  1806.         this.driver.logDebug("filterRuoloServizioApplicativo : " + filterRuoloServizioApplicativo);
  1807.         this.driver.logDebug("filterTipoServizioApplicativo : " + filterTipoServizioApplicativo);
  1808.         this.driver.logDebug("filterTipoCredenziali : " + filterTipoCredenziali);
  1809.         this.driver.logDebug("filterCredenziale : " + filterCredenziale);
  1810.         this.driver.logDebug("filterCredenzialeIssuer : " + filterCredenzialeIssuer);
  1811.         this.driver.logDebug("filterCredenzialeTokenPolicy : " + filterCredenzialeTokenPolicy);
  1812.         this.driver.logDebug("filtroConnettoreTipo : " + filtroConnettoreTipo);
  1813.         this.driver.logDebug("filtroConnettoreTokenPolicy : " + filtroConnettoreTokenPolicy);
  1814.         this.driver.logDebug("filtroConnettoreEndpoint : " + filtroConnettoreEndpoint);
  1815.         this.driver.logDebug("filtroConnettoreKeystore : " + filtroConnettoreKeystore);
  1816.         this.driver.logDebug("filtroConnettoreDebug : " + filtroConnettoreDebug);
  1817.         this.driver.logDebug("filtroConnettoreTipoPlugin : " + filtroConnettoreTipoPlugin);
  1818.         this.driver.logDebug("filtroModISicurezzaMessaggio : " + filtroModISicurezzaMessaggio);
  1819.         this.driver.logDebug("filtroModIKeystorePath : " + filtroModIKeystorePath);
  1820.         this.driver.logDebug("filtroModIKeystoreSubject : " + filtroModIKeystoreSubject);
  1821.         this.driver.logDebug("filtroModIKeystoreIssuer : " + filtroModIKeystoreIssuer);
  1822.         this.driver.logDebug("filtroModISicurezzaToken : " + filtroModISicurezzaToken);
  1823.         this.driver.logDebug("filtroModITokenPolicy : " + filtroModITokenPolicy);
  1824.         this.driver.logDebug("filtroModITokenClientId : " + filtroModITokenClientId);
  1825.         this.driver.logDebug("filtroModIAudience : " + filtroModIAudience);
  1826.         this.driver.logDebug("filtroProprietaNome : " + filtroProprietaNome);
  1827.         this.driver.logDebug("filtroProprietaValore : " + filtroProprietaValore);
  1828.        
  1829.         Connection con = null;
  1830.         PreparedStatement stmt=null;
  1831.         ResultSet risultato=null;
  1832.         ArrayList<ServizioApplicativo> silList = new ArrayList<>();

  1833.         if (this.driver.atomica) {
  1834.             try {
  1835.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  1836.             } catch (Exception e) {
  1837.                 throw new DriverConfigurazioneException(getMessageDatasourceError(nomeMetodo,  e),e);

  1838.             }

  1839.         } else
  1840.             con = this.driver.globalConnection;

  1841.         this.driver.logDebug(PREFIX_ATOMICA + this.driver.atomica);

  1842.         try {

  1843.             if (!search.equals("")) {
  1844.                 //query con search
  1845.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1846.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1847.                 sqlQueryObject.addSelectCountField("*", "cont");
  1848.                 if (idSoggetto!=null)
  1849.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = ?");
  1850.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  1851.                     sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1852.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.COLUMN_ID);
  1853.                     sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO, true, tipoSoggettiProtocollo.toArray(new String[1]));
  1854.                 }
  1855.                 if(tipologiaFruizione!=null) {
  1856.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+"<>?");
  1857.                 }
  1858.                 else if(tipologiaErogazione!=null) {
  1859.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+"<>?");
  1860.                 }
  1861.                 if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  1862.                     if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  1863.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" =?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+"=?");
  1864.                     }
  1865.                     else if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  1866.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_AS_CLIENT+" = ?");
  1867.                     }
  1868.                     else {
  1869.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?");
  1870.                     }
  1871.                 }
  1872.                 if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  1873.                     if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1874.                         sqlQueryObject.addWhereCondition(false,
  1875.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?",
  1876.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?"+
  1877.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" "+CostantiDB.CONDITION_IS_NOT_NULL+
  1878.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE+" "+CostantiDB.CONDITION_IS_NOT_NULL);
  1879.                            
  1880.                     }
  1881.                     else {
  1882.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?");
  1883.                     }
  1884.                     if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  1885.                         if(CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1886.                             sqlQueryObject.addWhereCondition(false,
  1887.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_SUBJECT, filterCredenziale,
  1888.                                             LikeConfig.contains(true,true)),
  1889.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_SUBJECT, filterCredenziale,
  1890.                                             LikeConfig.contains(true,true)));
  1891.                         }
  1892.                         else if(CostantiConfigurazione.CREDENZIALE_BASIC.toString().equals(filterTipoCredenziali) ||
  1893.                                 CostantiConfigurazione.CREDENZIALE_PRINCIPAL.toString().equals(filterTipoCredenziali)  ||
  1894.                                 CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1895.                             sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE,
  1896.                                     filterCredenziale, LikeConfig.contains(true,true));
  1897.                         }
  1898.                     }
  1899.                     if(filterCredenzialeIssuer!=null && !"".equals(filterCredenzialeIssuer) &&
  1900.                         CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1901.                         sqlQueryObject.addWhereCondition(false,
  1902.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_ISSUER, filterCredenzialeIssuer,
  1903.                                         LikeConfig.contains(true,true)),
  1904.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ISSUER, filterCredenzialeIssuer,
  1905.                                         LikeConfig.contains(true,true)));
  1906.                     }
  1907.                     if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  1908.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" = ?");
  1909.                     }
  1910.                 }
  1911.                 if(joinConnettore) {
  1912.                     DBUtils.setFiltriConnettoreApplicativo(sqlQueryObject, this.driver.tipoDB,
  1913.                             tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  1914.                             filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  1915.                 }
  1916.                 if(filtroModI) {
  1917.                     DBUtils.setFiltriModIApplicativi(sqlQueryObject, this.driver.tipoDB,
  1918.                             filtroModISicurezzaMessaggioEnabled,
  1919.                             filtroModIKeystorePath, filtroModIKeystoreSubject, filtroModIKeystoreIssuer,
  1920.                             filtroModISicurezzaTokenEnabled,
  1921.                             filtroModITokenPolicy, filtroModITokenClientId,
  1922.                             filtroModIAudience,
  1923.                             checkCredenzialiBase);
  1924.                 }
  1925.                 if(filtroProprieta) {
  1926.                     DBUtils.setFiltriProprietaApplicativo(sqlQueryObject, this.driver.tipoDB,
  1927.                             filtroProprietaNome, filtroProprietaValore);
  1928.                 }
  1929.                 sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_NOME, search, true, true);
  1930.                 sqlQueryObject.setANDLogicOperator(true);
  1931.                 queryString = sqlQueryObject.createSQLQuery();
  1932.             } else {
  1933.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1934.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  1935.                 sqlQueryObject.addSelectCountField("*", "cont");
  1936.                 if (idSoggetto!=null)
  1937.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = ?");
  1938.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  1939.                     sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  1940.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.COLUMN_ID);
  1941.                     sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO, true, tipoSoggettiProtocollo.toArray(new String[1]));
  1942.                 }
  1943.                 if(tipologiaFruizione!=null) {
  1944.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+"<>?");
  1945.                 }
  1946.                 else if(tipologiaErogazione!=null) {
  1947.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+"<>?");
  1948.                 }
  1949.                 if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  1950.                     if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  1951.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" =?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+"=?");
  1952.                     }
  1953.                     else if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  1954.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_AS_CLIENT+" = ?");
  1955.                     }
  1956.                     else {
  1957.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?");
  1958.                     }
  1959.                 }
  1960.                 if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  1961.                     if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1962.                         sqlQueryObject.addWhereCondition(false,
  1963.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?",
  1964.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?"+
  1965.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" "+CostantiDB.CONDITION_IS_NOT_NULL+
  1966.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE+" "+CostantiDB.CONDITION_IS_NOT_NULL);
  1967.                            
  1968.                     }
  1969.                     else {
  1970.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?");
  1971.                     }
  1972.                     if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  1973.                         if(CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1974.                             sqlQueryObject.addWhereCondition(false,
  1975.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_SUBJECT, filterCredenziale,
  1976.                                             LikeConfig.contains(true,true)),
  1977.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_SUBJECT, filterCredenziale,
  1978.                                             LikeConfig.contains(true,true)));
  1979.                         }
  1980.                         else if(CostantiConfigurazione.CREDENZIALE_BASIC.toString().equals(filterTipoCredenziali) ||
  1981.                                 CostantiConfigurazione.CREDENZIALE_PRINCIPAL.toString().equals(filterTipoCredenziali) ||
  1982.                                 CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  1983.                             sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE,
  1984.                                     filterCredenziale, LikeConfig.contains(true,true));
  1985.                         }
  1986.                     }
  1987.                     if(filterCredenzialeIssuer!=null && !"".equals(filterCredenzialeIssuer) &&
  1988.                         CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  1989.                         sqlQueryObject.addWhereCondition(false,
  1990.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_ISSUER, filterCredenzialeIssuer,
  1991.                                         LikeConfig.contains(true,true)),
  1992.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ISSUER, filterCredenzialeIssuer,
  1993.                                         LikeConfig.contains(true,true)));
  1994.                     }
  1995.                     if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  1996.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" = ?");
  1997.                     }
  1998.                 }
  1999.                 if(joinConnettore) {
  2000.                     DBUtils.setFiltriConnettoreApplicativo(sqlQueryObject, this.driver.tipoDB,
  2001.                             tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  2002.                             filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  2003.                 }
  2004.                 if(filtroModI) {
  2005.                     DBUtils.setFiltriModIApplicativi(sqlQueryObject, this.driver.tipoDB,
  2006.                             filtroModISicurezzaMessaggioEnabled,
  2007.                             filtroModIKeystorePath, filtroModIKeystoreSubject, filtroModIKeystoreIssuer,
  2008.                             filtroModISicurezzaTokenEnabled,
  2009.                             filtroModITokenPolicy, filtroModITokenClientId,
  2010.                             filtroModIAudience,
  2011.                             checkCredenzialiBase);
  2012.                 }
  2013.                 if(filtroProprieta) {
  2014.                     DBUtils.setFiltriProprietaApplicativo(sqlQueryObject, this.driver.tipoDB,
  2015.                             filtroProprietaNome, filtroProprietaValore);
  2016.                 }
  2017.                 sqlQueryObject.setANDLogicOperator(true);
  2018.                 queryString = sqlQueryObject.createSQLQuery();
  2019.             }
  2020.             stmt = con.prepareStatement(queryString);
  2021.             int index = 1;
  2022.             if (idSoggetto!=null) {
  2023.                 stmt.setLong(index++, idSoggetto);
  2024.             }
  2025.             if(tipologiaFruizione!=null) {
  2026.                 stmt.setString(index++, tipologiaFruizione.getValue());
  2027.             }
  2028.             else if(tipologiaErogazione!=null) {
  2029.                 stmt.setString(index++, tipologiaErogazione.getValue());
  2030.             }
  2031.             if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  2032.                 if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  2033.                     stmt.setString(index++, CostantiConfigurazione.SERVER);
  2034.                     stmt.setString(index++, CostantiConfigurazione.CLIENT);
  2035.                 }
  2036.                 else {
  2037.                     stmt.setString(index++, filterTipoServizioApplicativo);
  2038.                     if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  2039.                         stmt.setInt(index++, CostantiDB.TRUE);
  2040.                     }
  2041.                 }
  2042.             }
  2043.             if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  2044.                 stmt.setString(index++, filterTipoCredenziali);
  2045.                 if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  2046.                     stmt.setString(index++,CostantiConfigurazione.CREDENZIALE_SSL.toString());
  2047.                 }
  2048. /**             if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  2049. //                  // like
  2050. //              }*/
  2051.                 if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  2052.                     stmt.setString(index++, filterCredenzialeTokenPolicy);
  2053.                 }
  2054.             }
  2055.             risultato = stmt.executeQuery();
  2056.             if (risultato.next())
  2057.                 ricerca.setNumEntries(idLista,risultato.getInt(1));
  2058.             risultato.close();
  2059.             stmt.close();

  2060.             // ricavo le entries
  2061.             if (limit == 0) // con limit
  2062.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  2063.             if (!search.equals("")) { // con search
  2064.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2065.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2066.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  2067.                 sqlQueryObject.addSelectField("nome");
  2068.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO);
  2069.                 if (idSoggetto!=null)
  2070.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = ?");
  2071.                 sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_NOME, search, true, true);
  2072.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  2073.                     sqlQueryObject.addSelectField(CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO);
  2074.                     sqlQueryObject.addSelectField(CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO);
  2075.                     sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  2076.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.COLUMN_ID);
  2077.                     sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO, true, tipoSoggettiProtocollo.toArray(new String[1]));
  2078.                 }
  2079.                 if(tipologiaFruizione!=null) {
  2080.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+"<>?");
  2081.                 }
  2082.                 else if(tipologiaErogazione!=null) {
  2083.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+"<>?");
  2084.                 }
  2085.                 sqlQueryObject.setANDLogicOperator(true);
  2086.                 sqlQueryObject.addOrderBy("nome");
  2087.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  2088.                     sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO);
  2089.                     sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO);
  2090.                 }
  2091.                 if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  2092.                     if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  2093.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" =?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+"=?");
  2094.                     }
  2095.                     else if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  2096.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_AS_CLIENT+" = ?");
  2097.                     }
  2098.                     else {
  2099.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?");
  2100.                     }
  2101.                 }
  2102.                 if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  2103.                     if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  2104.                         sqlQueryObject.addWhereCondition(false,
  2105.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?",
  2106.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?"+
  2107.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" "+CostantiDB.CONDITION_IS_NOT_NULL+
  2108.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE+" "+CostantiDB.CONDITION_IS_NOT_NULL);
  2109.                            
  2110.                     }
  2111.                     else {
  2112.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?");
  2113.                     }
  2114.                     if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  2115.                         if(CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  2116.                             sqlQueryObject.addWhereCondition(false,
  2117.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_SUBJECT, filterCredenziale,
  2118.                                             LikeConfig.contains(true,true)),
  2119.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_SUBJECT, filterCredenziale,
  2120.                                             LikeConfig.contains(true,true)));
  2121.                         }
  2122.                         else if(CostantiConfigurazione.CREDENZIALE_BASIC.toString().equals(filterTipoCredenziali) ||
  2123.                                 CostantiConfigurazione.CREDENZIALE_PRINCIPAL.toString().equals(filterTipoCredenziali) ||
  2124.                                 CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  2125.                             sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE,
  2126.                                     filterCredenziale, LikeConfig.contains(true,true));
  2127.                         }
  2128.                     }
  2129.                     if(filterCredenzialeIssuer!=null && !"".equals(filterCredenzialeIssuer) &&
  2130.                         CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  2131.                         sqlQueryObject.addWhereCondition(false,
  2132.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_ISSUER, filterCredenzialeIssuer,
  2133.                                         LikeConfig.contains(true,true)),
  2134.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ISSUER, filterCredenzialeIssuer,
  2135.                                         LikeConfig.contains(true,true)));
  2136.                     }
  2137.                     if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  2138.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" = ?");
  2139.                     }
  2140.                 }
  2141.                 if(joinConnettore) {
  2142.                     DBUtils.setFiltriConnettoreApplicativo(sqlQueryObject, this.driver.tipoDB,
  2143.                             tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  2144.                             filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  2145.                 }
  2146.                 if(filtroModI) {
  2147.                     DBUtils.setFiltriModIApplicativi(sqlQueryObject, this.driver.tipoDB,
  2148.                             filtroModISicurezzaMessaggioEnabled,
  2149.                             filtroModIKeystorePath, filtroModIKeystoreSubject, filtroModIKeystoreIssuer,
  2150.                             filtroModISicurezzaTokenEnabled,
  2151.                             filtroModITokenPolicy, filtroModITokenClientId,
  2152.                             filtroModIAudience,
  2153.                             checkCredenzialiBase);
  2154.                 }
  2155.                 if(filtroProprieta) {
  2156.                     DBUtils.setFiltriProprietaApplicativo(sqlQueryObject, this.driver.tipoDB,
  2157.                             filtroProprietaNome, filtroProprietaValore);
  2158.                 }
  2159.                 sqlQueryObject.setSortType(true);
  2160.                 sqlQueryObject.setLimit(limit);
  2161.                 sqlQueryObject.setOffset(offset);
  2162.                 queryString = sqlQueryObject.createSQLQuery();
  2163.             } else {
  2164.                 // senza search
  2165.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2166.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2167.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  2168.                 sqlQueryObject.addSelectField("nome");
  2169.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO);
  2170.                 if (idSoggetto!=null)
  2171.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = ?");
  2172.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  2173.                     sqlQueryObject.addSelectField(CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO);
  2174.                     sqlQueryObject.addSelectField(CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO);
  2175.                     sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  2176.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+" = "+CostantiDB.SOGGETTI+"."+CostantiDB.COLUMN_ID);
  2177.                     sqlQueryObject.addWhereINCondition(CostantiDB.SOGGETTI+"."+CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO, true, tipoSoggettiProtocollo.toArray(new String[1]));
  2178.                 }
  2179.                 if(tipologiaFruizione!=null) {
  2180.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+"<>?");
  2181.                 }
  2182.                 else if(tipologiaErogazione!=null) {
  2183.                     sqlQueryObject.addWhereCondition(true, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL, CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+"<>?");
  2184.                 }
  2185.                 sqlQueryObject.setANDLogicOperator(true);
  2186.                 sqlQueryObject.addOrderBy("nome");
  2187.                 if(tipoSoggettiProtocollo!=null && !tipoSoggettiProtocollo.isEmpty()) {
  2188.                     sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI_COLUMN_NOME_SOGGETTO);
  2189.                     sqlQueryObject.addOrderBy(CostantiDB.SOGGETTI_COLUMN_TIPO_SOGGETTO);
  2190.                 }
  2191.                 if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  2192.                     if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  2193.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" =?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+"=?");
  2194.                     }
  2195.                     else if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  2196.                         sqlQueryObject.addWhereCondition(false, CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?", CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_AS_CLIENT+" = ?");
  2197.                     }
  2198.                     else {
  2199.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPO+" = ?");
  2200.                     }
  2201.                 }
  2202.                 if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  2203.                     if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  2204.                         sqlQueryObject.addWhereCondition(false,
  2205.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?",
  2206.                                 CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?"+
  2207.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" "+CostantiDB.CONDITION_IS_NOT_NULL+
  2208.                                     CostantiDB.CONDITION_AND+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE+" "+CostantiDB.CONDITION_IS_NOT_NULL);
  2209.                            
  2210.                     }
  2211.                     else {
  2212.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" = ?");
  2213.                     }
  2214.                     if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  2215.                         if(CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  2216.                             sqlQueryObject.addWhereCondition(false,
  2217.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_SUBJECT, filterCredenziale,
  2218.                                             LikeConfig.contains(true,true)),
  2219.                                     sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_SUBJECT, filterCredenziale,
  2220.                                             LikeConfig.contains(true,true)));
  2221.                         }
  2222.                         else if(CostantiConfigurazione.CREDENZIALE_BASIC.toString().equals(filterTipoCredenziali) ||
  2223.                                 CostantiConfigurazione.CREDENZIALE_PRINCIPAL.toString().equals(filterTipoCredenziali) ||
  2224.                                 CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  2225.                             sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_UTENTE,
  2226.                                     filterCredenziale, LikeConfig.contains(true,true));
  2227.                         }
  2228.                     }
  2229.                     if(filterCredenzialeIssuer!=null && !"".equals(filterCredenzialeIssuer) &&
  2230.                         CostantiConfigurazione.CREDENZIALE_SSL.toString().equals(filterTipoCredenziali)) {
  2231.                         sqlQueryObject.addWhereCondition(false,
  2232.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_CN_ISSUER, filterCredenzialeIssuer,
  2233.                                         LikeConfig.contains(true,true)),
  2234.                                 sqlQueryObject.getWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ISSUER, filterCredenzialeIssuer,
  2235.                                         LikeConfig.contains(true,true)));
  2236.                     }
  2237.                     if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  2238.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TOKEN_POLICY+" = ?");
  2239.                     }
  2240.                 }
  2241.                 if(joinConnettore) {
  2242.                     DBUtils.setFiltriConnettoreApplicativo(sqlQueryObject, this.driver.tipoDB,
  2243.                             tipoConnettore, endpointType, tipoConnettoreIntegrationManager,
  2244.                             filtroConnettoreTokenPolicy, filtroConnettoreEndpoint, filtroConnettoreKeystore, filtroConnettoreDebug);
  2245.                 }
  2246.                 if(filtroModI) {
  2247.                     DBUtils.setFiltriModIApplicativi(sqlQueryObject, this.driver.tipoDB,
  2248.                             filtroModISicurezzaMessaggioEnabled,
  2249.                             filtroModIKeystorePath, filtroModIKeystoreSubject, filtroModIKeystoreIssuer,
  2250.                             filtroModISicurezzaTokenEnabled,
  2251.                             filtroModITokenPolicy, filtroModITokenClientId,
  2252.                             filtroModIAudience,
  2253.                             checkCredenzialiBase);
  2254.                 }
  2255.                 if(filtroProprieta) {
  2256.                     DBUtils.setFiltriProprietaApplicativo(sqlQueryObject, this.driver.tipoDB,
  2257.                             filtroProprietaNome, filtroProprietaValore);
  2258.                 }
  2259.                 sqlQueryObject.setSortType(true);
  2260.                 sqlQueryObject.setLimit(limit);
  2261.                 sqlQueryObject.setOffset(offset);
  2262.                 queryString = sqlQueryObject.createSQLQuery();
  2263.             }
  2264.             stmt = con.prepareStatement(queryString);
  2265.             index = 1;
  2266.             if (idSoggetto!=null) {
  2267.                 stmt.setLong(index++, idSoggetto);
  2268.             }
  2269.             if(tipologiaFruizione!=null) {
  2270.                 stmt.setString(index++, tipologiaFruizione.getValue());
  2271.             }
  2272.             else if(tipologiaErogazione!=null) {
  2273.                 stmt.setString(index++, tipologiaErogazione.getValue());
  2274.             }
  2275.             if(filterTipoServizioApplicativo!=null && !"".equals(filterTipoServizioApplicativo)) {
  2276.                 if(CostantiConfigurazione.CLIENT_OR_SERVER.equals(filterTipoServizioApplicativo)) {
  2277.                     stmt.setString(index++, CostantiConfigurazione.SERVER);
  2278.                     stmt.setString(index++, CostantiConfigurazione.CLIENT);
  2279.                 }
  2280.                 else {
  2281.                     stmt.setString(index++, filterTipoServizioApplicativo);
  2282.                     if(CostantiConfigurazione.CLIENT.equals(filterTipoServizioApplicativo)) {
  2283.                         stmt.setInt(index++, CostantiDB.TRUE);
  2284.                     }
  2285.                 }
  2286.             }
  2287.             if(filterTipoCredenziali!=null && !"".equals(filterTipoCredenziali)) {
  2288.                 stmt.setString(index++, filterTipoCredenziali);
  2289.                 if(CostantiConfigurazione.CREDENZIALE_TOKEN.toString().equals(filterTipoCredenziali)) {
  2290.                     stmt.setString(index++,CostantiConfigurazione.CREDENZIALE_SSL.toString());
  2291.                 }
  2292. /**             if(filterCredenziale!=null && !"".equals(filterCredenziale)) {
  2293. //                  // like
  2294. //              }*/
  2295.                 if(filterCredenzialeTokenPolicy!=null && !"".equals(filterCredenzialeTokenPolicy)) {
  2296.                     stmt.setString(index++, filterCredenzialeTokenPolicy);
  2297.                 }
  2298.             }
  2299.             risultato = stmt.executeQuery();

  2300.             while (risultato.next()) {
  2301.                 ServizioApplicativo sa = this.serviziApplicativiDriver.getServizioApplicativo(risultato.getLong("id"));
  2302.                 silList.add(sa);
  2303.             }

  2304.             return silList;

  2305.         } catch (Exception qe) {
  2306.             throw new DriverConfigurazioneException(getMessageError(nomeMetodo,  qe),qe);
  2307.         } finally {

  2308.             //Chiudo statement and resultset
  2309.             JDBCUtilities.closeResources(risultato, stmt);

  2310.             this.driver.closeConnection(con);
  2311.         }
  2312.     }
  2313.    
  2314.     protected List<String> servizioApplicativoRuoliList(long idSA, ISearch ricerca) throws DriverConfigurazioneException {
  2315.         String nomeMetodo = "servizioApplicativoRuoliList";
  2316.         int idLista = Liste.SERVIZIO_APPLICATIVO_RUOLI;
  2317.         int offset;
  2318.         int limit;
  2319.         String search;
  2320.         String queryString;

  2321.         limit = ricerca.getPageSize(idLista);
  2322.         offset = ricerca.getIndexIniziale(idLista);
  2323.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));

  2324.         Connection con = null;
  2325.         PreparedStatement stmt = null;
  2326.         ResultSet risultato = null;

  2327.         if (this.driver.atomica) {
  2328.             try {
  2329.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2330.             } catch (Exception e) {
  2331.                 throw new DriverConfigurazioneException(getMessageDatasourceError(nomeMetodo,  e),e);

  2332.             }

  2333.         } else
  2334.             con = this.driver.globalConnection;

  2335.         this.driver.logDebug(PREFIX_ATOMICA + this.driver.atomica);

  2336.         List<String> listIdRuoli = null;
  2337.         try {

  2338.             if (!search.equals("")) {
  2339.                 //query con search
  2340.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2341.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2342.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_RUOLI);
  2343.                 sqlQueryObject.addSelectCountField("*", "cont");
  2344.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"=?");
  2345.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_ID_SERVIZIO_APPLICATIVO_REF);
  2346.                 sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO, search, true, true);  
  2347.                
  2348.                 sqlQueryObject.setSelectDistinct(true);
  2349.                 sqlQueryObject.setANDLogicOperator(true);
  2350.                 queryString = sqlQueryObject.createSQLQuery();
  2351.             } else {
  2352.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2353.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2354.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_RUOLI);
  2355.                 sqlQueryObject.addSelectCountField("*", "cont");
  2356.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"=?");
  2357.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_ID_SERVIZIO_APPLICATIVO_REF);

  2358.                 sqlQueryObject.setSelectDistinct(true);
  2359.                 sqlQueryObject.setANDLogicOperator(true);
  2360.                 queryString = sqlQueryObject.createSQLQuery();
  2361.             }
  2362.             stmt = con.prepareStatement(queryString);
  2363.             stmt.setLong(1, idSA);

  2364.             risultato = stmt.executeQuery();
  2365.             if (risultato.next())
  2366.                 ricerca.setNumEntries(idLista,risultato.getInt(1));
  2367.             risultato.close();
  2368.             stmt.close();

  2369.             // ricavo le entries
  2370.             if (limit == 0) // con limit
  2371.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  2372.             if (!search.equals("")) { // con search
  2373.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2374.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2375.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_RUOLI);
  2376.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO);
  2377.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"=?");
  2378.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_ID_SERVIZIO_APPLICATIVO_REF);
  2379.                 sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO, search, true, true);  
  2380.                
  2381.                 sqlQueryObject.setSelectDistinct(true);
  2382.                 sqlQueryObject.setANDLogicOperator(true);
  2383.                 sqlQueryObject.addOrderBy(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO);
  2384.                 sqlQueryObject.setSortType(true);
  2385.                 sqlQueryObject.setLimit(limit);
  2386.                 sqlQueryObject.setOffset(offset);
  2387.                 queryString = sqlQueryObject.createSQLQuery();
  2388.             } else {
  2389.                 // senza search
  2390.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2391.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2392.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_RUOLI);
  2393.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO);
  2394.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"=?");
  2395.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_ID_SERVIZIO_APPLICATIVO_REF);
  2396.                
  2397.                 sqlQueryObject.setSelectDistinct(true);
  2398.                 sqlQueryObject.setANDLogicOperator(true);
  2399.                 sqlQueryObject.addOrderBy(CostantiDB.SERVIZI_APPLICATIVI_RUOLI+"."+CostantiDB.SERVIZI_APPLICATIVI_RUOLI_COLUMN_RUOLO);
  2400.                 sqlQueryObject.setSortType(true);
  2401.                 sqlQueryObject.setLimit(limit);
  2402.                 sqlQueryObject.setOffset(offset);
  2403.                 queryString = sqlQueryObject.createSQLQuery();
  2404.             }
  2405.             stmt = con.prepareStatement(queryString);
  2406.             stmt.setLong(1, idSA);

  2407.             risultato = stmt.executeQuery();

  2408.             listIdRuoli = new ArrayList<>();
  2409.             while (risultato.next()) {

  2410.                 listIdRuoli.add(risultato.getString(1));

  2411.             }

  2412.         } catch (Exception qe) {
  2413.             throw new DriverConfigurazioneException(getMessageError(nomeMetodo,  qe),qe);
  2414.         } finally {

  2415.             //Chiudo statement and resultset
  2416.             JDBCUtilities.closeResources(risultato, stmt);

  2417.             this.driver.closeConnection(con);
  2418.         }
  2419.        
  2420.         return listIdRuoli;
  2421.     }
  2422.    
  2423.     protected List<Proprieta> serviziApplicativiProprietaList(int idSA, ISearch ricerca) throws DriverConfigurazioneException {
  2424.         String nomeMetodo = "serviziApplicativiProprietaList";
  2425.         int idLista = Liste.SERVIZI_APPLICATIVI_PROP;
  2426.         int offset;
  2427.         int limit;
  2428.         String search;
  2429.         String queryString;

  2430.         limit = ricerca.getPageSize(idLista);
  2431.         offset = ricerca.getIndexIniziale(idLista);
  2432.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));

  2433.         Connection con = null;
  2434.         PreparedStatement stmt = null;
  2435.         ResultSet risultato = null;

  2436.         if (this.driver.atomica) {
  2437.             try {
  2438.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2439.             } catch (Exception e) {
  2440.                 throw new DriverConfigurazioneException(getMessageDatasourceError(nomeMetodo,  e),e);

  2441.             }

  2442.         } else
  2443.             con = this.driver.globalConnection;

  2444.         this.driver.logDebug(PREFIX_ATOMICA + this.driver.atomica);

  2445.         List<Proprieta> lista = null;
  2446.         try {

  2447.             if (!search.equals("")) {
  2448.                 //query con search
  2449.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2450.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2451.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_PROPS);
  2452.                 sqlQueryObject.addSelectCountField("*", "cont");
  2453.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"=?");
  2454.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_ID_SERVIZIO_APPLICATIVO_REF);
  2455.                 sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_COLUMN_NOME, search, true, true);    
  2456.                
  2457.                 sqlQueryObject.setANDLogicOperator(true);
  2458.                 queryString = sqlQueryObject.createSQLQuery();
  2459.             } else {
  2460.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2461.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2462.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_PROPS);
  2463.                 sqlQueryObject.addSelectCountField("*", "cont");
  2464.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"=?");
  2465.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_ID_SERVIZIO_APPLICATIVO_REF);

  2466.                 sqlQueryObject.setANDLogicOperator(true);
  2467.                 queryString = sqlQueryObject.createSQLQuery();
  2468.             }
  2469.             stmt = con.prepareStatement(queryString);
  2470.             stmt.setLong(1, idSA);

  2471.             risultato = stmt.executeQuery();
  2472.             if (risultato.next())
  2473.                 ricerca.setNumEntries(idLista,risultato.getInt(1));
  2474.             risultato.close();
  2475.             stmt.close();

  2476.             // ricavo le entries
  2477.             if (limit == 0) // con limit
  2478.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  2479.             if (!search.equals("")) { // con search
  2480.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2481.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2482.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_PROPS);
  2483.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_COLUMN_NOME);
  2484.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_PROPS+".valore");
  2485.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_PROPS+".enc_value");
  2486.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.COLUMN_ID);
  2487.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"=?");
  2488.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_ID_SERVIZIO_APPLICATIVO_REF);
  2489.                 sqlQueryObject.addWhereLikeCondition(CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_COLUMN_NOME, search, true, true);    
  2490.                
  2491.                 sqlQueryObject.setANDLogicOperator(true);
  2492.                 sqlQueryObject.addOrderBy(CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_COLUMN_NOME);
  2493.                 sqlQueryObject.setSortType(true);
  2494.                 sqlQueryObject.setLimit(limit);
  2495.                 sqlQueryObject.setOffset(offset);
  2496.                 queryString = sqlQueryObject.createSQLQuery();
  2497.             } else {
  2498.                 // senza search
  2499.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  2500.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  2501.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI_PROPS);
  2502.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_COLUMN_NOME);
  2503.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_PROPS+".valore");
  2504.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_PROPS+".enc_value");
  2505.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.COLUMN_ID);
  2506.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"=?");
  2507.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID+"="+CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_ID_SERVIZIO_APPLICATIVO_REF);
  2508.                
  2509.                 sqlQueryObject.setANDLogicOperator(true);
  2510.                 sqlQueryObject.addOrderBy(CostantiDB.SERVIZI_APPLICATIVI_PROPS+"."+CostantiDB.SERVIZI_APPLICATIVI_PROPS_COLUMN_NOME);
  2511.                 sqlQueryObject.setSortType(true);
  2512.                 sqlQueryObject.setLimit(limit);
  2513.                 sqlQueryObject.setOffset(offset);
  2514.                 queryString = sqlQueryObject.createSQLQuery();
  2515.             }
  2516.             stmt = con.prepareStatement(queryString);
  2517.             stmt.setLong(1, idSA);

  2518.             risultato = stmt.executeQuery();

  2519.             lista = new ArrayList<>();
  2520.             while (risultato.next()) {
  2521.                
  2522.                 Proprieta proprieta = new Proprieta();
  2523.                 proprieta.setId(risultato.getLong("id"));
  2524.                 proprieta.setNome(risultato.getString("nome"));
  2525.                
  2526.                 String plainValue = risultato.getString("valore");
  2527.                 String encValue = risultato.getString("enc_value");
  2528.                 if(encValue!=null && StringUtils.isNotEmpty(encValue)) {
  2529.                     proprieta.setValore(encValue);
  2530.                 }
  2531.                 else {
  2532.                     proprieta.setValore(plainValue);
  2533.                 }

  2534.                 lista.add(proprieta );

  2535.             }

  2536.         } catch (Exception qe) {
  2537.             throw new DriverConfigurazioneException(getMessageError(nomeMetodo,  qe),qe);
  2538.         } finally {

  2539.             //Chiudo statement and resultset
  2540.             JDBCUtilities.closeResources(risultato, stmt);

  2541.             this.driver.closeConnection(con);
  2542.         }
  2543.        
  2544.         return lista;
  2545.     }
  2546.    
  2547.    
  2548.     // all
  2549.     protected int countTipologieServiziApplicativi(ISearch filters) throws DriverConfigurazioneException
  2550.     {
  2551.         return serviziApplicativiListEngineCount(null, null, false, null, false, filters, false, null, null);
  2552.     }
  2553.     protected int countTipologieServiziApplicativi(IDSoggetto proprietario,ISearch filters) throws DriverConfigurazioneException
  2554.     {
  2555.         return serviziApplicativiListEngineCount(proprietario, null, false, null, false, filters, false, null, null);
  2556.     }
  2557.    
  2558.     // fruizione
  2559.    
  2560.     protected int countTipologieFruizioneServiziApplicativi(ISearch filters) throws DriverConfigurazioneException
  2561.     {
  2562.         return serviziApplicativiListEngineCount(null, null, false, null, true, filters, false, null, null);
  2563.     }
  2564.     protected int countTipologieFruizioneServiziApplicativi(ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2565.     {
  2566.         return serviziApplicativiListEngineCount(null, null, false, null, true, filters, checkAssociazionePorta, null, null);
  2567.     }
  2568.     protected int countTipologieFruizioneServiziApplicativi(ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2569.     {
  2570.         return serviziApplicativiListEngineCount(null, null, false, null, true, filters, checkAssociazionePorta, isBound, null);
  2571.     }
  2572.    
  2573.     protected int countTipologieFruizioneServiziApplicativi(RicercaTipologiaFruizione fruizione, ISearch filters) throws DriverConfigurazioneException
  2574.     {
  2575.         return serviziApplicativiListEngineCount(null, null, false, fruizione, true, filters, false, null, null);
  2576.     }
  2577.     protected int countTipologieFruizioneServiziApplicativi(RicercaTipologiaFruizione fruizione, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2578.     {
  2579.         return serviziApplicativiListEngineCount(null, null, false, fruizione, true, filters, checkAssociazionePorta, null, null);
  2580.     }
  2581.     protected int countTipologieFruizioneServiziApplicativi(RicercaTipologiaFruizione fruizione, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2582.     {
  2583.         return serviziApplicativiListEngineCount(null, null, false, fruizione, true, filters, checkAssociazionePorta, isBound, null);
  2584.     }
  2585.    
  2586.     protected int countTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, ISearch filters) throws DriverConfigurazioneException
  2587.     {
  2588.         return serviziApplicativiListEngineCount(proprietario, null, false, null, true, filters, false, null, null);
  2589.     }
  2590.     protected int countTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2591.     {
  2592.         return serviziApplicativiListEngineCount(proprietario, null, false, null, true, filters, checkAssociazionePorta, null, null);
  2593.     }
  2594.     protected int countTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2595.     {
  2596.         return serviziApplicativiListEngineCount(proprietario, null, false, null, true, filters, checkAssociazionePorta, isBound, null);
  2597.     }
  2598.    
  2599.     protected int countTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaFruizione fruizione, ISearch filters) throws DriverConfigurazioneException
  2600.     {
  2601.         return serviziApplicativiListEngineCount(proprietario, null, false, fruizione, true, filters, false, null, null);
  2602.     }
  2603.     protected int countTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaFruizione fruizione, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2604.     {
  2605.         return serviziApplicativiListEngineCount(proprietario, null, false, fruizione, true, filters, checkAssociazionePorta, null, null);
  2606.     }
  2607.     protected int countTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaFruizione fruizione, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2608.     {
  2609.         return serviziApplicativiListEngineCount(proprietario, null, false, fruizione, true, filters, checkAssociazionePorta, isBound, null);
  2610.     }
  2611.    
  2612.     // erogazione
  2613.    
  2614.     protected int countTipologieErogazioneServiziApplicativi(ISearch filters) throws DriverConfigurazioneException
  2615.     {
  2616.         return serviziApplicativiListEngineCount(null, null, true, null, false, filters, false, null, null);
  2617.     }
  2618.     protected int countTipologieErogazioneServiziApplicativi(ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2619.     {
  2620.         return serviziApplicativiListEngineCount(null, null, true, null, false, filters, checkAssociazionePorta, null, null);
  2621.     }
  2622.     protected int countTipologieErogazioneServiziApplicativi(ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2623.     {
  2624.         return serviziApplicativiListEngineCount(null, null, true, null, false, filters, checkAssociazionePorta, null, isBound);
  2625.     }
  2626.    
  2627.     protected int countTipologieErogazioneServiziApplicativi(RicercaTipologiaErogazione erogazione, ISearch filters) throws DriverConfigurazioneException
  2628.     {
  2629.         return serviziApplicativiListEngineCount(null, erogazione, true, null, false, filters, false, null, null);
  2630.     }
  2631.     protected int countTipologieErogazioneServiziApplicativi(RicercaTipologiaErogazione erogazione, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2632.     {
  2633.         return serviziApplicativiListEngineCount(null, erogazione, true, null, false,  filters, checkAssociazionePorta, null, null);
  2634.     }
  2635.     protected int countTipologieErogazioneServiziApplicativi(RicercaTipologiaErogazione erogazione, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2636.     {
  2637.         return serviziApplicativiListEngineCount(null, erogazione, true, null, false,  filters, checkAssociazionePorta, null, isBound);
  2638.     }
  2639.    
  2640.     protected int countTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaErogazione erogazione, ISearch filters) throws DriverConfigurazioneException
  2641.     {
  2642.         return serviziApplicativiListEngineCount(proprietario, erogazione, true,  null, false, filters, false, null, null);
  2643.     }
  2644.     protected int countTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaErogazione erogazione, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2645.     {
  2646.         return serviziApplicativiListEngineCount(proprietario, erogazione, true, null, false, filters, checkAssociazionePorta, null, null);
  2647.     }
  2648.     protected int countTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaErogazione erogazione, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2649.     {
  2650.         return serviziApplicativiListEngineCount(proprietario, erogazione, true, null, false, filters, checkAssociazionePorta, null, isBound);
  2651.     }
  2652.    
  2653.     protected int countTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, ISearch filters) throws DriverConfigurazioneException
  2654.     {
  2655.         return serviziApplicativiListEngineCount(proprietario, null, true, null, false, filters, false, null, null);
  2656.     }
  2657.     protected int countTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2658.     {
  2659.         return serviziApplicativiListEngineCount(proprietario, null, true, null, false, filters, checkAssociazionePorta, null, null);
  2660.     }
  2661.     protected int countTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2662.     {
  2663.         return serviziApplicativiListEngineCount(proprietario, null, true, null, false, filters, checkAssociazionePorta, null, isBound);
  2664.     }
  2665.    
  2666.     // engine
  2667.    
  2668.     private int serviziApplicativiListEngineCount(IDSoggetto proprietario,
  2669.             RicercaTipologiaErogazione erogazione, boolean searchSoloErogazione,  
  2670.             RicercaTipologiaFruizione fruizione, boolean serchSoloFruizione,
  2671.             ISearch filters,boolean checkAssociazionePorta,
  2672.             Boolean fruizioneIsBound, Boolean erogazioneIsBound) throws DriverConfigurazioneException {
  2673.    
  2674.         String nomeMetodo = "serviziApplicativiCount";
  2675.         Connection con = null;
  2676.         PreparedStatement stmt=null;
  2677.         ResultSet risultato=null;
  2678.         Long idProprietario = null;
  2679.    
  2680.         int idLista = Liste.SERVIZIO_APPLICATIVO;
  2681.         String search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(filters.getSearchString(idLista)) ? "" : filters.getSearchString(idLista));
  2682.    
  2683.    
  2684.         if (this.driver.atomica) {
  2685.             try {
  2686.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2687.             } catch (Exception e) {
  2688.                 throw new DriverConfigurazioneException(getMessageDatasourceError(nomeMetodo,  e),e);
  2689.    
  2690.             }
  2691.    
  2692.         } else
  2693.             con = this.driver.globalConnection;
  2694.    
  2695.         this.driver.logDebug(PREFIX_ATOMICA + this.driver.atomica);
  2696.    
  2697.         try {
  2698.    
  2699.             if(proprietario!=null){
  2700.                 idProprietario=DBUtils.getIdSoggetto(proprietario.getNome(), proprietario.getTipo(), con, this.driver.tipoDB);
  2701.                 if(idProprietario==null || idProprietario<0)
  2702.                     throw new DriverConfigurazioneException(getMessageProprietarioNonEsiste(nomeMetodo,  proprietario));
  2703.             }
  2704.    
  2705.    
  2706.             // *** count ***
  2707.             ISQLQueryObject sqlQueryObject = this.getServiziApplicativiSearchFiltratiTipologia(proprietario,
  2708.                     erogazione, searchSoloErogazione,
  2709.                     fruizione,  serchSoloFruizione,  
  2710.                     checkAssociazionePorta, search, true,
  2711.                     fruizioneIsBound, erogazioneIsBound);
  2712.             String queryString = sqlQueryObject.createSQLQuery();
  2713.             this.driver.logDebug("QueryCount=["+queryString+"]");
  2714.             stmt = con.prepareStatement(queryString);
  2715.             int index = 1;
  2716.             if(proprietario!=null){
  2717.                 stmt.setLong(index++, idProprietario);
  2718.             }
  2719.             if(serchSoloFruizione){
  2720.                 //se fruizione non specificata voglio tutti i tipi di fruizione
  2721.                 if(fruizione==null){
  2722.                     stmt.setString(index++, TipologiaFruizione.DISABILITATO.toString());
  2723.                 }else{
  2724.                     if(!RicercaTipologiaFruizione.ALL.toString().equals(fruizione.toString())){
  2725.                         stmt.setString(index++,fruizione.toString());
  2726.                     }
  2727.                 }
  2728.             }else if(searchSoloErogazione){
  2729.                 //se erogazione non specificato voglio tutti i tipi di erogazione
  2730.                 if(erogazione==null){
  2731.                     stmt.setString(index++,TipologiaErogazione.DISABILITATO.toString());
  2732.                 }else{
  2733.                     if(!RicercaTipologiaErogazione.ALL.toString().equals(erogazione.toString())){
  2734.                         stmt.setString(index++,erogazione.toString());
  2735.                     }
  2736.                 }
  2737.             }
  2738.            
  2739.             if(fruizioneIsBound!=null){
  2740.                 stmt.setString(index++,TipoAutenticazione.DISABILITATO.getValue());
  2741.             }
  2742.            
  2743.             if(erogazioneIsBound!=null){
  2744.                 stmt.setString(index++,TipiConnettore.DISABILITATO.getNome());
  2745.                 stmt.setString(index++,TipiConnettore.HTTP.getNome());
  2746.                 stmt.setString(index++,TipiConnettore.HTTP.getNome());
  2747.                 // stmt.setString(index++,"");  OP-708
  2748.             }
  2749.            
  2750.             risultato = stmt.executeQuery();
  2751.             int count = -1;
  2752.             if (risultato.next()){
  2753.                 count =  risultato.getInt(CostantiDB.COLUMN_ALIAS_COUNT);
  2754.             }
  2755.             risultato.close();
  2756.             stmt.close();
  2757.    
  2758.             return count;
  2759.    
  2760.         } catch (Exception qe) {
  2761.             throw new DriverConfigurazioneException(getMessageError(nomeMetodo,  qe),qe);
  2762.         } finally {
  2763.    
  2764.             //Chiudo statement and resultset
  2765.             JDBCUtilities.closeResources(risultato, stmt);
  2766.    
  2767.             this.driver.closeConnection(con);
  2768.         }
  2769.     }
  2770.    
  2771.    
  2772.    
  2773.    
  2774.    
  2775.     // all
  2776.     protected List<TipologiaServizioApplicativo> getTipologieServiziApplicativi(ISearch filters) throws DriverConfigurazioneException
  2777.     {
  2778.         return serviziApplicativiListEngine(null, null, false,  null, false, filters, false, null, null);
  2779.     }
  2780.     protected List<TipologiaServizioApplicativo> getTipologieServiziApplicativi(IDSoggetto proprietario,ISearch filters) throws DriverConfigurazioneException
  2781.     {
  2782.         return serviziApplicativiListEngine(proprietario, null, false,  null, false, filters, false, null, null);
  2783.     }
  2784.    
  2785.     // fruizione
  2786.    
  2787.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(ISearch filters) throws DriverConfigurazioneException
  2788.     {
  2789.         return serviziApplicativiListEngine(null, null, false, null, true, filters, false, null, null);
  2790.     }
  2791.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2792.     {
  2793.         return serviziApplicativiListEngine(null, null, false,  null, true, filters, checkAssociazionePorta, null, null);
  2794.     }
  2795.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2796.     {
  2797.         return serviziApplicativiListEngine(null, null, false,  null, true, filters, checkAssociazionePorta, isBound, null);
  2798.     }
  2799.    
  2800.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(RicercaTipologiaFruizione fruizione, ISearch filters) throws DriverConfigurazioneException
  2801.     {
  2802.         return serviziApplicativiListEngine(null, null, false, fruizione, true, filters, false, null, null);
  2803.     }
  2804.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(RicercaTipologiaFruizione fruizione, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2805.     {
  2806.         return serviziApplicativiListEngine(null, null, false,  fruizione, true, filters, checkAssociazionePorta, null, null);
  2807.     }
  2808.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(RicercaTipologiaFruizione fruizione, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2809.     {
  2810.         return serviziApplicativiListEngine(null, null, false,  fruizione, true, filters, checkAssociazionePorta, isBound, null);
  2811.     }
  2812.    
  2813.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, ISearch filters) throws DriverConfigurazioneException
  2814.     {
  2815.         return serviziApplicativiListEngine(proprietario, null, false, null, true, filters, false, null, null);
  2816.     }
  2817.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2818.     {
  2819.         return serviziApplicativiListEngine(proprietario, null, false, null, true, filters, checkAssociazionePorta, null, null);
  2820.     }
  2821.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2822.     {
  2823.         return serviziApplicativiListEngine(proprietario, null, false, null, true, filters, checkAssociazionePorta, isBound, null);
  2824.     }
  2825.    
  2826.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaFruizione fruizione, ISearch filters) throws DriverConfigurazioneException
  2827.     {
  2828.         return serviziApplicativiListEngine(proprietario, null, false, fruizione, true, filters, false, null, null);
  2829.     }
  2830.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaFruizione fruizione, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2831.     {
  2832.         return serviziApplicativiListEngine(proprietario, null, false,  fruizione, true, filters, checkAssociazionePorta, null, null);
  2833.     }
  2834.     protected List<TipologiaServizioApplicativo> getTipologieFruizioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaFruizione fruizione, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2835.     {
  2836.         return serviziApplicativiListEngine(proprietario, null, false,  fruizione, true, filters, checkAssociazionePorta, isBound, null);
  2837.     }
  2838.    
  2839.     // erogazione
  2840.    
  2841.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(ISearch filters) throws DriverConfigurazioneException
  2842.     {
  2843.         return serviziApplicativiListEngine(null, null, true, null, false, filters, false, null, null);
  2844.     }
  2845.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2846.     {
  2847.         return serviziApplicativiListEngine(null, null, true, null, false, filters, checkAssociazionePorta, null, null);
  2848.     }
  2849.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2850.     {
  2851.         return serviziApplicativiListEngine(null, null, true, null, false, filters, checkAssociazionePorta, null, isBound);
  2852.     }
  2853.    
  2854.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(RicercaTipologiaErogazione erogazione, ISearch filters) throws DriverConfigurazioneException
  2855.     {
  2856.         return serviziApplicativiListEngine(null, erogazione, true, null, false, filters, false, null, null);
  2857.     }
  2858.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(RicercaTipologiaErogazione erogazione, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2859.     {
  2860.         return serviziApplicativiListEngine(null, erogazione, true, null, false, filters, checkAssociazionePorta, null, null);
  2861.     }
  2862.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(RicercaTipologiaErogazione erogazione, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2863.     {
  2864.         return serviziApplicativiListEngine(null, erogazione, true, null, false, filters, checkAssociazionePorta, null, isBound);
  2865.     }
  2866.    
  2867.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaErogazione erogazione, ISearch filters) throws DriverConfigurazioneException
  2868.     {
  2869.         return serviziApplicativiListEngine(proprietario, erogazione, true, null, false, filters, false, null, null);
  2870.     }
  2871.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaErogazione erogazione, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2872.     {
  2873.         return serviziApplicativiListEngine(proprietario, erogazione, true, null, false, filters, checkAssociazionePorta, null, null);
  2874.     }
  2875.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, RicercaTipologiaErogazione erogazione, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2876.     {
  2877.         return serviziApplicativiListEngine(proprietario, erogazione, true, null, false, filters, checkAssociazionePorta, null, isBound);
  2878.     }
  2879.    
  2880.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, ISearch filters) throws DriverConfigurazioneException
  2881.     {
  2882.         return serviziApplicativiListEngine(proprietario, null, true, null, false, filters, false, null, null);
  2883.     }
  2884.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, ISearch filters,boolean checkAssociazionePorta) throws DriverConfigurazioneException
  2885.     {
  2886.         return serviziApplicativiListEngine(proprietario, null, true, null, false, filters, checkAssociazionePorta, null, null);
  2887.     }
  2888.     protected List<TipologiaServizioApplicativo> getTipologieErogazioneServiziApplicativi(IDSoggetto proprietario, ISearch filters,boolean checkAssociazionePorta, Boolean isBound) throws DriverConfigurazioneException
  2889.     {
  2890.         return serviziApplicativiListEngine(proprietario, null, true, null, false, filters, checkAssociazionePorta, null, isBound);
  2891.     }
  2892.    
  2893.     // engine
  2894.    
  2895.     private List<TipologiaServizioApplicativo> serviziApplicativiListEngine(IDSoggetto proprietario,
  2896.             RicercaTipologiaErogazione erogazione, boolean searchSoloErogazione,  
  2897.             RicercaTipologiaFruizione fruizione, boolean serchSoloFruizione,
  2898.             ISearch filters,boolean checkAssociazionePorta,
  2899.             Boolean fruizioneIsBound, Boolean erogazioneIsBound) throws DriverConfigurazioneException {
  2900.    
  2901.         String nomeMetodo = "serviziApplicativiList";
  2902.         Connection con = null;
  2903.         PreparedStatement stmt=null;
  2904.         ResultSet risultato=null;
  2905.         Long idProprietario = null;
  2906.    
  2907.         int idLista = Liste.SERVIZIO_APPLICATIVO;
  2908.         int limit = filters.getPageSize(idLista);
  2909.         int offset = filters.getIndexIniziale(idLista);
  2910.         String search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(filters.getSearchString(idLista)) ? "" : filters.getSearchString(idLista));
  2911.    
  2912.         ArrayList<TipologiaServizioApplicativo> lista = new ArrayList<>();
  2913.    
  2914.         if (this.driver.atomica) {
  2915.             try {
  2916.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  2917.             } catch (Exception e) {
  2918.                 throw new DriverConfigurazioneException(getMessageDatasourceError(nomeMetodo,  e),e);
  2919.    
  2920.             }
  2921.    
  2922.         } else
  2923.             con = this.driver.globalConnection;
  2924.    
  2925.         this.driver.logDebug(PREFIX_ATOMICA + this.driver.atomica);
  2926.    
  2927.         try {
  2928.    
  2929.             if(proprietario!=null){
  2930.                 idProprietario=DBUtils.getIdSoggetto(proprietario.getNome(), proprietario.getTipo(), con, this.driver.tipoDB);
  2931.                 if(idProprietario==null || idProprietario<0)
  2932.                     throw new DriverConfigurazioneException(getMessageProprietarioNonEsiste(nomeMetodo,  proprietario));
  2933.             }
  2934.             filters.setNumEntries(idLista, this.serviziApplicativiListEngineCount(proprietario,
  2935.                     erogazione, searchSoloErogazione,
  2936.                     fruizione, serchSoloFruizione,
  2937.                     filters, checkAssociazionePorta,
  2938.                     fruizioneIsBound, erogazioneIsBound));
  2939.    
  2940.    
  2941.    
  2942.             // *** select ***
  2943.             ISQLQueryObject sqlQueryObject = this.getServiziApplicativiSearchFiltratiTipologia(proprietario,
  2944.                     erogazione, searchSoloErogazione,
  2945.                     fruizione, serchSoloFruizione,  
  2946.                     checkAssociazionePorta, search, false,
  2947.                     fruizioneIsBound, erogazioneIsBound);
  2948.             // ricavo le entries
  2949.             if (limit == 0) // con limit
  2950.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  2951.    
  2952.             sqlQueryObject.addOrderBy("nome");
  2953.             sqlQueryObject.setSortType(true);
  2954.             sqlQueryObject.setOffset(offset);
  2955.             sqlQueryObject.setLimit(limit);
  2956.             String queryString = sqlQueryObject.createSQLQuery();
  2957.             this.driver.logDebug("Query=["+queryString+"]");
  2958.             stmt = con.prepareStatement(queryString);
  2959.             int index = 1;
  2960.             if(proprietario!=null)
  2961.                 stmt.setLong(index++, idProprietario);
  2962.             if(serchSoloFruizione){
  2963.                 //se fruizione non specificata voglio tutti i tipi di fruizione
  2964.                 if(fruizione==null){
  2965.                     stmt.setString(index++, TipologiaFruizione.DISABILITATO.toString());
  2966.                 }else{
  2967.                     if(!RicercaTipologiaFruizione.ALL.toString().equals(fruizione.toString())){
  2968.                         stmt.setString(index++,fruizione.toString());
  2969.                     }
  2970.                 }
  2971.             }else if(searchSoloErogazione){
  2972.                 //se erogazione non specificato voglio tutti i tipi di erogazione
  2973.                 if(erogazione==null){
  2974.                     stmt.setString(index++,TipologiaErogazione.DISABILITATO.toString());
  2975.                 }else{
  2976.                     if(!RicercaTipologiaErogazione.ALL.toString().equals(erogazione.toString())){
  2977.                         stmt.setString(index++,erogazione.toString());
  2978.                     }
  2979.                 }
  2980.             }
  2981.            
  2982.             if(fruizioneIsBound!=null){
  2983.                 stmt.setString(index++,TipoAutenticazione.DISABILITATO.getValue());
  2984.             }
  2985.            
  2986.             if(erogazioneIsBound!=null){
  2987.                 stmt.setString(index++,TipiConnettore.DISABILITATO.getNome());
  2988.                 stmt.setString(index++,TipiConnettore.HTTP.getNome());
  2989.                 stmt.setString(index++,TipiConnettore.HTTP.getNome());
  2990.                 // stmt.setString(index++,""); OP-708
  2991.             }
  2992.            
  2993.             risultato = stmt.executeQuery();
  2994.             while (risultato.next()){
  2995.    
  2996.                 IDServizioApplicativo idSA = new IDServizioApplicativo();
  2997.                 if(proprietario!=null){
  2998.                     idSA.setIdSoggettoProprietario(proprietario);
  2999.                 }else{
  3000.                     long idProprietarioLetto = risultato.getLong(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO);
  3001.                     Soggetto s = this.soggettiDriver.getSoggetto(idProprietarioLetto);
  3002.                     idSA.setIdSoggettoProprietario(new IDSoggetto(s.getTipo(), s.getNome()));
  3003.                 }
  3004.                 idSA.setNome(risultato.getString("nome"));
  3005.    
  3006.                 TipologiaServizioApplicativo tipologia = new TipologiaServizioApplicativo();
  3007.                 tipologia.setIdServizioApplicativo(idSA);
  3008.    
  3009.                 String tipologiaFruizione = risultato.getString(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE);
  3010.                 if(tipologiaFruizione!=null && !"".equals(tipologiaFruizione)){
  3011.                     tipologia.setTipologiaFruizione(TipologiaFruizione.toEnumConstant(tipologiaFruizione));
  3012.                 }
  3013.                 String tipologiaErogazione = risultato.getString(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE);
  3014.                 if(tipologiaErogazione!=null && !"".equals(tipologiaErogazione)){
  3015.                     tipologia.setTipologiaErogazione(TipologiaErogazione.toEnumConstant(tipologiaErogazione));
  3016.                 }
  3017.    
  3018.                 lista.add(tipologia);
  3019.             }
  3020.             risultato.close();
  3021.             stmt.close();
  3022.             return lista;
  3023.    
  3024.         } catch (Exception qe) {
  3025.             throw new DriverConfigurazioneException(getMessageError(nomeMetodo,  qe),qe);
  3026.         } finally {
  3027.    
  3028.             //Chiudo statement and resultset
  3029.             JDBCUtilities.closeResources(risultato, stmt);
  3030.    
  3031.             this.driver.closeConnection(con);
  3032.         }
  3033.     }
  3034.    
  3035.     private ISQLQueryObject getServiziApplicativiSearchFiltratiTipologia(IDSoggetto proprietario,
  3036.             RicercaTipologiaErogazione erogazione, boolean searchSoloErogazione,  
  3037.             RicercaTipologiaFruizione fruizione, boolean serchSoloFruizione,
  3038.             boolean checkAssociazionePorta,String search, boolean count,
  3039.             Boolean fruizioneIsBound, Boolean erogazioneIsBound) throws DriverConfigurazioneException{
  3040.    
  3041.         try {
  3042.        
  3043.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3044.             sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  3045.             if(count){
  3046.                 sqlQueryObject.addSelectCountField("*",CostantiDB.COLUMN_ALIAS_COUNT);
  3047.             }
  3048.             else{
  3049.                 sqlQueryObject.addSelectField("nome");
  3050.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO);
  3051.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE);
  3052.                 sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE);
  3053.             }
  3054.        
  3055.             if(proprietario!=null){
  3056.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+"=?");
  3057.             }
  3058.             if(!"".equals(search)){
  3059.                 sqlQueryObject.addWhereLikeCondition("nome", search,false,true,true); // escape a false, deve essere pilotato da chi lo usa!
  3060.             }
  3061.        
  3062.             if(serchSoloFruizione){
  3063.                 //se fruizione non specificata voglio tutti i tipi di fruizione che non siano disabilitati
  3064.                 if(fruizione==null){
  3065.                     sqlQueryObject.addWhereCondition(true,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" <> ?");
  3066.                 }else{
  3067.                     if(RicercaTipologiaFruizione.DISABILITATO.toString().equals(fruizione.toString())){
  3068.                         sqlQueryObject.addWhereCondition(false,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" "+CostantiDB.CONDITION_IS_NULL,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" = ?");
  3069.                     }
  3070.                     else if(RicercaTipologiaFruizione.ALL.toString().equals(fruizione.toString())){
  3071.                         // Non devo fare niente (l'associazione porta seguente fara' si che verranno tornati solo i sa associati a PD)
  3072.                     }
  3073.                     else{
  3074.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE+" = ?");
  3075.                     }
  3076.                 }
  3077.                 if(checkAssociazionePorta){
  3078.                    
  3079.                     ISQLQueryObject sqlQueryObjectIn = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3080.                    
  3081.                     ISQLQueryObject sqlQueryObjectTrasportoIn = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3082.                     sqlQueryObjectTrasportoIn.addFromTable(CostantiDB.PORTE_DELEGATE_SA);
  3083.                     sqlQueryObjectTrasportoIn.addSelectField(CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF);
  3084.                     sqlQueryObjectTrasportoIn.addWhereCondition(CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF+"="+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  3085.                     sqlQueryObjectIn.addWhereExistsCondition(false, sqlQueryObjectTrasportoIn);
  3086.                
  3087.                     ISQLQueryObject sqlQueryObjectTokenIn = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3088.                     sqlQueryObjectTokenIn.addFromTable(CostantiDB.PORTE_DELEGATE_TOKEN_SA);
  3089.                     sqlQueryObjectTokenIn.addSelectField(CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF);
  3090.                     sqlQueryObjectTokenIn.addWhereCondition(CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF+"="+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  3091.                     sqlQueryObjectIn.addWhereExistsCondition(false, sqlQueryObjectTokenIn);
  3092.                    
  3093.                     sqlQueryObjectIn.setANDLogicOperator(false);
  3094.                    
  3095.                     sqlQueryObjectIn.addWhereCondition(sqlQueryObjectIn.createSQLConditions());
  3096.                 }
  3097.             }
  3098.        
  3099.             else if(searchSoloErogazione){
  3100.                 //se erogazione non specificato voglio tutti i tipi di erogazione
  3101.                 if(erogazione==null){
  3102.                     sqlQueryObject.addWhereCondition(true,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NOT_NULL,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" <> ?");
  3103.                 }else{
  3104.                     if(RicercaTipologiaErogazione.DISABILITATO.toString().equals(erogazione.toString())){
  3105.                         sqlQueryObject.addWhereCondition(false,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" "+CostantiDB.CONDITION_IS_NULL,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" = ?");
  3106.                     }
  3107.                     else if(RicercaTipologiaErogazione.ALL.toString().equals(erogazione.toString())){
  3108.                         // Non devo fare niente (l'associazione porta seguente fara' si che verranno tornati solo i sa associati a PD)
  3109.                     }
  3110.                     else{
  3111.                         sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE+" = ?");
  3112.                     }
  3113.                 }
  3114.                 if(checkAssociazionePorta){
  3115.                     ISQLQueryObject sqlQueryObjectIn = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3116.                     sqlQueryObjectIn.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
  3117.                     sqlQueryObjectIn.addSelectField(CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF);
  3118.                     sqlQueryObjectIn.addWhereCondition(CostantiDB.PORTA_COLUMN_ID_SERVIZIO_APPLICATIVO_REF+"="+CostantiDB.SERVIZI_APPLICATIVI+"."+CostantiDB.COLUMN_ID);
  3119.                     sqlQueryObject.addWhereExistsCondition(false, sqlQueryObjectIn);
  3120.                 }
  3121.             }
  3122.            
  3123.             if(fruizioneIsBound!=null){
  3124.                 if(fruizioneIsBound){
  3125.                     sqlQueryObject.addWhereIsNotNullCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH);
  3126.                     sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+"<>?");
  3127.                 }
  3128.                 else{
  3129.                     sqlQueryObject.addWhereCondition(false,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+" "+CostantiDB.CONDITION_IS_NULL,CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOAUTH+"=?");
  3130.                 }
  3131.             }
  3132.            
  3133.             if(erogazioneIsBound!=null){
  3134.                
  3135.                 ISQLQueryObject sqlQueryObjectConnettore = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3136.                 sqlQueryObjectConnettore.setANDLogicOperator(true);
  3137.                 sqlQueryObjectConnettore.addFromTable(CostantiDB.CONNETTORI);
  3138.                 sqlQueryObjectConnettore.addSelectField("id");
  3139.                 sqlQueryObjectConnettore.addWhereCondition("id_connettore_inv="+CostantiDB.CONNETTORI+"."+CostantiDB.COLUMN_ID);
  3140.                
  3141.                 // Fix OP-708
  3142.                 ISQLQueryObject sqlQueryObjectNullCondition = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3143.                 sqlQueryObjectNullCondition.addWhereIsNotNullCondition("url");
  3144.                 ISQLQueryObject sqlQueryObjectEmptyCondition = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3145.                 sqlQueryObjectEmptyCondition.addWhereIsNotEmptyCondition("url");
  3146.                
  3147.                 sqlQueryObjectConnettore.addWhereCondition(false,
  3148.                         "endpointtype<>?"+CostantiDB.CONDITION_AND+"endpointtype<>?",
  3149.                         //"endpointtype=? AND url is not null AND url <> ?"); OP-708
  3150.                         "endpointtype=?"+CostantiDB.CONDITION_AND+""+sqlQueryObjectNullCondition.createSQLConditions()+
  3151.                                         CostantiDB.CONDITION_AND+sqlQueryObjectEmptyCondition.createSQLConditions());
  3152.                
  3153.                 sqlQueryObject.addWhereExistsCondition(!erogazioneIsBound, sqlQueryObjectConnettore);

  3154.             }
  3155.            
  3156.             sqlQueryObject.setANDLogicOperator(true);
  3157.        
  3158.             return sqlQueryObject;
  3159.            
  3160.         } catch (Exception e) {
  3161.             throw new DriverConfigurazioneException(e.getMessage(),e);
  3162.         }
  3163.     }
  3164.    
  3165.     /**
  3166.      * Recupera i servizi applicativi che hanno come tipologia di erogazione una tra quelle passate come parametro
  3167.      * @param filters
  3168.      * @param proprietario
  3169.      * @return List<IDServizioApplicativo>
  3170.      * @throws DriverConfigurazioneException
  3171.      */
  3172.     protected List<IDServizioApplicativo> serviziApplicativiList(ISearch filters, IDSoggetto proprietario, TipologiaErogazione... erogazione) throws DriverConfigurazioneException {
  3173.         String nomeMetodo = "serviziApplicativiList";
  3174.         Connection con = null;
  3175.         PreparedStatement stmt=null;
  3176.         ResultSet risultato=null;
  3177.         long idProprietario = -1;
  3178.    
  3179.         int idLista = Liste.SERVIZIO_APPLICATIVO;
  3180.         int limit = filters.getPageSize(idLista);
  3181.         int offset = filters.getIndexIniziale(idLista);
  3182.         String search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(filters.getSearchString(idLista)) ? "" : filters.getSearchString(idLista));
  3183.    
  3184.         ArrayList<IDServizioApplicativo> lista = new ArrayList<>();
  3185.    
  3186.         if (this.driver.atomica) {
  3187.             try {
  3188.                 con = this.driver.getConnectionFromDatasource(nomeMetodo);
  3189.             } catch (Exception e) {
  3190.                 throw new DriverConfigurazioneException(getMessageDatasourceError(nomeMetodo,  e),e);
  3191.    
  3192.             }
  3193.    
  3194.         } else
  3195.             con = this.driver.globalConnection;
  3196.    
  3197.         this.driver.logDebug(PREFIX_ATOMICA + this.driver.atomica);
  3198.    
  3199.         try {
  3200.    
  3201.             idProprietario=DBUtils.getIdSoggetto(proprietario.getNome(), proprietario.getTipo(), con, this.driver.tipoDB);
  3202.             if(idProprietario<0)
  3203.                 throw new DriverConfigurazioneException(getMessageProprietarioNonEsiste(nomeMetodo,  proprietario));
  3204.    
  3205.             //count
  3206.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3207.             sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  3208.             sqlQueryObject.addSelectCountField("*",CostantiDB.COLUMN_ALIAS_COUNT);
  3209.             sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+"=?");
  3210.    
  3211.             if(!"".equals(search)){
  3212.                 sqlQueryObject.addWhereLikeCondition("nome", search,true,true);
  3213.             }
  3214.    
  3215.             //se erogazione non specificato voglio tutti i tipi di erogazione
  3216.             String[] conditions = new String[erogazione.length];
  3217.             for (int i = 0; i < erogazione.length; i++) {
  3218.                 conditions[i] = "tipologia_erogazione = ?";
  3219.             }
  3220.             sqlQueryObject.addWhereCondition(false,conditions);
  3221.    
  3222.             sqlQueryObject.setANDLogicOperator(true);
  3223.    
  3224.    
  3225.             String queryString = sqlQueryObject.createSQLQuery();
  3226.             stmt = con.prepareStatement(queryString);
  3227.    
  3228.             stmt.setLong(1, idProprietario);
  3229.    
  3230.             int baseIdx = 1;
  3231.             for (int i = 0; i < erogazione.length; i++) {
  3232.                 stmt.setString(++baseIdx, erogazione[i].toString());
  3233.             }
  3234.    
  3235.             risultato = stmt.executeQuery();
  3236.    
  3237.             if (risultato.next()){
  3238.                 filters.setNumEntries(idLista, risultato.getInt(CostantiDB.COLUMN_ALIAS_COUNT));
  3239.             }
  3240.             risultato.close();
  3241.             stmt.close();
  3242.    
  3243.             //select
  3244.             sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  3245.             sqlQueryObject.addFromTable(CostantiDB.SERVIZI_APPLICATIVI);
  3246.             sqlQueryObject.addSelectField("nome");
  3247.             sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO);
  3248.             sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_FRUIZIONE);
  3249.             sqlQueryObject.addSelectField(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_TIPOLOGIA_EROGAZIONE);
  3250.    
  3251.             sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_APPLICATIVI_COLUMN_ID_SOGGETTO+"=?");
  3252.    
  3253.             if(!"".equals(search)){
  3254.                 sqlQueryObject.addWhereLikeCondition("nome", search,true,true);
  3255.             }
  3256.    
  3257.             sqlQueryObject.addWhereCondition(false,conditions);
  3258.    
  3259.             sqlQueryObject.setANDLogicOperator(true);
  3260.             // ricavo le entries
  3261.             if (limit == 0) // con limit
  3262.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  3263.    
  3264.             sqlQueryObject.addOrderBy("nome");
  3265.             sqlQueryObject.setSortType(true);
  3266.             sqlQueryObject.setOffset(offset);
  3267.             sqlQueryObject.setLimit(limit);
  3268.    
  3269.             queryString = sqlQueryObject.createSQLQuery();
  3270.             stmt = con.prepareStatement(queryString);
  3271.    
  3272.             stmt.setLong(1, idProprietario);
  3273.    
  3274.             baseIdx = 1;
  3275.             for (int i = 0; i < erogazione.length; i++) {
  3276.                 stmt.setString(++baseIdx, erogazione[i].toString());
  3277.             }
  3278.             risultato = stmt.executeQuery();
  3279.    
  3280.             while (risultato.next()){
  3281.                 IDServizioApplicativo idSA = new IDServizioApplicativo();
  3282.                 idSA.setIdSoggettoProprietario(proprietario);
  3283.                 idSA.setNome(risultato.getString("nome"));              
  3284.                 lista.add(idSA);
  3285.             }
  3286.             risultato.close();
  3287.             stmt.close();
  3288.    
  3289.             return lista;
  3290.    
  3291.         } catch (Exception qe) {
  3292.             throw new DriverConfigurazioneException(getMessageError(nomeMetodo,  qe),qe);
  3293.         } finally {
  3294.    
  3295.             //Chiudo statement and resultset
  3296.             JDBCUtilities.closeResources(risultato, stmt);
  3297.    
  3298.             this.driver.closeConnection(con);
  3299.         }
  3300.     }
  3301. }