DriverRegistroServiziDB_accordiParteSpecificaLIB.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.sql.Timestamp;
- import java.util.ArrayList;
- import java.util.List;
- import org.openspcoop2.core.byok.IDriverBYOK;
- import org.openspcoop2.core.commons.CoreException;
- import org.openspcoop2.core.commons.DBUtils;
- import org.openspcoop2.core.constants.CostantiDB;
- import org.openspcoop2.core.constants.ProprietariProtocolProperty;
- import org.openspcoop2.core.id.IDAccordo;
- import org.openspcoop2.core.id.IDServizio;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.registry.ConfigurazioneServizioAzione;
- import org.openspcoop2.core.registry.Connettore;
- import org.openspcoop2.core.registry.Documento;
- import org.openspcoop2.core.registry.Fruitore;
- import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
- import org.openspcoop2.core.registry.constants.ProprietariDocumento;
- import org.openspcoop2.core.registry.constants.RuoliDocumento;
- import org.openspcoop2.core.registry.constants.StatoFunzionalita;
- import org.openspcoop2.core.registry.constants.TipologiaServizio;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
- import org.openspcoop2.core.registry.driver.IDAccordoFactory;
- import org.openspcoop2.core.registry.driver.IDServizioFactory;
- import org.openspcoop2.utils.date.DateManager;
- 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_accordiParteSpecificaLIB {
-
- /**
- * CRUD oggetto AccordoServizioParteSpecifica Non si occupa di chiudere la connessione con
- * il db in caso di errore in quanto verra' gestita dal metodo chiamante
- *
- * @param type
- * Tipo operazione {1 (CREATE),2 (UPDATE),3 (DELETE)}
- * @param asps
- * @param con
- * @throws DriverRegistroServiziException
- */
- public static long CRUDAccordoServizioParteSpecifica(int type, org.openspcoop2.core.registry.AccordoServizioParteSpecifica asps, Connection con,
- String tipoDatabase, IDriverBYOK driverBYOK) throws DriverRegistroServiziException {
- if (asps == null)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] asps non valido.");
- String nomeProprietario = asps.getNomeSoggettoErogatore();
- String tipoProprietario = asps.getTipoSoggettoErogatore();
- String nomeServizio = asps.getNome();
- String tipoServizio = asps.getTipo();
- Integer versioneServizio = asps.getVersione();
- String descrizione = asps.getDescrizione();
- String stato = asps.getStatoPackage();
- if (nomeProprietario == null || nomeProprietario.equals(""))
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] Parametro Nome Proprietario non valido.");
- if (tipoProprietario == null || tipoProprietario.equals(""))
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] Parametro Tipo Proprietario non valido.");
- if (nomeServizio == null || nomeServizio.equals(""))
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] Parametro Nome Servizio non valido.");
- if (tipoServizio == null || tipoServizio.equals(""))
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] Parametro Tipo Servizio non valido.");
- if (versioneServizio == null)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] Parametro Versione Servizio non valido.");
- Connettore connettore = null;
- if(asps.getConfigurazioneServizio()!=null){
- connettore = asps.getConfigurazioneServizio().getConnettore();
- }
- String wsdlImplementativoErogatore = (asps.getByteWsdlImplementativoErogatore()!=null ? new String(asps.getByteWsdlImplementativoErogatore()) : null );
- String wsdlImplementativoFruitore = (asps.getByteWsdlImplementativoFruitore()!=null ? new String(asps.getByteWsdlImplementativoFruitore()) : null );
-
- wsdlImplementativoErogatore = wsdlImplementativoErogatore!=null && !"".equals(wsdlImplementativoErogatore.trim().replace("\n", "")) ? wsdlImplementativoErogatore : null;
- wsdlImplementativoFruitore = wsdlImplementativoFruitore!=null && !"".equals(wsdlImplementativoFruitore.trim().replace("\n", "")) ? wsdlImplementativoFruitore : null;
-
- String superUser = asps.getSuperUser();
- StatoFunzionalita servizioCorrelato = (TipologiaServizio.CORRELATO.equals(asps.getTipologiaServizio()) ? CostantiRegistroServizi.ABILITATO : CostantiRegistroServizi.DISABILITATO);
- String portType = (asps.getPortType()!=null ? asps.getPortType() : null );
-
- long idSoggetto = -1;
- // Recupero IDAccordo
- long idAccordoLong = -1;
- try {
- //L accordo mi serve solo in caso di create/update
- if(type!=CostantiDB.DELETE){
- String uriAccordo = asps.getAccordoServizioParteComune();
- if(uriAccordo==null || uriAccordo.equals("")) throw new DriverRegistroServiziException("L'uri dell'Accordo di Servizio non puo essere null.");
- IDAccordo idAccordo = IDAccordoFactory.getInstance().getIDAccordoFromUri(uriAccordo);
- idAccordoLong = DBUtils.getIdAccordoServizioParteComune(idAccordo, con, DriverRegistroServiziDB_LIB.tipoDB);
- }
- } catch (Exception e) {
- DriverRegistroServiziDB_LIB.logError("Driver Error for get IDAccordo nome:["+asps.getAccordoServizioParteComune()+"].", e);
- throw new DriverRegistroServiziException(e);
- }
- try {
- String nomeS = nomeProprietario;
- String tipoS = tipoProprietario;
- idSoggetto = DBUtils.getIdSoggetto(nomeS, tipoS, con, DriverRegistroServiziDB_LIB.tipoDB);
- } catch (CoreException e) {
- DriverRegistroServiziDB_LIB.logError("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] getIdSoggetto failed: "+e.getMessage(), e);
- throw new DriverRegistroServiziException(e);
- }
- if (idSoggetto <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] Parametri non validi. Impossibile risalire all'id del soggettoo");
- //l'id accordo mi serve solo in caso di create/update
- if(idAccordoLong <= 0 && type!=CostantiDB.DELETE)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] Parametri non validi. Impossibile risalire all'id dell'accordo");
- long idConnettore;
- if (connettore == null && type != CostantiDB.CREATE && type!=CostantiDB.DELETE)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] Il Connettore non puo essere nullo.");
- PreparedStatement updateStmt = null;
- ResultSet updateRS = null;
- String updateQuery = "";
- try {
- long idServizio = 0;
- int n = 0;
- int sizeFruitori=0;
- int sizeAzioni=0;
- Fruitore fruitore;
- asps.setIdAccordo(idAccordoLong);
- switch (type) {
- case CREATE:
- // CREATE
- if (connettore == null) {
- connettore = new Connettore();
- connettore.setNome("CNT_" + tipoProprietario+"/"+nomeProprietario +"_"+ tipoServizio + "/" +nomeServizio+"/"+versioneServizio);
- }
- if (connettore.getNome() == null || connettore.getNome().equals("")) {
- // setto il nome del connettore
- connettore.setNome("CNT_" + tipoProprietario+"/"+nomeProprietario +"_"+ tipoServizio + "/" +nomeServizio+"/"+versioneServizio );
- }
- // creo il connettore del servizio
- idConnettore = DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(1, connettore, con, driverBYOK);
- String utenteRichiedente = null;
- if(asps.getProprietaOggetto()!=null && asps.getProprietaOggetto().getUtenteRichiedente()!=null) {
- utenteRichiedente = asps.getProprietaOggetto().getUtenteRichiedente();
- }
- else {
- utenteRichiedente = superUser;
- }
-
- Timestamp dataCreazione = null;
- if(asps.getProprietaOggetto()!=null && asps.getProprietaOggetto().getDataCreazione()!=null) {
- dataCreazione = new Timestamp(asps.getProprietaOggetto().getDataCreazione().getTime());
- }
- else if(asps.getOraRegistrazione()!=null){
- dataCreazione = new Timestamp(asps.getOraRegistrazione().getTime());
- }
- else {
- dataCreazione = DateManager.getTimestamp();
- }
-
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.SERVIZI);
- sqlQueryObject.addInsertField("nome_servizio", "?");
- sqlQueryObject.addInsertField("tipo_servizio", "?");
- sqlQueryObject.addInsertField("versione_servizio", "?");
- sqlQueryObject.addInsertField("id_soggetto", "?");
- sqlQueryObject.addInsertField("id_accordo", "?");
- sqlQueryObject.addInsertField("servizio_correlato", "?");
- sqlQueryObject.addInsertField("id_connettore", "?");
- sqlQueryObject.addInsertField("wsdl_implementativo_erogatore", "?");
- sqlQueryObject.addInsertField("wsdl_implementativo_fruitore", "?");
- sqlQueryObject.addInsertField("superuser", "?");
- sqlQueryObject.addInsertField("privato", "?");
- sqlQueryObject.addInsertField("port_type", "?");
- sqlQueryObject.addInsertField("profilo", "?");
- sqlQueryObject.addInsertField("descrizione", "?");
- if(stato!=null)
- sqlQueryObject.addInsertField("stato", "?");
- if(asps.getOraRegistrazione()!=null)
- sqlQueryObject.addInsertField("ora_registrazione", "?");
- sqlQueryObject.addInsertField("message_type", "?");
- if(utenteRichiedente!=null) {
- sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE, "?");
- }
- if(dataCreazione!=null) {
- sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE, "?");
- }
-
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- int index = 1;
- updateStmt.setString(index++, nomeServizio);
- updateStmt.setString(index++, tipoServizio);
- updateStmt.setInt(index++, versioneServizio);
- updateStmt.setLong(index++, idSoggetto);
- updateStmt.setLong(index++, idAccordoLong);
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(servizioCorrelato));
- updateStmt.setLong(index++, idConnettore);
- updateStmt.setString(index++, wsdlImplementativoErogatore);
- updateStmt.setString(index++, wsdlImplementativoFruitore);
- updateStmt.setString(index++, superUser);
- if(asps.getPrivato()!=null && asps.getPrivato())
- updateStmt.setInt(index++, 1);
- else
- updateStmt.setInt(index++, 0);
- updateStmt.setString(index++, portType);
- updateStmt.setString(index++, asps.getVersioneProtocollo());
- updateStmt.setString(index++, descrizione);
-
- if(stato!=null){
- updateStmt.setString(index++, stato);
- }
-
- if(asps.getOraRegistrazione()!=null){
- updateStmt.setTimestamp(index++, new Timestamp(asps.getOraRegistrazione().getTime()));
- }
-
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(asps.getMessageType()));
-
- if(utenteRichiedente!=null) {
- updateStmt.setString(index++, utenteRichiedente);
- }
-
- if(dataCreazione!=null) {
- updateStmt.setTimestamp(index++, dataCreazione);
- }
-
- // eseguo lo statement
- n = updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecifica CREATE : \n" +
- DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, nomeServizio, tipoServizio, versioneServizio,
- idSoggetto, idAccordoLong, servizioCorrelato, idConnettore, wsdlImplementativoErogatore, wsdlImplementativoFruitore, superUser));
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecifica type = " + type + " row affected =" + n);
-
- // recupero l'id del servizio inserito
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("nome_servizio = ?");
- sqlQueryObject.addWhereCondition("tipo_servizio = ?");
- sqlQueryObject.addWhereCondition("versione_servizio = ?");
- sqlQueryObject.addWhereCondition("id_soggetto = ?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLQuery();
- updateStmt = con.prepareStatement(updateQuery);
- updateStmt.setString(1, nomeServizio);
- updateStmt.setString(2, tipoServizio);
- updateStmt.setInt(3, versioneServizio);
- updateStmt.setLong(4, idSoggetto);
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecifica recupero l'id del servizio appena creato : \n" + DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, nomeServizio, tipoServizio, idSoggetto));
- updateRS = updateStmt.executeQuery();
- if (updateRS.next()) {
- idServizio = updateRS.getLong("id");
- }
- updateRS.close();
- updateStmt.close();
- if(idServizio<=0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica(addFruitore)] id servizio non recuperato");
- asps.setId(idServizio);
-
-
- // aggiungo fruitori
- sizeFruitori = asps.sizeFruitoreList();
- fruitore = null;
- for (int i = 0; i < sizeFruitori; i++) {
- fruitore = asps.getFruitore(i);
- DriverRegistroServiziDB_accordiParteSpecificaLIB.CRUDAccordoServizioParteSpecificaFruitore(1, fruitore, con, asps, driverBYOK);
- }
-
- // aggiungo azioni
- if(asps.getConfigurazioneServizio()!=null){
- sizeAzioni = asps.getConfigurazioneServizio().sizeConfigurazioneAzioneList();
- for (int i = 0; i < sizeAzioni; i++) {
- ConfigurazioneServizioAzione conf = asps.getConfigurazioneServizio().getConfigurazioneAzione(i);
- DriverRegistroServiziDB_accordiParteSpecificaLIB.CRUDAccordoServizioParteSpecificaAzioni(1, conf, con, asps, driverBYOK);
- }
- }
-
- // Documenti generici servizio
- List<Documento> documenti = new ArrayList<>();
- // Allegati
- for(int i=0; i<asps.sizeAllegatoList(); i++){
- Documento doc = asps.getAllegato(i);
- doc.setRuolo(RuoliDocumento.allegato.toString());
- documenti.add(doc);
- }
- // Specifiche Semiformali
- for(int i=0; i<asps.sizeSpecificaSemiformaleList(); i++){
- Documento doc = asps.getSpecificaSemiformale(i);
- doc.setRuolo(RuoliDocumento.specificaSemiformale.toString());
- documenti.add(doc);
- }
- // Specifiche Livelli di Servizio
- for(int i=0; i<asps.sizeSpecificaLivelloServizioList(); i++){
- Documento doc = asps.getSpecificaLivelloServizio(i);
- doc.setRuolo(RuoliDocumento.specificaLivelloServizio.toString());
- documenti.add(doc);
- }
- // Specifiche Sicurezza
- for(int i=0; i<asps.sizeSpecificaSicurezzaList(); i++){
- Documento doc = asps.getSpecificaSicurezza(i);
- doc.setRuolo(RuoliDocumento.specificaSicurezza.toString());
- documenti.add(doc);
- }
- // CRUD
- DriverRegistroServiziDB_documentiLIB.CRUDDocumento(CostantiDB.CREATE, documenti, idServizio, ProprietariDocumento.servizio, con, tipoDatabase);
-
- // ProtocolProperties
- DriverRegistroServiziDB_LIB.CRUDProtocolProperty(CostantiDB.CREATE, asps.getProtocolPropertyList(),
- idServizio, ProprietariProtocolProperty.ACCORDO_SERVIZIO_PARTE_SPECIFICA, con, DriverRegistroServiziDB_LIB.tipoDB, driverBYOK);
-
-
- break;
- case UPDATE:
- // UPDATE
- String oldNomeSoggetto = null;
- String oldTipoSoggetto = null;
- String oldNomeServizio = null;
- String oldTipoServizio = null;
- Integer oldVersioneServizio = null;
- if(asps.getOldIDServizioForUpdate()!=null){
- if(asps.getOldIDServizioForUpdate().getSoggettoErogatore()!=null){
- oldNomeSoggetto = asps.getOldIDServizioForUpdate().getSoggettoErogatore().getNome();
- oldTipoSoggetto = asps.getOldIDServizioForUpdate().getSoggettoErogatore().getTipo();
- }
- oldNomeServizio = asps.getOldIDServizioForUpdate().getNome();
- oldTipoServizio = asps.getOldIDServizioForUpdate().getTipo();
- oldVersioneServizio = asps.getOldIDServizioForUpdate().getVersione();
- }
- if (oldNomeServizio == null || oldNomeServizio.equals(""))
- oldNomeServizio = nomeServizio;
- if (oldTipoServizio == null || oldTipoServizio.equals(""))
- oldTipoServizio = tipoServizio;
- if (oldNomeSoggetto == null || oldNomeSoggetto.equals(""))
- oldNomeSoggetto = nomeProprietario;
- if (oldTipoSoggetto == null || oldTipoSoggetto.equals(""))
- oldTipoSoggetto = tipoProprietario;
- if (oldVersioneServizio == null)
- oldVersioneServizio = versioneServizio;
- //recupero id servizio
- idServizio = DBUtils.getIdServizio(oldNomeServizio, oldTipoServizio, oldVersioneServizio, oldNomeSoggetto, oldTipoSoggetto, con, DriverRegistroServiziDB_LIB.tipoDB);
- if (idServizio <= 0){
- // Puo' darsi che l'old soggetto e il nuovo soggetto siano la stesso soggetto della tabella. E' stato cambiato il nome.
- idServizio = DBUtils.getIdServizio(oldNomeServizio, oldTipoServizio, oldVersioneServizio, nomeProprietario, tipoProprietario, con, DriverRegistroServiziDB_LIB.tipoDB);
- }
- if (idServizio <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica(UPDATE)] Id Servizio non valido.");
- //recupero l'id del connettore
- idConnettore = DriverRegistroServiziDB_LIB.getIdConnettoreServizio(oldNomeServizio, oldTipoServizio, oldVersioneServizio, oldNomeSoggetto, oldTipoSoggetto, con);
- if (idConnettore <= 0){
- // Puo' darsi che l'old soggetto e il nuovo soggetto siano la stesso soggetto della tabella. E' stato cambiato il nome.
- idConnettore = DriverRegistroServiziDB_LIB.getIdConnettoreServizio(oldNomeServizio, oldTipoServizio, oldVersioneServizio, nomeProprietario, tipoProprietario, con);
- }
- if (idConnettore <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] id connettore nullo.");
- connettore.setId(idConnettore);
- String utenteUltimaModifica = null;
- if(asps.getProprietaOggetto()!=null && asps.getProprietaOggetto().getUtenteUltimaModifica()!=null) {
- utenteUltimaModifica = asps.getProprietaOggetto().getUtenteUltimaModifica();
- }
- else {
- utenteUltimaModifica = superUser;
- }
-
- Timestamp dataUltimaModifica = null;
- if(asps.getProprietaOggetto()!=null && asps.getProprietaOggetto().getDataUltimaModifica()!=null) {
- dataUltimaModifica = new Timestamp(asps.getProprietaOggetto().getDataUltimaModifica().getTime());
- }
- /**else {
- dataUltimaModifica = DateManager.getTimestamp();
- } Se presente si aggiorna, altrimenti no, e si mantiene il precedente valore per gestire le modifiche delle fruizioni */
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addUpdateTable(CostantiDB.SERVIZI);
- sqlQueryObject.addUpdateField("nome_servizio", "?");
- sqlQueryObject.addUpdateField("tipo_servizio", "?");
- sqlQueryObject.addUpdateField("versione_servizio", "?");
- sqlQueryObject.addUpdateField("id_soggetto", "?");
- sqlQueryObject.addUpdateField("id_accordo", "?");
- sqlQueryObject.addUpdateField("servizio_correlato", "?");
- sqlQueryObject.addUpdateField("id_connettore", "?");
- sqlQueryObject.addUpdateField("wsdl_implementativo_erogatore", "?");
- sqlQueryObject.addUpdateField("wsdl_implementativo_fruitore", "?");
- sqlQueryObject.addUpdateField("superuser", "?");
- sqlQueryObject.addUpdateField("privato", "?");
- sqlQueryObject.addUpdateField("port_type", "?");
- sqlQueryObject.addUpdateField("profilo", "?");
- sqlQueryObject.addUpdateField("descrizione", "?");
- if(stato!=null)
- sqlQueryObject.addUpdateField("stato", "?");
- if(asps.getOraRegistrazione()!=null)
- sqlQueryObject.addUpdateField("ora_registrazione", "?");
- sqlQueryObject.addUpdateField("message_type", "?");
- if(utenteUltimaModifica!=null) {
- sqlQueryObject.addUpdateField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA, "?");
- }
- if(dataUltimaModifica!=null) {
- sqlQueryObject.addUpdateField(CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA, "?");
- }
- sqlQueryObject.addWhereCondition("id=?");
- updateQuery = sqlQueryObject.createSQLUpdate();
- updateStmt = con.prepareStatement(updateQuery);
- index = 1;
-
- updateStmt.setString(index++, nomeServizio);
- updateStmt.setString(index++, tipoServizio);
- updateStmt.setInt(index++, versioneServizio);
- updateStmt.setLong(index++, idSoggetto);
- updateStmt.setLong(index++, idAccordoLong);
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(servizioCorrelato));
- updateStmt.setLong(index++, idConnettore);
- updateStmt.setString(index++, wsdlImplementativoErogatore);
- updateStmt.setString(index++, wsdlImplementativoFruitore);
- updateStmt.setString(index++, superUser);
- if(asps.getPrivato()!=null && asps.getPrivato())
- updateStmt.setInt(index++, 1);
- else
- updateStmt.setInt(index++, 0);
- updateStmt.setString(index++, portType);
- updateStmt.setString(index++, asps.getVersioneProtocollo());
- updateStmt.setString(index++, descrizione);
-
- if(stato!=null){
- updateStmt.setString(index++, stato);
- }
-
- if(asps.getOraRegistrazione()!=null){
- updateStmt.setTimestamp(index++, new Timestamp(asps.getOraRegistrazione().getTime()));
- }
-
- updateStmt.setString(index++, DriverRegistroServiziDB_LIB.getValue(asps.getMessageType()));
-
- if(utenteUltimaModifica!=null) {
- updateStmt.setString(index++, utenteUltimaModifica);
- }
-
- if(dataUltimaModifica!=null) {
- updateStmt.setTimestamp(index++, dataUltimaModifica);
- }
-
- updateStmt.setLong(index++, idServizio);
- // eseguo lo statement
- n = updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecifica type = " + type + " row affected =" + n);
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecifica UPDATE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, nomeServizio, tipoServizio, idSoggetto, idAccordoLong, servizioCorrelato, idConnettore, wsdlImplementativoErogatore, wsdlImplementativoFruitore, superUser, idServizio));
-
- // aggiorno nome connettore
- String newNomeConnettore = "CNT_" + tipoProprietario+"/"+nomeProprietario +"_"+ tipoServizio + "/" +nomeServizio+ "/"+versioneServizio;
- connettore.setNome(newNomeConnettore);
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(2, connettore, con, driverBYOK);
-
- //aggiorno fruitori
- //La lista dei fruitori del servizio contiene tutti e soli i fruitori di questo servizio
- //prima vengono cancellati i fruitori esistenti e poi vengono riaggiunti
- sizeFruitori = asps.sizeFruitoreList();
- fruitore = null;
- // NON POSSO: esistono i mapping
- // //cancellazione
- /** DriverRegistroServiziDB_LIB.deleteAllFruitoriServizio(idServizio, con);
- // //creazione
- // for (int i = 0; i < sizeFruitori; i++) {
- // fruitore = asps.getFruitore(i);
- // DriverRegistroServiziDB_LIB.CRUDAccordoServizioParteSpecificaFruitore(1, fruitore, con, servizio);
- // }*/
- List<Long> idFruitoriEsistenti = new ArrayList<>();
- for (int i = 0; i < sizeFruitori; i++) {
- fruitore = asps.getFruitore(i);
- // i dati del servizio sono gia' stati modificati, devo usare i dati nuovi
- IDServizio idS = IDServizioFactory.getInstance().getIDServizioFromValues(tipoServizio, nomeServizio,
- new IDSoggetto(tipoProprietario, nomeProprietario), versioneServizio);
- long idFruizione = DBUtils.getIdFruizioneServizio(idS,
- new IDSoggetto(fruitore.getTipo(), fruitore.getNome()), con, tipoDatabase);
- int typeFruitore = 1; // create
- if(idFruizione>0){
- typeFruitore = 2; // update
- }
- DriverRegistroServiziDB_accordiParteSpecificaLIB.CRUDAccordoServizioParteSpecificaFruitore(typeFruitore, fruitore, con, asps, driverBYOK);
- idFruitoriEsistenti.add(DBUtils.getIdSoggetto(fruitore.getNome(), fruitore.getTipo(), con, tipoDatabase));
- }
- DriverRegistroServiziDB_accordiParteSpecificaLIB.deleteAllFruitoriServizio(idServizio, idFruitoriEsistenti, con);
-
- //aggiorno azioni
- //La lista delle azioni del servizio contiene tutti e soli le azioni di questo servizio
- //prima vengono cancellati le azioni esistenti e poi vengono riaggiunte
- if(asps.getConfigurazioneServizio()!=null){
- sizeAzioni = asps.getConfigurazioneServizio().sizeConfigurazioneAzioneList();
- //cancellazione
- DriverRegistroServiziDB_accordiParteSpecificaLIB.deleteAllAzioniServizio(idServizio, con);
- //creazione
- for (int i = 0; i < sizeAzioni; i++) {
- ConfigurazioneServizioAzione conf = asps.getConfigurazioneServizio().getConfigurazioneAzione(i);
- DriverRegistroServiziDB_accordiParteSpecificaLIB.CRUDAccordoServizioParteSpecificaAzioni(1, conf, con, asps, driverBYOK);
- }
- }
-
-
- // Documenti generici servizio
- documenti = new ArrayList<>();
- // Allegati
- for(int i=0; i<asps.sizeAllegatoList(); i++){
- Documento doc = asps.getAllegato(i);
- doc.setRuolo(RuoliDocumento.allegato.toString());
- documenti.add(doc);
- }
- // Specifiche Semiformali
- for(int i=0; i<asps.sizeSpecificaSemiformaleList(); i++){
- Documento doc = asps.getSpecificaSemiformale(i);
- doc.setRuolo(RuoliDocumento.specificaSemiformale.toString());
- documenti.add(doc);
- }
- // Specifiche Livelli di Servizio
- for(int i=0; i<asps.sizeSpecificaLivelloServizioList(); i++){
- Documento doc = asps.getSpecificaLivelloServizio(i);
- doc.setRuolo(RuoliDocumento.specificaLivelloServizio.toString());
- documenti.add(doc);
- }
- // Specifiche Sicurezza
- for(int i=0; i<asps.sizeSpecificaSicurezzaList(); i++){
- Documento doc = asps.getSpecificaSicurezza(i);
- doc.setRuolo(RuoliDocumento.specificaSicurezza.toString());
- documenti.add(doc);
- }
- // CRUD
- DriverRegistroServiziDB_documentiLIB.CRUDDocumento(CostantiDB.UPDATE, documenti, idServizio, ProprietariDocumento.servizio, con, tipoDatabase);
-
-
- // ProtocolProperties
- DriverRegistroServiziDB_LIB.CRUDProtocolProperty(CostantiDB.UPDATE, asps.getProtocolPropertyList(),
- idServizio, ProprietariProtocolProperty.ACCORDO_SERVIZIO_PARTE_SPECIFICA, con, DriverRegistroServiziDB_LIB.tipoDB, driverBYOK);
-
-
- break;
- case DELETE:
- // DELETE
- idServizio = DBUtils.getIdServizio(nomeServizio, tipoServizio, versioneServizio, nomeProprietario, tipoProprietario, con, DriverRegistroServiziDB_LIB.tipoDB);
- if (idServizio <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica(DELETE)] Id Servizio non valido.");
- idConnettore = DriverRegistroServiziDB_LIB.getIdConnettoreServizio(nomeServizio, tipoServizio, versioneServizio, nomeProprietario, tipoProprietario, con);
- if (idConnettore <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica(DELETE)] Id Connettore non valido.");
- // elimino fruitori
- sizeFruitori = asps.sizeFruitoreList();
- fruitore = null;
- for (int i = 0; i < sizeFruitori; i++) {
- fruitore = asps.getFruitore(i);
- DriverRegistroServiziDB_accordiParteSpecificaLIB.CRUDAccordoServizioParteSpecificaFruitore(3, fruitore, con, asps, driverBYOK);
- }
-
- // elimino azioni
- if(asps.getConfigurazioneServizio()!=null){
- sizeAzioni = asps.getConfigurazioneServizio().sizeConfigurazioneAzioneList();
- for (int i = 0; i < sizeAzioni; i++) {
- ConfigurazioneServizioAzione conf = asps.getConfigurazioneServizio().getConfigurazioneAzione(i);
- DriverRegistroServiziDB_accordiParteSpecificaLIB.CRUDAccordoServizioParteSpecificaAzioni(3, conf, con, asps, driverBYOK);
- }
- }
-
- // Documenti generici accordo di servizio
- // Allegati
- // Specifiche Semiformali
- // Specifiche Livelli di Servizio
- // Specifiche Sicurezza
- DriverRegistroServiziDB_documentiLIB.CRUDDocumento(CostantiDB.DELETE, null, idServizio, ProprietariDocumento.servizio, con, tipoDatabase);
-
-
- // ProtocolProperties
- DriverRegistroServiziDB_LIB.CRUDProtocolProperty(CostantiDB.DELETE, null,
- idServizio, ProprietariProtocolProperty.ACCORDO_SERVIZIO_PARTE_SPECIFICA, con, DriverRegistroServiziDB_LIB.tipoDB, driverBYOK);
-
-
- // Delete tabella informazioni digest
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_DIGEST_PARAMS);
- sqlQueryObject.addWhereCondition(CostantiDB.SERVIZI_DIGEST_PARAMS_COLUMN_ID_SERVIZIO_REF + "=?");
- try (PreparedStatement stmt = con.prepareStatement(sqlQueryObject.createSQLDelete())) {
- stmt.setLong(1, idServizio);
- n = stmt.executeUpdate();
- }
-
- // Delete servizio
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI);
- sqlQueryObject.addWhereCondition("id=?");
- String sqlQuery = sqlQueryObject.createSQLDelete();
- updateStmt = con.prepareStatement(sqlQuery);
- updateStmt.setLong(1, idServizio);
- n=updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecifica type = " + type + " row affected =" + n);
- // elimino connettore
- connettore=new Connettore();
- connettore.setId(idConnettore);
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(CostantiDB.DELETE, connettore, con, driverBYOK);
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecifica CREATE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, idServizio));
- // nn cancello azioni nn interessa per adesso
- break;
- }
- return n;
- } catch (CoreException e) {
- throw new DriverRegistroServiziException(e);
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] SQLException [" + se.getMessage() + "].", se);
- } catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecifica] Exception [" + se.getMessage() + "].", se);
- } finally {
- JDBCUtilities.closeResources(updateRS, updateStmt);
- }
- }
- /**
- * Aggiunge un fruitore di un servizio alla lista dei fruitori dei servizi
- *
- * @param type
- * @param fruitore
- * @param con
- */
- public static long CRUDAccordoServizioParteSpecificaFruitore(int type, Fruitore fruitore, Connection con, AccordoServizioParteSpecifica servizio, IDriverBYOK driverBYOK) throws DriverRegistroServiziException {
- PreparedStatement updateStmt = null;
- String updateQuery;
- PreparedStatement selectStmt = null;
- String selectQuery = "";
- ResultSet selectRS = null;
- long idServizio = -1;
- try{
- String tipoServ = servizio.getTipo();
- String nomeServ = servizio.getNome();
- Integer verServ = servizio.getVersione();
- String tipoSogg = servizio.getTipoSoggettoErogatore();
- String nomeSogg = servizio.getNomeSoggettoErogatore();
-
- idServizio = DBUtils.getIdServizio(nomeServ, tipoServ, verServ, nomeSogg, tipoSogg, con, DriverRegistroServiziDB_LIB.tipoDB);
- } catch (CoreException e1) {
- DriverRegistroServiziDB_LIB.logError("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitore] getIdServizio failed: "+e1.getMessage(), e1);
- throw new DriverRegistroServiziException(e1);
- }
- if (idServizio <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitore] ID Servizio non valido.");
- Connettore connettore = fruitore.getConnettore();
- if (connettore == null && type != CostantiDB.CREATE && type!=CostantiDB.DELETE)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitore] il connettore non puo essere nullo.");
- String nomeSoggetto = fruitore.getNome();
- String tipoSoggetto = fruitore.getTipo();
- if (nomeSoggetto == null || nomeSoggetto.equals(""))
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitore] Nome Fruitore non valido.");
- if (tipoSoggetto == null || tipoSoggetto.equals(""))
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitore] Tipo Fruitore non valido.");
- String stato = fruitore.getStatoPackage();
-
- String descrizione = fruitore.getDescrizione();
-
- long idSoggettoFruitore = -1;
- try {
- idSoggettoFruitore = DBUtils.getIdSoggetto(nomeSoggetto, tipoSoggetto, con, DriverRegistroServiziDB_LIB.tipoDB);
- } catch (CoreException e1) {
- DriverRegistroServiziDB_LIB.logError("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitore] getIdSoggetto failed: "+e1.getMessage(), e1);
- throw new DriverRegistroServiziException(e1);
- }
- if (idSoggettoFruitore <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitore] Id Soggetto Fruitore non valido.");
- String wsdlImplementativoErogatore = (fruitore.getByteWsdlImplementativoErogatore()!=null ? new String(fruitore.getByteWsdlImplementativoErogatore()) : null );
- wsdlImplementativoErogatore = wsdlImplementativoErogatore!=null && !"".equals(wsdlImplementativoErogatore.trim().replaceAll("\n", "")) ? wsdlImplementativoErogatore : null;
- String wsdlImplementativoFruitore = (fruitore.getByteWsdlImplementativoFruitore()!=null ? new String(fruitore.getByteWsdlImplementativoFruitore()) : null );
- wsdlImplementativoFruitore = wsdlImplementativoFruitore!=null && !"".equals(wsdlImplementativoFruitore.trim().replaceAll("\n", "")) ? wsdlImplementativoFruitore : null;
-
- long idFruizione = 0;
- if (CostantiDB.CREATE != type) {
- idFruizione = DriverRegistroServiziDB_LIB.getIdFruizione(idServizio, nomeSoggetto, tipoSoggetto, con);
- }
-
- long idConnettore = 0;
- long n = 0;
- try {
- switch (type) {
- case 1:
- if (connettore == null) {
- connettore = new Connettore();
- }
- connettore.setNome("CNT_SF_" + tipoSoggetto+"/"+nomeSoggetto + "_" + servizio.getTipoSoggettoErogatore()+"/"+servizio.getNomeSoggettoErogatore() + "_" +
- servizio.getTipo() +"/"+servizio.getNome()+"/"+servizio.getVersione());
-
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(CostantiDB.CREATE, connettore, con, driverBYOK);
- idConnettore = connettore.getId();
- String utenteRichiedente = null;
- if(fruitore.getProprietaOggetto()!=null && fruitore.getProprietaOggetto().getUtenteRichiedente()!=null) {
- utenteRichiedente = fruitore.getProprietaOggetto().getUtenteRichiedente();
- }
- else {
- utenteRichiedente = DBUtils.getSuperUserServizioSafe(DriverRegistroServiziDB_LIB.log, "DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitore",
- idServizio, con, DriverRegistroServiziDB_LIB.tipoDB);
- }
-
- Timestamp dataCreazione = null;
- if(fruitore.getProprietaOggetto()!=null && fruitore.getProprietaOggetto().getDataCreazione()!=null) {
- dataCreazione = new Timestamp(fruitore.getProprietaOggetto().getDataCreazione().getTime());
- }
- else if(fruitore.getOraRegistrazione()!=null){
- dataCreazione = new Timestamp(fruitore.getOraRegistrazione().getTime());
- }
- else {
- dataCreazione = DateManager.getTimestamp();
- }
-
- // create
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.SERVIZI_FRUITORI);
- sqlQueryObject.addInsertField("id_servizio", "?");
- sqlQueryObject.addInsertField("id_soggetto", "?");
- sqlQueryObject.addInsertField("id_connettore", "?");
- sqlQueryObject.addInsertField("wsdl_implementativo_erogatore", "?");
- sqlQueryObject.addInsertField("wsdl_implementativo_fruitore", "?");
- if(stato!=null)
- sqlQueryObject.addInsertField("stato", "?");
- if(fruitore.getOraRegistrazione()!=null)
- sqlQueryObject.addInsertField("ora_registrazione", "?");
- sqlQueryObject.addInsertField("descrizione", "?");
- if(utenteRichiedente!=null) {
- sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE, "?");
- }
- if(dataCreazione!=null) {
- sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE, "?");
- }
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idServizio);
- updateStmt.setLong(2, idSoggettoFruitore);
- updateStmt.setLong(3, idConnettore);
- updateStmt.setString(4, wsdlImplementativoErogatore);
- updateStmt.setString(5, wsdlImplementativoFruitore);
-
- int index = 6;
-
- if(stato!=null){
- updateStmt.setString(index, stato);
- index++;
- }
- if(fruitore.getOraRegistrazione()!=null){
- updateStmt.setTimestamp(index, new Timestamp(fruitore.getOraRegistrazione().getTime()));
- index++;
- }
-
- updateStmt.setString(index, descrizione);
- index++;
-
- if(utenteRichiedente!=null) {
- updateStmt.setString(index, utenteRichiedente);
- index++;
- }
-
- if(dataCreazione!=null) {
- updateStmt.setTimestamp(index, dataCreazione);
- index++;
- }
- n = updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaFruitore CREATE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, idServizio, idSoggettoFruitore, idConnettore, wsdlImplementativoErogatore, wsdlImplementativoFruitore));
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("id_servizio = ?");
- sqlQueryObject.addWhereCondition("id_soggetto = ?");
- sqlQueryObject.addWhereCondition("id_connettore = ?");
- sqlQueryObject.setANDLogicOperator(true);
- selectQuery = sqlQueryObject.createSQLQuery();
- selectStmt = con.prepareStatement(selectQuery);
- selectStmt.setLong(1, idServizio);
- selectStmt.setLong(2, idSoggettoFruitore);
- selectStmt.setLong(3, idConnettore);
- selectRS = selectStmt.executeQuery();
- if (selectRS.next())
- idFruizione = selectRS.getLong("id");
-
-
- // aggiungo azioni
- int sizeAzioni = fruitore.sizeConfigurazioneAzioneList();
- for (int i = 0; i < sizeAzioni; i++) {
- ConfigurazioneServizioAzione conf = fruitore.getConfigurazioneAzione(i);
- DriverRegistroServiziDB_accordiParteSpecificaLIB.CRUDAccordoServizioParteSpecificaFruitoreAzioni(1, conf, con, servizio, fruitore, driverBYOK);
- }
-
- // ProtocolProperties
- DriverRegistroServiziDB_LIB.CRUDProtocolProperty(CostantiDB.UPDATE, fruitore.getProtocolPropertyList(),
- idFruizione, ProprietariProtocolProperty.FRUITORE, con, DriverRegistroServiziDB_LIB.tipoDB, driverBYOK);
-
- break;
- case 2:
- // update
- idConnettore = DriverRegistroServiziDB_LIB.getIdConnettoreServizioFruitore(idServizio, nomeSoggetto, tipoSoggetto, con);
- if(idConnettore<0) throw new DriverRegistroServiziException("Il connettore del Fruitore del Servizio e' invalido id<0");
- connettore.setId(idConnettore);
- String utenteUltimaModifica = null;
- if(fruitore.getProprietaOggetto()!=null && fruitore.getProprietaOggetto().getUtenteUltimaModifica()!=null) {
- utenteUltimaModifica = fruitore.getProprietaOggetto().getUtenteUltimaModifica();
- }
-
- Timestamp dataUltimaModifica = null;
- if(fruitore.getProprietaOggetto()!=null && fruitore.getProprietaOggetto().getDataUltimaModifica()!=null) {
- dataUltimaModifica = new Timestamp(fruitore.getProprietaOggetto().getDataUltimaModifica().getTime());
- }
- /**else {
- dataUltimaModifica = DateManager.getTimestamp();
- }Se presente si aggiorna, altrimenti no, e si mantiene il precedente valore per gestire le modifiche delle fruizioni */
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addUpdateTable(CostantiDB.SERVIZI_FRUITORI);
- sqlQueryObject.addUpdateField("wsdl_implementativo_erogatore", "?");
- sqlQueryObject.addUpdateField("wsdl_implementativo_fruitore", "?");
- if(stato!=null)
- sqlQueryObject.addUpdateField("stato", "?");
- if(fruitore.getOraRegistrazione()!=null)
- sqlQueryObject.addUpdateField("ora_registrazione", "?");
- sqlQueryObject.addUpdateField("descrizione", "?");
- if(utenteUltimaModifica!=null) {
- sqlQueryObject.addUpdateField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA, "?");
- }
- if(dataUltimaModifica!=null) {
- sqlQueryObject.addUpdateField(CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA, "?");
- }
- sqlQueryObject.addWhereCondition("id_servizio=?");
- sqlQueryObject.addWhereCondition("id_soggetto=?");
- sqlQueryObject.addWhereCondition("id_connettore=?");
- sqlQueryObject.setANDLogicOperator(true);
- updateQuery = sqlQueryObject.createSQLUpdate();
- updateStmt = con.prepareStatement(updateQuery);
- updateStmt.setString(1, wsdlImplementativoErogatore);
- updateStmt.setString(2, wsdlImplementativoFruitore);
- index = 3;
-
- if(stato!=null){
- updateStmt.setString(index, stato);
- index++;
- }
-
- if(fruitore.getOraRegistrazione()!=null){
- updateStmt.setTimestamp(index, new Timestamp(fruitore.getOraRegistrazione().getTime()));
- index++;
- }
-
- updateStmt.setString(index, descrizione);
- index++;
-
- if(utenteUltimaModifica!=null) {
- updateStmt.setString(index, utenteUltimaModifica);
- index++;
- }
-
- if(dataUltimaModifica!=null) {
- updateStmt.setTimestamp(index, dataUltimaModifica);
- index++;
- }
-
- updateStmt.setLong(index,idServizio);
- index++;
- updateStmt.setLong(index,idSoggettoFruitore);
- index++;
- updateStmt.setLong(index,idConnettore);
- index++;
-
- n= updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaFruitore UPDATE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, wsdlImplementativoErogatore, wsdlImplementativoFruitore, idServizio, idSoggettoFruitore, idConnettore));
- // modifico i dati del connettore
- //aggiorno nome
- DriverRegistroServiziDB_LIB.logDebug("Tento aggiornamento connettore id: ["+idConnettore+"] oldNome: ["+connettore.getNome()+"]...");
- String newNomeConnettore = "CNT_SF_" + tipoSoggetto+"/"+nomeSoggetto + "_" + servizio.getTipoSoggettoErogatore()+"/"+servizio.getNomeSoggettoErogatore() + "_" +
- servizio.getTipo() +"/"+servizio.getNome()+"/"+servizio.getVersione();
- connettore.setNome(newNomeConnettore);
- DriverRegistroServiziDB_LIB.logDebug("nuovo nome connettore ["+newNomeConnettore+"]");
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(2, connettore, con, driverBYOK);
-
- //aggiorno azioni
- //La lista delle azioni del servizio contiene tutti e soli le azioni di questo servizio
- //prima vengono cancellati le azioni esistenti e poi vengono riaggiunte
- sizeAzioni = fruitore.sizeConfigurazioneAzioneList();
- //cancellazione
- DriverRegistroServiziDB_accordiParteSpecificaLIB.deleteAllAzioniFruizioneServizio(idFruizione, con);
- //creazione
- for (int i = 0; i < sizeAzioni; i++) {
- ConfigurazioneServizioAzione conf = fruitore.getConfigurazioneAzione(i);
- DriverRegistroServiziDB_accordiParteSpecificaLIB.CRUDAccordoServizioParteSpecificaFruitoreAzioni(1, conf, con, servizio, fruitore, driverBYOK);
- }
-
- // ProtocolProperties
- DriverRegistroServiziDB_LIB.CRUDProtocolProperty(CostantiDB.UPDATE, fruitore.getProtocolPropertyList(),
- idFruizione, ProprietariProtocolProperty.FRUITORE, con, DriverRegistroServiziDB_LIB.tipoDB, driverBYOK);
-
- break;
- case 3:
-
- // ProtocolProperties
- DriverRegistroServiziDB_LIB.CRUDProtocolProperty(CostantiDB.DELETE, null,
- idFruizione, ProprietariProtocolProperty.FRUITORE, con, DriverRegistroServiziDB_LIB.tipoDB, driverBYOK);
-
-
- // elimino azioni
- sizeAzioni = fruitore.sizeConfigurazioneAzioneList();
- for (int i = 0; i < sizeAzioni; i++) {
- ConfigurazioneServizioAzione conf = fruitore.getConfigurazioneAzione(i);
- DriverRegistroServiziDB_accordiParteSpecificaLIB.CRUDAccordoServizioParteSpecificaFruitoreAzioni(3, conf, con, servizio, fruitore, driverBYOK);
- }
-
- // delete
- idConnettore = DriverRegistroServiziDB_LIB.getIdConnettoreServizioFruitore(idServizio, nomeSoggetto, tipoSoggetto, con);
- connettore.setId(idConnettore);
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_FRUITORI);
- sqlQueryObject.addWhereCondition("id_servizio=?");
- sqlQueryObject.addWhereCondition("id_soggetto=?");
- sqlQueryObject.addWhereCondition("id_connettore=?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLDelete();
- updateStmt = con.prepareStatement(sqlQuery);
- updateStmt.setLong(1, idServizio);
- updateStmt.setLong(2, idSoggettoFruitore);
- updateStmt.setLong(3, idConnettore);
- n=updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaFruitore DELETE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idServizio, idSoggettoFruitore, idConnettore));
- // elimino il connettore
- connettore=new Connettore();
- connettore.setId(idConnettore);
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(3, connettore, con, driverBYOK);
- break;
- }
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaFruitore type = " + type + " row affected =" + n);
- if (CostantiDB.CREATE == type) {
- return idFruizione;
- }
- return n;
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDFruitore] SQLException : " + se.getMessage(),se);
- } catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDFruitore] Exception : " + se.getMessage(),se);
- }finally {
- JDBCUtilities.closeResources(selectRS, selectStmt);
- JDBCUtilities.closeResources(updateStmt);
- }
- }
-
-
- public static long CRUDAccordoServizioParteSpecificaAzioni(int type, ConfigurazioneServizioAzione conf, Connection con, AccordoServizioParteSpecifica servizio, IDriverBYOK driverBYOK) throws DriverRegistroServiziException {
- PreparedStatement updateStmt = null;
- String updateQuery;
- PreparedStatement selectStmt = null;
- String selectQuery = "";
- ResultSet selectRS = null;
- long idServizio = -1;
- try{
- String tipoServ = servizio.getTipo();
- String nomeServ = servizio.getNome();
- Integer verServ = servizio.getVersione();
- String tipoSogg = servizio.getTipoSoggettoErogatore();
- String nomeSogg = servizio.getNomeSoggettoErogatore();
-
- idServizio = DBUtils.getIdServizio(nomeServ, tipoServ, verServ, nomeSogg, tipoSogg, con, DriverRegistroServiziDB_LIB.tipoDB);
- } catch (CoreException e1) {
- DriverRegistroServiziDB_LIB.logError("Driver Error.", e1);
- throw new DriverRegistroServiziException(e1);
- }
- if (idServizio <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaAzioni] ID Servizio non valido.");
- Connettore connettore = conf.getConnettore();
- if (connettore == null && type != CostantiDB.CREATE && type!=CostantiDB.DELETE)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaAzioni] il connettore non puo essere nullo.");
- if(conf.sizeAzioneList()<=0) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaAzioni] la configurazione non contiene azioni??");
- }
-
- String azioneValue = conf.getAzione(0); // prendo la prima, tanto devono essere tutte diverse tra le varie configurazioni
- if (azioneValue == null || azioneValue.equals(""))
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaAzioni] Azione non valida.");
- String nomeConnettore = "CNT_SAZIONE_" + servizio.getTipoSoggettoErogatore()+"/"+servizio.getNomeSoggettoErogatore() +"_"+ servizio.getTipo() +"/"+servizio.getNome()+"/"+servizio.getVersione()+"_"+azioneValue;
- if (connettore == null) {
- connettore = new Connettore();
- }
- connettore.setNome(nomeConnettore);
-
- long idConnettore = 0;
- long n = 0;
- try {
- switch (type) {
- case 1:
-
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(CostantiDB.CREATE, connettore, con, driverBYOK);
- idConnettore = connettore.getId();
- // create
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.SERVIZI_AZIONI);
- sqlQueryObject.addInsertField("id_servizio", "?");
- sqlQueryObject.addInsertField("id_connettore", "?");
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idServizio);
- updateStmt.setLong(2, idConnettore);
- n = updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaAzioni CREATE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, idServizio, idConnettore));
- updateStmt.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_AZIONI);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("id_servizio = ?");
- sqlQueryObject.addWhereCondition("id_connettore = ?"); // idconnettore sara' univoco!
- sqlQueryObject.setANDLogicOperator(true);
- selectQuery = sqlQueryObject.createSQLQuery();
- selectStmt = con.prepareStatement(selectQuery);
- selectStmt.setLong(1, idServizio);
- selectStmt.setLong(2, idConnettore);
- selectRS = selectStmt.executeQuery();
- long idServizioAzione = -1;
- if (selectRS.next()) {
- idServizioAzione = selectRS.getLong("id");
- }
- selectRS.close();
- selectStmt.close();
- if(idServizioAzione<=0) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaAzioni] Recuro id per idServizio["+idServizio+"] idConnettore["+idConnettore+"] non riuscito");
- }
-
- for (String azione : conf.getAzioneList()) {
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.SERVIZI_AZIONE);
- sqlQueryObject.addInsertField("nome_azione", "?");
- sqlQueryObject.addInsertField("id_servizio_azioni", "?");
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- updateStmt.setString(1, azione);
- updateStmt.setLong(2, idServizioAzione);
- n = updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaAzione CREATE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, azione, idServizioAzione));
- updateStmt.close();
- }
-
- break;
- case 2:
- // update
- idConnettore = DriverRegistroServiziDB_LIB.getIdConnettoreServizioAzione(idServizio, azioneValue, con);
- if(idConnettore<0) throw new DriverRegistroServiziException("Il connettore dell'azione ["+azioneValue+"] del Servizio e' invalido id<0");
- connettore.setId(idConnettore);
- // modifico i dati del connettore
- //aggiorno nome
- DriverRegistroServiziDB_LIB.logDebug("Tento aggiornamento connettore id: ["+idConnettore+"] oldNome: ["+connettore.getNome()+"]...");
- DriverRegistroServiziDB_LIB.logDebug("nuovo nome connettore ["+connettore.getNome()+"]");
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(2, connettore, con, driverBYOK);
- break;
- case 3:
- // delete
- idConnettore = DriverRegistroServiziDB_LIB.getIdConnettoreServizioAzione(idServizio, azioneValue, con);
- connettore.setId(idConnettore);
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_AZIONI);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("id_servizio = ?");
- sqlQueryObject.addWhereCondition("id_connettore = ?"); // idconnettore sara' univoco!
- sqlQueryObject.setANDLogicOperator(true);
- selectQuery = sqlQueryObject.createSQLQuery();
- selectStmt = con.prepareStatement(selectQuery);
- selectStmt.setLong(1, idServizio);
- selectStmt.setLong(2, idConnettore);
- selectRS = selectStmt.executeQuery();
- idServizioAzione = -1;
- if (selectRS.next()) {
- idServizioAzione = selectRS.getLong("id");
- }
- selectRS.close();
- selectStmt.close();
- if(idServizioAzione<=0) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaAzioni] Recuro id per idServizio["+idServizio+"] idConnettore["+idConnettore+"] non riuscito");
- }
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_AZIONE);
- sqlQueryObject.addWhereCondition("id_servizio_azioni=?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLDelete();
- updateStmt = con.prepareStatement(sqlQuery);
- updateStmt.setLong(1, idServizioAzione);
- n=updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaAzioni DELETE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idServizioAzione));
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_AZIONI);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLDelete();
- updateStmt = con.prepareStatement(sqlQuery);
- updateStmt.setLong(1, idServizioAzione);
- n=updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaAzioni DELETE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery,idServizioAzione));
- // elimino il connettore
- connettore=new Connettore();
- connettore.setId(idConnettore);
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(3, connettore, con, driverBYOK);
- break;
- }
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaAzioni type = " + type + " row affected =" + n);
- return n;
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaAzioni] SQLException : " + se.getMessage(),se);
- } catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaAzioni] Exception : " + se.getMessage(),se);
- }finally {
- JDBCUtilities.closeResources(selectRS, selectStmt);
- JDBCUtilities.closeResources(updateStmt);
- }
- }
-
- public static long CRUDAccordoServizioParteSpecificaFruitoreAzioni(int type, ConfigurazioneServizioAzione conf, Connection con,
- AccordoServizioParteSpecifica servizio, Fruitore fruitore, IDriverBYOK driverBYOK) throws DriverRegistroServiziException {
- PreparedStatement updateStmt = null;
- String updateQuery;
- PreparedStatement selectStmt = null;
- String selectQuery = "";
- ResultSet selectRS = null;
-
- long idFruizione = -1;
- try{
- IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromAccordo(servizio);
- IDSoggetto idFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
- idFruizione = DBUtils.getIdFruizioneServizio(idServizio, idFruitore, con, DriverRegistroServiziDB_LIB.tipoDB);
- } catch (CoreException e1) {
- DriverRegistroServiziDB_LIB.logError("Driver Error.", e1);
- throw new DriverRegistroServiziException(e1);
- }
- if (idFruizione <= 0)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitoreAzioni] ID Servizio non valido.");
-
- Connettore connettore = conf.getConnettore();
- if (connettore == null && type != CostantiDB.CREATE && type!=CostantiDB.DELETE)
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitoreAzioni] il connettore non puo essere nullo.");
- if(conf.sizeAzioneList()<=0) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitoreAzioni] la configurazione non contiene azioni??");
- }
-
- String azioneValue = conf.getAzione(0); // prendo la prima, tanto devono essere tutte diverse tra le varie configurazioni
- if (azioneValue == null || azioneValue.equals(""))
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitoreAzioni] Azione non valida.");
- String nomeConnettore = "CNT_SF_AZIONE_" + fruitore.getTipo()+"/"+fruitore.getNome()+"_"+ servizio.getTipoSoggettoErogatore()+"/"+servizio.getNomeSoggettoErogatore() +"_"+ servizio.getTipo() +"/"+servizio.getNome()+"/"+servizio.getVersione()+"_"+azioneValue;
- if (connettore == null) {
- connettore = new Connettore();
- }
- connettore.setNome(nomeConnettore);
-
- long idConnettore = 0;
- long n = 0;
- try {
- switch (type) {
- case 1:
-
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(CostantiDB.CREATE, connettore, con, driverBYOK);
- idConnettore = connettore.getId();
- // create
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.SERVIZI_FRUITORI_AZIONI);
- sqlQueryObject.addInsertField("id_fruizione", "?");
- sqlQueryObject.addInsertField("id_connettore", "?");
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- updateStmt.setLong(1, idFruizione);
- updateStmt.setLong(2, idConnettore);
- n = updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaFruitoreAzioni CREATE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, idFruizione, idConnettore));
- updateStmt.close();
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI_AZIONI);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("id_fruizione = ?");
- sqlQueryObject.addWhereCondition("id_connettore = ?"); // idconnettore sara' univoco!
- sqlQueryObject.setANDLogicOperator(true);
- selectQuery = sqlQueryObject.createSQLQuery();
- selectStmt = con.prepareStatement(selectQuery);
- selectStmt.setLong(1, idFruizione);
- selectStmt.setLong(2, idConnettore);
- selectRS = selectStmt.executeQuery();
- long idFruizioneAzione = -1;
- if (selectRS.next()) {
- idFruizioneAzione = selectRS.getLong("id");
- }
- selectRS.close();
- selectStmt.close();
- if(idFruizioneAzione<=0) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitoreAzioni] Recuro id per idFruizione["+idFruizione+"] idConnettore["+idConnettore+"] non riuscito");
- }
-
- for (String azione : conf.getAzioneList()) {
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addInsertTable(CostantiDB.SERVIZI_FRUITORI_AZIONE);
- sqlQueryObject.addInsertField("nome_azione", "?");
- sqlQueryObject.addInsertField("id_fruizione_azioni", "?");
- updateQuery = sqlQueryObject.createSQLInsert();
- updateStmt = con.prepareStatement(updateQuery);
- updateStmt.setString(1, azione);
- updateStmt.setLong(2, idFruizioneAzione);
- n = updateStmt.executeUpdate();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaFruitoreAzioni CREATE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(updateQuery, azione, idFruizioneAzione));
- updateStmt.close();
- }
-
- break;
- case 2:
- // update
- idConnettore = DriverRegistroServiziDB_LIB.getIdConnettoreFruizioneServizioAzione(idFruizione, azioneValue, con);
- if(idConnettore<0) throw new DriverRegistroServiziException("Il connettore dell'azione ["+azioneValue+"] della fruizione di Servizio e' invalido id<0");
- connettore.setId(idConnettore);
- // modifico i dati del connettore
- //aggiorno nome
- DriverRegistroServiziDB_LIB.logDebug("Tento aggiornamento connettore id: ["+idConnettore+"] oldNome: ["+connettore.getNome()+"]...");
- DriverRegistroServiziDB_LIB.logDebug("nuovo nome connettore ["+connettore.getNome()+"]");
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(2, connettore, con, driverBYOK);
- break;
- case 3:
- // delete
- idConnettore = DriverRegistroServiziDB_LIB.getIdConnettoreFruizioneServizioAzione(idFruizione, azioneValue, con);
- connettore.setId(idConnettore);
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI_AZIONI);
- sqlQueryObject.addSelectField("id");
- sqlQueryObject.addWhereCondition("id_fruizione = ?");
- sqlQueryObject.addWhereCondition("id_connettore = ?"); // idconnettore sara' univoco!
- sqlQueryObject.setANDLogicOperator(true);
- selectQuery = sqlQueryObject.createSQLQuery();
- selectStmt = con.prepareStatement(selectQuery);
- selectStmt.setLong(1, idFruizione);
- selectStmt.setLong(2, idConnettore);
- selectRS = selectStmt.executeQuery();
- idFruizioneAzione = -1;
- if (selectRS.next()) {
- idFruizioneAzione = selectRS.getLong("id");
- }
- selectRS.close();
- selectStmt.close();
- if(idFruizioneAzione<=0) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitoreAzioni] Recuro id per idFruizione["+idFruizione+"] idConnettore["+idConnettore+"] non riuscito");
- }
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_FRUITORI_AZIONE);
- sqlQueryObject.addWhereCondition("id_fruizione_azioni=?");
- sqlQueryObject.setANDLogicOperator(true);
- String sqlQuery = sqlQueryObject.createSQLDelete();
- updateStmt = con.prepareStatement(sqlQuery);
- updateStmt.setLong(1, idFruizioneAzione);
- n=updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaFruitoreAzioni DELETE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery, idFruizioneAzione));
-
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_FRUITORI_AZIONI);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQueryObject.setANDLogicOperator(true);
- sqlQuery = sqlQueryObject.createSQLDelete();
- updateStmt = con.prepareStatement(sqlQuery);
- updateStmt.setLong(1, idFruizioneAzione);
- n=updateStmt.executeUpdate();
- updateStmt.close();
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaFruitoreAzioni DELETE : \n" + DriverRegistroServiziDB_LIB.formatSQLString(sqlQuery,idFruizioneAzione));
- // elimino il connettore
- connettore=new Connettore();
- connettore.setId(idConnettore);
- DriverRegistroServiziDB_connettoriLIB.CRUDConnettore(3, connettore, con, driverBYOK);
- break;
- }
- DriverRegistroServiziDB_LIB.logDebug("CRUDAccordoServizioParteSpecificaFruitoreAzioni type = " + type + " row affected =" + n);
- return n;
- } catch (SQLException se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitoreAzioni] SQLException : " + se.getMessage(),se);
- } catch (Exception se) {
- throw new DriverRegistroServiziException("[DriverRegistroServiziDB_LIB::CRUDAccordoServizioParteSpecificaFruitoreAzioni] Exception : " + se.getMessage(),se);
- }finally {
- JDBCUtilities.closeResources(selectRS, selectStmt);
- JDBCUtilities.closeResources(updateStmt);
- }
- }
-
- /**
- * Cancella tutti i fruitori di un servizio e i connettori associati ai fruitori
- * @param idServizio
- * @param con
- * @throws DriverRegistroServiziException
- */
- private static void deleteAllFruitoriServizio(long idServizio, List<Long> idFruitoriEsistenti, Connection con) throws DriverRegistroServiziException {
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- ArrayList<Long> listaFruizioniDaEliminare = new ArrayList<>();
- ArrayList<Long> listaFruizioniDaEliminareConnettori = new ArrayList<>();
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_servizio = ?");
- String query = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(query);
- stm.setLong(1, idServizio);
- rs=stm.executeQuery();
- //recupero i connettori da cancellare
- while(rs.next()){
- long idSoggettoFruitore = rs.getLong("id_soggetto");
- boolean find = false;
- for (int i = 0; i < idFruitoriEsistenti.size(); i++) {
- if(idSoggettoFruitore == idFruitoriEsistenti.get(i)){
- find = true;
- break;
- }
- }
- if(!find){
- listaFruizioniDaEliminare.add(rs.getLong("id"));
- listaFruizioniDaEliminareConnettori.add(rs.getLong("id_connettore"));
- }
- }
- rs.close();
- stm.close();
- for (int i = 0; i < listaFruizioniDaEliminare.size(); i++) {
-
- long idFruizione = listaFruizioniDaEliminare.get(i);
-
- // ProtocolProperties
- DriverRegistroServiziDB_LIB.CRUDProtocolProperty(CostantiDB.DELETE, null,
- idFruizione, ProprietariProtocolProperty.FRUITORE, con, DriverRegistroServiziDB_LIB.tipoDB, null);
-
- //cancellazione azioni
- DriverRegistroServiziDB_accordiParteSpecificaLIB.deleteAllAzioniFruizioneServizio(idFruizione, con);
-
- //elimino prima le entry nella tab servizi_fruitori per rispettare le dipendenze
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_FRUITORI);
- sqlQueryObject.addWhereCondition("id=?");
- String sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, idFruizione);
- int n=stm.executeUpdate();
- stm.close();
- DriverRegistroServiziDB_LIB.logDebug("Cancellata (row:"+n+") fruizione con id:"+idFruizione);
-
- }
-
- for (int i = 0; i < listaFruizioniDaEliminareConnettori.size(); i++) {
-
- long idFruizione = listaFruizioniDaEliminare.get(i);
- long idConnettore = listaFruizioniDaEliminareConnettori.get(i);
-
- //cancello adesso i connettori custom
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.CONNETTORI_CUSTOM);
- sqlQueryObject.addWhereCondition("id_connettore=?");
- String sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, idConnettore);
- stm.executeUpdate();
- stm.close();
- DriverRegistroServiziDB_LIB.logDebug("Cancellato connettore custom associato al connettore con id:"+idConnettore+" associato alla fruizione con id:"+idFruizione);
-
- //cancello adesso i connettori
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.CONNETTORI);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, idConnettore);
- stm.executeUpdate();
- stm.close();
- DriverRegistroServiziDB_LIB.logDebug("Cancellati connettoro con id:"+idConnettore+" associato alla fruizione con id:"+idFruizione);
-
- }
- } catch (SQLException e) {
- DriverRegistroServiziDB_LIB.logError("Errore SQL", e);
- throw new DriverRegistroServiziException(e);
- }catch (Exception e) {
- DriverRegistroServiziDB_LIB.logError("Errore", e);
- throw new DriverRegistroServiziException(e);
- } finally {
- JDBCUtilities.closeResources(stm);
- }
- }
-
-
- /**
- * Cancella tutti le azioni di un servizio e i connettori associati alle azioni
- * @param idServizio
- * @param con
- * @throws DriverRegistroServiziException
- */
- private static void deleteAllAzioniServizio(long idServizio, Connection con) throws DriverRegistroServiziException {
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- ArrayList<Long> listaConnettori = new ArrayList<>();
- ArrayList<Long> listaConfigurazioni = new ArrayList<>();
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_AZIONI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_servizio = ?");
- String query = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(query);
- stm.setLong(1, idServizio);
- rs=stm.executeQuery();
- //recupero i connettori da cancellare
- while(rs.next()){
- listaConnettori.add(rs.getLong("id_connettore"));
- listaConfigurazioni.add(rs.getLong("id"));
- }
- rs.close();
- stm.close();
- //elimino prima le entry nella tab servizi_azione per rispettare le dipendenze
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_AZIONE);
- sqlQueryObject.addWhereCondition("id_servizio_azioni=?");
- String sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- for (Long idConfigurazione : listaConfigurazioni) {
- stm.setLong(1, idConfigurazione);
- int n=stm.executeUpdate();
- DriverRegistroServiziDB_LIB.logDebug("Cancellati "+n+" Azioni della configurazione del servizio "+idConfigurazione);
- }
- stm.close();
-
- //elimino prima le entry nella tab servizi_azioni per rispettare le dipendenze
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_AZIONI);
- sqlQueryObject.addWhereCondition("id_servizio=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, idServizio);
- int n=stm.executeUpdate();
- stm.close();
- DriverRegistroServiziDB_LIB.logDebug("Cancellati "+n+" Azioni del servizio "+idServizio);
- //cancello adesso i connettori custom
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.CONNETTORI_CUSTOM);
- sqlQueryObject.addWhereCondition("id_connettore=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- for (Long idConnettore : listaConnettori) {
- stm.setLong(1, idConnettore);
- stm.executeUpdate();
- }
- stm.close();
- DriverRegistroServiziDB_LIB.logDebug("Cancellati connettori "+listaConnettori.toString()+" associati alle azioni del servizio "+idServizio);
-
- //cancello adesso i connettori
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.CONNETTORI);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- for (Long idConnettore : listaConnettori) {
- stm.setLong(1, idConnettore);
- stm.executeUpdate();
- }
- stm.close();
- DriverRegistroServiziDB_LIB.logDebug("Cancellati connettori "+listaConnettori.toString()+" associati ai Fruitori del servizio "+idServizio);
- } catch (SQLException e) {
- DriverRegistroServiziDB_LIB.logError("Errore SQL", e);
- throw new DriverRegistroServiziException(e);
- }catch (Exception e) {
- DriverRegistroServiziDB_LIB.logError("Errore", e);
- throw new DriverRegistroServiziException(e);
- } finally {
- JDBCUtilities.closeResources(stm);
- }
- }
-
- private static void deleteAllAzioniFruizioneServizio(long idFruizione, Connection con) throws DriverRegistroServiziException {
- PreparedStatement stm = null;
- ResultSet rs = null;
- try {
- ArrayList<Long> listaConnettori = new ArrayList<>();
- ArrayList<Long> listaConfigurazioni = new ArrayList<>();
- ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addFromTable(CostantiDB.SERVIZI_FRUITORI_AZIONI);
- sqlQueryObject.addSelectField("*");
- sqlQueryObject.addWhereCondition("id_fruizione = ?");
- String query = sqlQueryObject.createSQLQuery();
- stm = con.prepareStatement(query);
- stm.setLong(1, idFruizione);
- rs=stm.executeQuery();
- //recupero i connettori da cancellare
- while(rs.next()){
- listaConnettori.add(rs.getLong("id_connettore"));
- listaConfigurazioni.add(rs.getLong("id"));
- }
- rs.close();
- stm.close();
- //elimino prima le entry nella tab servizi_azione per rispettare le dipendenze
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_FRUITORI_AZIONE);
- sqlQueryObject.addWhereCondition("id_fruizione_azioni=?");
- String sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- for (Long idConfigurazione : listaConfigurazioni) {
- stm.setLong(1, idConfigurazione);
- int n=stm.executeUpdate();
- DriverRegistroServiziDB_LIB.logDebug("Cancellati "+n+" Azioni della configurazione della fruizione del servizio "+idConfigurazione);
- }
- stm.close();
-
- //elimino prima le entry nella tab servizi_azioni per rispettare le dipendenze
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.SERVIZI_FRUITORI_AZIONI);
- sqlQueryObject.addWhereCondition("id_fruizione=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- stm.setLong(1, idFruizione);
- int n=stm.executeUpdate();
- stm.close();
- DriverRegistroServiziDB_LIB.logDebug("Cancellati "+n+" Azioni della fruizione del servizio "+idFruizione);
- //cancello adesso i connettori custom
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.CONNETTORI_CUSTOM);
- sqlQueryObject.addWhereCondition("id_connettore=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- for (Long idConnettore : listaConnettori) {
- stm.setLong(1, idConnettore);
- stm.executeUpdate();
- }
- stm.close();
- DriverRegistroServiziDB_LIB.logDebug("Cancellati connettori "+listaConnettori.toString()+" associati alle azioni della fruizione del servizio "+idFruizione);
-
- //cancello adesso i connettori
- sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverRegistroServiziDB_LIB.tipoDB);
- sqlQueryObject.addDeleteTable(CostantiDB.CONNETTORI);
- sqlQueryObject.addWhereCondition("id=?");
- sqlQuery = sqlQueryObject.createSQLDelete();
- stm = con.prepareStatement(sqlQuery);
- for (Long idConnettore : listaConnettori) {
- stm.setLong(1, idConnettore);
- stm.executeUpdate();
- }
- stm.close();
- DriverRegistroServiziDB_LIB.logDebug("Cancellati connettori "+listaConnettori.toString()+" associati ai Fruitori della fruizione del servizio "+idFruizione);
- } catch (SQLException e) {
- DriverRegistroServiziDB_LIB.logError("Errore SQL", e);
- throw new DriverRegistroServiziException(e);
- }catch (Exception e) {
- DriverRegistroServiziDB_LIB.logError("Errore", e);
- throw new DriverRegistroServiziException(e);
- } finally {
- JDBCUtilities.closeResources(stm);
- }
- }
-
-
- }