DriverRegistroServiziDB_accordiRestDriver.java

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



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

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

  26. import org.openspcoop2.core.commons.Filtri;
  27. import org.openspcoop2.core.commons.ISearch;
  28. import org.openspcoop2.core.commons.Liste;
  29. import org.openspcoop2.core.commons.SearchUtils;
  30. import org.openspcoop2.core.constants.CostantiDB;
  31. import org.openspcoop2.core.constants.ProprietariProtocolProperty;
  32. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  33. import org.openspcoop2.core.registry.ProtocolProperty;
  34. import org.openspcoop2.core.registry.Resource;
  35. import org.openspcoop2.core.registry.ResourceParameter;
  36. import org.openspcoop2.core.registry.ResourceRepresentation;
  37. import org.openspcoop2.core.registry.ResourceRepresentationJson;
  38. import org.openspcoop2.core.registry.ResourceRepresentationXml;
  39. import org.openspcoop2.core.registry.ResourceRequest;
  40. import org.openspcoop2.core.registry.ResourceResponse;
  41. import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
  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_accordiRestDriver
  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_accordiRestDriver {

  57.     private DriverRegistroServiziDB driver = null;
  58.    
  59.     protected DriverRegistroServiziDB_accordiRestDriver(DriverRegistroServiziDB driver) {
  60.         this.driver = driver;
  61.     }
  62.    

  63.     protected void readResources(AccordoServizioParteComune as,Connection conParam, boolean readDatiRegistro) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  64.         // Aggiungo resource

  65.         Connection con = null;
  66.         PreparedStatement stm = null;
  67.         ResultSet rs = null;
  68.         String sqlQuery = null;

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

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

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

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

  93.             while (rs.next()) {

  94.                 Resource resource = new Resource();

  95.                 String tmp = rs.getString("nome");
  96.                 resource.setNome(((tmp == null || tmp.equals("")) ? null : tmp));

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

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

  101.                 tmp = rs.getString("path");
  102.                 if(tmp!=null) {
  103.                     if(CostantiDB.API_RESOURCE_PATH_ALL_VALUE.equals(tmp.trim())==false) {
  104.                         resource.setPath(tmp);
  105.                     }
  106.                 }
  107.                
  108.                 tmp = rs.getString("message_type");
  109.                 resource.setMessageType(DriverRegistroServiziDB_LIB.getEnumMessageType((tmp == null || tmp.equals("")) ? null : tmp));
  110.                
  111.                 tmp = rs.getString("message_type_request");
  112.                 resource.setRequestMessageType(DriverRegistroServiziDB_LIB.getEnumMessageType((tmp == null || tmp.equals("")) ? null : tmp));
  113.                
  114.                 tmp = rs.getString("message_type_response");
  115.                 resource.setResponseMessageType(DriverRegistroServiziDB_LIB.getEnumMessageType((tmp == null || tmp.equals("")) ? null : tmp));
  116.                
  117.                
  118.                 tmp = rs.getString("conferma_ricezione");
  119.                 resource.setConfermaRicezione(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(((tmp == null || tmp.equals("")) ? null : tmp)));

  120.                 tmp = rs.getString("consegna_in_ordine");
  121.                 resource.setConsegnaInOrdine(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(((tmp == null || tmp.equals("")) ? null : tmp)));

  122.                 tmp = rs.getString("filtro_duplicati");
  123.                 resource.setFiltroDuplicati(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(((tmp == null || tmp.equals("")) ? null : tmp)));

  124.                 tmp = rs.getString("identificativo_collaborazione");
  125.                 resource.setIdCollaborazione(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(((tmp == null || tmp.equals("")) ? null : tmp)));

  126.                 tmp = rs.getString("id_riferimento_richiesta");
  127.                 resource.setIdRiferimentoRichiesta(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(((tmp == null || tmp.equals("")) ? null : tmp)));

  128.                 tmp = rs.getString("scadenza");
  129.                 resource.setScadenza(((tmp == null || tmp.equals("")) ? null : tmp));

  130.                 tmp = rs.getString("profilo_azione");
  131.                 if (tmp == null || tmp.equals(""))
  132.                     resource.setProfAzione(CostantiRegistroServizi.PROFILO_AZIONE_DEFAULT);
  133.                 else
  134.                     resource.setProfAzione(tmp);
  135.                            
  136.                
  137.                 resource.setIdAccordo(as.getId());

  138.                 long idResource = rs.getLong("id");
  139.                 resource.setId(idResource);

  140.                 if(readDatiRegistro) {
  141.                     // Aggiungo dettagli della richiesta
  142.                     this.readResourcesDetails(resource,true,con);
  143.                    
  144.                     // Aggiungo dettagli della risposta
  145.                     this.readResourcesDetails(resource,false,con);
  146.                 }

  147.                 // Protocol Properties
  148.                 try{
  149.                     List<ProtocolProperty> listPP = DriverRegistroServiziDB_LIB.getListaProtocolProperty(idResource, ProprietariProtocolProperty.RESOURCE, con,
  150.                             this.driver.tipoDB, this.driver.getDriverUnwrapBYOK());
  151.                     if(listPP!=null && !listPP.isEmpty()){
  152.                         for (ProtocolProperty protocolProperty : listPP) {
  153.                             resource.addProtocolProperty(protocolProperty);
  154.                         }
  155.                     }
  156.                 }catch(DriverRegistroServiziNotFound dNotFound){
  157.                     // ignore
  158.                 }
  159.                
  160.                 as.addResource(resource);

  161.             }
  162.             rs.close();
  163.             stm.close();

  164.         }catch (DriverRegistroServiziNotFound e) {
  165.             throw e;
  166.         }catch (Exception se) {
  167.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::readResources] Exception :" + se.getMessage(),se);
  168.         } finally {

  169.             JDBCUtilities.closeResources(rs, stm);

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

  171.         }
  172.     }
  173.    
  174.     private void readResourcesDetails(Resource resource,boolean request, Connection conParam) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  175.         // Aggiungo resource

  176.         Connection con = null;
  177.         PreparedStatement stm = null;
  178.         ResultSet rs = null;
  179.         String sqlQuery = null;

  180.         try {
  181.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  182.             // prendo la connessione dal pool
  183.             if(conParam!=null)
  184.                 con = conParam;
  185.             else if (this.driver.atomica)
  186.                 con = this.driver.getConnectionFromDatasource("readResourcesDetails(request:"+request+")");
  187.             else
  188.                 con = this.driver.globalConnection;

  189.             if(resource.getId()==null || resource.getId()<=0)
  190.                 throw new Exception("Resource id non definito");

  191.             if(request) {
  192.                 resource.setRequest(new ResourceRequest());
  193.                 resource.getRequest().setIdResource(resource.getId());
  194.                
  195.                 List<ResourceRepresentation> l = this.readResourcesMedia(resource.getId(), true, con);
  196.                 if(l!=null && l.size() > 0) {
  197.                     resource.getRequest().getRepresentationList().addAll(l);
  198.                 }
  199.                
  200.                 List<ResourceParameter> lp = this.readResourcesParameters(resource.getId(), true, con);
  201.                 if(lp!=null && lp.size() > 0) {
  202.                     resource.getRequest().getParameterList().addAll(lp);
  203.                 }
  204.             }
  205.             else {
  206.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  207.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_RESPONSE);
  208.                 sqlQueryObject.addSelectField("*");
  209.                 sqlQueryObject.addWhereCondition("id_resource = ?");
  210.                 sqlQueryObject.addOrderBy("status");
  211.                 sqlQueryObject.setANDLogicOperator(true);
  212.                 sqlQuery = sqlQueryObject.createSQLQuery();
  213.                 stm = con.prepareStatement(sqlQuery);
  214.                 stm.setLong(1, resource.getId());
  215.                 this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, resource.getId()));
  216.                 rs = stm.executeQuery();
  217.                 while (rs.next()) {
  218.                    
  219.                     ResourceResponse rr = new ResourceResponse();
  220.                    
  221.                     rr.setIdResource(resource.getId());
  222.                    
  223.                     String tmp = rs.getString("descrizione");
  224.                     rr.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));
  225.                    
  226.                     int status = rs.getInt("status");
  227.                     rr.setStatus(status);
  228.                    
  229.                     long idRR = rs.getLong("id");
  230.                     rr.setId(idRR);
  231.                                        
  232.                     List<ResourceRepresentation> l = this.readResourcesMedia(idRR, false, con);
  233.                     if(l!=null && l.size() > 0) {
  234.                         rr.getRepresentationList().addAll(l);
  235.                     }
  236.                    
  237.                     List<ResourceParameter> lp = this.readResourcesParameters(idRR, false, con);
  238.                     if(lp!=null && lp.size() > 0) {
  239.                         rr.getParameterList().addAll(lp);
  240.                     }
  241.                    
  242.                     resource.addResponse(rr);
  243.                 }
  244.                 rs.close();
  245.                 stm.close();
  246.             }

  247.         }catch (DriverRegistroServiziNotFound e) {
  248.             throw e;
  249.         }catch (Exception se) {
  250.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::readResourcesDetails] Exception :" + se.getMessage(),se);
  251.         } finally {

  252.             JDBCUtilities.closeResources(rs, stm);

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

  254.         }
  255.     }
  256.    
  257.     private List<ResourceRepresentation> readResourcesMedia(long idResourceDetail,boolean request,Connection conParam) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  258.         // Aggiungo resource

  259.         Connection con = null;
  260.         PreparedStatement stm = null;
  261.         ResultSet rs = null;
  262.         String sqlQuery = null;

  263.         try {
  264.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  265.             // prendo la connessione dal pool
  266.             if(conParam!=null)
  267.                 con = conParam;
  268.             else if (this.driver.atomica)
  269.                 con = this.driver.getConnectionFromDatasource("readResourcesMedia("+idResourceDetail+")");
  270.             else
  271.                 con = this.driver.globalConnection;

  272.             if(idResourceDetail<=0)
  273.                 throw new Exception("ResourceDetail id non definito");

  274.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  275.             sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_MEDIA);
  276.             sqlQueryObject.addSelectField("*");
  277.             if(request) {
  278.                 sqlQueryObject.addWhereCondition("id_resource_media = ?");
  279.             }
  280.             else {
  281.                 sqlQueryObject.addWhereCondition("id_resource_response_media = ?");
  282.             }
  283.             sqlQueryObject.addOrderBy("media_type");
  284.             sqlQueryObject.setANDLogicOperator(true);
  285.             sqlQuery = sqlQueryObject.createSQLQuery();
  286.             stm = con.prepareStatement(sqlQuery);
  287.             stm.setLong(1, idResourceDetail);


  288.             this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idResourceDetail));
  289.             rs = stm.executeQuery();
  290.            
  291.             List<ResourceRepresentation> list = new ArrayList<ResourceRepresentation>();
  292.            
  293.             while(rs.next()) {
  294.                
  295.                 ResourceRepresentation rr = new ResourceRepresentation();
  296.                                
  297.                 String tmp = rs.getString("media_type");
  298.                 rr.setMediaType(((tmp == null || tmp.equals("")) ? null : tmp));
  299.                
  300.                 tmp = rs.getString("message_type");
  301.                 rr.setMessageType(DriverRegistroServiziDB_LIB.getEnumMessageType((tmp == null || tmp.equals("")) ? null : tmp));
  302.                
  303.                 tmp = rs.getString("nome");
  304.                 rr.setNome(((tmp == null || tmp.equals("")) ? null : tmp));
  305.                
  306.                 tmp = rs.getString("descrizione");
  307.                 rr.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));
  308.                
  309.                 tmp = rs.getString("tipo");
  310.                 rr.setRepresentationType(DriverRegistroServiziDB_LIB.getEnumRepresentationType((tmp == null || tmp.equals("")) ? null : tmp));
  311.                
  312.                 if(rr.getRepresentationType()!=null) {
  313.                     switch (rr.getRepresentationType()) {
  314.                     case XML:
  315.                        
  316.                         ResourceRepresentationXml xml = new ResourceRepresentationXml();
  317.                        
  318.                         tmp = rs.getString("xml_tipo");
  319.                         xml.setXmlType(DriverRegistroServiziDB_LIB.getEnumRepresentationXmlType((tmp == null || tmp.equals("")) ? null : tmp));
  320.                        
  321.                         tmp = rs.getString("xml_name");
  322.                         xml.setNome(((tmp == null || tmp.equals("")) ? null : tmp));
  323.                        
  324.                         tmp = rs.getString("xml_namespace");
  325.                         xml.setNamespace(((tmp == null || tmp.equals("")) ? null : tmp));
  326.                        
  327.                         rr.setXml(xml);
  328.                        
  329.                         break;
  330.    
  331.                     case JSON:
  332.                        
  333.                         ResourceRepresentationJson json = new ResourceRepresentationJson();
  334.                        
  335.                         tmp = rs.getString("json_type");
  336.                         json.setTipo(((tmp == null || tmp.equals("")) ? null : tmp));
  337.                        
  338.                         rr.setJson(json);
  339.                        
  340.                         break;
  341.                     }
  342.                 }
  343.                
  344.                 long idRR = rs.getLong("id");
  345.                 rr.setId(idRR);
  346.                
  347.                 list.add(rr);
  348.            
  349.             }
  350.             rs.close();
  351.             stm.close();
  352.            
  353.             return list;

  354.         }catch (DriverRegistroServiziNotFound e) {
  355.             throw e;
  356.         }catch (Exception se) {
  357.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::readResourcesMedia] Exception :" + se.getMessage(),se);
  358.         } finally {

  359.             JDBCUtilities.closeResources(rs, stm);

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

  361.         }
  362.     }
  363.    
  364.     private List<ResourceParameter> readResourcesParameters(long idResourceDetail,boolean request,Connection conParam) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
  365.         // Aggiungo resource

  366.         Connection con = null;
  367.         PreparedStatement stm = null;
  368.         ResultSet rs = null;
  369.         String sqlQuery = null;

  370.         try {
  371.             this.driver.logDebug("operazione atomica = " + this.driver.atomica);
  372.             // prendo la connessione dal pool
  373.             if(conParam!=null)
  374.                 con = conParam;
  375.             else if (this.driver.atomica)
  376.                 con = this.driver.getConnectionFromDatasource("readResourcesMedia("+idResourceDetail+")");
  377.             else
  378.                 con = this.driver.globalConnection;

  379.             if(idResourceDetail<=0)
  380.                 throw new Exception("ResourceDetail id non definito");

  381.             ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  382.             sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_PARAMETER);
  383.             sqlQueryObject.addSelectField("*");
  384.             if(request) {
  385.                 sqlQueryObject.addWhereCondition("id_resource_parameter = ?");
  386.             }
  387.             else {
  388.                 sqlQueryObject.addWhereCondition("id_resource_response_par = ?");
  389.             }
  390.             sqlQueryObject.addOrderBy("nome");
  391.             sqlQueryObject.setANDLogicOperator(true);
  392.             sqlQuery = sqlQueryObject.createSQLQuery();
  393.             stm = con.prepareStatement(sqlQuery);
  394.             stm.setLong(1, idResourceDetail);


  395.             this.driver.logDebug("eseguo query : " + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idResourceDetail));
  396.             rs = stm.executeQuery();
  397.            
  398.             List<ResourceParameter> list = new ArrayList<ResourceParameter>();
  399.            
  400.             while(rs.next()) {
  401.                
  402.                 ResourceParameter rr = new ResourceParameter();
  403.                                
  404.                 String tmp = rs.getString("nome");
  405.                 rr.setNome(((tmp == null || tmp.equals("")) ? null : tmp));
  406.                
  407.                 tmp = rs.getString("descrizione");
  408.                 rr.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));
  409.                
  410.                 tmp = rs.getString("tipo_parametro");
  411.                 rr.setParameterType(DriverRegistroServiziDB_LIB.getEnumParameterType((tmp == null || tmp.equals("")) ? null : tmp));
  412.                
  413.                 boolean req = rs.getBoolean("required");
  414.                 rr.setRequired(req);
  415.                
  416.                 tmp = rs.getString("tipo");
  417.                 rr.setTipo(((tmp == null || tmp.equals("")) ? null : tmp));
  418.                
  419.                 tmp = rs.getString("restrizioni");
  420.                 rr.setRestrizioni(((tmp == null || tmp.equals("")) ? null : tmp));
  421.                
  422.                 long idRR = rs.getLong("id");
  423.                 rr.setId(idRR);
  424.                
  425.                 list.add(rr);
  426.            
  427.             }
  428.             rs.close();
  429.             stm.close();
  430.            
  431.             return list;
  432.            
  433.         }catch (DriverRegistroServiziNotFound e) {
  434.             throw e;
  435.         }catch (Exception se) {
  436.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::readResourcesParameters] Exception :" + se.getMessage(),se);
  437.         } finally {

  438.             JDBCUtilities.closeResources(rs, stm);

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

  440.         }
  441.     }
  442.    
  443.     protected List<Resource> accordiResourceList(long idAccordo, ISearch ricerca) throws DriverRegistroServiziException {
  444.         String nomeMetodo = "accordiResourceList";
  445.         int idLista = Liste.ACCORDI_API_RESOURCES;
  446.         int offset;
  447.         int limit;
  448.         String search;
  449.         String queryString;

  450.         limit = ricerca.getPageSize(idLista);
  451.         offset = ricerca.getIndexIniziale(idLista);
  452.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  453.         ricerca.getSearchString(idLista);

  454.         String filterHttpMethod = SearchUtils.getFilter(ricerca, idLista, Filtri.FILTRO_HTTP_METHOD);
  455.         org.openspcoop2.core.registry.constants.HttpMethod httpMethod = null;
  456.         if(filterHttpMethod!=null) {
  457.             httpMethod = org.openspcoop2.core.registry.constants.HttpMethod.toEnumConstant(filterHttpMethod);
  458.         }
  459.        
  460.         this.driver.logDebug("search : " + search);
  461.         this.driver.logDebug("filterHttpMethod : " + filterHttpMethod);
  462.        
  463.         Connection con = null;
  464.         PreparedStatement stmt = null;
  465.         ResultSet risultato = null;

  466.         ArrayList<Resource> lista = new ArrayList<Resource>();

  467.         if (this.driver.atomica) {
  468.             try {
  469.                 con = this.driver.getConnectionFromDatasource("accordiResourceList");

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

  472.             }

  473.         } else
  474.             con = this.driver.globalConnection;

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

  476.         try {

  477.             if (!search.equals("")) {
  478.                 //query con search
  479.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  480.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES);
  481.                 sqlQueryObject.addSelectCountField("*", "cont");
  482.                 sqlQueryObject.addWhereCondition("id_accordo = ?");
  483.                 sqlQueryObject.addWhereCondition(false,
  484.                         //sqlQueryObject.getWhereLikeCondition("nome", search, true, true),
  485.                         //sqlQueryObject.getWhereLikeCondition("http_method", search, true, true),
  486.                         sqlQueryObject.getWhereLikeCondition("path", search, true, true));
  487.                 if(httpMethod!=null) {
  488.                     sqlQueryObject.addWhereCondition("http_method = ?");
  489.                 }
  490.                 sqlQueryObject.setANDLogicOperator(true);
  491.                 queryString = sqlQueryObject.createSQLQuery();
  492.             } else {
  493.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  494.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES);
  495.                 sqlQueryObject.addSelectCountField("*", "cont");
  496.                 sqlQueryObject.addWhereCondition("id_accordo = ?");
  497.                 if(httpMethod!=null) {
  498.                     sqlQueryObject.addWhereCondition("http_method = ?");
  499.                 }
  500.                 sqlQueryObject.setANDLogicOperator(true);
  501.                 queryString = sqlQueryObject.createSQLQuery();
  502.             }
  503.             stmt = con.prepareStatement(queryString);
  504.             int index = 1;
  505.             stmt.setLong(index++,idAccordo);
  506.             if(httpMethod!=null) {
  507.                 stmt.setString(index++,httpMethod.name());
  508.             }
  509.             risultato = stmt.executeQuery();
  510.             if (risultato.next())
  511.                 ricerca.setNumEntries(idLista,risultato.getInt("cont"));
  512.             risultato.close();
  513.             stmt.close();

  514.             // ricavo le entries
  515.             if (limit == 0) // con limit
  516.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  517.             if (!search.equals("")) { // con search
  518.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  519.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES);
  520.                 sqlQueryObject.addSelectField("id_accordo");
  521.                 sqlQueryObject.addSelectField("nome");
  522.                 sqlQueryObject.addSelectField("descrizione");
  523.                 sqlQueryObject.addSelectField("http_method");
  524.                 sqlQueryObject.addSelectField("path");
  525.                 sqlQueryObject.addSelectField("message_type");
  526.                 sqlQueryObject.addSelectField("conferma_ricezione");
  527.                 sqlQueryObject.addSelectField("consegna_in_ordine");
  528.                 sqlQueryObject.addSelectField("filtro_duplicati");
  529.                 sqlQueryObject.addSelectField("identificativo_collaborazione");
  530.                 sqlQueryObject.addSelectField("id_riferimento_richiesta");
  531.                 sqlQueryObject.addSelectField("scadenza");
  532.                 sqlQueryObject.addSelectField("profilo_azione");
  533.                 sqlQueryObject.addSelectField("id");
  534.                 sqlQueryObject.addWhereCondition("id_accordo = ?");
  535.                 sqlQueryObject.addWhereCondition(false,
  536.                         //sqlQueryObject.getWhereLikeCondition("nome", search, true, true),
  537.                         //sqlQueryObject.getWhereLikeCondition("http_method", search, true, true),
  538.                         sqlQueryObject.getWhereLikeCondition("path", search, true, true));
  539.                 if(httpMethod!=null) {
  540.                     sqlQueryObject.addWhereCondition("http_method = ?");
  541.                 }
  542.                 sqlQueryObject.setANDLogicOperator(true);
  543.                 sqlQueryObject.addOrderBy("path");
  544.                 sqlQueryObject.addOrderBy("http_method");
  545.                 sqlQueryObject.setSortType(true);
  546.                 sqlQueryObject.setLimit(limit);
  547.                 sqlQueryObject.setOffset(offset);
  548.                 queryString = sqlQueryObject.createSQLQuery();
  549.             } else {
  550.                 // senza search
  551.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  552.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES);
  553.                 sqlQueryObject.addSelectField("id_accordo");
  554.                 sqlQueryObject.addSelectField("nome");
  555.                 sqlQueryObject.addSelectField("descrizione");
  556.                 sqlQueryObject.addSelectField("http_method");
  557.                 sqlQueryObject.addSelectField("path");
  558.                 sqlQueryObject.addSelectField("message_type");
  559.                 sqlQueryObject.addSelectField("conferma_ricezione");
  560.                 sqlQueryObject.addSelectField("consegna_in_ordine");
  561.                 sqlQueryObject.addSelectField("filtro_duplicati");
  562.                 sqlQueryObject.addSelectField("identificativo_collaborazione");
  563.                 sqlQueryObject.addSelectField("id_riferimento_richiesta");
  564.                 sqlQueryObject.addSelectField("scadenza");
  565.                 sqlQueryObject.addSelectField("profilo_azione");
  566.                 sqlQueryObject.addSelectField("id");
  567.                 sqlQueryObject.addWhereCondition("id_accordo = ?");
  568.                 if(httpMethod!=null) {
  569.                     sqlQueryObject.addWhereCondition("http_method = ?");
  570.                 }
  571.                 sqlQueryObject.setANDLogicOperator(true);
  572.                 sqlQueryObject.addOrderBy("path");
  573.                 sqlQueryObject.addOrderBy("http_method");
  574.                 sqlQueryObject.setSortType(true);
  575.                 sqlQueryObject.setLimit(limit);
  576.                 sqlQueryObject.setOffset(offset);
  577.                 queryString = sqlQueryObject.createSQLQuery();
  578.             }
  579.             stmt = con.prepareStatement(queryString);
  580.             index = 1;
  581.             stmt.setLong(index++, idAccordo);
  582.             if(httpMethod!=null) {
  583.                 stmt.setString(index++,httpMethod.name());
  584.             }
  585.             risultato = stmt.executeQuery();

  586.             while (risultato.next()) {
  587.                
  588.                 Resource resource = new Resource();

  589.                 String tmp = risultato.getString("nome");
  590.                 resource.setNome(((tmp == null || tmp.equals("")) ? null : tmp));

  591.                 tmp = risultato.getString("descrizione");
  592.                 resource.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));

  593.                 tmp = risultato.getString("http_method");
  594.                 resource.setMethod(DriverRegistroServiziDB_LIB.getEnumHttpMethod(((tmp == null || tmp.equals("")) ? null : tmp)));

  595.                 tmp = risultato.getString("path");
  596.                 if(tmp!=null) {
  597.                     if(CostantiDB.API_RESOURCE_PATH_ALL_VALUE.equals(tmp.trim())==false) {
  598.                         resource.setPath(tmp);
  599.                     }
  600.                 }
  601.                
  602.                 resource.setConfermaRicezione(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(risultato.getString("conferma_ricezione")));
  603.                 resource.setConsegnaInOrdine(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(risultato.getString("consegna_in_ordine")));
  604.                 resource.setFiltroDuplicati(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(risultato.getString("filtro_duplicati")));
  605.                 resource.setIdCollaborazione(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(risultato.getString("identificativo_collaborazione")));
  606.                 resource.setIdRiferimentoRichiesta(DriverRegistroServiziDB_LIB.getEnumStatoFunzionalita(risultato.getString("id_riferimento_richiesta")));
  607.                 resource.setScadenza(risultato.getString("scadenza"));
  608.                 resource.setProfAzione(risultato.getString("profilo_azione"));
  609.                
  610.                 tmp = risultato.getString("message_type");
  611.                 resource.setMessageType(DriverRegistroServiziDB_LIB.getEnumMessageType((tmp == null || tmp.equals("")) ? null : tmp));
  612.                
  613.                 resource.setIdAccordo(risultato.getLong("id_accordo"));

  614.                 long idResource = risultato.getLong("id");
  615.                 resource.setId(idResource);
  616.                
  617.                 lista.add(resource);
  618.             }

  619.             return lista;

  620.         } catch (Exception se) {

  621.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  622.         } finally {
  623.             //Chiudo statement and resultset
  624.             JDBCUtilities.closeResources(risultato, stmt);
  625.             this.driver.closeConnection(con);
  626.         }
  627.     }
  628.    
  629.     protected List<ResourceResponse> accordiResourceResponseList(long idRisorsa, ISearch ricerca) throws DriverRegistroServiziException {
  630.         String nomeMetodo = "accordiResourceResponseList";
  631.         int idLista = Liste.ACCORDI_API_RESOURCES_RESPONSE;
  632.         int offset;
  633.         int limit;
  634.         String search;
  635.         String queryString;

  636.         limit = ricerca.getPageSize(idLista);
  637.         offset = ricerca.getIndexIniziale(idLista);
  638.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  639.         ricerca.getSearchString(idLista);

  640.         Connection con = null;
  641.         PreparedStatement stmt = null;
  642.         ResultSet risultato = null;

  643.         ArrayList<ResourceResponse> lista = new ArrayList<ResourceResponse>();

  644.         if (this.driver.atomica) {
  645.             try {
  646.                 con = this.driver.getConnectionFromDatasource("accordiResourceList");

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

  649.             }

  650.         } else
  651.             con = this.driver.globalConnection;

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

  653.         try {

  654.             if (!search.equals("")) {
  655.                 //query con search
  656.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  657.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_RESPONSE);
  658.                 sqlQueryObject.addSelectCountField("*", "cont");
  659.                 sqlQueryObject.addWhereCondition("id_resource = ?");
  660.                 sqlQueryObject.addWhereCondition(false,
  661.                         sqlQueryObject.getWhereLikeCondition("descrizione", search, true, true),
  662.                         "status = ?");
  663.                 sqlQueryObject.setANDLogicOperator(true);
  664.                 queryString = sqlQueryObject.createSQLQuery();
  665.             } else {
  666.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  667.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_RESPONSE);
  668.                 sqlQueryObject.addSelectCountField("*", "cont");
  669.                 sqlQueryObject.addWhereCondition("id_resource = ?");
  670.                 queryString = sqlQueryObject.createSQLQuery();
  671.             }
  672.             stmt = con.prepareStatement(queryString);
  673.             stmt.setLong(1,idRisorsa);
  674.             if (!search.equals("")) {
  675.                 try {
  676.                     stmt.setInt(2,Integer.parseInt(search));
  677.                 }catch(Exception e) {
  678.                     stmt.setInt(2,-1);  
  679.                 }
  680.             }
  681.             risultato = stmt.executeQuery();
  682.             if (risultato.next())
  683.                 ricerca.setNumEntries(idLista,risultato.getInt("cont"));
  684.             risultato.close();
  685.             stmt.close();

  686.             // ricavo le entries
  687.             if (limit == 0) // con limit
  688.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  689.             if (!search.equals("")) { // con search
  690.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  691.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_RESPONSE);
  692.                 sqlQueryObject.addSelectField("id_resource");
  693.                 sqlQueryObject.addSelectField("descrizione");
  694.                 sqlQueryObject.addSelectField("status");
  695.                 sqlQueryObject.addSelectField("id");
  696.                 sqlQueryObject.addWhereCondition("id_resource = ?");
  697.                 sqlQueryObject.addWhereCondition(false,
  698.                         sqlQueryObject.getWhereLikeCondition("descrizione", search, true, true),
  699.                         "status = ?");
  700.                 sqlQueryObject.setANDLogicOperator(true);
  701.                 sqlQueryObject.addOrderBy("status");
  702.                 sqlQueryObject.setSortType(true);
  703.                 sqlQueryObject.setLimit(limit);
  704.                 sqlQueryObject.setOffset(offset);
  705.                 queryString = sqlQueryObject.createSQLQuery();
  706.             } else {
  707.                 // senza search
  708.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  709.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_RESPONSE);
  710.                 sqlQueryObject.addSelectField("id_resource");
  711.                 sqlQueryObject.addSelectField("descrizione");
  712.                 sqlQueryObject.addSelectField("status");
  713.                 sqlQueryObject.addSelectField("id");
  714.                 sqlQueryObject.addWhereCondition("id_resource = ?");
  715.                 sqlQueryObject.addOrderBy("status");
  716.                 sqlQueryObject.setSortType(true);
  717.                 sqlQueryObject.setLimit(limit);
  718.                 sqlQueryObject.setOffset(offset);
  719.                 queryString = sqlQueryObject.createSQLQuery();
  720.             }
  721.             stmt = con.prepareStatement(queryString);
  722.             stmt.setLong(1, idRisorsa);
  723.             if (!search.equals("")) {
  724.                 try {
  725.                     stmt.setInt(2,Integer.parseInt(search));
  726.                 }catch(Exception e) {
  727.                     stmt.setInt(2,-1);  
  728.                 }
  729.             }
  730.             risultato = stmt.executeQuery();

  731.             while (risultato.next()) {
  732.                
  733.                 ResourceResponse resource = new ResourceResponse();

  734.                 resource.setStatus(risultato.getInt("status"));

  735.                 String tmp = risultato.getString("descrizione");
  736.                 resource.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));

  737.                 resource.setIdResource(risultato.getLong("id_resource"));

  738.                 long idResource = risultato.getLong("id");
  739.                 resource.setId(idResource);
  740.                
  741.                 lista.add(resource);
  742.             }

  743.             return lista;

  744.         } catch (Exception se) {

  745.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  746.         } finally {
  747.             //Chiudo statement and resultset
  748.             JDBCUtilities.closeResources(risultato, stmt);
  749.             this.driver.closeConnection(con);
  750.         }
  751.     }
  752.    
  753.     protected List<ResourceRepresentation> accordiResourceRepresentationsList(Long idRisorsa, boolean isRequest, Long idRisposta, ISearch ricerca)  throws DriverRegistroServiziException {
  754.         String nomeMetodo = "accordiResourceRepresentationsList";
  755.         int idLista = Liste.ACCORDI_API_RESOURCES_REPRESENTATION_REQUEST;
  756.         if(!isRequest)
  757.             idLista = Liste.ACCORDI_API_RESOURCES_REPRESENTATION_RESPONSE;
  758.         int offset;
  759.         int limit;
  760.         String search;
  761.         String queryString;

  762.         limit = ricerca.getPageSize(idLista);
  763.         offset = ricerca.getIndexIniziale(idLista);
  764.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  765.         ricerca.getSearchString(idLista);

  766.         Connection con = null;
  767.         PreparedStatement stmt = null;
  768.         ResultSet risultato = null;

  769.         ArrayList<ResourceRepresentation> lista = new ArrayList<ResourceRepresentation>();
  770.        
  771.         if (this.driver.atomica) {
  772.             try {
  773.                 con = this.driver.getConnectionFromDatasource("accordiPorttypeOperationMessagePartList");

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

  776.             }

  777.         } else
  778.             con = this.driver.globalConnection;

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

  780.         try {

  781.             if (!search.equals("")) {
  782.                 //query con search
  783.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  784.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_MEDIA);
  785.                 sqlQueryObject.addSelectCountField("*", "cont");
  786.                 if(isRequest)
  787.                     sqlQueryObject.addWhereCondition("id_resource_media = ?");
  788.                 else
  789.                     sqlQueryObject.addWhereCondition("id_resource_response_media = ?");
  790.                 sqlQueryObject.addWhereLikeCondition("media_type", search, true, true);
  791.                 sqlQueryObject.setANDLogicOperator(true);
  792.                 queryString = sqlQueryObject.createSQLQuery();
  793.             } else {
  794.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  795.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_MEDIA);
  796.                 sqlQueryObject.addSelectCountField("*", "cont");
  797.                 if(isRequest)
  798.                     sqlQueryObject.addWhereCondition("id_resource_media = ?");
  799.                 else
  800.                     sqlQueryObject.addWhereCondition("id_resource_response_media = ?");
  801.                 sqlQueryObject.setANDLogicOperator(true);
  802.                 queryString = sqlQueryObject.createSQLQuery();
  803.             }
  804.             stmt = con.prepareStatement(queryString);
  805.            
  806.             if(isRequest)
  807.                 stmt.setLong(1,idRisorsa);
  808.             else
  809.                 stmt.setLong(1,idRisposta);
  810.            
  811.             risultato = stmt.executeQuery();
  812.             if (risultato.next())
  813.                 ricerca.setNumEntries(idLista,risultato.getInt("cont"));
  814.             risultato.close();
  815.             stmt.close();

  816.             // ricavo le entries
  817.             if (limit == 0) // con limit
  818.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  819.             if (!search.equals("")) { // con search
  820.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  821.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_MEDIA);
  822.                 sqlQueryObject.addSelectField("id_resource_media");
  823.                 sqlQueryObject.addSelectField("id_resource_response_media");
  824.                 sqlQueryObject.addSelectField("media_type");
  825.                 sqlQueryObject.addSelectField("message_type");
  826.                 sqlQueryObject.addSelectField("nome");
  827.                 sqlQueryObject.addSelectField("descrizione");
  828.                 sqlQueryObject.addSelectField("tipo");
  829.                 sqlQueryObject.addSelectField("xml_tipo");
  830.                 sqlQueryObject.addSelectField("xml_name");
  831.                 sqlQueryObject.addSelectField("xml_namespace");
  832.                 sqlQueryObject.addSelectField("json_type");
  833.                 sqlQueryObject.addSelectField("id");
  834.                 if(isRequest)
  835.                     sqlQueryObject.addWhereCondition("id_resource_media = ?");
  836.                 else
  837.                     sqlQueryObject.addWhereCondition("id_resource_response_media = ?");
  838.                 sqlQueryObject.addWhereLikeCondition("media_type", search, true, true);
  839.                 sqlQueryObject.setANDLogicOperator(true);
  840.                 sqlQueryObject.addOrderBy("nome");
  841.                 sqlQueryObject.setSortType(true);
  842.                 sqlQueryObject.setLimit(limit);
  843.                 sqlQueryObject.setOffset(offset);
  844.                 queryString = sqlQueryObject.createSQLQuery();
  845.             } else {
  846.                 // senza search
  847.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  848.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_MEDIA);
  849.                 sqlQueryObject.addSelectField("id_resource_media");
  850.                 sqlQueryObject.addSelectField("id_resource_response_media");
  851.                 sqlQueryObject.addSelectField("media_type");
  852.                 sqlQueryObject.addSelectField("message_type");
  853.                 sqlQueryObject.addSelectField("nome");
  854.                 sqlQueryObject.addSelectField("descrizione");
  855.                 sqlQueryObject.addSelectField("tipo");
  856.                 sqlQueryObject.addSelectField("xml_tipo");
  857.                 sqlQueryObject.addSelectField("xml_name");
  858.                 sqlQueryObject.addSelectField("xml_namespace");
  859.                 sqlQueryObject.addSelectField("json_type");
  860.                 sqlQueryObject.addSelectField("id");
  861.                 if(isRequest)
  862.                     sqlQueryObject.addWhereCondition("id_resource_media = ?");
  863.                 else
  864.                     sqlQueryObject.addWhereCondition("id_resource_response_media = ?");
  865.                 sqlQueryObject.setANDLogicOperator(true);
  866.                 sqlQueryObject.addOrderBy("nome");
  867.                 sqlQueryObject.setSortType(true);
  868.                 sqlQueryObject.setLimit(limit);
  869.                 sqlQueryObject.setOffset(offset);
  870.                 queryString = sqlQueryObject.createSQLQuery();
  871.             }
  872.             stmt = con.prepareStatement(queryString);
  873.             if(isRequest)
  874.                 stmt.setLong(1,idRisorsa);
  875.             else
  876.                 stmt.setLong(1,idRisposta);
  877.             risultato = stmt.executeQuery();
  878.            
  879.             while (risultato.next()) {
  880.                 ResourceRepresentation rr = new ResourceRepresentation();
  881.                
  882.                 String tmp = risultato.getString("media_type");
  883.                 rr.setMediaType(((tmp == null || tmp.equals("")) ? null : tmp));
  884.                
  885.                 tmp = risultato.getString("message_type");
  886.                 rr.setMessageType(DriverRegistroServiziDB_LIB.getEnumMessageType((tmp == null || tmp.equals("")) ? null : tmp));
  887.                
  888.                 tmp = risultato.getString("nome");
  889.                 rr.setNome(((tmp == null || tmp.equals("")) ? null : tmp));
  890.                
  891.                 tmp = risultato.getString("descrizione");
  892.                 rr.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));
  893.                
  894.                 tmp = risultato.getString("tipo");
  895.                 rr.setRepresentationType(DriverRegistroServiziDB_LIB.getEnumRepresentationType((tmp == null || tmp.equals("")) ? null : tmp));
  896.                
  897.                 if(rr.getRepresentationType()!=null) {
  898.                     switch (rr.getRepresentationType()) {
  899.                     case XML:
  900.                        
  901.                         ResourceRepresentationXml xml = new ResourceRepresentationXml();
  902.                        
  903.                         tmp = risultato.getString("xml_tipo");
  904.                         xml.setXmlType(DriverRegistroServiziDB_LIB.getEnumRepresentationXmlType((tmp == null || tmp.equals("")) ? null : tmp));
  905.                        
  906.                         tmp = risultato.getString("xml_name");
  907.                         xml.setNome(((tmp == null || tmp.equals("")) ? null : tmp));
  908.                        
  909.                         tmp = risultato.getString("xml_namespace");
  910.                         xml.setNamespace(((tmp == null || tmp.equals("")) ? null : tmp));
  911.                        
  912.                         rr.setXml(xml);
  913.                        
  914.                         break;
  915.    
  916.                     case JSON:
  917.                        
  918.                         ResourceRepresentationJson json = new ResourceRepresentationJson();
  919.                        
  920.                         tmp = risultato.getString("json_type");
  921.                         json.setTipo(((tmp == null || tmp.equals("")) ? null : tmp));
  922.                        
  923.                         rr.setJson(json);
  924.                        
  925.                         break;
  926.                     }
  927.                 }
  928.                
  929.                 long idRR = risultato.getLong("id");
  930.                 rr.setId(idRR);
  931.                
  932.                 lista.add(rr);
  933.             }

  934.             return lista;

  935.         } catch (Exception se) {

  936.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  937.         } finally {
  938.             //Chiudo statement and resultset
  939.             JDBCUtilities.closeResources(risultato, stmt);
  940.             this.driver.closeConnection(con);
  941.         }
  942.     }
  943.    
  944.     protected List<ResourceParameter> accordiResourceParametersList(Long idRisorsa, boolean isRequest, Long idRisposta, ISearch ricerca)  throws DriverRegistroServiziException {
  945.         String nomeMetodo = "accordiResourceParametersList";
  946.         int idLista = Liste.ACCORDI_API_RESOURCES_PARAMETERS_REQUEST;
  947.         if(!isRequest)
  948.             idLista = Liste.ACCORDI_API_RESOURCES_PARAMETERS_RESPONSE;
  949.         int offset;
  950.         int limit;
  951.         String search;
  952.         String queryString;

  953.         limit = ricerca.getPageSize(idLista);
  954.         offset = ricerca.getIndexIniziale(idLista);
  955.         search = (org.openspcoop2.core.constants.Costanti.SESSION_ATTRIBUTE_VALUE_RICERCA_UNDEFINED.equals(ricerca.getSearchString(idLista)) ? "" : ricerca.getSearchString(idLista));
  956.         ricerca.getSearchString(idLista);

  957.         Connection con = null;
  958.         PreparedStatement stmt = null;
  959.         ResultSet risultato = null;

  960.         ArrayList<ResourceParameter> lista = new ArrayList<ResourceParameter>();
  961.        
  962.         if (this.driver.atomica) {
  963.             try {
  964.                 con = this.driver.getConnectionFromDatasource("accordiPorttypeOperationMessagePartList");

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

  967.             }

  968.         } else
  969.             con = this.driver.globalConnection;

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

  971.         try {

  972.             if (!search.equals("")) {
  973.                 //query con search
  974.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  975.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_PARAMETER);
  976.                 sqlQueryObject.addSelectCountField("*", "cont");
  977.                 if(isRequest)
  978.                     sqlQueryObject.addWhereCondition("id_resource_parameter = ?");
  979.                 else
  980.                     sqlQueryObject.addWhereCondition("id_resource_response_par = ?");
  981.                 sqlQueryObject.addWhereLikeCondition("nome", search, true, true);
  982.                 sqlQueryObject.setANDLogicOperator(true);
  983.                 queryString = sqlQueryObject.createSQLQuery();
  984.             } else {
  985.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  986.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_PARAMETER);
  987.                 sqlQueryObject.addSelectCountField("*", "cont");
  988.                 if(isRequest)
  989.                     sqlQueryObject.addWhereCondition("id_resource_parameter = ?");
  990.                 else
  991.                     sqlQueryObject.addWhereCondition("id_resource_response_par = ?");
  992.                 sqlQueryObject.setANDLogicOperator(true);
  993.                 queryString = sqlQueryObject.createSQLQuery();
  994.             }
  995.             stmt = con.prepareStatement(queryString);
  996.            
  997.             if(isRequest)
  998.                 stmt.setLong(1,idRisorsa);
  999.             else
  1000.                 stmt.setLong(1,idRisposta);
  1001.            
  1002.             risultato = stmt.executeQuery();
  1003.             if (risultato.next())
  1004.                 ricerca.setNumEntries(idLista,risultato.getInt("cont"));
  1005.             risultato.close();
  1006.             stmt.close();

  1007.             // ricavo le entries
  1008.             if (limit == 0) // con limit
  1009.                 limit = ISQLQueryObject.LIMIT_DEFAULT_VALUE;
  1010.             if (!search.equals("")) { // con search
  1011.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1012.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_PARAMETER);
  1013.                 sqlQueryObject.addSelectField("id_resource_parameter");
  1014.                 sqlQueryObject.addSelectField("id_resource_response_par");
  1015.                 sqlQueryObject.addSelectField("nome");
  1016.                 sqlQueryObject.addSelectField("descrizione");
  1017.                 sqlQueryObject.addSelectField("tipo_parametro");
  1018.                 sqlQueryObject.addSelectField("required");
  1019.                 sqlQueryObject.addSelectField("tipo");
  1020.                 sqlQueryObject.addSelectField("restrizioni");
  1021.                 sqlQueryObject.addSelectField("id");
  1022.                 if(isRequest)
  1023.                     sqlQueryObject.addWhereCondition("id_resource_parameter = ?");
  1024.                 else
  1025.                     sqlQueryObject.addWhereCondition("id_resource_response_par = ?");
  1026.                 sqlQueryObject.addWhereLikeCondition("nome", search, true, true);
  1027.                 sqlQueryObject.setANDLogicOperator(true);
  1028.                 sqlQueryObject.addOrderBy("tipo_parametro");
  1029.                 sqlQueryObject.addOrderBy("nome");
  1030.                 sqlQueryObject.setSortType(true);
  1031.                 sqlQueryObject.setLimit(limit);
  1032.                 sqlQueryObject.setOffset(offset);
  1033.                 queryString = sqlQueryObject.createSQLQuery();
  1034.             } else {
  1035.                 // senza search
  1036.                 ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(this.driver.tipoDB);
  1037.                 sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_PARAMETER);
  1038.                 sqlQueryObject.addSelectField("id_resource_parameter");
  1039.                 sqlQueryObject.addSelectField("id_resource_response_par");
  1040.                 sqlQueryObject.addSelectField("nome");
  1041.                 sqlQueryObject.addSelectField("descrizione");
  1042.                 sqlQueryObject.addSelectField("tipo_parametro");
  1043.                 sqlQueryObject.addSelectField("required");
  1044.                 sqlQueryObject.addSelectField("tipo");
  1045.                 sqlQueryObject.addSelectField("restrizioni");
  1046.                 sqlQueryObject.addSelectField("id");
  1047.                 if(isRequest)
  1048.                     sqlQueryObject.addWhereCondition("id_resource_parameter = ?");
  1049.                 else
  1050.                     sqlQueryObject.addWhereCondition("id_resource_response_par = ?");
  1051.                 sqlQueryObject.setANDLogicOperator(true);
  1052.                 sqlQueryObject.addOrderBy("tipo_parametro");
  1053.                 sqlQueryObject.addOrderBy("nome");
  1054.                 sqlQueryObject.setSortType(true);
  1055.                 sqlQueryObject.setLimit(limit);
  1056.                 sqlQueryObject.setOffset(offset);
  1057.                 queryString = sqlQueryObject.createSQLQuery();
  1058.             }
  1059.             stmt = con.prepareStatement(queryString);
  1060.             if(isRequest)
  1061.                 stmt.setLong(1,idRisorsa);
  1062.             else
  1063.                 stmt.setLong(1,idRisposta);
  1064.             risultato = stmt.executeQuery();
  1065.            
  1066.             while (risultato.next()) {
  1067.                 ResourceParameter rr = new ResourceParameter();
  1068.                
  1069.                 String tmp = risultato.getString("nome");
  1070.                 rr.setNome(((tmp == null || tmp.equals("")) ? null : tmp));
  1071.                
  1072.                 tmp = risultato.getString("descrizione");
  1073.                 rr.setDescrizione(((tmp == null || tmp.equals("")) ? null : tmp));
  1074.                
  1075.                 tmp = risultato.getString("tipo_parametro");
  1076.                 rr.setParameterType(DriverRegistroServiziDB_LIB.getEnumParameterType((tmp == null || tmp.equals("")) ? null : tmp));
  1077.                
  1078.                 boolean req = risultato.getBoolean("required");
  1079.                 rr.setRequired(req);
  1080.                
  1081.                 tmp = risultato.getString("tipo");
  1082.                 rr.setTipo(((tmp == null || tmp.equals("")) ? null : tmp));
  1083.                
  1084.                 tmp = risultato.getString("restrizioni");
  1085.                 rr.setRestrizioni(((tmp == null || tmp.equals("")) ? null : tmp));
  1086.                
  1087.                 long idRR = risultato.getLong("id");
  1088.                 rr.setId(idRR);
  1089.                
  1090.                 lista.add(rr);
  1091.             }

  1092.             return lista;

  1093.         } catch (Exception se) {

  1094.             throw new DriverRegistroServiziException("[DriverRegistroServiziDB::" + nomeMetodo + "] Exception: " + se.getMessage(),se);
  1095.         } finally {
  1096.             //Chiudo statement and resultset
  1097.             JDBCUtilities.closeResources(risultato, stmt);
  1098.             this.driver.closeConnection(con);
  1099.         }
  1100.     }
  1101. }