DriverRegistroServiziDB_accordiServiziCompostiDriver.java

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



  20. package org.openspcoop2.core.registry.driver.db;

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

  27. import org.openspcoop2.core.commons.CoreException;
  28. import org.openspcoop2.core.commons.DBUtils;
  29. import org.openspcoop2.core.commons.ISearch;
  30. import org.openspcoop2.core.commons.Liste;
  31. import org.openspcoop2.core.constants.CostantiDB;
  32. import org.openspcoop2.core.id.IDAccordoCooperazione;
  33. import org.openspcoop2.core.id.IDServizio;
  34. import org.openspcoop2.core.id.IDSoggetto;
  35. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  36. import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioComposto;
  37. import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioCompostoServizioComponente;
  38. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  39. import org.openspcoop2.core.registry.Documento;
  40. import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
  41. import org.openspcoop2.core.registry.constants.ProprietariDocumento;
  42. import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
  43. import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
  44. import org.openspcoop2.utils.jdbc.JDBCUtilities;
  45. import org.openspcoop2.utils.sql.ISQLQueryObject;
  46. import org.openspcoop2.utils.sql.SQLObjectFactory;

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

  57.     private DriverRegistroServiziDB driver = null;
  58.    
  59.     protected DriverRegistroServiziDB_accordiServiziCompostiDriver(DriverRegistroServiziDB driver) {
  60.         this.driver = driver;
  61.     }
  62.    
  63.     protected void readAccordoServizioComposto(AccordoServizioParteComune as,Connection conParam) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  64.         Connection con = null;
  65.         PreparedStatement stm = null;
  66.         ResultSet rs = null;
  67.         PreparedStatement stm2 = null;
  68.         ResultSet rs2 = null;
  69.         String sqlQuery = null;

  70.         try {
  71.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  72.             // prendo la connessione dal pool
  73.             if(conParam!=null)
  74.                 con = conParam;
  75.             else if (this.driver.atomica)
  76.                 con = this.driver.getConnectionFromDatasource("readAccordoServizioComposto");
  77.             else
  78.                 con = this.driver.globalConnection;

  79.             if(as.getId()==null || as.getId()<=0)
  80.                 throw new Exception("Accordo id non definito");

  81.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  82.             sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  83.             sqlQueryObject.addSelectField("*");
  84.             sqlQueryObject.addWhereCondition("id_accordo = ?");
  85.             sqlQueryObject.setANDLogicOperator(true);
  86.             sqlQuery = sqlQueryObject.createSQLQuery();
  87.             stm = con.prepareStatement(sqlQuery);
  88.             stm.setLong(1, as.getId());

  89.             this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, as.getId()));
  90.             rs = stm.executeQuery();

  91.             AccordoServizioParteComuneServizioComposto asComposto = null;
  92.             if (rs.next()) {

  93.                 asComposto = new AccordoServizioParteComuneServizioComposto();
  94.                 asComposto.setId(rs.getLong("id"));
  95.                 asComposto.setIdAccordoCooperazione(rs.getLong("id_accordo_cooperazione"));

  96.                 IDAccordoCooperazione idAccordoCooperazione = this.driver.getIdAccordoCooperazione(asComposto.getIdAccordoCooperazione(), con);
  97.                 String uriAccordo = this.driver.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordoCooperazione);
  98.                 asComposto.setAccordoCooperazione(uriAccordo);
  99.             }
  100.             rs.close();
  101.             stm.close();

  102.             if(asComposto!=null){

  103.                 // read servizi componenti
  104.                 sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  105.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPONENTI);
  106.                 sqlQueryObject.addSelectField("*");
  107.                 sqlQueryObject.addWhereCondition("id_servizio_composto = ?");
  108.                 sqlQueryObject.setANDLogicOperator(true);
  109.                 sqlQuery = sqlQueryObject.createSQLQuery();
  110.                 stm = con.prepareStatement(sqlQuery);
  111.                 stm.setLong(1, asComposto.getId());
  112.                 this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, asComposto.getId()));
  113.                 rs = stm.executeQuery();

  114.                 while (rs.next()) {

  115.                     AccordoServizioParteComuneServizioCompostoServizioComponente asComponente = new AccordoServizioParteComuneServizioCompostoServizioComponente();
  116.                     asComponente.setIdServizioComponente(rs.getLong("id_servizio_componente"));
  117.                     asComponente.setAzione(rs.getString("azione"));

  118.                     AccordoServizioParteSpecifica aspsServizioComponente = this.driver.getAccordoServizioParteSpecifica(asComponente.getIdServizioComponente(),con);
  119.                     asComponente.setTipo(aspsServizioComponente.getTipo());
  120.                     asComponente.setNome(aspsServizioComponente.getNome());
  121.                     asComponente.setVersione(aspsServizioComponente.getVersione());
  122.                     asComponente.setTipoSoggetto(aspsServizioComponente.getTipoSoggettoErogatore());
  123.                     asComponente.setNomeSoggetto(aspsServizioComponente.getNomeSoggettoErogatore());

  124.                     asComposto.addServizioComponente(asComponente);
  125.                 }
  126.                 rs.close();
  127.                 stm.close();


  128.                 // setto all'interno dell'accordo
  129.                 as.setServizioComposto(asComposto);
  130.             }

  131.         }catch (DriverRegistroServiziNotFound e) {
  132.             throw e;
  133.         }catch (Exception se) {
  134.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::readPortTypes] Exception :" + se.getMessage(),se);
  135.         } finally {

  136.             JDBCUtilities.closeResources(rs2, stm2);

  137.             JDBCUtilities.closeResources(rs, stm);

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

  139.         }
  140.     }

  141.    
  142.     protected List<AccordoServizioParteComune> accordiServizio_serviziComponentiConSoggettoErogatore(IDSoggetto idSoggetto) throws DriverRegistroServiziException {
  143.         String nomeMetodo = "accordiServizio_serviziComponentiConSoggettoErogatore";

  144.         String queryString;

  145.         Connection con = null;
  146.         PreparedStatement stmt = null;
  147.         ResultSet risultato = null;

  148.         ArrayList<AccordoServizioParteComune> idAccordoServizio = new ArrayList<AccordoServizioParteComune>();

  149.         if (this.driver.atomica) {
  150.             try {
  151.                 con = this.driver.getConnectionFromDatasource("accordiServizio_serviziComponentiConSoggettoErogatore");

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

  154.             }

  155.         } else
  156.             con = this.driver.globalConnection;

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

  158.         try {
  159.             ISQLQueryObject sqlQueryObjectSoggetti = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  160.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.SOGGETTI);
  161.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.ACCORDI);
  162.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  163.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPONENTI);
  164.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.SERVIZI);

  165.             sqlQueryObjectSoggetti.addSelectAliasField(CostantiDB.ACCORDI, "id","idAccordoServizio");

  166.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI+".id="+CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo");
  167.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id="+CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_composto");
  168.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_componente="+CostantiDB.SERVIZI+".id");
  169.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SOGGETTI+".id="+CostantiDB.SERVIZI+".id_soggetto");
  170.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto=?");
  171.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto=?");
  172.             sqlQueryObjectSoggetti.setANDLogicOperator(true);
  173.             queryString = sqlQueryObjectSoggetti.createSQLQuery();

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

  175.             stmt = con.prepareStatement(queryString);
  176.             stmt.setString(1,idSoggetto.getTipo());
  177.             stmt.setString(2,idSoggetto.getNome());
  178.             risultato = stmt.executeQuery();

  179.             while (risultato.next()) {

  180.                 long idAccordoServizioLong = risultato.getLong("idAccordoServizio");
  181.                 idAccordoServizio.add(this.driver.getAccordoServizioParteComune(idAccordoServizioLong));

  182.             }

  183.         } catch (Exception se) {

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

  186.             //Chiudo statement and resultset
  187.             JDBCUtilities.closeResources(risultato, stmt);

  188.             this.driver.closeConnection(con);
  189.         }


  190.         return idAccordoServizio;
  191.     }

  192.     protected List<AccordoServizioParteComune> accordiServizio_serviziComponenti(IDServizio idServizio) throws DriverRegistroServiziException {
  193.         String nomeMetodo = "accordiServizio_serviziComponenti";

  194.         String queryString;

  195.         Connection con = null;
  196.         PreparedStatement stmt = null;
  197.         ResultSet risultato = null;

  198.         ArrayList<AccordoServizioParteComune> idAccordoServizio = new ArrayList<AccordoServizioParteComune>();

  199.         if (this.driver.atomica) {
  200.             try {
  201.                 con = this.driver.getConnectionFromDatasource("accordiServizio_serviziComponenti");

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

  204.             }

  205.         } else
  206.             con = this.driver.globalConnection;

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

  208.         try {
  209.             ISQLQueryObject sqlQueryObjectSoggetti = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  210.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.SOGGETTI);
  211.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.ACCORDI);
  212.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  213.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPONENTI);
  214.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.SERVIZI);

  215.             sqlQueryObjectSoggetti.addSelectAliasField(CostantiDB.ACCORDI, "id","idAccordoServizio");

  216.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI+".id="+CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo");
  217.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id="+CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_composto");
  218.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_componente="+CostantiDB.SERVIZI+".id");
  219.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SOGGETTI+".id="+CostantiDB.SERVIZI+".id_soggetto");
  220.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SOGGETTI+".tipo_soggetto=?");
  221.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SOGGETTI+".nome_soggetto=?");
  222.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SERVIZI+".tipo_servizio=?");
  223.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SERVIZI+".nome_servizio=?");
  224.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.SERVIZI+".versione_servizio=?");
  225.             sqlQueryObjectSoggetti.setANDLogicOperator(true);
  226.             queryString = sqlQueryObjectSoggetti.createSQLQuery();

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

  228.             stmt = con.prepareStatement(queryString);
  229.             stmt.setString(1,idServizio.getSoggettoErogatore().getTipo());
  230.             stmt.setString(2,idServizio.getSoggettoErogatore().getNome());
  231.             stmt.setString(3, idServizio.getTipo());
  232.             stmt.setString(4, idServizio.getNome());
  233.             stmt.setInt(5, idServizio.getVersione());
  234.             risultato = stmt.executeQuery();

  235.             while (risultato.next()) {

  236.                 long idAccordoServizioLong = risultato.getLong("idAccordoServizio");
  237.                 idAccordoServizio.add(this.driver.getAccordoServizioParteComune(idAccordoServizioLong));

  238.             }

  239.         } catch (Exception se) {

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

  242.             //Chiudo statement and resultset
  243.             JDBCUtilities.closeResources(risultato, stmt);

  244.             this.driver.closeConnection(con);
  245.         }


  246.         return idAccordoServizio;
  247.     }


  248.     protected List<AccordoServizioParteComune> accordiServizioWithAccordoCooperazione(IDAccordoCooperazione idAccordoCooperazione) throws DriverRegistroServiziException {
  249.         String nomeMetodo = "accordiServizioWithAccordoCooperazione";

  250.         String queryString;

  251.         Connection con = null;
  252.         PreparedStatement stmt = null;
  253.         ResultSet risultato = null;

  254.         ArrayList<AccordoServizioParteComune> idAccordoServizio = new ArrayList<AccordoServizioParteComune>();

  255.         if (this.driver.atomica) {
  256.             try {
  257.                 con = this.driver.getConnectionFromDatasource("accordiServizioWithAccordoCooperazione");

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

  260.             }

  261.         } else
  262.             con = this.driver.globalConnection;

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

  264.         try {
  265.             ISQLQueryObject sqlQueryObjectSoggetti = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);

  266.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.ACCORDI);
  267.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  268.             sqlQueryObjectSoggetti.addFromTable(CostantiDB.ACCORDI_COOPERAZIONE);

  269.             sqlQueryObjectSoggetti.addSelectAliasField(CostantiDB.ACCORDI, "id","idAccordoServizio");

  270.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI+".id="+CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo");
  271.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo_cooperazione="+CostantiDB.ACCORDI_COOPERAZIONE+".id");
  272.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI_COOPERAZIONE+".nome=?");
  273.             sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI_COOPERAZIONE+".versione=?");
  274.             if(idAccordoCooperazione.getSoggettoReferente()!=null){
  275.                 sqlQueryObjectSoggetti.addWhereCondition(CostantiDB.ACCORDI_COOPERAZIONE+".id_referente=?");
  276.             }
  277.             sqlQueryObjectSoggetti.setANDLogicOperator(true);
  278.             queryString = sqlQueryObjectSoggetti.createSQLQuery();

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

  280.             stmt = con.prepareStatement(queryString);
  281.             stmt.setString(1,idAccordoCooperazione.getNome());
  282.             stmt.setInt(2,idAccordoCooperazione.getVersione());
  283.             if(idAccordoCooperazione.getSoggettoReferente()!=null){
  284.                 stmt.setLong(3, DBUtils.getIdSoggetto(idAccordoCooperazione.getSoggettoReferente().getNome(), idAccordoCooperazione.getSoggettoReferente().getTipo(), con, this.driver.tipoDB));
  285.             }
  286.             risultato = stmt.executeQuery();

  287.             while (risultato.next()) {

  288.                 long idAccordoServizioLong = risultato.getLong("idAccordoServizio");
  289.                 idAccordoServizio.add(this.driver.getAccordoServizioParteComune(idAccordoServizioLong));

  290.             }

  291.         } catch (Exception se) {

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

  294.             //Chiudo statement and resultset
  295.             JDBCUtilities.closeResources(risultato, stmt);

  296.             this.driver.closeConnection(con);
  297.         }


  298.         return idAccordoServizio;
  299.     }
  300.    
  301.     protected long getIdServizioCorrelato(String nomeServizio, String tipoServizio, String nomeProprietario, String tipoProprietario, Connection con) throws DriverRegistroServiziException {
  302.         PreparedStatement stm = null;
  303.         ResultSet rs = null;
  304.         long idSoggetto;
  305.         long idServizio = 0;
  306.         try {
  307.             idSoggetto = DBUtils.getIdSoggetto(nomeProprietario, tipoProprietario, con, this.driver.tipoDB, this.driver.tabellaSoggetti);

  308.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  309.             sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  310.             sqlQueryObject.addSelectField("*");
  311.             sqlQueryObject.addWhereCondition("tipo_servizio = ?");
  312.             sqlQueryObject.addWhereCondition("nome_servizio = ?");
  313.             sqlQueryObject.addWhereCondition("id_soggetto = ?");
  314.             sqlQueryObject.addWhereCondition("servizio_correlato = ?");
  315.             sqlQueryObject.setANDLogicOperator(true);
  316.             String query = sqlQueryObject.createSQLQuery();
  317.             stm = con.prepareStatement(query);
  318.             stm.setString(1, tipoServizio);
  319.             stm.setString(2, nomeServizio);
  320.             stm.setLong(3, idSoggetto);
  321.             stm.setString(4, CostantiRegistroServizi.ABILITATO.toString());
  322.             rs = stm.executeQuery();

  323.             if (rs.next()) {
  324.                 idServizio = rs.getLong("id");
  325.             }

  326.             return idServizio;

  327.         } catch (CoreException e) {
  328.             throw new DriverRegistroServiziException(e.getMessage(),e);
  329.         } catch (SQLException e) {
  330.             throw new DriverRegistroServiziException(e.getMessage(),e);
  331.         } catch (Exception e) {
  332.             throw new DriverRegistroServiziException(e.getMessage(),e);
  333.         } finally {
  334.             //Chiudo statement and resultset
  335.             JDBCUtilities.closeResources(rs, stm);

  336.         }
  337.     }
  338.    
  339.     protected List<AccordoServizioParteComuneServizioCompostoServizioComponente> accordiComponentiList(long idAccordo, ISearch ricerca) throws DriverRegistroServiziException {
  340.         String nomeMetodo = "accordiComponentiList";
  341.         int idLista = Liste.ACCORDI_COMPONENTI;
  342.         int offset;
  343.         int limit;
  344.         String search;
  345.         String queryString;

  346.         limit = ricerca.getPageSize(idLista);
  347.         offset = ricerca.getIndexIniziale(idLista);
  348.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  349.         ricerca.getSearchString(idLista);

  350.         Connection con = null;
  351.         PreparedStatement stmt = null;
  352.         ResultSet risultato = null;

  353.         ArrayList<AccordoServizioParteComuneServizioCompostoServizioComponente> lista = new ArrayList<AccordoServizioParteComuneServizioCompostoServizioComponente>();

  354.         if (this.driver.atomica) {
  355.             try {
  356.                 con = this.driver.getConnectionFromDatasource("accordiComponentiList");

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

  359.             }

  360.         } else
  361.             con = this.driver.globalConnection;

  362.         try {

  363.             /*
  364.              *  SELECT * from acc_serv_composti composti, acc_serv_componenti componenti
  365.              *  where composti.id_accordo=5 and composti.id=componenti.id_servizio_composto;

  366.              */
  367.             if (!search.equals("")) {
  368.                 //query con search
  369.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  370.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  371.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPONENTI);
  372.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  373.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  374.                 sqlQueryObject.addSelectCountField(CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_componente", "cont");
  375.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo = ?");
  376.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id = "+CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_composto");
  377.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id = "+CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_componente");
  378.                 sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".id = "+CostantiDB.SERVIZI+".id_soggetto");
  379.                 sqlQueryObject.addWhereCondition(false, sqlQueryObject.getWhereLikeCondition("tipo_soggetto",search,true,true),
  380.                         sqlQueryObject.getWhereLikeCondition("nome_soggetto",search,true,true),
  381.                         sqlQueryObject.getWhereLikeCondition("tipo_servizio",search,true,true),
  382.                         sqlQueryObject.getWhereLikeCondition("nome_servizio",search,true,true));
  383.                 sqlQueryObject.setANDLogicOperator(true);
  384.                 queryString = sqlQueryObject.createSQLQuery();
  385.             } else {
  386.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  387.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  388.                 sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPONENTI);
  389.                 sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  390.                 sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);
  391.                 sqlQueryObject.addSelectCountField(CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_componente", "cont");
  392.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo = ?");
  393.                 sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id = "+CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_composto");
  394.                 sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id = "+CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_componente");
  395.                 sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".id = "+CostantiDB.SERVIZI+".id_soggetto");
  396.                 sqlQueryObject.setANDLogicOperator(true);
  397.                 queryString = sqlQueryObject.createSQLQuery();
  398.             }

  399.             stmt = con.prepareStatement(queryString);
  400.             stmt.setLong(1,idAccordo);
  401.             risultato = stmt.executeQuery();
  402.             if (risultato.next())
  403.                 ricerca.setNumEntries(idLista,risultato.getInt("cont"));
  404.             risultato.close();
  405.             stmt.close();

  406.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  407.             sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPOSTO);
  408.             sqlQueryObject.addFromTable(CostantiDB.ACCORDI_SERVIZI_COMPONENTI);
  409.             sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
  410.             sqlQueryObject.addFromTable(CostantiDB.SOGGETTI);

  411.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI_SERVIZI_COMPONENTI,"id_servizio_componente");
  412.             sqlQueryObject.addSelectField(CostantiDB.ACCORDI_SERVIZI_COMPONENTI,"azione");
  413.             sqlQueryObject.addSelectField(CostantiDB.SOGGETTI,"tipo_soggetto");
  414.             sqlQueryObject.addSelectField(CostantiDB.SOGGETTI,"nome_soggetto");
  415.             sqlQueryObject.addSelectField(CostantiDB.SERVIZI,"tipo_servizio");
  416.             sqlQueryObject.addSelectField(CostantiDB.SERVIZI,"nome_servizio");

  417.             sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id_accordo = ?");
  418.             sqlQueryObject.addWhereCondition(CostantiDB.ACCORDI_SERVIZI_COMPOSTO+".id = "+CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_composto");
  419.             sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI+".id = "+CostantiDB.ACCORDI_SERVIZI_COMPONENTI+".id_servizio_componente");
  420.             sqlQueryObject.addWhereCondition(CostantiDB.SOGGETTI+".id = "+CostantiDB.SERVIZI+".id_soggetto");


  421.             if (limit == 0) // con limit
  422.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;

  423.             if (!search.equals("")) { // con search
  424.                 sqlQueryObject.addWhereCondition(false, sqlQueryObject.getWhereLikeCondition("tipo_soggetto",search,true,true),
  425.                         sqlQueryObject.getWhereLikeCondition("nome_soggetto",search,true,true),
  426.                         sqlQueryObject.getWhereLikeCondition("tipo_servizio",search,true,true),
  427.                         sqlQueryObject.getWhereLikeCondition("nome_servizio",search,true,true));
  428.             }

  429.             sqlQueryObject.setANDLogicOperator(true);

  430.             sqlQueryObject.addOrderBy("tipo_servizio");
  431.             sqlQueryObject.addOrderBy("nome_servizio");
  432.             sqlQueryObject.addOrderBy("tipo_soggetto");
  433.             sqlQueryObject.addOrderBy("nome_soggetto");
  434.             sqlQueryObject.setSortType(true);
  435.             sqlQueryObject.setLimit(limit);
  436.             sqlQueryObject.setOffset(offset);

  437.             queryString = sqlQueryObject.createSQLQuery();

  438.             stmt = con.prepareStatement(queryString);
  439.             stmt.setLong(1, idAccordo);
  440.             risultato = stmt.executeQuery();

  441.             while(risultato.next()){

  442.                 long idServizioComponente = risultato.getLong("id_servizio_componente");
  443.                 String azione = risultato.getString("azione");
  444.                 AccordoServizioParteComuneServizioCompostoServizioComponente asComponente = new AccordoServizioParteComuneServizioCompostoServizioComponente();
  445.                 asComponente.setAzione(azione);
  446.                 asComponente.setIdServizioComponente(idServizioComponente);
  447.                 asComponente.setTipo(risultato.getString("tipo_servizio"));
  448.                 asComponente.setNome(risultato.getString("nome_servizio"));
  449.                 asComponente.setTipoSoggetto(risultato.getString("tipo_soggetto"));
  450.                 asComponente.setNomeSoggetto(risultato.getString("nome_soggetto"));

  451.                 lista.add(asComponente);
  452.             }


  453.             return lista;

  454.         } catch (Exception se) {

  455.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  456.         } finally {
  457.             //Chiudo statement and resultset
  458.             JDBCUtilities.closeResources(risultato, stmt);
  459.             this.driver.closeConnection(con);
  460.         }
  461.     }

  462.     protected List<Documento> accordiCoopAllegatiList(long idAccordo, ISearch ricerca) throws DriverRegistroServiziException {
  463.         String nomeMetodo = "accordiCoopAllegatiList";
  464.         int idLista = Liste.ACCORDI_COOP_ALLEGATI;
  465.         int offset;
  466.         int limit;
  467.         String search;
  468.         String queryString;

  469.         limit = ricerca.getPageSize(idLista);
  470.         offset = ricerca.getIndexIniziale(idLista);
  471.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  472.         ricerca.getSearchString(idLista);

  473.         Connection con = null;
  474.         PreparedStatement stmt = null;
  475.         ResultSet risultato = null;

  476.         ArrayList<Documento> lista = new ArrayList<Documento>();

  477.         if (this.driver.atomica) {
  478.             try {
  479.                 con = this.driver.getConnectionFromDatasource("accordiCoopAllegatiList");

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

  482.             }

  483.         } else
  484.             con = this.driver.globalConnection;

  485.         try {

  486.             if (!search.equals("")) {
  487.                 //query con search
  488.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  489.                 sqlQueryObject.addFromTable(CostantiDB.DOCUMENTI);
  490.                 sqlQueryObject.addSelectCountField("*", "cont");
  491.                 sqlQueryObject.addWhereCondition("id_proprietario = ?");
  492.                 sqlQueryObject.addWhereCondition("tipo_proprietario = ?");
  493.                 sqlQueryObject.addWhereCondition(false,
  494.                         //sqlQueryObject.getWhereLikeCondition("ruolo",search,true,true),
  495.                         sqlQueryObject.getWhereLikeCondition("nome",search,true,true));
  496.                 sqlQueryObject.setANDLogicOperator(true);
  497.                 queryString = sqlQueryObject.createSQLQuery();
  498.             } else {
  499.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  500.                 sqlQueryObject.addFromTable(CostantiDB.DOCUMENTI);
  501.                 sqlQueryObject.addSelectCountField("*", "cont");
  502.                 sqlQueryObject.addWhereCondition("id_proprietario = ?");
  503.                 sqlQueryObject.addWhereCondition("tipo_proprietario = ?");
  504.                 sqlQueryObject.setANDLogicOperator(true);
  505.                 queryString = sqlQueryObject.createSQLQuery();
  506.             }

  507.             stmt = con.prepareStatement(queryString);
  508.             stmt.setLong(1,idAccordo);
  509.             stmt.setString(2, ProprietariDocumento.accordoCooperazione.toString());
  510.             risultato = stmt.executeQuery();
  511.             if (risultato.next())
  512.                 ricerca.setNumEntries(idLista,risultato.getInt("cont"));
  513.             risultato.close();
  514.             stmt.close();

  515.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  516.             sqlQueryObject.addFromTable(CostantiDB.DOCUMENTI);
  517.             sqlQueryObject.addSelectField("id");
  518.             sqlQueryObject.addSelectField("nome");
  519.             sqlQueryObject.addSelectField("ruolo");
  520.             sqlQueryObject.addSelectField("id_proprietario");
  521.             sqlQueryObject.addSelectField("tipo_proprietario");
  522.             //where
  523.             sqlQueryObject.addWhereCondition("id_proprietario = ?");
  524.             sqlQueryObject.addWhereCondition("tipo_proprietario = ?");

  525.             // ricavo le entries
  526.             if (limit == 0) // con limit
  527.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;

  528.             if (!search.equals("")) { // con search
  529.                 sqlQueryObject.addWhereCondition(false,
  530.                         //sqlQueryObject.getWhereLikeCondition("ruolo",search,true,true),
  531.                         sqlQueryObject.getWhereLikeCondition("nome",search,true,true));
  532.             }

  533.             sqlQueryObject.setANDLogicOperator(true);
  534.             sqlQueryObject.addOrderBy("nome");
  535.             sqlQueryObject.setSortType(true);
  536.             sqlQueryObject.setLimit(limit);
  537.             sqlQueryObject.setOffset(offset);
  538.             queryString = sqlQueryObject.createSQLQuery();

  539.             stmt = con.prepareStatement(queryString);
  540.             stmt.setLong(1, idAccordo);
  541.             stmt.setString(2, ProprietariDocumento.accordoCooperazione.toString());
  542.             risultato = stmt.executeQuery();

  543.             while(risultato.next()){
  544.                 Documento doc = DriverRegistroServiziDB_documentiLIB.getDocumento(risultato.getLong("id"),false, con, this.driver.tipoDB);
  545.                 lista.add(doc);
  546.             }

  547.             return lista;

  548.         } catch (Exception se) {

  549.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  550.         } finally {
  551.             //Chiudo statement and resultset
  552.             JDBCUtilities.closeResources(risultato, stmt);
  553.             this.driver.closeConnection(con);
  554.         }
  555.     }
  556. }