DriverRegistroServiziDB_accordiRestLIB.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.core.registry.driver.db;
- import static org.openspcoop2.core.constants.CostantiDB.CREATE;
- import static org.openspcoop2.core.constants.CostantiDB.DELETE;
- import static org.openspcoop2.core.constants.CostantiDB.UPDATE;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
- import org.openspcoop2.core.byok.IDriverBYOK;
- import org.openspcoop2.core.commons.DBUtils;
- import org.openspcoop2.core.constants.CostantiDB;
- import org.openspcoop2.core.constants.ProprietariProtocolProperty;
- import org.openspcoop2.core.registry.AccordoServizioParteComune;
- import org.openspcoop2.core.registry.Resource;
- import org.openspcoop2.core.registry.ResourceParameter;
- import org.openspcoop2.core.registry.ResourceRepresentation;
- import org.openspcoop2.core.registry.ResourceRequest;
- import org.openspcoop2.core.registry.ResourceResponse;
- import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
- import org.openspcoop2.core.registry.driver.IDAccordoFactory;
- import org.openspcoop2.utils.jdbc.JDBCUtilities;
- import org.openspcoop2.utils.sql.ISQLQueryObject;
- import org.openspcoop2.utils.sql.SQLObjectFactory;
- /**
- * Classe utilizzata per effettuare query ad un registro dei servizi openspcoop
- * formato db.
- *
- *
- * @author Sandra Giangrandi (sandra@link.it)
- * @author Stefano Corallo (corallo@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class DriverRegistroServiziDB_accordiRestLIB {
-
-
- public static int CRUDResource(int type, AccordoServizioParteComune as,Resource resource, Connection con, long idAccordo, IDriverBYOK driverBYOK) throws DriverRegistroServiziException {
- PreparedStatement updateStmt = null;
- String updateQuery;
- PreparedStatement selectStmt = null;
- ResultSet selectRS = null;
- int n = 0;
- if (idAccordo <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDResource] ID Accordo non valido.");
- try {
- switch (type) {
- case CREATE:
- // create
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.API_RESOURCES);
- sqlQueryObject.addInsertField("id_accordo", "?");
- sqlQueryObject.addInsertField("nome", "?");
- sqlQueryObject.addInsertField("descrizione", "?");
- sqlQueryObject.addInsertField("http_method", "?");
- sqlQueryObject.addInsertField("path", "?");
- sqlQueryObject.addInsertField("message_type", "?");
- sqlQueryObject.addInsertField("message_type_request", "?");
- sqlQueryObject.addInsertField("message_type_response", "?");
- sqlQueryObject.addInsertField("profilo_azione", "?");
- sqlQueryObject.addInsertField("filtro_duplicati", "?");
- sqlQueryObject.addInsertField("conferma_ricezione", "?");
- sqlQueryObject.addInsertField("identificativo_collaborazione", "?");
- sqlQueryObject.addInsertField("id_riferimento_richiesta", "?");
- sqlQueryObject.addInsertField("consegna_in_ordine", "?");
- sqlQueryObject.addInsertField("scadenza", "?");
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- int index = 1;
- updateStmt.setLong(index++, idAccordo);
- updateStmt.setString(index++, resource.getNome());
- updateStmt.setString(index++, resource.getDescrizione());
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getMethod()));
- if(resource.getPath()==null) {
- updateStmt.setString(index++, CostantiDB.API_RESOURCE_PATH_ALL_VALUE);
- }
- else {
- updateStmt.setString(index++, resource.getPath());
- }
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getMessageType()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getRequestMessageType()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getResponseMessageType()));
-
- DriverRegistroServiziDB_LIB.log.debug("Aggiungo resource ["+resource.getNome()+"] con profilo ["+resource.getProfAzione()+"]");
- updateStmt.setString(index++, resource.getProfAzione());
-
- if(CostantiRegistroServizi.PROFILO_AZIONE_RIDEFINITO.equals(resource.getProfAzione())){
- DriverRegistroServiziDB_LIB.log.debug("ridefinizione...");
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getFiltroDuplicati()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getConfermaRicezione()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getIdCollaborazione()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getIdRiferimentoRichiesta()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getConsegnaInOrdine()));
- updateStmt.setString(index++, resource.getScadenza());
- }else{
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getFiltroDuplicati()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getConfermaRicezione()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getIdCollaborazione()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getIdRiferimentoRichiesta()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getConsegnaInOrdine()));
- updateStmt.setString(index++, as.getScadenza());
- }
- // log.debug("CRUDAzione CREATE :
- // \n"+formatSQLString(updateQuery,idAccordo,idSoggettoFruitore,idConnettore,wsdlImplementativoErogatore,wsdlImplementativoFruitore));
- n = updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.log.debug("CRUDResource type = " + type + " row affected =" + n);
- break;
- case UPDATE:
- // update
- //
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addUpdateTable(CostantiDB.PORT_TYPE);
- sqlQueryObject.addUpdateField("descrizione", "?");
- sqlQueryObject.addUpdateField("http_method", "?");
- sqlQueryObject.addUpdateField("path", "?");
- sqlQueryObject.addUpdateField("message_type", "?");
- sqlQueryObject.addUpdateField("message_type_request", "?");
- sqlQueryObject.addUpdateField("message_type_response", "?");
- sqlQueryObject.addUpdateField("profilo_azione", "?");
- sqlQueryObject.addUpdateField("filtro_duplicati", "?");
- sqlQueryObject.addUpdateField("conferma_ricezione", "?");
- sqlQueryObject.addUpdateField("identificativo_collaborazione", "?");
- sqlQueryObject.addUpdateField("id_riferimento_richiesta", "?");
- sqlQueryObject.addUpdateField("consegna_in_ordine", "?");
- sqlQueryObject.addUpdateField("scadenza", "?");
- sqlQueryObject.addWhereCondition("id_accordo=?");
- sqlQueryObject.addWhereCondition("nome=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLUpdate();
- updateStmt = con.prepareStatement(updateQuery);
- index = 1;
- updateStmt.setString(index++, resource.getDescrizione());
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getMethod()));
- if(resource.getPath()==null) {
- updateStmt.setString(index++, CostantiDB.API_RESOURCE_PATH_ALL_VALUE);
- }
- else {
- updateStmt.setString(index++, resource.getPath());
- }
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getMessageType()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getRequestMessageType()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getResponseMessageType()));
-
- updateStmt.setString(index++, resource.getProfAzione());
-
- if(CostantiRegistroServizi.PROFILO_AZIONE_RIDEFINITO.equals(resource.getProfAzione())){
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getFiltroDuplicati()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getConfermaRicezione()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getIdCollaborazione()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getIdRiferimentoRichiesta()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(resource.getConsegnaInOrdine()));
- updateStmt.setString(index++, resource.getScadenza());
- }else{
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getFiltroDuplicati()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getConfermaRicezione()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getIdCollaborazione()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getIdRiferimentoRichiesta()));
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(as.getConsegnaInOrdine()));
- updateStmt.setString(index++, as.getScadenza());
- }
-
- updateStmt.setLong(index++, idAccordo);
- updateStmt.setString(index++, resource.getNome());
- n = updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.log.debug("CRUDResource type = " + type + " row affected =" + n);
- // log.debug("CRUDAzione UPDATE :
- // \n"+formatSQLString(updateQuery,wsdlImplementativoErogatore,wsdlImplementativoFruitore,
- // idServizio,idSoggettoFruitore,idConnettore));
- break;
- case DELETE:
- // delete
- Long idResource = 0l;
- if(resource.getId()==null || resource.getId()<=0){
- idResource = DBUtils.getIdResource(idAccordo, resource.getNome(), con);
- if(idResource==null || idResource<=0)
- throw new Exception("ID della risorsa ["+resource.getNome()+"] idAccordo["+idAccordo+"] non trovato");
- }
- else {
- idResource = resource.getId();
- }
-
- // gestione request
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_MEDIA);
- sqlQueryObject.addWhereCondition("id_resource_media=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idResource );
- updateStmt.executeUpdate();
- updateStmt.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_PARAMETER);
- sqlQueryObject.addWhereCondition("id_resource_parameter=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idResource);
- updateStmt.executeUpdate();
- updateStmt.close();
-
- // gestione response
- List<Long> idResourceResponse = new ArrayList<Long>();
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_RESPONSE);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("id_resource=?");
- updateQuery = sqlQueryObject.createSQLQuery();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idResource);
- selectRS=updateStmt.executeQuery();
- while(selectRS.next()){
- idResourceResponse.add(selectRS.getLong("id"));
- }
- selectRS.close();
- updateStmt.close();
-
- while(idResourceResponse.size()>0){
-
- long idRR = idResourceResponse.remove(0);
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_MEDIA);
- sqlQueryObject.addWhereCondition("id_resource_response_media=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idRR );
- updateStmt.executeUpdate();
- updateStmt.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_PARAMETER);
- sqlQueryObject.addWhereCondition("id_resource_response_par=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idRR);
- updateStmt.executeUpdate();
- updateStmt.close();
- }
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_RESPONSE);
- sqlQueryObject.addWhereCondition("id_resource=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idResource);
- updateStmt.executeUpdate();
- updateStmt.close();
-
- // elimino risorsa
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idResource);
- n = updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.log.debug("CRUDResource type = " + type + " row affected =" + n);
- // log.debug("CRUDAzione DELETE :
- // \n"+formatSQLString(updateQuery,idServizio,idSoggettoFruitore,idConnettore));
- break;
- }
- if ( (CostantiDB.CREATE == type) || (CostantiDB.UPDATE == type)) {
- Long idResource = DBUtils.getIdResource(idAccordo, resource.getNome(), con);
- if(idResource==null || idResource<=0)
- throw new Exception("ID della risorsa ["+resource.getNome()+"] idAccordo["+idAccordo+"] non trovato");
- DriverRegistroServiziDB_LIB.log.debug("ID risorsa: "+idResource);
- if ( CostantiDB.UPDATE == type ){
-
- if(resource.getRequest()!=null) {
- DriverRegistroServiziDB_accordiRestLIB.CRUDResourceRequest(CostantiDB.DELETE, as, resource, resource.getRequest(), con, idResource);
- DriverRegistroServiziDB_LIB.log.info("Cancellato dettagli di richiesta della risorsa ["+idResource+"] associata all'accordo "+idAccordo);
- }
-
- n = 0;
- for(int i=0;i<resource.sizeResponseList();i++){
- DriverRegistroServiziDB_accordiRestLIB.CRUDResourceResponse(CostantiDB.DELETE, as, resource, resource.getResponse(i), con, idResource);
- }
- DriverRegistroServiziDB_LIB.log.info("Cancellate "+n+" dettagli di risposta della risorsa ["+idResource+"] associata all'accordo "+idAccordo);
- }
- if(resource.getRequest()!=null) {
- DriverRegistroServiziDB_accordiRestLIB.CRUDResourceRequest(CostantiDB.CREATE, as, resource, resource.getRequest(), con, idResource);
- }
-
- for(int i=0;i<resource.sizeResponseList();i++){
- DriverRegistroServiziDB_accordiRestLIB.CRUDResourceResponse(CostantiDB.CREATE, as, resource, resource.getResponse(i), con, idResource);
- }
- DriverRegistroServiziDB_LIB.log.debug("inserite " + resource.sizeResponseList() + " dettagli di risposta relative alla risorsa ["+resource.getNome()+"] id-risorsa["+resource.getId()+"] dell'accordo :" + IDAccordoFactory.getInstance().getUriFromAccordo(as) + " id-accordo :" + idAccordo);
-
-
- // ProtocolProperties
- DriverRegistroServiziDB_LIB.CRUDProtocolProperty(type, resource.getProtocolPropertyList(),
- idResource, ProprietariProtocolProperty.RESOURCE, con, DriverRegistroServiziDB_LIB.tipoDB, driverBYOK);
- }
- return n;
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDResource] SQLException : " + se.getMessage(),se);
- } catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDResource] Exception : " + se.getMessage(),se);
- } finally {
- JDBCUtilities.closeResources(selectRS, selectStmt);
- JDBCUtilities.closeResources(updateStmt);
- }
- }
-
- public static void CRUDResourceRequest(int type, AccordoServizioParteComune as,Resource resource,ResourceRequest resourceRequest, Connection con, long idResource) throws DriverRegistroServiziException {
- _CRUDResourceRequestResponse(type, as, resource, resourceRequest, null, con, idResource);
- }
- public static void CRUDResourceResponse(int type, AccordoServizioParteComune as,Resource resource,ResourceResponse resourceResponse, Connection con, long idResource) throws DriverRegistroServiziException {
- _CRUDResourceRequestResponse(type, as, resource, null, resourceResponse, con, idResource);
- }
-
- private static void _CRUDResourceRequestResponse(int type, AccordoServizioParteComune as,Resource resource,
- ResourceRequest resourceRequest,ResourceResponse resourceResponse, Connection con, long idResource) throws DriverRegistroServiziException {
- PreparedStatement updateStmt = null;
- String updateQuery;
- PreparedStatement selectStmt = null;
- String selectQuery = "";
- ResultSet selectRS = null;
- long n = 0;
- if (idResource <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::_CRUDResourceRequestResponse] ID Risorda non valido.");
- try {
- switch (type) {
- case CREATE:
-
- long idFK = -1;
- if(resourceRequest!=null) {
- idFK = idResource;
- }
- else {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.API_RESOURCES_RESPONSE);
- sqlQueryObject.addInsertField("id_resource", "?");
- sqlQueryObject.addInsertField("descrizione", "?");
- sqlQueryObject.addInsertField("status", "?");
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- int index = 1;
- updateStmt.setLong(index++, idResource);
- updateStmt.setString(index++, resourceResponse.getDescrizione());
- updateStmt.setInt(index++, resourceResponse.getStatus());
- DriverRegistroServiziDB_LIB.log.debug("_CRUDResourceRequestResponse (RESPONSE) CREATE :\n"+updateQuery);
- n = updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.log.debug("_CRUDResourceRequestResponse (RESPONSE) type = " + type + " row affected =" + n);
-
- index = 1;
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_RESPONSE);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("id_resource = ?");
- sqlQueryObject.addWhereCondition("status = ?");
- sqlQueryObject.setANDLogicOperator(true);
- selectQuery = sqlQueryObject.createSQLQuery();
- selectStmt = con.prepareStatement(selectQuery);
- selectStmt.setLong(index++, idResource);
- selectStmt.setInt(index++, resourceResponse.getStatus());
- selectRS = selectStmt.executeQuery();
- if (selectRS.next()) {
- idFK = selectRS.getLong("id");
- }
- else {
- throw new Exception("Recupero dell'id della tabella '"+CostantiDB.API_RESOURCES_RESPONSE+"' con id_resource='"+idResource+"' e status='"+resourceResponse.getStatus()+"' non riuscito");
- }
- }
- if(idFK<=0) {
- throw new Exception("Recupero dell'id della tabella padre non riuscito");
- }
- if(resourceRequest!=null) {
- resourceRequest.setIdResource(idFK);
- }
- else {
- resourceResponse.setIdResource(idFK);
- }
-
- List<ResourceRepresentation> lRR = null;
- if(resourceRequest!=null) {
- lRR = resourceRequest.getRepresentationList();
- }
- else {
- lRR = resourceResponse.getRepresentationList();
- }
- for (ResourceRepresentation rr : lRR) {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.API_RESOURCES_MEDIA);
- if(resourceRequest!=null) {
- sqlQueryObject.addInsertField("id_resource_media", "?");
- }
- else {
- sqlQueryObject.addInsertField("id_resource_response_media", "?");
- }
- sqlQueryObject.addInsertField("media_type", "?");
- sqlQueryObject.addInsertField("message_type", "?");
- sqlQueryObject.addInsertField("nome", "?");
- sqlQueryObject.addInsertField("descrizione", "?");
- sqlQueryObject.addInsertField("tipo", "?");
- sqlQueryObject.addInsertField("xml_tipo", "?");
- sqlQueryObject.addInsertField("xml_name", "?");
- sqlQueryObject.addInsertField("xml_namespace", "?");
- sqlQueryObject.addInsertField("json_type", "?");
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- int index = 1;
- updateStmt.setLong(index++, idFK);
- updateStmt.setString(index++, rr.getMediaType());
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(rr.getMessageType()));
- updateStmt.setString(index++, rr.getNome());
- updateStmt.setString(index++, rr.getDescrizione());
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(rr.getRepresentationType()));
- updateStmt.setString(index++, rr.getXml()!=null ? DriverRegistroServiziDB_LIB.getValue(rr.getXml().getXmlType()) : null);
- updateStmt.setString(index++, rr.getXml()!=null ? rr.getXml().getNome() : null);
- updateStmt.setString(index++, rr.getXml()!=null ? rr.getXml().getNamespace() : null);
- updateStmt.setString(index++, rr.getJson()!=null ? rr.getJson().getTipo() : null);
- DriverRegistroServiziDB_LIB.log.debug("_CRUDResourceRequestResponse (MEDIA) CREATE :\n"+updateQuery);
- n = updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.log.debug("_CRUDResourceRequestResponse (MEDIA) type = " + type + " row affected =" + n);
- updateStmt.close();
-
- }
-
- List<ResourceParameter> lRP = null;
- if(resourceRequest!=null) {
- lRP = resourceRequest.getParameterList();
- }
- else {
- lRP = resourceResponse.getParameterList();
- }
- for (ResourceParameter rp : lRP) {
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.API_RESOURCES_PARAMETER);
- if(resourceRequest!=null) {
- sqlQueryObject.addInsertField("id_resource_parameter", "?");
- }
- else {
- sqlQueryObject.addInsertField("id_resource_response_par", "?");
- }
- sqlQueryObject.addInsertField("nome", "?");
- sqlQueryObject.addInsertField("descrizione", "?");
- sqlQueryObject.addInsertField("tipo_parametro", "?");
- sqlQueryObject.addInsertField("required", "?");
- sqlQueryObject.addInsertField("tipo", "?");
- sqlQueryObject.addInsertField("restrizioni", "?");
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- int index = 1;
- updateStmt.setLong(index++, idFK);
- updateStmt.setString(index++, rp.getNome());
- updateStmt.setString(index++, rp.getDescrizione());
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(rp.getParameterType()));
- updateStmt.setBoolean(index++, rp.isRequired());
- updateStmt.setString(index++, rp.getTipo());
- updateStmt.setString(index++, rp.getRestrizioni());
- DriverRegistroServiziDB_LIB.log.debug("_CRUDResourceRequestResponse (PARAMETER) CREATE :\n"+updateQuery);
- n = updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.log.debug("_CRUDResourceRequestResponse (PARAMETER) type = " + type + " row affected =" + n);
- updateStmt.close();
-
- }
-
- break;
- case UPDATE:
- throw new Exception("Not Implemented");
- //break;
- case DELETE:
- // delete
-
- // gestione request
- if(resourceRequest!=null) {
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_MEDIA);
- sqlQueryObject.addWhereCondition("id_resource_media=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idResource );
- updateStmt.executeUpdate();
- updateStmt.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_PARAMETER);
- sqlQueryObject.addWhereCondition("id_resource_parameter=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idResource);
- updateStmt.executeUpdate();
- updateStmt.close();
- }
- else {
-
- // gestione response
- List<Long> idResourceResponse = new ArrayList<Long>();
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.API_RESOURCES_RESPONSE);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("id_resource=?");
- updateQuery = sqlQueryObject.createSQLQuery();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idResource);
- selectRS=updateStmt.executeQuery();
- while(selectRS.next()){
- idResourceResponse.add(selectRS.getLong("id"));
- }
- selectRS.close();
- updateStmt.close();
-
- while(idResourceResponse.size()>0){
-
- long idRR = idResourceResponse.remove(0);
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_MEDIA);
- sqlQueryObject.addWhereCondition("id_resource_response_media=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idRR );
- updateStmt.executeUpdate();
- updateStmt.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_PARAMETER);
- sqlQueryObject.addWhereCondition("id_resource_response_par=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idRR);
- updateStmt.executeUpdate();
- updateStmt.close();
- }
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.API_RESOURCES_RESPONSE);
- sqlQueryObject.addWhereCondition("id_resource=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLDelete();
- updateStmt=con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idResource);
- updateStmt.executeUpdate();
- updateStmt.close();
-
- }
-
- break;
- }
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::_CRUDResourceRequestResponse] SQLException : " + se.getMessage(),se);
- } catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::_CRUDResourceRequestResponse] Exception : " + se.getMessage(),se);
- } finally {
- JDBCUtilities.closeResources(selectRS, selectStmt);
- JDBCUtilities.closeResources(updateStmt);
- }
- }
-
- }