DriverConfigurazioneDB_porteApplicativeLIB.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 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.config.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.BYOKUtilities;
import org.openspcoop2.core.byok.BYOKWrappedValue;
import org.openspcoop2.core.byok.IDriverBYOK;
import org.openspcoop2.core.commons.CoreException;
import org.openspcoop2.core.commons.DBUtils;
import org.openspcoop2.core.commons.IExtendedInfo;
import org.openspcoop2.core.config.AttributeAuthority;
import org.openspcoop2.core.config.ConfigurazionePortaHandler;
import org.openspcoop2.core.config.CorrelazioneApplicativa;
import org.openspcoop2.core.config.CorrelazioneApplicativaElemento;
import org.openspcoop2.core.config.CorrelazioneApplicativaRisposta;
import org.openspcoop2.core.config.CorrelazioneApplicativaRispostaElemento;
import org.openspcoop2.core.config.CorsConfigurazione;
import org.openspcoop2.core.config.GestioneToken;
import org.openspcoop2.core.config.MessageSecurity;
import org.openspcoop2.core.config.MessageSecurityFlow;
import org.openspcoop2.core.config.MessageSecurityFlowParameter;
import org.openspcoop2.core.config.MtomProcessor;
import org.openspcoop2.core.config.MtomProcessorFlow;
import org.openspcoop2.core.config.MtomProcessorFlowParameter;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneServizioApplicativo;
import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneSoggetto;
import org.openspcoop2.core.config.PortaApplicativaAzione;
import org.openspcoop2.core.config.PortaApplicativaServizio;
import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
import org.openspcoop2.core.config.PortaApplicativaSoggettoVirtuale;
import org.openspcoop2.core.config.Proprieta;
import org.openspcoop2.core.config.ResponseCachingConfigurazione;
import org.openspcoop2.core.config.ResponseCachingConfigurazioneRegola;
import org.openspcoop2.core.config.Ruolo;
import org.openspcoop2.core.config.Scope;
import org.openspcoop2.core.config.TracciamentoConfigurazione;
import org.openspcoop2.core.config.TracciamentoConfigurazioneFiletrace;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.constants.MTOMProcessorType;
import org.openspcoop2.core.config.constants.PortaApplicativaAzioneIdentificazione;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
import org.openspcoop2.core.config.constants.StatoFunzionalitaCacheDigestQueryParameter;
import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
import org.openspcoop2.core.config.driver.ExtendedInfoManager;
import org.openspcoop2.core.constants.CRUDType;
import org.openspcoop2.core.constants.CostantiDB;
import org.openspcoop2.utils.date.DateManager;
import org.openspcoop2.utils.jdbc.JDBCUtilities;
import org.openspcoop2.utils.sql.ISQLQueryObject;
import org.openspcoop2.utils.sql.SQLObjectFactory;
/**
* DriverConfigurazioneDB_soggettiLIB
*
* @author Stefano Corallo - corallo@link.it
* @author $Author$
* @version $Rev$, $Date$
*/
public class DriverConfigurazioneDB_porteApplicativeLIB {
public static long CRUDPortaApplicativa(int type, PortaApplicativa aPA, Connection con, IDriverBYOK driverBYOK) throws DriverConfigurazioneException {
if (aPA == null)
throw new DriverConfigurazioneException("Porta Applicativa non valida.");
// parametri necessari
String nomePorta = aPA.getNome();
String nomeProprietario = aPA.getNomeSoggettoProprietario();
String tipoProprietario = aPA.getTipoSoggettoProprietario();
if (nomePorta == null || nomePorta.equals(""))
throw new DriverConfigurazioneException("Nome della Porta Applicativa non valido.");
if (nomeProprietario == null || nomeProprietario.equals(""))
throw new DriverConfigurazioneException("Nome proprietario Porta Applicativa non valido.");
if (tipoProprietario == null || tipoProprietario.equals(""))
throw new DriverConfigurazioneException("Tipo proprietario della Porta Applicativa non valido.");
PreparedStatement stm = null;
String sqlQuery = "";
ResultSet rs = null;
String descrizione = aPA.getDescrizione();
String autenticazione = aPA.getAutenticazione();
String autorizzazione = aPA.getAutorizzazione();
String autorizzazioneXacmlPolicy = aPA.getXacmlPolicy();
GestioneToken gestioneToken = aPA.getGestioneToken();
PortaApplicativaAzione azione = aPA.getAzione();
PortaApplicativaServizio servizio = aPA.getServizio();
long idServizio = ((servizio != null && servizio.getId() != null) ? servizio.getId() : -1);
/**System.out.println("PRIMA PA: "+idServizio);*/
/** SEMPRE, VA AGGIORNATO ANCHE IN UPDATE if(idServizio<=0 &&*/
if(
servizio!=null && servizio.getTipo()!=null && servizio.getNome()!=null && servizio.getVersione()!=null && servizio.getVersione()>0) {
try {
idServizio = DBUtils.getIdServizio(servizio.getNome(), servizio.getTipo(), servizio.getVersione(), nomeProprietario, tipoProprietario, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
/**System.out.println("DOPO PA: "+idServizio);*/
} catch (Exception e1) {
DriverConfigurazioneDBLib.logDebug(e1.getMessage(),e1); // potrebbe non esistere la tabella
}
}
PortaApplicativaSoggettoVirtuale soggVirt = aPA.getSoggettoVirtuale();
String tipoSoggVirt = (soggVirt != null ? soggVirt.getTipo() : null);
String nomeSoggVirt = (soggVirt != null ? soggVirt.getNome() : null);
long idSoggVirt=-1;
try {
idSoggVirt = DBUtils.getIdSoggetto(nomeSoggVirt, tipoSoggVirt, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
} catch (CoreException e1) {
DriverConfigurazioneDBLib.logError(e1.getMessage(),e1);
}
Proprieta propProtocollo = null;
MtomProcessor mtomProcessor = aPA.getMtomProcessor();
MTOMProcessorType mtomModeRequest = null;
MTOMProcessorType mtomModeResponse = null;
if(mtomProcessor!=null){
if(mtomProcessor.getRequestFlow()!=null){
mtomModeRequest = mtomProcessor.getRequestFlow().getMode();
}
if(mtomProcessor.getResponseFlow()!=null){
mtomModeResponse = mtomProcessor.getResponseFlow().getMode();
}
}
MessageSecurity messageSecurity = aPA.getMessageSecurity();
String messageSecurityStatus = aPA.getStatoMessageSecurity();
StatoFunzionalita messageSecurityApplyMtomRequest = null;
StatoFunzionalita messageSecurityApplyMtomResponse = null;
String securityRequestMode = null;
String securityResponseMode = null;
if(messageSecurity!=null){
if(messageSecurity.getRequestFlow()!=null){
messageSecurityApplyMtomRequest = messageSecurity.getRequestFlow().getApplyToMtom();
securityRequestMode = messageSecurity.getRequestFlow().getMode();
}
if(messageSecurity.getResponseFlow()!=null){
messageSecurityApplyMtomResponse = messageSecurity.getResponseFlow().getApplyToMtom();
securityResponseMode = messageSecurity.getResponseFlow().getMode();
}
}
CorrelazioneApplicativa corrApp = aPA.getCorrelazioneApplicativa();
CorrelazioneApplicativaRisposta corrAppRisposta = aPA.getCorrelazioneApplicativaRisposta();
String msgDiagSeverita = null;
String tracciamentoStato = null;
String tracciamentoEsiti = null;
String transazioniTempiElaborazione = null;
String transazioniToken = null;
TracciamentoConfigurazione tracciamentoDatabase = null;
TracciamentoConfigurazione tracciamentoFiletrace = null;
TracciamentoConfigurazioneFiletrace tracciamentoFiletraceDetails = null;
if(aPA.getTracciamento()!=null){
msgDiagSeverita = DriverConfigurazioneDBLib.getValue(aPA.getTracciamento().getSeverita());
tracciamentoStato = DriverConfigurazioneDBLib.getValue(aPA.getTracciamento().getStato());
tracciamentoEsiti = aPA.getTracciamento().getEsiti();
if(aPA.getTracciamento().getTransazioni()!=null) {
transazioniTempiElaborazione = DriverConfigurazioneDBLib.getValue(aPA.getTracciamento().getTransazioni().getTempiElaborazione());
transazioniToken = DriverConfigurazioneDBLib.getValue(aPA.getTracciamento().getTransazioni().getToken());
}
tracciamentoDatabase = aPA.getTracciamento().getDatabase();
tracciamentoFiletrace = aPA.getTracciamento().getFiletrace();
tracciamentoFiletraceDetails = aPA.getTracciamento().getFiletraceConfig();
}
CorsConfigurazione corsConfigurazione = aPA.getGestioneCors();
String corsStato = null;
String corsTipo = null;
String corsAllAllowOrigins = null;
String corsAllAllowMethods = null;
String corsAllAllowHeaders = null;
String corsAllowCredentials = null;
int corsAllowMaxAge = CostantiDB.FALSE;
Integer corsAllowMaxAgeSeconds = null;
String corsAllowOrigins = null;
String corsAllowHeaders = null;
String corsAllowMethods = null;
String corsAllowExposeHeaders = null;
if(corsConfigurazione!=null) {
corsStato = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getStato());
corsTipo = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getTipo());
corsAllAllowOrigins = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getAccessControlAllAllowOrigins());
corsAllAllowMethods = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getAccessControlAllAllowMethods());
corsAllAllowHeaders = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getAccessControlAllAllowHeaders());
corsAllowCredentials = DriverConfigurazioneDBLib.getValue(corsConfigurazione.getAccessControlAllowCredentials());
if(corsConfigurazione.getAccessControlMaxAge()!=null) {
corsAllowMaxAge = CostantiDB.TRUE;
corsAllowMaxAgeSeconds = corsConfigurazione.getAccessControlMaxAge();
}
if(corsConfigurazione.getAccessControlAllowOrigins()!=null && corsConfigurazione.getAccessControlAllowOrigins().sizeOriginList()>0) {
StringBuilder bf = new StringBuilder();
for (int i = 0; i < corsConfigurazione.getAccessControlAllowOrigins().sizeOriginList(); i++) {
if(i>0) {
bf.append(",");
}
bf.append(corsConfigurazione.getAccessControlAllowOrigins().getOrigin(i));
}
corsAllowOrigins = bf.toString();
}
if(corsConfigurazione.getAccessControlAllowHeaders()!=null && corsConfigurazione.getAccessControlAllowHeaders().sizeHeaderList()>0) {
StringBuilder bf = new StringBuilder();
for (int i = 0; i < corsConfigurazione.getAccessControlAllowHeaders().sizeHeaderList(); i++) {
if(i>0) {
bf.append(",");
}
bf.append(corsConfigurazione.getAccessControlAllowHeaders().getHeader(i));
}
corsAllowHeaders = bf.toString();
}
if(corsConfigurazione.getAccessControlAllowMethods()!=null && corsConfigurazione.getAccessControlAllowMethods().sizeMethodList()>0) {
StringBuilder bf = new StringBuilder();
for (int i = 0; i < corsConfigurazione.getAccessControlAllowMethods().sizeMethodList(); i++) {
if(i>0) {
bf.append(",");
}
bf.append(corsConfigurazione.getAccessControlAllowMethods().getMethod(i));
}
corsAllowMethods = bf.toString();
}
if(corsConfigurazione.getAccessControlExposeHeaders()!=null && corsConfigurazione.getAccessControlExposeHeaders().sizeHeaderList()>0) {
StringBuilder bf = new StringBuilder();
for (int i = 0; i < corsConfigurazione.getAccessControlExposeHeaders().sizeHeaderList(); i++) {
if(i>0) {
bf.append(",");
}
bf.append(corsConfigurazione.getAccessControlExposeHeaders().getHeader(i));
}
corsAllowExposeHeaders = bf.toString();
}
}
ResponseCachingConfigurazione responseCachingConfigurazone = aPA.getResponseCaching();
String responseCacheStato = null;
Integer responseCacheSeconds = null;
Long responseCacheMaxMsgSize = null;
String responseCacheHashUrl = null;
String responseCacheHashQuery = null;
String responseCacheHashQueryList = null;
String responseCacheHashHeaders = null;
String responseCacheHashHeadersList = null;
String responseCacheHashPayload = null;
boolean responseCacheNoCache = true;
boolean responseCacheMaxAge = true;
boolean responseCacheNoStore = true;
List<ResponseCachingConfigurazioneRegola> responseCacheRegole = null;
if(responseCachingConfigurazone!=null) {
responseCacheStato = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getStato());
responseCacheSeconds = responseCachingConfigurazone.getCacheTimeoutSeconds();
responseCacheMaxMsgSize = responseCachingConfigurazone.getMaxMessageSize();
if(responseCachingConfigurazone.getControl()!=null) {
responseCacheNoCache = responseCachingConfigurazone.getControl().getNoCache();
responseCacheMaxAge = responseCachingConfigurazone.getControl().getMaxAge();
responseCacheNoStore = responseCachingConfigurazone.getControl().getNoStore();
}
if(responseCachingConfigurazone.getHashGenerator()!=null) {
responseCacheHashUrl = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getHashGenerator().getRequestUri());
responseCacheHashQuery = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getHashGenerator().getQueryParameters());
if(StatoFunzionalitaCacheDigestQueryParameter.SELEZIONE_PUNTUALE.equals(responseCachingConfigurazone.getHashGenerator().getQueryParameters()) &&
(responseCachingConfigurazone.getHashGenerator().getQueryParameterList()!=null && responseCachingConfigurazone.getHashGenerator().sizeQueryParameterList()>0)
){
StringBuilder bf = new StringBuilder();
for (int i = 0; i < responseCachingConfigurazone.getHashGenerator().sizeQueryParameterList(); i++) {
if(i>0) {
bf.append(",");
}
bf.append(responseCachingConfigurazone.getHashGenerator().getQueryParameter(i));
}
responseCacheHashQueryList = bf.toString();
}
responseCacheHashHeaders = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getHashGenerator().getHeaders());
if(StatoFunzionalita.ABILITATO.equals(responseCachingConfigurazone.getHashGenerator().getHeaders()) &&
(responseCachingConfigurazone.getHashGenerator().getHeaderList()!=null && responseCachingConfigurazone.getHashGenerator().sizeHeaderList()>0)
){
StringBuilder bf = new StringBuilder();
for (int i = 0; i < responseCachingConfigurazone.getHashGenerator().sizeHeaderList(); i++) {
if(i>0) {
bf.append(",");
}
bf.append(responseCachingConfigurazone.getHashGenerator().getHeader(i));
}
responseCacheHashHeadersList = bf.toString();
}
responseCacheHashPayload = DriverConfigurazioneDBLib.getValue(responseCachingConfigurazone.getHashGenerator().getPayload());
}
responseCacheRegole = responseCachingConfigurazone.getRegolaList();
}
String behaviour = null;
if(aPA.getBehaviour()!=null) {
behaviour = aPA.getBehaviour().getNome();
}
ConfigurazionePortaHandler configHandlers = aPA.getConfigurazioneHandler();
ExtendedInfoManager extInfoManager = ExtendedInfoManager.getInstance();
IExtendedInfo extInfoConfigurazioneDriver = extInfoManager.newInstanceExtendedInfoPortaApplicativa();
try {
int n = 0;
int i = 0;
long idPortaApplicativa = 0;
long idProprietario = DBUtils.getIdSoggetto(nomeProprietario, tipoProprietario, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
// preparo lo statement in base al tipo di operazione
switch (type) {
case CREATE:
// CREATE
//campi obbligatori
//servizio ci deve essere l'id oppure tipo e nome
String tipoServizio = (servizio != null ? servizio.getTipo() : null);
String nomeServizio = (servizio != null ? servizio.getNome() : null);
Integer versioneServizio = (servizio != null ? servizio.getVersione() : null);
//se l'id non e' valido allora devono esserci necessariamente il tipo e il nome
if(idServizio<=0){
if(tipoServizio==null || tipoServizio.equals("")) throw new DriverConfigurazioneException("Tipo Servizio non impostato.");
if(nomeServizio==null || nomeServizio.equals("")) throw new DriverConfigurazioneException("Nome Servizio non impostato.");
if(versioneServizio==null) throw new DriverConfigurazioneException("Nome Servizio non impostato.");
}
//Azione
String nomeAzione = (azione != null ? azione.getNome() : null);
String patternAzione = (azione != null ? azione.getPattern() : null);
String nomePortaDeleganteAzione = (azione != null ? azione.getNomePortaDelegante() : null);
StatoFunzionalita forceInterfaceBased = (azione != null ? azione.getForceInterfaceBased() : null);
PortaApplicativaAzioneIdentificazione modeAzione = (azione != null ? azione.getIdentificazione() : null);
//Se il bean Azione nn e' presente allora non controllo nulla
if(azione!=null){
if(modeAzione==null || modeAzione.equals(""))
modeAzione = PortaApplicativaAzioneIdentificazione.STATIC;
switch (modeAzione) {
case CONTENT_BASED:
case URL_BASED:
case HEADER_BASED:
if(patternAzione==null || patternAzione.equals("")) throw new DriverConfigurazioneException("Pattern Azione non impostato.");
nomeAzione=null;
break;
case DELEGATED_BY:
if(nomePortaDeleganteAzione==null || nomePortaDeleganteAzione.equals("")) throw new DriverConfigurazioneException("Nome Porta Delegante Azione non impostata.");
nomeAzione=null;
break;
case INPUT_BASED:
case SOAP_ACTION_BASED:
case INTERFACE_BASED:
case PROTOCOL_BASED:
//nessun campo obbligatorio
break;
case STATIC:
//ci deve essere il nome
if(nomeAzione==null || nomeAzione.equals("")) throw new DriverConfigurazioneException("Nome Azione non impostato.");
patternAzione=null;
break;
default:
break;
}
}
String utenteRichiedente = null;
if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getUtenteRichiedente()!=null) {
utenteRichiedente = aPA.getProprietaOggetto().getUtenteRichiedente();
}
else {
utenteRichiedente = DBUtils.getSuperUserServizioSafe(DriverConfigurazioneDBLib.log, "CRUDPortaApplicativa",
idServizio, con, DriverConfigurazioneDBLib.tipoDB);
}
Timestamp dataCreazione = null;
if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getDataCreazione()!=null) {
dataCreazione = new Timestamp(aPA.getProprietaOggetto().getDataCreazione().getTime());
}
else if(aPA.getOraRegistrazione()!=null){
dataCreazione = new Timestamp(aPA.getOraRegistrazione().getTime());
}
else {
dataCreazione = DateManager.getTimestamp();
}
ISQLQueryObject sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE);
sqlQueryObject.addInsertField("nome_porta", "?");
sqlQueryObject.addInsertField("descrizione", "?");
sqlQueryObject.addInsertField("id_soggetto_virtuale", "?");
sqlQueryObject.addInsertField("tipo_soggetto_virtuale", "?");
sqlQueryObject.addInsertField("nome_soggetto_virtuale", "?");
sqlQueryObject.addInsertField("id_servizio", "?");
sqlQueryObject.addInsertField("tipo_servizio", "?");
sqlQueryObject.addInsertField("servizio", "?");
sqlQueryObject.addInsertField("versione_servizio", "?");
sqlQueryObject.addInsertField("azione", "?");
sqlQueryObject.addInsertField("mode_azione", "?");
sqlQueryObject.addInsertField("pattern_azione", "?");
sqlQueryObject.addInsertField("nome_porta_delegante_azione", "?");
sqlQueryObject.addInsertField("force_interface_based_azione", "?");
sqlQueryObject.addInsertField("mtom_request_mode", "?");
sqlQueryObject.addInsertField("mtom_response_mode", "?");
sqlQueryObject.addInsertField("security", "?");
sqlQueryObject.addInsertField("security_mtom_req", "?");
sqlQueryObject.addInsertField("security_mtom_res", "?");
sqlQueryObject.addInsertField("security_request_mode", "?");
sqlQueryObject.addInsertField("security_response_mode", "?");
sqlQueryObject.addInsertField("id_soggetto", "?");
sqlQueryObject.addInsertField("ricevuta_asincrona_sim", "?");
sqlQueryObject.addInsertField("ricevuta_asincrona_asim", "?");
sqlQueryObject.addInsertField("integrazione", "?");
sqlQueryObject.addInsertField("validazione_contenuti_stato", "?");
sqlQueryObject.addInsertField("validazione_contenuti_tipo", "?");
sqlQueryObject.addInsertField("validazione_contenuti_mtom", "?");
sqlQueryObject.addInsertField("allega_body", "?");
sqlQueryObject.addInsertField("scarta_body", "?");
sqlQueryObject.addInsertField("gestione_manifest", "?");
sqlQueryObject.addInsertField("stateless", "?");
sqlQueryObject.addInsertField("behaviour", "?");
sqlQueryObject.addInsertField("autenticazione", "?");
sqlQueryObject.addInsertField("autenticazione_opzionale", "?");
sqlQueryObject.addInsertField("token_policy", "?");
sqlQueryObject.addInsertField("token_opzionale", "?");
sqlQueryObject.addInsertField("token_validazione", "?");
sqlQueryObject.addInsertField("token_introspection", "?");
sqlQueryObject.addInsertField("token_user_info", "?");
sqlQueryObject.addInsertField("token_forward", "?");
sqlQueryObject.addInsertField("token_options", "?");
sqlQueryObject.addInsertField("token_authn_issuer", "?");
sqlQueryObject.addInsertField("token_authn_client_id", "?");
sqlQueryObject.addInsertField("token_authn_subject", "?");
sqlQueryObject.addInsertField("token_authn_username", "?");
sqlQueryObject.addInsertField("token_authn_email", "?");
sqlQueryObject.addInsertField("autorizzazione", "?");
sqlQueryObject.addInsertField("autorizzazione_xacml", "?");
sqlQueryObject.addInsertField("autorizzazione_contenuto", "?");
sqlQueryObject.addInsertField("ruoli_match", "?");
sqlQueryObject.addInsertField("token_sa_stato", "?");
sqlQueryObject.addInsertField("token_ruoli_stato", "?");
sqlQueryObject.addInsertField("token_ruoli_match", "?");
sqlQueryObject.addInsertField("token_ruoli_tipologia", "?");
sqlQueryObject.addInsertField("scope_stato", "?");
sqlQueryObject.addInsertField("scope_match", "?");
sqlQueryObject.addInsertField("ricerca_porta_azione_delegata", "?");
sqlQueryObject.addInsertField("msg_diag_severita", "?");
sqlQueryObject.addInsertField("tracciamento_stato", "?");
sqlQueryObject.addInsertField("tracciamento_esiti", "?");
sqlQueryObject.addInsertField("transazioni_tempi", "?");
sqlQueryObject.addInsertField("transazioni_token", "?");
sqlQueryObject.addInsertField("stato", "?");
// cors
sqlQueryObject.addInsertField("cors_stato", "?");
sqlQueryObject.addInsertField("cors_tipo", "?");
sqlQueryObject.addInsertField("cors_all_allow_origins", "?");
sqlQueryObject.addInsertField("cors_all_allow_methods", "?");
sqlQueryObject.addInsertField("cors_all_allow_headers", "?");
sqlQueryObject.addInsertField("cors_allow_credentials", "?");
sqlQueryObject.addInsertField("cors_allow_max_age", "?");
sqlQueryObject.addInsertField("cors_allow_max_age_seconds", "?");
sqlQueryObject.addInsertField("cors_allow_origins", "?");
sqlQueryObject.addInsertField("cors_allow_headers", "?");
sqlQueryObject.addInsertField("cors_allow_methods", "?");
sqlQueryObject.addInsertField("cors_allow_expose_headers", "?");
// responseCaching
sqlQueryObject.addInsertField("response_cache_stato", "?");
sqlQueryObject.addInsertField("response_cache_seconds", "?");
sqlQueryObject.addInsertField("response_cache_max_msg_size", "?");
sqlQueryObject.addInsertField("response_cache_control_nocache", "?");
sqlQueryObject.addInsertField("response_cache_control_maxage", "?");
sqlQueryObject.addInsertField("response_cache_control_nostore", "?");
sqlQueryObject.addInsertField("response_cache_hash_url", "?");
sqlQueryObject.addInsertField("response_cache_hash_query", "?");
sqlQueryObject.addInsertField("response_cache_hash_query_list", "?");
sqlQueryObject.addInsertField("response_cache_hash_headers", "?");
sqlQueryObject.addInsertField("response_cache_hash_hdr_list", "?");
sqlQueryObject.addInsertField("response_cache_hash_payload", "?");
// servizio applicativo default
sqlQueryObject.addInsertField("id_sa_default", "?");
// id
sqlQueryObject.addInsertField("id_accordo", "?");
sqlQueryObject.addInsertField("id_port_type", "?");
sqlQueryObject.addInsertField("scadenza_correlazione_appl", "?");
// options
sqlQueryObject.addInsertField("options", "?");
// canale
sqlQueryObject.addInsertField("canale", "?");
if(utenteRichiedente!=null) {
sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE, "?");
}
if(dataCreazione!=null) {
sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE, "?");
}
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int index = 1;
stm.setString(index++, nomePorta);
stm.setString(index++, descrizione);
stm.setLong(index++, idSoggVirt);
stm.setString(index++, tipoSoggVirt);//tipo sogg virt
stm.setString(index++, nomeSoggVirt); //nome sogg virt
stm.setLong(index++, idServizio);
stm.setString(index++, tipoServizio);
stm.setString(index++, nomeServizio);
stm.setInt(index++, versioneServizio);
stm.setString(index++, (azione != null ? azione.getNome() : null));
if(modeAzione!=null){
stm.setString(index++, modeAzione.toString());
}
else{
stm.setString(index++, null);
}
stm.setString(index++, patternAzione);
stm.setString(index++, nomePortaDeleganteAzione);
stm.setString(index++, DriverConfigurazioneDBLib.getValue(forceInterfaceBased));
// mtom
stm.setString(index++, DriverConfigurazioneDBLib.getValue(mtomModeRequest));
stm.setString(index++, DriverConfigurazioneDBLib.getValue(mtomModeResponse));
// messageSecurity
stm.setString(index++, messageSecurityStatus);
stm.setString(index++, DriverConfigurazioneDBLib.getValue(messageSecurityApplyMtomRequest));
stm.setString(index++, DriverConfigurazioneDBLib.getValue(messageSecurityApplyMtomResponse));
stm.setString(index++, securityRequestMode);
stm.setString(index++, securityResponseMode);
// proprietario
stm.setLong(index++, idProprietario);
//ricevuta asincrona_asimmetrica/simmetrica
stm.setString(index++, aPA.getRicevutaAsincronaSimmetrica()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicevutaAsincronaSimmetrica()) : null);
stm.setString(index++, aPA.getRicevutaAsincronaAsimmetrica()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicevutaAsincronaAsimmetrica()) : null);
//integrazione
stm.setString(index++, aPA.getIntegrazione()!=null ? aPA.getIntegrazione() : null);
//validazione xsd
stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getStato()) : null);
stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getTipo()) : null);
stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getAcceptMtomMessage()) : null);
// InvocazionePorta: funzionalita' attachment
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getAllegaBody()) : null);
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getScartaBody()) : null);
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getGestioneManifest()) : null);
// Stateless
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getStateless()) : null);
// Behaviour
stm.setString(index++, behaviour);
// Autenticazione
stm.setString(index++, autenticazione);
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getAutenticazioneOpzionale()) : null);
// token
stm.setString(index++, gestioneToken!=null ? gestioneToken.getPolicy() : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getTokenOpzionale()) : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getValidazione()) : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getIntrospection()) : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getUserInfo()) : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getForward()) : null);
stm.setString(index++, gestioneToken!=null ? gestioneToken.getOptions() : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getIssuer()) : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getClientId()) : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getSubject()) : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getUsername()) : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getEmail()) : null);
// Autorizzazione
stm.setString(index++, autorizzazione);
stm.setString(index++, autorizzazioneXacmlPolicy);
stm.setString(index++, aPA!=null ? aPA.getAutorizzazioneContenuto() : null);
// Ruoli
stm.setString(index++, aPA!=null && aPA.getRuoli()!=null && aPA.getRuoli().getMatch()!=null ?
aPA.getRuoli().getMatch().getValue() : null);
// Token sa
stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getAutorizzazioneApplicativi()!=null ?
DriverConfigurazioneDBLib.getValue(aPA.getAutorizzazioneToken().getAutorizzazioneApplicativi()) : null);
// Token ruoli
stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getAutorizzazioneRuoli()!=null ?
DriverConfigurazioneDBLib.getValue(aPA.getAutorizzazioneToken().getAutorizzazioneRuoli()) : null);
stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getRuoli()!=null &&
aPA.getAutorizzazioneToken().getRuoli().getMatch()!=null ?
aPA.getAutorizzazioneToken().getRuoli().getMatch().getValue() : null);
stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getTipologiaRuoli()!=null ?
aPA.getAutorizzazioneToken().getTipologiaRuoli().getValue() : null);
// Scope
stm.setString(index++, aPA!=null && aPA.getScope()!=null && aPA.getScope().getStato()!=null ?
DriverConfigurazioneDBLib.getValue(aPA.getScope().getStato()) : null);
stm.setString(index++, aPA!=null && aPA.getScope()!=null && aPA.getScope().getMatch()!=null ?
aPA.getScope().getMatch().getValue() : null);
// RicercaPortaAzioneDelegata
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicercaPortaAzioneDelegata()) : null);
// Tracciamento
stm.setString(index++, msgDiagSeverita);
stm.setString(index++, tracciamentoStato);
stm.setString(index++, tracciamentoEsiti);
stm.setString(index++, transazioniTempiElaborazione);
stm.setString(index++, transazioniToken);
// Stato
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getStato()) : null);
// cors
stm.setString(index++, corsStato);
stm.setString(index++, corsTipo);
stm.setString(index++, corsAllAllowOrigins);
stm.setString(index++, corsAllAllowMethods);
stm.setString(index++, corsAllAllowHeaders);
stm.setString(index++, corsAllowCredentials);
stm.setInt(index++, corsAllowMaxAge);
if(corsAllowMaxAgeSeconds!=null) {
stm.setInt(index++, corsAllowMaxAgeSeconds);
}
else {
stm.setNull(index++, java.sql.Types.INTEGER);
}
stm.setString(index++, corsAllowOrigins);
stm.setString(index++, corsAllowHeaders);
stm.setString(index++, corsAllowMethods);
stm.setString(index++, corsAllowExposeHeaders);
// responseCaching
stm.setString(index++, responseCacheStato);
if(responseCacheSeconds!=null) {
stm.setInt(index++, responseCacheSeconds);
}
else {
stm.setNull(index++, java.sql.Types.INTEGER);
}
if(responseCacheMaxMsgSize!=null) {
stm.setLong(index++, responseCacheMaxMsgSize);
}
else {
stm.setNull(index++, java.sql.Types.BIGINT);
}
stm.setInt(index++, responseCacheNoCache ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.setInt(index++, responseCacheMaxAge ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.setInt(index++, responseCacheNoStore ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.setString(index++, responseCacheHashUrl);
stm.setString(index++, responseCacheHashQuery);
stm.setString(index++, responseCacheHashQueryList);
stm.setString(index++, responseCacheHashHeaders);
stm.setString(index++, responseCacheHashHeadersList);
stm.setString(index++, responseCacheHashPayload);
// servizio applicativo default
long idServizioApplicativoDefault = -1;
if(aPA.getServizioApplicativoDefault()!=null) {
idServizioApplicativoDefault = DBUtils.getIdServizioApplicativo(aPA.getServizioApplicativoDefault(), tipoProprietario, nomeProprietario,
con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
if(idServizioApplicativoDefault<=0) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa(CREATE)] Impossibile recuperare l'ID del servizio applicativo di default '"+aPA.getServizioApplicativoDefault()+"'.");
}
}
stm.setLong(index++, idServizioApplicativoDefault);
//idaccordo
stm.setLong(index++, aPA.getIdAccordo()!=null ? aPA.getIdAccordo() : -1L);
stm.setLong(index++, aPA.getIdPortType() !=null ? aPA.getIdPortType() : -1L);
// ScadenzaCorrelazioneApplicativa
stm.setString(index++, aPA.getCorrelazioneApplicativa()!=null ? aPA.getCorrelazioneApplicativa().getScadenza() : null);
// options
stm.setString(index++, aPA.getOptions());
// canale
stm.setString(index++, aPA.getCanale());
if(utenteRichiedente!=null) {
stm.setString(index++, utenteRichiedente);
}
if(dataCreazione!=null) {
stm.setTimestamp(index++, dataCreazione);
}
n = stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Created " + n + " row(s)");
// recupero l'id della porta applicativa appena inserita
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE);
sqlQueryObject.addSelectField("id");
sqlQueryObject.addWhereCondition("id_soggetto = ?");
sqlQueryObject.addWhereCondition("nome_porta = ?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLQuery();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idProprietario);
stm.setString(2, nomePorta);
rs = stm.executeQuery();
if (rs.next()) {
idPortaApplicativa = rs.getLong("id");
aPA.setId(idPortaApplicativa);
} else {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa(CREATE)] Impossibile recuperare l'ID della PortaApplicativa appena create.");
}
rs.close();
stm.close();
if(mtomProcessor!=null){
MtomProcessorFlowParameter reqParam = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MTOM_REQUEST);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("pattern", "?");
sqlQueryObject.addInsertField("content_type", "?");
sqlQueryObject.addInsertField("required", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
i = 0;
if(mtomProcessor.getRequestFlow()!=null){
MtomProcessorFlow flow = mtomProcessor.getRequestFlow();
for (i = 0; i < flow.sizeParameterList(); i++) {
reqParam = flow.getParameter(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, reqParam.getNome());
stm.setString(3, reqParam.getPattern());
stm.setString(4, reqParam.getContentType());
stm.setInt(5, reqParam.getRequired() ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.executeUpdate();
}
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " mtom request flow con id=" + idPortaApplicativa);
MtomProcessorFlowParameter resParam = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MTOM_RESPONSE);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("pattern", "?");
sqlQueryObject.addInsertField("content_type", "?");
sqlQueryObject.addInsertField("required", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
i = 0;
if(mtomProcessor.getResponseFlow()!=null){
MtomProcessorFlow flow = mtomProcessor.getResponseFlow();
for (i = 0; i < flow.sizeParameterList(); i++) {
resParam = flow.getParameter(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, resParam.getNome());
stm.setString(3, resParam.getPattern());
stm.setString(4, resParam.getContentType());
stm.setInt(5, resParam.getRequired() ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.executeUpdate();
}
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " mtom response flow con id=" + idPortaApplicativa);
}
// se security abilitato setto la lista
/**if ((messageSecurity != null) && CostantiConfigurazione.ABILITATO.toString().equals(messageSecurityStatus) ) {*/
// Devo settarli sempre se ci sono, in modo che lo switch abilitato-disabilitato funzioni
if ((messageSecurity != null) ) {
MessageSecurityFlowParameter reqParam = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
i = 0;
if(messageSecurity.getRequestFlow()!=null){
MessageSecurityFlow flow = messageSecurity.getRequestFlow();
for (i = 0; i < flow.sizeParameterList(); i++) {
reqParam = flow.getParameter(i);
int indexSec = 1;
stm.setLong(indexSec++, idPortaApplicativa);
stm.setString(indexSec++, reqParam.getNome());
String plainValue = reqParam.getValore();
String encValue = null;
if(driverBYOK!=null &&
(
DriverConfigurazioneDB_genericPropertiesDriver.isConfidentialProperty(securityRequestMode, reqParam.getNome())
||
BYOKUtilities.isWrappedValue(plainValue)
)
) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValue);
if(byokValue!=null) {
encValue = byokValue.getWrappedValue();
plainValue = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexSec++, plainValue);
stm.setString(indexSec++, encValue);
stm.executeUpdate();
}
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " request flow con id=" + idPortaApplicativa);
MessageSecurityFlowParameter resParam = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
i = 0;
if(messageSecurity.getResponseFlow()!=null){
MessageSecurityFlow flow = messageSecurity.getResponseFlow();
for (i = 0; i < flow.sizeParameterList(); i++) {
resParam = flow.getParameter(i);
int indexSec = 1;
stm.setLong(indexSec++, idPortaApplicativa);
stm.setString(indexSec++, resParam.getNome());
String plainValue = resParam.getValore();
String encValue = null;
if(driverBYOK!=null &&
(
DriverConfigurazioneDB_genericPropertiesDriver.isConfidentialProperty(securityResponseMode, resParam.getNome())
||
BYOKUtilities.isWrappedValue(plainValue)
)
) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValue);
if(byokValue!=null) {
encValue = byokValue.getWrappedValue();
plainValue = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexSec++, plainValue);
stm.setString(indexSec++, encValue);
stm.executeUpdate();
}
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " response flow con id=" + idPortaApplicativa);
}
// la lista di correlazioni applicative contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
if (corrApp != null) {
//inserisco i valori presenti nella lista
CorrelazioneApplicativaElemento cae = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome_elemento", "?");
sqlQueryObject.addInsertField("mode_correlazione", "?");
sqlQueryObject.addInsertField("pattern", "?");
sqlQueryObject.addInsertField("identificazione_fallita", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < corrApp.sizeElementoList(); i++) {
cae = corrApp.getElemento(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, cae.getNome());
stm.setString(3, DriverConfigurazioneDBLib.getValue(cae.getIdentificazione()));
if (cae.getPattern() != null)
stm.setString(4, cae.getPattern());
else
stm.setString(4, "");
stm.setString(5, DriverConfigurazioneDBLib.getValue(cae.getIdentificazioneFallita()));
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " correlazione applicativa con id=" + idPortaApplicativa);
}
// la lista di correlazioni applicative risposta contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
if (corrAppRisposta != null) {
//inserisco i valori presenti nella lista
CorrelazioneApplicativaRispostaElemento cae = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE_RISPOSTA);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome_elemento", "?");
sqlQueryObject.addInsertField("mode_correlazione", "?");
sqlQueryObject.addInsertField("pattern", "?");
sqlQueryObject.addInsertField("identificazione_fallita", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < corrAppRisposta.sizeElementoList(); i++) {
cae = corrAppRisposta.getElemento(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, cae.getNome());
stm.setString(3, DriverConfigurazioneDBLib.getValue(cae.getIdentificazione()));
if (cae.getPattern() != null)
stm.setString(4, cae.getPattern());
else
stm.setString(4, "");
stm.setString(5, DriverConfigurazioneDBLib.getValue(cae.getIdentificazioneFallita()));
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " correlazione applicativa risposta con id=" + idPortaApplicativa);
}
// serviziapplicativi
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
sqlQueryObject.addInsertField("connettore_nome", "?");
sqlQueryObject.addInsertField("connettore_notifica", "?");
sqlQueryObject.addInsertField("connettore_descrizione", "?");
sqlQueryObject.addInsertField("connettore_stato", "?");
sqlQueryObject.addInsertField("connettore_scheduling", "?");
sqlQueryObject.addInsertField("connettore_filtri", "?");
sqlQueryObject.addInsertField("connettore_coda", "?");
sqlQueryObject.addInsertField("connettore_priorita", "?");
sqlQueryObject.addInsertField("connettore_max_priorita", "?");
sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE, "?");
sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE, "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
List<Long> idsPaSa = new ArrayList<>();
for (i = 0; i < aPA.sizeServizioApplicativoList(); i++) {
PortaApplicativaServizioApplicativo servizioApplicativo = aPA.getServizioApplicativo(i);
String nomeSA = servizioApplicativo.getNome();
//nome/tipo soggetto proprietario servizio applicativo sono gli stessi della porta applicativa
String nomeProprietarioSA = aPA.getNomeSoggettoProprietario();//servizioApplicativo.getNomeSoggettoProprietario();
String tipoProprietarioSA = aPA.getTipoSoggettoProprietario();//servizioApplicativo.getTipoSoggettoProprietario();
if (nomeSA == null || nomeSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)::Nome del ServizioApplicativo associato non valido.");
if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)::Nome Proprietario del ServizioApplicativo associato non valido.");
if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)::Tipo Proprietario del ServizioApplicativo associato non valido.");
long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
if (idSA <= 0)
throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
idsPaSa.add(idSA);
String utenteRichiedenteSA = null;
if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteRichiedente()!=null) {
utenteRichiedenteSA = servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteRichiedente();
}
else {
utenteRichiedenteSA = utenteRichiedente; // uso richiedente della PA
}
Timestamp dataCreazioneSA = null;
if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataCreazione()!=null) {
dataCreazioneSA = new Timestamp(servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataCreazione().getTime());
}
else {
dataCreazioneSA = dataCreazione; // uso data creazione della PA
}
int indexSA = 1;
stm.setLong(indexSA++, idPortaApplicativa);
stm.setLong(indexSA++, idSA);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? servizioApplicativo.getDatiConnettore().getNome() : null);
stm.setInt(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? (servizioApplicativo.getDatiConnettore().isNotifica() ? CostantiDB.TRUE : CostantiDB.FALSE) : CostantiDB.FALSE);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? servizioApplicativo.getDatiConnettore().getDescrizione() : null);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? DriverConfigurazioneDBLib.getValue(servizioApplicativo.getDatiConnettore().getStato()) : null);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? DriverConfigurazioneDBLib.getValue(servizioApplicativo.getDatiConnettore().getScheduling()) : null);
String filtri = null;
if(servizioApplicativo.getDatiConnettore()!=null &&
(servizioApplicativo.getDatiConnettore().getFiltroList()!=null && servizioApplicativo.getDatiConnettore().sizeFiltroList()>0)
){
StringBuilder bf = new StringBuilder();
for (int k = 0; k < servizioApplicativo.getDatiConnettore().sizeFiltroList(); k++) {
if(k>0) {
bf.append(",");
}
bf.append(servizioApplicativo.getDatiConnettore().getFiltro(k));
}
filtri = bf.toString();
}
stm.setString(indexSA++, filtri);
if(servizioApplicativo.getDatiConnettore()!=null) {
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore().getCoda()!=null ? servizioApplicativo.getDatiConnettore().getCoda() : CostantiConfigurazione.CODA_DEFAULT);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore().getPriorita()!=null ? servizioApplicativo.getDatiConnettore().getPriorita() : CostantiConfigurazione.PRIORITA_DEFAULT);
stm.setInt(indexSA++, servizioApplicativo.getDatiConnettore().isPrioritaMax() ? CostantiDB.TRUE : CostantiDB.FALSE);
}
else {
stm.setString(indexSA++, CostantiConfigurazione.CODA_DEFAULT);
stm.setString(indexSA++, CostantiConfigurazione.PRIORITA_DEFAULT);
stm.setInt(indexSA++, CostantiDB.FALSE);
}
stm.setString(indexSA++, utenteRichiedenteSA);
stm.setTimestamp(indexSA++, dataCreazioneSA);
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// serviziapplicativi props
for (i = 0; i < aPA.sizeServizioApplicativoList(); i++) {
PortaApplicativaServizioApplicativo servizioApplicativo = aPA.getServizioApplicativo(i);
String nomeSA = servizioApplicativo.getNome();
if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().sizeProprietaList()>0) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
sqlQueryObject.addSelectField("id");
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQueryObject.addWhereCondition("id_servizio_applicativo=?");
sqlQueryObject.setANDLogicOperator(true);
long idSA = idsPaSa.get(i);
long idPA_SA = -1;
sqlQuery = sqlQueryObject.createSQLQuery();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setLong(2, idSA);
rs = stm.executeQuery();
if(rs.next()) {
idPA_SA = rs.getLong("id");
}
rs.close();
stm.close();
if(idPA_SA<=0) {
throw new DriverConfigurazioneException("Impossibile recuperare l'id della registrazione del Servizio Applicativo [" + nomeSA + "](id:"+idSA+") alla porta applicativa con id:"+idPortaApplicativa );
}
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA_PROPS);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int j = 0;
for ( ; j < servizioApplicativo.getDatiConnettore().sizeProprietaList(); j++) {
Proprieta p = servizioApplicativo.getDatiConnettore().getProprieta(j);
if(p.getValore()==null || "".equals(p.getValore())) {
continue; // non devo serializzare valori vuoti o null (DB oracle non lo permette)
}
stm.setLong(1, idPA_SA);
stm.setString(2, p.getNome());
stm.setString(3, p.getValore());
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + j + " SetSAProp associati al Servizio Applicativo [" + nomeSA + "](id:"+idSA+") della PortaApplicativa[" + idPortaApplicativa + "]");
}
}
// set prop behaviour
if(aPA.getBehaviour()!=null) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_BEHAVIOUR_PROPS);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.getBehaviour().sizeProprietaList(); i++) {
propProtocollo = aPA.getBehaviour().getProprieta(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, propProtocollo.getNome());
stm.setString(3, propProtocollo.getValore());
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SeBehaviourProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");
}
// set prop autenticazione
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTENTICAZIONE_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.sizeProprietaAutenticazioneList(); i++) {
propProtocollo = aPA.getProprietaAutenticazione(i);
int indexP = 1;
stm.setLong(indexP++, idPortaApplicativa);
stm.setString(indexP++, propProtocollo.getNome());
String plainValueP = propProtocollo.getValore();
String encValueP = null;
if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
if(byokValue!=null) {
encValueP = byokValue.getWrappedValue();
plainValueP = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexP++, plainValueP);
stm.setString(indexP++, encValueP);
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolPropAutenticazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// set prop autorizzazione
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.sizeProprietaAutorizzazioneList(); i++) {
propProtocollo = aPA.getProprietaAutorizzazione(i);
int indexP = 1;
stm.setLong(indexP++, idPortaApplicativa);
stm.setString(indexP++, propProtocollo.getNome());
String plainValueP = propProtocollo.getValore();
String encValueP = null;
if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
if(byokValue!=null) {
encValueP = byokValue.getWrappedValue();
plainValueP = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexP++, plainValueP);
stm.setString(indexP++, encValueP);
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolPropAutorizzazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// set prop autorizzazione contenuti
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_CONTENUTI_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.sizeProprietaAutorizzazioneContenutoList(); i++) {
propProtocollo = aPA.getProprietaAutorizzazioneContenuto(i);
int indexP = 1;
stm.setLong(indexP++, idPortaApplicativa);
stm.setString(indexP++, propProtocollo.getNome());
String plainValueP = propProtocollo.getValore();
String encValueP = null;
if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
if(byokValue!=null) {
encValueP = byokValue.getWrappedValue();
plainValueP = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexP++, plainValueP);
stm.setString(indexP++, encValueP);
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolPropAutorizzazioneContenuti associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// set prop rate limiting
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.sizeProprietaRateLimitingList(); i++) {
propProtocollo = aPA.getProprietaRateLimiting(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, propProtocollo.getNome());
stm.setString(3, propProtocollo.getValore());
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolPropRateLimiting associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// set prop
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.sizeProprietaList(); i++) {
propProtocollo = aPA.getProprieta(i);
int indexP = 1;
stm.setLong(indexP++, idPortaApplicativa);
stm.setString(indexP++, propProtocollo.getNome());
String plainValueP = propProtocollo.getValore();
String encValueP = null;
if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
if(byokValue!=null) {
encValueP = byokValue.getWrappedValue();
plainValueP = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexP++, plainValueP);
stm.setString(indexP++, encValueP);
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SetProtocolProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// Ruoli
n=0;
if(aPA.getRuoli()!=null && aPA.getRuoli().sizeRuoloList()>0){
for (int j = 0; j < aPA.getRuoli().sizeRuoloList(); j++) {
Ruolo ruolo = aPA.getRuoli().getRuolo(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("ruolo", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, aPA.getId());
stm.setString(2, ruolo.getNome());
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto ruolo[" + ruolo.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " ruoli alla PortaApplicativa[" + idPortaApplicativa + "]");
// Scope
n=0;
if(aPA.getScope()!=null && aPA.getScope().sizeScopeList()>0){
for (int j = 0; j < aPA.getScope().sizeScopeList(); j++) {
Scope scope = aPA.getScope().getScope(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("scope", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, aPA.getId());
stm.setString(2, scope.getNome());
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto scope[" + scope.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " scope alla PortaApplicativa[" + idPortaApplicativa + "]");
// Soggetti
n=0;
if(aPA.getSoggetti()!=null && aPA.getSoggetti().sizeSoggettoList()>0){
for (int j = 0; j < aPA.getSoggetti().sizeSoggettoList(); j++) {
PortaApplicativaAutorizzazioneSoggetto soggetto = aPA.getSoggetti().getSoggetto(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("tipo_soggetto", "?");
sqlQueryObject.addInsertField("nome_soggetto", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, aPA.getId());
stm.setString(2, soggetto.getTipo());
stm.setString(3, soggetto.getNome());
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto soggetto [" + soggetto.getTipo() + "/"+soggetto.getNome()+"] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " soggetti alla PortaApplicativa[" + idPortaApplicativa + "]");
// serviziapplicativi autorizzati
if(aPA.getServiziApplicativiAutorizzati()!=null && aPA.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()>0) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.getServiziApplicativiAutorizzati().sizeServizioApplicativoList(); i++) {
PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativo = aPA.getServiziApplicativiAutorizzati().getServizioApplicativo(i);
String nomeSA = servizioApplicativo.getNome();
String nomeProprietarioSA = servizioApplicativo.getNomeSoggettoProprietario();
String tipoProprietarioSA = servizioApplicativo.getTipoSoggettoProprietario();
if (nomeSA == null || nomeSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Nome del ServizioApplicativo associato non valido.");
if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Nome Proprietario del ServizioApplicativo associato non valido.");
if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Tipo Proprietario del ServizioApplicativo associato non valido.");
long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
if (idSA <= 0)
throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
stm.setLong(1, idPortaApplicativa);
stm.setLong(2, idSA);
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi autorizzati associati alla PortaApplicativa[" + idPortaApplicativa + "]");
}
// serviziapplicativi token autorizzati
if(aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getServiziApplicativi()!=null &&
aPA.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()>0) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList(); i++) {
PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativo = aPA.getAutorizzazioneToken().getServiziApplicativi().getServizioApplicativo(i);
String nomeSA = servizioApplicativo.getNome();
String nomeProprietarioSA = servizioApplicativo.getNomeSoggettoProprietario();
String tipoProprietarioSA = servizioApplicativo.getTipoSoggettoProprietario();
if (nomeSA == null || nomeSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Nome del ServizioApplicativo associato non valido.");
if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Nome Proprietario del ServizioApplicativo associato non valido.");
if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Tipo Proprietario del ServizioApplicativo associato non valido.");
long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
if (idSA <= 0)
throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
stm.setLong(1, idPortaApplicativa);
stm.setLong(2, idSA);
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi autorizzati (token) associati alla PortaApplicativa[" + idPortaApplicativa + "]");
}
// Ruoli (token)
n=0;
if(aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getRuoli()!=null && aPA.getAutorizzazioneToken().getRuoli().sizeRuoloList()>0){
for (int j = 0; j < aPA.getAutorizzazioneToken().getRuoli().sizeRuoloList(); j++) {
Ruolo ruolo = aPA.getAutorizzazioneToken().getRuoli().getRuolo(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("ruolo", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, aPA.getId());
stm.setString(2, ruolo.getNome());
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto ruolo[" + ruolo.getNome() + "] (token) alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " ruoli (token) alla PortaApplicativa[" + idPortaApplicativa + "]");
// Azioni
n=0;
if(aPA.getAzione()!=null && aPA.getAzione().sizeAzioneDelegataList()>0){
for (int j = 0; j < aPA.getAzione().sizeAzioneDelegataList(); j++) {
String azioneDelegata = aPA.getAzione().getAzioneDelegata(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("azione", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, aPA.getId());
stm.setString(2, azioneDelegata);
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto azione delegata [" + azioneDelegata + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " azioni delegate alla PortaApplicativa[" + idPortaApplicativa + "]");
// Cache Regole
n=0;
if(responseCacheRegole!=null && responseCacheRegole.size()>0){
for (int j = 0; j < responseCacheRegole.size(); j++) {
ResponseCachingConfigurazioneRegola regola = responseCacheRegole.get(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CACHE_REGOLE);
sqlQueryObject.addInsertField("id_porta", "?");
if(regola.getReturnCodeMin()!=null && regola.getReturnCodeMin()>0) {
sqlQueryObject.addInsertField("status_min", "?");
}
if(regola.getReturnCodeMax()!=null && regola.getReturnCodeMax()>0) {
sqlQueryObject.addInsertField("status_max", "?");
}
sqlQueryObject.addInsertField("fault", "?");
if(regola.getCacheTimeoutSeconds()!=null && regola.getCacheTimeoutSeconds()>0) {
sqlQueryObject.addInsertField("cache_seconds", "?");
}
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int indexCR = 1;
stm.setLong(indexCR++, aPA.getId());
if(regola.getReturnCodeMin()!=null && regola.getReturnCodeMin()>0) {
stm.setInt(indexCR++, regola.getReturnCodeMin());
}
if(regola.getReturnCodeMax()!=null && regola.getReturnCodeMax()>0) {
stm.setInt(indexCR++, regola.getReturnCodeMax());
}
stm.setInt(indexCR++, regola.getFault() ? CostantiDB.TRUE : CostantiDB.FALSE);
if(regola.getCacheTimeoutSeconds()!=null && regola.getCacheTimeoutSeconds()>0) {
stm.setInt(indexCR++, regola.getCacheTimeoutSeconds());
}
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunta regola di cache alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " regole di cache alla PortaApplicativa[" + idPortaApplicativa + "]");
// AttributeAuthority
n=0;
if(aPA.sizeAttributeAuthorityList()>0){
for (int j = 0; j < aPA.sizeAttributeAuthorityList(); j++) {
AttributeAuthority aa = aPA.getAttributeAuthority(j);
String attributi = null;
if(aa.sizeAttributoList()>0) {
StringBuilder bf = new StringBuilder();
for (int aaI = 0; aaI < aa.sizeAttributoList(); aaI++) {
if(aaI>0) {
bf.append(",");
}
bf.append(aa.getAttributo(aaI));
}
attributi = bf.toString();
}
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("attributi", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, aPA.getId());
stm.setString(2, aa.getNome());
stm.setString(3, attributi);
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto A.A.[" + aa.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " A.A. alla PortaApplicativa[" + idPortaApplicativa + "]");
// tracciamentoConfigurazione
DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoDatabase, aPA.getId(),
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_DB);
DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoFiletrace, aPA.getId(),
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_FILETRACE);
DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazioneFiletrace(type, con, tracciamentoFiletraceDetails, aPA.getId(),
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA);
// dumpConfigurazione
DriverConfigurazioneDB_dumpLIB.CRUDDumpConfigurazione(type, con, aPA.getDump(), aPA.getId(), CostantiDB.DUMP_CONFIGURAZIONE_PROPRIETARIO_PA);
// trasformazioni
DriverConfigurazioneDBTrasformazioniLib.CRUDTrasformazioni(type, con, aPA.getTrasformazioni(), aPA.getId(), false);
// handlers
if(configHandlers!=null) {
if(configHandlers.getRequest()!=null) {
DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, aPA.getId(), true, configHandlers.getRequest());
}
if(configHandlers.getResponse()!=null) {
DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, aPA.getId(), false, configHandlers.getResponse());
}
}
// extendedInfo
i=0;
if(aPA.sizeExtendedInfoList()>0 &&
(extInfoConfigurazioneDriver!=null)
){
for (i = 0; i < aPA.sizeExtendedInfoList(); i++) {
extInfoConfigurazioneDriver.createExtendedInfo(con, DriverConfigurazioneDBLib.log, aPA, aPA.getExtendedInfo(i), CRUDType.CREATE);
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunte " + i + " associazioni ExtendedInfo<->PortaApplicativa associati alla PortaApplicativa[" + idPortaApplicativa + "]");
break;
case UPDATE:
// UPDATE
String oldNomePA = null;
if(aPA.getOldIDPortaApplicativaForUpdate()!=null){
oldNomePA = aPA.getOldIDPortaApplicativaForUpdate().getNome();
}
if (oldNomePA == null || oldNomePA.equals(""))
oldNomePA = nomePorta;
//campi obbligatori
//servizio ci deve essere l'id oppure tipo e nome
tipoServizio = (servizio != null ? servizio.getTipo() : null);
nomeServizio = (servizio != null ? servizio.getNome() : null);
versioneServizio = (servizio != null ? servizio.getVersione() : null);
//se l'id non e' valido allora devono esserci necessariamente il tipo e il nome
if(idServizio<=0){
if(tipoServizio==null || tipoServizio.equals("")) throw new DriverConfigurazioneException("Tipo Servizio non impostato.");
if(nomeServizio==null || nomeServizio.equals("")) throw new DriverConfigurazioneException("Nome Servizio non impostato.");
if(versioneServizio==null) throw new DriverConfigurazioneException("Versione Servizio non impostato.");
}
//Azione
nomeAzione = (azione != null ? azione.getNome() : null);
patternAzione = (azione != null ? azione.getPattern() : null);
nomePortaDeleganteAzione = (azione != null ? azione.getNomePortaDelegante() : null);
forceInterfaceBased = (azione != null ? azione.getForceInterfaceBased() : null);
modeAzione = (azione != null ? azione.getIdentificazione() : null);
//Se il bean Azione nn e' presente allora non controllo nulla
if(azione!=null){
if(modeAzione==null || modeAzione.equals(""))
modeAzione = PortaApplicativaAzioneIdentificazione.STATIC;
switch (modeAzione) {
case CONTENT_BASED:
case URL_BASED:
case HEADER_BASED:
if(patternAzione==null || patternAzione.equals("")) throw new DriverConfigurazioneException("Pattern Azione non impostato.");
nomeAzione=null;
break;
case DELEGATED_BY:
if(nomePortaDeleganteAzione==null || nomePortaDeleganteAzione.equals("")) throw new DriverConfigurazioneException("Nome Porta Delegante Azione non impostata.");
nomeAzione=null;
break;
case INPUT_BASED:
case SOAP_ACTION_BASED:
case INTERFACE_BASED:
case PROTOCOL_BASED:
//nessun campo obbligatorio
break;
case STATIC:
//ci deve essere il nome
if(nomeAzione==null || nomeAzione.equals("")) throw new DriverConfigurazioneException("Nome Azione non impostato.");
patternAzione=null;
break;
default:
break;
}
}
String utenteUltimaModifica = null;
if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getUtenteUltimaModifica()!=null) {
utenteUltimaModifica = aPA.getProprietaOggetto().getUtenteUltimaModifica();
}
Timestamp dataUltimaModifica = null;
if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getDataUltimaModifica()!=null) {
dataUltimaModifica = new Timestamp(aPA.getProprietaOggetto().getDataUltimaModifica().getTime());
}
else {
dataUltimaModifica = DateManager.getTimestamp();
}
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addUpdateTable(CostantiDB.PORTE_APPLICATIVE);
sqlQueryObject.addUpdateField("descrizione", "?");
sqlQueryObject.addUpdateField("id_soggetto_virtuale", "?");
sqlQueryObject.addUpdateField("tipo_soggetto_virtuale", "?");
sqlQueryObject.addUpdateField("nome_soggetto_virtuale", "?");
sqlQueryObject.addUpdateField("id_servizio", "?");
sqlQueryObject.addUpdateField("tipo_servizio", "?");
sqlQueryObject.addUpdateField("servizio", "?");
sqlQueryObject.addUpdateField("versione_servizio", "?");
sqlQueryObject.addUpdateField("azione", "?");
sqlQueryObject.addUpdateField("mode_azione", "?");
sqlQueryObject.addUpdateField("pattern_azione", "?");
sqlQueryObject.addUpdateField("nome_porta_delegante_azione", "?");
sqlQueryObject.addUpdateField("force_interface_based_azione", "?");
sqlQueryObject.addUpdateField("mtom_request_mode", "?");
sqlQueryObject.addUpdateField("mtom_response_mode", "?");
sqlQueryObject.addUpdateField("security", "?");
sqlQueryObject.addUpdateField("security_mtom_req", "?");
sqlQueryObject.addUpdateField("security_mtom_res", "?");
sqlQueryObject.addUpdateField("security_request_mode", "?");
sqlQueryObject.addUpdateField("security_response_mode", "?");
sqlQueryObject.addUpdateField("nome_porta", "?");
sqlQueryObject.addUpdateField("ricevuta_asincrona_sim", "?");
sqlQueryObject.addUpdateField("ricevuta_asincrona_asim", "?");
sqlQueryObject.addUpdateField("integrazione", "?");
sqlQueryObject.addUpdateField("validazione_contenuti_stato", "?");
sqlQueryObject.addUpdateField("validazione_contenuti_tipo", "?");
sqlQueryObject.addUpdateField("validazione_contenuti_mtom", "?");
sqlQueryObject.addUpdateField("id_soggetto", "?");
sqlQueryObject.addUpdateField("allega_body", "?");
sqlQueryObject.addUpdateField("scarta_body", "?");
sqlQueryObject.addUpdateField("gestione_manifest", "?");
sqlQueryObject.addUpdateField("stateless", "?");
sqlQueryObject.addUpdateField("behaviour", "?");
sqlQueryObject.addUpdateField("autenticazione", "?");
sqlQueryObject.addUpdateField("autenticazione_opzionale", "?");
sqlQueryObject.addUpdateField("token_policy", "?");
sqlQueryObject.addUpdateField("token_opzionale", "?");
sqlQueryObject.addUpdateField("token_validazione", "?");
sqlQueryObject.addUpdateField("token_introspection", "?");
sqlQueryObject.addUpdateField("token_user_info", "?");
sqlQueryObject.addUpdateField("token_forward", "?");
sqlQueryObject.addUpdateField("token_options", "?");
sqlQueryObject.addUpdateField("token_authn_issuer", "?");
sqlQueryObject.addUpdateField("token_authn_client_id", "?");
sqlQueryObject.addUpdateField("token_authn_subject", "?");
sqlQueryObject.addUpdateField("token_authn_username", "?");
sqlQueryObject.addUpdateField("token_authn_email", "?");
sqlQueryObject.addUpdateField("autorizzazione", "?");
sqlQueryObject.addUpdateField("autorizzazione_xacml", "?");
sqlQueryObject.addUpdateField("autorizzazione_contenuto", "?");
sqlQueryObject.addUpdateField("ruoli_match", "?");
sqlQueryObject.addUpdateField("token_sa_stato", "?");
sqlQueryObject.addUpdateField("token_ruoli_stato", "?");
sqlQueryObject.addUpdateField("token_ruoli_match", "?");
sqlQueryObject.addUpdateField("token_ruoli_tipologia", "?");
sqlQueryObject.addUpdateField("scope_stato", "?");
sqlQueryObject.addUpdateField("scope_match", "?");
sqlQueryObject.addUpdateField("ricerca_porta_azione_delegata", "?");
sqlQueryObject.addUpdateField("msg_diag_severita", "?");
sqlQueryObject.addUpdateField("tracciamento_stato", "?");
sqlQueryObject.addUpdateField("tracciamento_esiti", "?");
sqlQueryObject.addUpdateField("transazioni_tempi", "?");
sqlQueryObject.addUpdateField("transazioni_token", "?");
sqlQueryObject.addUpdateField("stato", "?");
// cors
sqlQueryObject.addUpdateField("cors_stato", "?");
sqlQueryObject.addUpdateField("cors_tipo", "?");
sqlQueryObject.addUpdateField("cors_all_allow_origins", "?");
sqlQueryObject.addUpdateField("cors_all_allow_methods", "?");
sqlQueryObject.addUpdateField("cors_all_allow_headers", "?");
sqlQueryObject.addUpdateField("cors_allow_credentials", "?");
sqlQueryObject.addUpdateField("cors_allow_max_age", "?");
sqlQueryObject.addUpdateField("cors_allow_max_age_seconds", "?");
sqlQueryObject.addUpdateField("cors_allow_origins", "?");
sqlQueryObject.addUpdateField("cors_allow_headers", "?");
sqlQueryObject.addUpdateField("cors_allow_methods", "?");
sqlQueryObject.addUpdateField("cors_allow_expose_headers", "?");
// responseCaching
sqlQueryObject.addUpdateField("response_cache_stato", "?");
sqlQueryObject.addUpdateField("response_cache_seconds", "?");
sqlQueryObject.addUpdateField("response_cache_max_msg_size", "?");
sqlQueryObject.addUpdateField("response_cache_control_nocache", "?");
sqlQueryObject.addUpdateField("response_cache_control_maxage", "?");
sqlQueryObject.addUpdateField("response_cache_control_nostore", "?");
sqlQueryObject.addUpdateField("response_cache_hash_url", "?");
sqlQueryObject.addUpdateField("response_cache_hash_query", "?");
sqlQueryObject.addUpdateField("response_cache_hash_query_list", "?");
sqlQueryObject.addUpdateField("response_cache_hash_headers", "?");
sqlQueryObject.addUpdateField("response_cache_hash_hdr_list", "?");
sqlQueryObject.addUpdateField("response_cache_hash_payload", "?");
// servizio applicativo default
sqlQueryObject.addUpdateField("id_sa_default", "?");
// id
sqlQueryObject.addUpdateField("id_accordo", "?");
sqlQueryObject.addUpdateField("id_port_type", "?");
sqlQueryObject.addUpdateField("scadenza_correlazione_appl", "?");
// options
sqlQueryObject.addUpdateField("options", "?");
// canale
sqlQueryObject.addUpdateField("canale", "?");
if(utenteUltimaModifica!=null) {
sqlQueryObject.addUpdateField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA, "?");
}
if(dataUltimaModifica!=null) {
sqlQueryObject.addUpdateField(CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA, "?");
}
sqlQueryObject.addWhereCondition("nome_porta=?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLUpdate();
stm = con.prepareStatement(sqlQuery);
idPortaApplicativa = DBUtils.getIdPortaApplicativa(oldNomePA, con, DriverConfigurazioneDBLib.tipoDB);
// Puo' darsi che l'old soggetto e il nuovo soggetto siano la stesso soggetto della tabella. E' stato cambiato il nome.
if(idPortaApplicativa<=0) {
idPortaApplicativa = DBUtils.getIdPortaApplicativa(oldNomePA, con, DriverConfigurazioneDBLib.tipoDB);
}
if(idPortaApplicativa<=0)
throw new DriverConfigurazioneException("Impossibile recuperare l'id della Porta Applicativa nomePA["+oldNomePA+"] (old["+
(aPA.getOldIDPortaApplicativaForUpdate()!=null?aPA.getOldIDPortaApplicativaForUpdate().getNome():null)+"]");
index = 1;
stm.setString(index++, descrizione);
stm.setLong(index++, idSoggVirt);
stm.setString(index++, tipoSoggVirt);//(soggVirt != null ? soggVirt.getTipo() : null));
stm.setString(index++, nomeSoggVirt);//(soggVirt != null ? soggVirt.getNome() : null));
stm.setLong(index++, idServizio);
stm.setString(index++, tipoServizio);
stm.setString(index++, nomeServizio);
stm.setInt(index++, versioneServizio);
stm.setString(index++, (azione != null ? azione.getNome() : null));
if(modeAzione!=null){
stm.setString(index++, modeAzione.toString());
}
else{
stm.setString(index++, null);
}
stm.setString(index++, patternAzione);
stm.setString(index++, nomePortaDeleganteAzione);
stm.setString(index++, DriverConfigurazioneDBLib.getValue(forceInterfaceBased));
// mtom
stm.setString(index++, DriverConfigurazioneDBLib.getValue(mtomModeRequest));
stm.setString(index++, DriverConfigurazioneDBLib.getValue(mtomModeResponse));
// messageSecurity
stm.setString(index++, messageSecurityStatus);
stm.setString(index++, DriverConfigurazioneDBLib.getValue(messageSecurityApplyMtomRequest));
stm.setString(index++, DriverConfigurazioneDBLib.getValue(messageSecurityApplyMtomResponse));
stm.setString(index++, securityRequestMode);
stm.setString(index++, securityResponseMode);
// nomePorta
stm.setString(index++, nomePorta);
//ricevuta asincrona_asimmetrica/simmetrica
stm.setString(index++, aPA.getRicevutaAsincronaSimmetrica()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicevutaAsincronaSimmetrica()) : null);
stm.setString(index++, aPA.getRicevutaAsincronaAsimmetrica()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicevutaAsincronaAsimmetrica()) : null);
//integrazione
stm.setString(index++, aPA.getIntegrazione()!=null ? aPA.getIntegrazione() : null);
//validazione xsd
stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getStato()) : null);
stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getTipo()) : null);
stm.setString(index++, aPA.getValidazioneContenutiApplicativi()!=null ? DriverConfigurazioneDBLib.getValue(aPA.getValidazioneContenutiApplicativi().getAcceptMtomMessage()) : null);
stm.setLong(index++, idProprietario);//il nuovo proprietario se cambiato
// InvocazionePorta: funzionalita' attachment
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getAllegaBody()) : null);
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getScartaBody()) : null);
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getGestioneManifest()) : null);
// Stateless
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getStateless()) : null);
// Behaviour
stm.setString(index++, behaviour);
// Autenticazione
stm.setString(index++, autenticazione);
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getAutenticazioneOpzionale()) : null);
// token
stm.setString(index++, gestioneToken!=null ? gestioneToken.getPolicy() : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getTokenOpzionale()) : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getValidazione()) : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getIntrospection()) : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getUserInfo()) : null);
stm.setString(index++, gestioneToken!=null ? DriverConfigurazioneDBLib.getValue(gestioneToken.getForward()) : null);
stm.setString(index++, gestioneToken!=null ? gestioneToken.getOptions() : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getIssuer()) : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getClientId()) : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getSubject()) : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getUsername()) : null);
stm.setString(index++, (gestioneToken!=null && gestioneToken.getAutenticazione()!=null) ?
DriverConfigurazioneDBLib.getValue(gestioneToken.getAutenticazione().getEmail()) : null);
// Autorizzazione
stm.setString(index++, autorizzazione);
stm.setString(index++, autorizzazioneXacmlPolicy);
stm.setString(index++, aPA!=null ? aPA.getAutorizzazioneContenuto() : null);
// Ruoli
stm.setString(index++, aPA!=null && aPA.getRuoli()!=null && aPA.getRuoli().getMatch()!=null ?
aPA.getRuoli().getMatch().getValue() : null);
// Token sa
stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getAutorizzazioneApplicativi()!=null ?
DriverConfigurazioneDBLib.getValue(aPA.getAutorizzazioneToken().getAutorizzazioneApplicativi()) : null);
// Token ruoli
stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getAutorizzazioneRuoli()!=null ?
DriverConfigurazioneDBLib.getValue(aPA.getAutorizzazioneToken().getAutorizzazioneRuoli()) : null);
stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getRuoli()!=null &&
aPA.getAutorizzazioneToken().getRuoli().getMatch()!=null ?
aPA.getAutorizzazioneToken().getRuoli().getMatch().getValue() : null);
stm.setString(index++, aPA!=null && aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getTipologiaRuoli()!=null ?
aPA.getAutorizzazioneToken().getTipologiaRuoli().getValue() : null);
// Scope
stm.setString(index++, aPA!=null && aPA.getScope()!=null && aPA.getScope().getStato()!=null ?
DriverConfigurazioneDBLib.getValue(aPA.getScope().getStato()) : null);
stm.setString(index++, aPA!=null && aPA.getScope()!=null && aPA.getScope().getMatch()!=null ?
aPA.getScope().getMatch().getValue() : null);
// RicercaPortaAzioneDelegata
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getRicercaPortaAzioneDelegata()) : null);
// Tracciamento
stm.setString(index++, msgDiagSeverita);
stm.setString(index++, tracciamentoStato);
stm.setString(index++, tracciamentoEsiti);
stm.setString(index++, transazioniTempiElaborazione);
stm.setString(index++, transazioniToken);
// Stato
stm.setString(index++, aPA!=null ? DriverConfigurazioneDBLib.getValue(aPA.getStato()) : null);
// cors
stm.setString(index++, corsStato);
stm.setString(index++, corsTipo);
stm.setString(index++, corsAllAllowOrigins);
stm.setString(index++, corsAllAllowMethods);
stm.setString(index++, corsAllAllowHeaders);
stm.setString(index++, corsAllowCredentials);
stm.setInt(index++, corsAllowMaxAge);
if(corsAllowMaxAgeSeconds!=null) {
stm.setInt(index++, corsAllowMaxAgeSeconds);
}
else {
stm.setNull(index++, java.sql.Types.INTEGER);
}
stm.setString(index++, corsAllowOrigins);
stm.setString(index++, corsAllowHeaders);
stm.setString(index++, corsAllowMethods);
stm.setString(index++, corsAllowExposeHeaders);
// responseCaching
stm.setString(index++, responseCacheStato);
if(responseCacheSeconds!=null) {
stm.setInt(index++, responseCacheSeconds);
}
else {
stm.setNull(index++, java.sql.Types.INTEGER);
}
if(responseCacheMaxMsgSize!=null) {
stm.setLong(index++, responseCacheMaxMsgSize);
}
else {
stm.setNull(index++, java.sql.Types.BIGINT);
}
stm.setInt(index++, responseCacheNoCache ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.setInt(index++, responseCacheMaxAge ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.setInt(index++, responseCacheNoStore ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.setString(index++, responseCacheHashUrl);
stm.setString(index++, responseCacheHashQuery);
stm.setString(index++, responseCacheHashQueryList);
stm.setString(index++, responseCacheHashHeaders);
stm.setString(index++, responseCacheHashHeadersList);
stm.setString(index++, responseCacheHashPayload);
// servizio applicativo default
idServizioApplicativoDefault = -1;
if(aPA.getServizioApplicativoDefault()!=null) {
idServizioApplicativoDefault = DBUtils.getIdServizioApplicativo(aPA.getServizioApplicativoDefault(), tipoProprietario, nomeProprietario,
con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
if(idServizioApplicativoDefault<=0) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa(CREATE)] Impossibile recuperare l'ID del servizio applicativo di default '"+aPA.getServizioApplicativoDefault()+"'.");
}
}
stm.setLong(index++, idServizioApplicativoDefault);
// id
stm.setLong(index++, aPA.getIdAccordo() !=null ? aPA.getIdAccordo() : -1L);
stm.setLong(index++, aPA.getIdPortType() !=null ? aPA.getIdPortType() : -1L);
// ScadenzaCorrelazioneApplicativa
stm.setString(index++, aPA.getCorrelazioneApplicativa()!=null ? aPA.getCorrelazioneApplicativa().getScadenza() : null);
// options
stm.setString(index++, aPA.getOptions());
// canale
stm.setString(index++, aPA.getCanale());
if(utenteUltimaModifica!=null) {
stm.setString(index++, utenteUltimaModifica);
}
if(dataUltimaModifica!=null) {
stm.setTimestamp(index++, dataUltimaModifica);
}
// where
stm.setString(index++, oldNomePA);
n = stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Updated " + n + " row(s).");
// mtom
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MTOM_REQUEST);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.executeUpdate();
stm.close();
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MTOM_RESPONSE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.executeUpdate();
stm.close();
if(mtomProcessor!=null){
MtomProcessorFlowParameter reqParam = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MTOM_REQUEST);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("pattern", "?");
sqlQueryObject.addInsertField("content_type", "?");
sqlQueryObject.addInsertField("required", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
i = 0;
if(mtomProcessor.getRequestFlow()!=null){
MtomProcessorFlow flow = mtomProcessor.getRequestFlow();
for (i = 0; i < flow.sizeParameterList(); i++) {
reqParam = flow.getParameter(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, reqParam.getNome());
stm.setString(3, reqParam.getPattern());
stm.setString(4, reqParam.getContentType());
stm.setInt(5, reqParam.getRequired() ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.executeUpdate();
}
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " mtom request flow con id=" + idPortaApplicativa);
MtomProcessorFlowParameter resParam = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MTOM_RESPONSE);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("pattern", "?");
sqlQueryObject.addInsertField("content_type", "?");
sqlQueryObject.addInsertField("required", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
i = 0;
if(mtomProcessor.getResponseFlow()!=null){
MtomProcessorFlow flow = mtomProcessor.getResponseFlow();
for (i = 0; i < flow.sizeParameterList(); i++) {
resParam = flow.getParameter(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, resParam.getNome());
stm.setString(3, resParam.getPattern());
stm.setString(4, resParam.getContentType());
stm.setInt(5, resParam.getRequired() ? CostantiDB.TRUE : CostantiDB.FALSE);
stm.executeUpdate();
}
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " mtom response flow con id=" + idPortaApplicativa);
}
// se security abilitato setto la lista
// la lista contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
/**if ((messageSecurity != null) && CostantiConfigurazione.ABILITATO.toString().equals(messageSecurityStatus) ) {*/
// Devo settarli sempre se ci sono, in modo che lo switch abilitato-disabilitato funzioni
if ((messageSecurity != null) ) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.executeUpdate();
stm.close();
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.executeUpdate();
stm.close();
//inserisco i valori presenti nella lista
MessageSecurityFlowParameter reqParam = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
i = 0;
if(messageSecurity.getRequestFlow()!=null){
MessageSecurityFlow flow = messageSecurity.getRequestFlow();
for (i = 0; i < flow.sizeParameterList(); i++) {
reqParam = flow.getParameter(i);
int indexSec = 1;
stm.setLong(indexSec++, idPortaApplicativa);
stm.setString(indexSec++, reqParam.getNome());
String plainValue = reqParam.getValore();
String encValue = null;
if(driverBYOK!=null &&
(
DriverConfigurazioneDB_genericPropertiesDriver.isConfidentialProperty(securityRequestMode, reqParam.getNome())
||
BYOKUtilities.isWrappedValue(plainValue)
)
) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValue);
if(byokValue!=null) {
encValue = byokValue.getWrappedValue();
plainValue = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexSec++, plainValue);
stm.setString(indexSec++, encValue);
stm.executeUpdate();
}
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " request flow con id=" + idPortaApplicativa);
MessageSecurityFlowParameter resParam = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
i = 0;
if(messageSecurity.getResponseFlow()!=null){
MessageSecurityFlow flow = messageSecurity.getResponseFlow();
for (i = 0; i < flow.sizeParameterList(); i++) {
resParam = flow.getParameter(i);
int indexSec = 1;
stm.setLong(indexSec++, idPortaApplicativa);
stm.setString(indexSec++, resParam.getNome());
String plainValue = resParam.getValore();
String encValue = null;
if(driverBYOK!=null &&
(
DriverConfigurazioneDB_genericPropertiesDriver.isConfidentialProperty(securityResponseMode, resParam.getNome())
||
BYOKUtilities.isWrappedValue(plainValue)
)
) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValue);
if(byokValue!=null) {
encValue = byokValue.getWrappedValue();
plainValue = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexSec++, plainValue);
stm.setString(indexSec++, encValue);
stm.executeUpdate();
}
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " response flow con id=" + idPortaApplicativa);
}
// la lista di correlazioni applicative contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.executeUpdate();
stm.close();
if (corrApp != null) {
//inserisco i valori presenti nella lista
CorrelazioneApplicativaElemento cae = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome_elemento", "?");
sqlQueryObject.addInsertField("mode_correlazione", "?");
sqlQueryObject.addInsertField("pattern", "?");
sqlQueryObject.addInsertField("identificazione_fallita", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < corrApp.sizeElementoList(); i++) {
cae = corrApp.getElemento(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, cae.getNome());
stm.setString(3, DriverConfigurazioneDBLib.getValue(cae.getIdentificazione()));
if (cae.getPattern() != null)
stm.setString(4, cae.getPattern());
else
stm.setString(4, "");
stm.setString(5, DriverConfigurazioneDBLib.getValue(cae.getIdentificazioneFallita()));
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " correlazione applicativa con id=" + idPortaApplicativa);
}
// la lista di correlazioni applicative risposta contiene tutti e soli gli elementi necessari quindi resetto la lista nel db e riscrivo la lista nuova
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE_RISPOSTA);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.executeUpdate();
stm.close();
if (corrAppRisposta != null) {
//inserisco i valori presenti nella lista
CorrelazioneApplicativaRispostaElemento cae = null;
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE_RISPOSTA);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome_elemento", "?");
sqlQueryObject.addInsertField("mode_correlazione", "?");
sqlQueryObject.addInsertField("pattern", "?");
sqlQueryObject.addInsertField("identificazione_fallita", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < corrAppRisposta.sizeElementoList(); i++) {
cae = corrAppRisposta.getElemento(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, cae.getNome());
stm.setString(3, DriverConfigurazioneDBLib.getValue(cae.getIdentificazione()));
if (cae.getPattern() != null)
stm.setString(4, cae.getPattern());
else
stm.setString(4, "");
stm.setString(5, DriverConfigurazioneDBLib.getValue(cae.getIdentificazioneFallita()));
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inserted " + i + " correlazione applicativa risposta con id=" + idPortaApplicativa);
}
/*Sincronizzazione servizi applicativi*/
//la lista dei servizi applicativi passata contiene tutti e soli i servizi applicativi necessari
//quindi nel db devono essere presenti tutti e solo quelli presenti nella lista
// serviziapplicativi props
idsPaSa = new ArrayList<>();
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
sqlQueryObject.addSelectField("id");
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLQuery();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
rs = stm.executeQuery();
while(rs.next()) {
idsPaSa.add(rs.getLong("id"));
}
rs.close();
stm.close();
if(!idsPaSa.isEmpty()) {
for (Long idsapa : idsPaSa) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA_PROPS);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idsapa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta relative all'associazione '"+idsapa+"' (Porta Applicativa "+idPortaApplicativa+")");
}
}
//cancello i servizi applicativi associati alla porta e inserisco tutti e soli quelli presenti in lista
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi associati alla Porta Applicativa "+idPortaApplicativa);
//scrivo la lista nel db
n=0;
idsPaSa = new ArrayList<>();
for (i = 0; i < aPA.sizeServizioApplicativoList(); i++) {
PortaApplicativaServizioApplicativo servizioApplicativo = aPA.getServizioApplicativo(i);
String nomeSA = servizioApplicativo.getNome();
//il tipo e il nome proprietario servizio applicativo sono gli stessi della porta delegata
String nomeProprietarioSA = aPA.getNomeSoggettoProprietario();
String tipoProprietarioSA = aPA.getTipoSoggettoProprietario();
if (nomeSA == null || nomeSA.equals(""))
throw new DriverConfigurazioneException("Nome del ServizioApplicativo associato non valido.");
if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
throw new DriverConfigurazioneException("Nome Proprietario del ServizioApplicativo associato non valido.");
if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
throw new DriverConfigurazioneException("Tipo Proprietario del ServizioApplicativo associato non valido.");
long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
if (idSA <= 0)
throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
idsPaSa.add(idSA);
String utenteRichiedenteSA = null;
if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteRichiedente()!=null) {
utenteRichiedenteSA = servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteRichiedente();
}
else if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getUtenteRichiedente()!=null) {
utenteRichiedenteSA = aPA.getProprietaOggetto().getUtenteRichiedente(); // uso richiedente della PA
}
Timestamp dataCreazioneSA = null;
if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataCreazione()!=null) {
dataCreazioneSA = new Timestamp(servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataCreazione().getTime());
}
else if(aPA.getProprietaOggetto()!=null && aPA.getProprietaOggetto().getDataCreazione()!=null) {
dataCreazioneSA = new Timestamp(aPA.getProprietaOggetto().getDataCreazione().getTime()); // uso data creazione della PA
}
else {
dataCreazioneSA = DateManager.getTimestamp();
}
String utenteUltimaModificaSA = null;
if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteUltimaModifica()!=null) {
utenteUltimaModificaSA = servizioApplicativo.getDatiConnettore().getProprietaOggetto().getUtenteUltimaModifica();
}
Timestamp dataUltimaModificaSA = null;
if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().getProprietaOggetto()!=null &&
servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataUltimaModifica()!=null) {
dataUltimaModificaSA = new Timestamp(servizioApplicativo.getDatiConnettore().getProprietaOggetto().getDataUltimaModifica().getTime());
}
/**else { In modo da gestire la data di creazione che comunque si figura sempre all'interno di un update della porta applicativa
dataUltimaModificaSA = DateManager.getTimestamp();
}*/
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
sqlQueryObject.addInsertField("connettore_nome", "?");
sqlQueryObject.addInsertField("connettore_notifica", "?");
sqlQueryObject.addInsertField("connettore_descrizione", "?");
sqlQueryObject.addInsertField("connettore_stato", "?");
sqlQueryObject.addInsertField("connettore_scheduling", "?");
sqlQueryObject.addInsertField("connettore_filtri", "?");
sqlQueryObject.addInsertField("connettore_coda", "?");
sqlQueryObject.addInsertField("connettore_priorita", "?");
sqlQueryObject.addInsertField("connettore_max_priorita", "?");
sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_RICHIEDENTE, "?");
sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_CREAZIONE, "?");
sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_UTENTE_ULTIMA_MODIFICA, "?");
sqlQueryObject.addInsertField(CostantiDB.PROPRIETA_OGGETTO_DATA_ULTIMA_MODIFICA, "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int indexSA = 1;
stm.setLong(indexSA++, idPortaApplicativa);
stm.setLong(indexSA++, idSA);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? servizioApplicativo.getDatiConnettore().getNome() : null);
stm.setInt(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? (servizioApplicativo.getDatiConnettore().isNotifica() ? CostantiDB.TRUE : CostantiDB.FALSE) : CostantiDB.FALSE);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? servizioApplicativo.getDatiConnettore().getDescrizione() : null);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? DriverConfigurazioneDBLib.getValue(servizioApplicativo.getDatiConnettore().getStato()) : null);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore()!=null ? DriverConfigurazioneDBLib.getValue(servizioApplicativo.getDatiConnettore().getScheduling()) : null);
String filtri = null;
if(servizioApplicativo.getDatiConnettore()!=null &&
(servizioApplicativo.getDatiConnettore().getFiltroList()!=null && servizioApplicativo.getDatiConnettore().sizeFiltroList()>0)
){
StringBuilder bf = new StringBuilder();
for (int k = 0; k < servizioApplicativo.getDatiConnettore().sizeFiltroList(); k++) {
if(k>0) {
bf.append(",");
}
bf.append(servizioApplicativo.getDatiConnettore().getFiltro(k));
}
filtri = bf.toString();
}
stm.setString(indexSA++, filtri);
if(servizioApplicativo.getDatiConnettore()!=null) {
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore().getCoda()!=null ? servizioApplicativo.getDatiConnettore().getCoda() : CostantiConfigurazione.CODA_DEFAULT);
stm.setString(indexSA++, servizioApplicativo.getDatiConnettore().getPriorita()!=null ? servizioApplicativo.getDatiConnettore().getPriorita() : CostantiConfigurazione.PRIORITA_DEFAULT);
stm.setInt(indexSA++, servizioApplicativo.getDatiConnettore().isPrioritaMax() ? CostantiDB.TRUE : CostantiDB.FALSE);
}
else {
stm.setString(indexSA++, CostantiConfigurazione.CODA_DEFAULT);
stm.setString(indexSA++, CostantiConfigurazione.PRIORITA_DEFAULT);
stm.setInt(indexSA++, CostantiDB.FALSE);
}
stm.setString(indexSA++, utenteRichiedenteSA);
stm.setTimestamp(indexSA++, dataCreazioneSA);
stm.setString(indexSA++, utenteUltimaModificaSA);
stm.setTimestamp(indexSA++, dataUltimaModificaSA);
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunta associazione PortaApplicativa<->ServizioApplicativo [" + idPortaApplicativa + "]<->[" + idSA + "]");
}
DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " associazioni PortaApplicativa<->ServizioApplicativo associati alla PortaDelegata[" + idPortaApplicativa + "]");
// serviziapplicativi props
for (i = 0; i < aPA.sizeServizioApplicativoList(); i++) {
PortaApplicativaServizioApplicativo servizioApplicativo = aPA.getServizioApplicativo(i);
String nomeSA = servizioApplicativo.getNome();
if(servizioApplicativo.getDatiConnettore()!=null && servizioApplicativo.getDatiConnettore().sizeProprietaList()>0) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
sqlQueryObject.addSelectField("id");
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQueryObject.addWhereCondition("id_servizio_applicativo=?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLQuery();
long idSA = idsPaSa.get(i);
long idPaSa = -1;
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setLong(2, idSA);
rs = stm.executeQuery();
if(rs.next()) {
idPaSa = rs.getLong("id");
}
rs.close();
stm.close();
if(idPaSa<=0) {
throw new DriverConfigurazioneException("Impossibile recuperare l'id della registrazione del Servizio Applicativo [" + nomeSA + "](id:"+idSA+") alla porta applicativa con id:"+idPortaApplicativa );
}
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA_PROPS);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int j = 0;
for ( ; j < servizioApplicativo.getDatiConnettore().sizeProprietaList(); j++) {
Proprieta p = servizioApplicativo.getDatiConnettore().getProprieta(j);
if(p.getValore()==null || "".equals(p.getValore())) {
continue; // non devo serializzare valori vuoti o null (DB oracle non lo permette)
}
stm.setLong(1, idPaSa);
stm.setString(2, p.getNome());
stm.setString(3, p.getValore());
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + j + " SetSAProp associati al Servizio Applicativo [" + nomeSA + "](id:"+idSA+") della PortaApplicativa[" + idPortaApplicativa + "]");
}
}
// set prop behaviour
//La lista di proprieta contiene tutte e sole le proprieta associate alla porta
//cancello le proprieta per poi sincronizzarle con la lista passata
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_BEHAVIOUR_PROPS);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
if(aPA.getBehaviour()!=null) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_BEHAVIOUR_PROPS);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.getBehaviour().sizeProprietaList(); i++) {
propProtocollo = aPA.getBehaviour().getProprieta(i);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, propProtocollo.getNome());
stm.setString(3, propProtocollo.getValore());
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " SeBehaviourProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");
}
/*Proprieta autenticazione associate alla Porta Applicativa*/
//La lista di proprieta contiene tutte e sole le proprieta associate alla porta
//cancello le proprieta per poi sincronizzarle con la lista passata
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTENTICAZIONE_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta di autenticazione associate alla Porta Applicativa "+idPortaApplicativa);
// set prop
int newProps = 0;
for (i = 0; i < aPA.sizeProprietaAutenticazioneList(); i++) {
propProtocollo = aPA.getProprietaAutenticazione(i);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTENTICAZIONE_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int indexP = 1;
stm.setLong(indexP++, idPortaApplicativa);
stm.setString(indexP++, propProtocollo.getNome());
String plainValueP = propProtocollo.getValore();
String encValueP = null;
if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
if(byokValue!=null) {
encValueP = byokValue.getWrappedValue();
plainValueP = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexP++, plainValueP);
stm.setString(indexP++, encValueP);
stm.executeUpdate();
stm.close();
newProps++;
}
DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolPropAutenticazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
/*Proprieta autorizzazione associate alla Porta Applicativa*/
//La lista di proprieta contiene tutte e sole le proprieta associate alla porta
//cancello le proprieta per poi sincronizzarle con la lista passata
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta di autorizzazione associate alla Porta Applicativa "+idPortaApplicativa);
// set prop
newProps = 0;
for (i = 0; i < aPA.sizeProprietaAutorizzazioneList(); i++) {
propProtocollo = aPA.getProprietaAutorizzazione(i);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int indexP = 1;
stm.setLong(indexP++, idPortaApplicativa);
stm.setString(indexP++, propProtocollo.getNome());
String plainValueP = propProtocollo.getValore();
String encValueP = null;
if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
if(byokValue!=null) {
encValueP = byokValue.getWrappedValue();
plainValueP = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexP++, plainValueP);
stm.setString(indexP++, encValueP);
stm.executeUpdate();
stm.close();
newProps++;
}
DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolPropAutorizzazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
/*Proprieta autorizzazione contenuti associate alla Porta Applicativa*/
//La lista di proprieta contiene tutte e sole le proprieta associate alla porta
//cancello le proprieta per poi sincronizzarle con la lista passata
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_CONTENUTI_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta di autorizzazione contenuti associate alla Porta Applicativa "+idPortaApplicativa);
// set prop
newProps = 0;
for (i = 0; i < aPA.sizeProprietaAutorizzazioneContenutoList(); i++) {
propProtocollo = aPA.getProprietaAutorizzazioneContenuto(i);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_CONTENUTI_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int indexP = 1;
stm.setLong(indexP++, idPortaApplicativa);
stm.setString(indexP++, propProtocollo.getNome());
String plainValueP = propProtocollo.getValore();
String encValueP = null;
if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
if(byokValue!=null) {
encValueP = byokValue.getWrappedValue();
plainValueP = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexP++, plainValueP);
stm.setString(indexP++, encValueP);
stm.executeUpdate();
stm.close();
newProps++;
}
DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolPropAutorizzazioneContenuto associati alla PortaApplicativa[" + idPortaApplicativa + "]");
/*Proprieta rate limiting associate alla Porta Applicativa*/
//La lista di proprieta contiene tutte e sole le proprieta associate alla porta
//cancello le proprieta per poi sincronizzarle con la lista passata
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta di rate limiting associate alla Porta Applicativa "+idPortaApplicativa);
// set prop
newProps = 0;
for (i = 0; i < aPA.sizeProprietaRateLimitingList(); i++) {
propProtocollo = aPA.getProprietaRateLimiting(i);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, propProtocollo.getNome());
stm.setString(3, propProtocollo.getValore());
stm.executeUpdate();
stm.close();
newProps++;
}
DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolPropRateLimiting associati alla PortaApplicativa[" + idPortaApplicativa + "]");
/*Proprieta associate alla Porta Applicativa*/
//La lista di proprieta contiene tutte e sole le proprieta associate alla porta
//cancello le proprieta per poi sincronizzarle con la lista passata
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta associate alla Porta Applicativa "+idPortaApplicativa);
// set prop
newProps = 0;
for (i = 0; i < aPA.sizeProprietaList(); i++) {
propProtocollo = aPA.getProprieta(i);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_PROP);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("valore", "?");
sqlQueryObject.addInsertField("enc_value", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int indexP = 1;
stm.setLong(indexP++, idPortaApplicativa);
stm.setString(indexP++, propProtocollo.getNome());
String plainValueP = propProtocollo.getValore();
String encValueP = null;
if(driverBYOK!=null && BYOKUtilities.isWrappedValue(plainValueP) ) {
BYOKWrappedValue byokValue = driverBYOK.wrap(plainValueP);
if(byokValue!=null) {
encValueP = byokValue.getWrappedValue();
plainValueP = byokValue.getWrappedPlainValue();
}
}
stm.setString(indexP++, plainValueP);
stm.setString(indexP++, encValueP);
stm.executeUpdate();
stm.close();
newProps++;
}
DriverConfigurazioneDBLib.logDebug("Inserted " + newProps + " SetProtocolProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// Ruoli
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" ruoli associati alla Porta Applicativa "+idPortaApplicativa);
n=0;
if(aPA.getRuoli()!=null && aPA.getRuoli().sizeRuoloList()>0){
for (int j = 0; j < aPA.getRuoli().sizeRuoloList(); j++) {
Ruolo ruolo = aPA.getRuoli().getRuolo(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("ruolo", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, ruolo.getNome());
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto ruolo[" + ruolo.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " ruoli alla PortaApplicativa[" + idPortaApplicativa + "]");
// Scope
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" scope associati alla Porta Applicativa "+idPortaApplicativa);
n=0;
if(aPA.getScope()!=null && aPA.getScope().sizeScopeList()>0){
for (int j = 0; j < aPA.getScope().sizeScopeList(); j++) {
Scope scope = aPA.getScope().getScope(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("scope", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, scope.getNome());
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto scope[" + scope.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " scope alla PortaApplicativa[" + idPortaApplicativa + "]");
// Soggetti
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" soggetti associati alla Porta Applicativa "+idPortaApplicativa);
n=0;
if(aPA.getSoggetti()!=null && aPA.getSoggetti().sizeSoggettoList()>0){
for (int j = 0; j < aPA.getSoggetti().sizeSoggettoList(); j++) {
PortaApplicativaAutorizzazioneSoggetto soggetto = aPA.getSoggetti().getSoggetto(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("tipo_soggetto", "?");
sqlQueryObject.addInsertField("nome_soggetto", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, soggetto.getTipo());
stm.setString(3, soggetto.getNome());
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto soggetto [" + soggetto.getTipo() + "/"+soggetto.getNome()+"] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " soggetti alla PortaApplicativa[" + idPortaApplicativa + "]");
//la lista dei servizi applicativi passata contiene tutti e soli i servizi applicativi necessari
//quindi nel db devono essere presenti tutti e solo quelli presenti nella lista
//cancello i servizi applicativi associati alla porta e inserisco tutti e soli quelli presenti in lista
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi autorizzati associati alla Porta Applicativa "+idPortaApplicativa);
//scrivo la lista nel db
if(aPA.getServiziApplicativiAutorizzati()!=null && aPA.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()>0) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.getServiziApplicativiAutorizzati().sizeServizioApplicativoList(); i++) {
PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativoAutorizzato = aPA.getServiziApplicativiAutorizzati().getServizioApplicativo(i);
String nomeSA = servizioApplicativoAutorizzato.getNome();
String nomeProprietarioSA = servizioApplicativoAutorizzato.getNomeSoggettoProprietario();
String tipoProprietarioSA = servizioApplicativoAutorizzato.getTipoSoggettoProprietario();
if (nomeSA == null || nomeSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Nome del ServizioApplicativo associato non valido.");
if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Nome Proprietario del ServizioApplicativo associato non valido.");
if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[Auth]::Tipo Proprietario del ServizioApplicativo associato non valido.");
long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
if (idSA <= 0)
throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
stm.setLong(1, idPortaApplicativa);
stm.setLong(2, idSA);
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi autorizzati associati alla PortaApplicativa[" + idPortaApplicativa + "]");
}
//la lista dei servizi applicativi passata contiene tutti e soli i servizi applicativi necessari
//quindi nel db devono essere presenti tutti e solo quelli presenti nella lista
//cancello i servizi applicativi associati alla porta e inserisco tutti e soli quelli presenti in lista
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi autorizzati (token) associati alla Porta Applicativa "+idPortaApplicativa);
//scrivo la lista nel db
if(aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getServiziApplicativi()!=null &&
aPA.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()>0) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("id_servizio_applicativo", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
for (i = 0; i < aPA.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList(); i++) {
PortaApplicativaAutorizzazioneServizioApplicativo servizioApplicativoAutorizzato = aPA.getAutorizzazioneToken().getServiziApplicativi().getServizioApplicativo(i);
String nomeSA = servizioApplicativoAutorizzato.getNome();
String nomeProprietarioSA = servizioApplicativoAutorizzato.getNomeSoggettoProprietario();
String tipoProprietarioSA = servizioApplicativoAutorizzato.getTipoSoggettoProprietario();
if (nomeSA == null || nomeSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Nome del ServizioApplicativo associato non valido.");
if (nomeProprietarioSA == null || nomeProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Nome Proprietario del ServizioApplicativo associato non valido.");
if (tipoProprietarioSA == null || tipoProprietarioSA.equals(""))
throw new DriverConfigurazioneException("[CRUDPortaApplicativa(CREATE)[TokenAuth]::Tipo Proprietario del ServizioApplicativo associato non valido.");
long idSA = DriverConfigurazioneDB_serviziApplicativiLIB.getIdServizioApplicativo(nomeSA, tipoProprietarioSA, nomeProprietarioSA, con, DriverConfigurazioneDBLib.tipoDB,DriverConfigurazioneDBLib.tabellaSoggetti);
if (idSA <= 0)
throw new DriverConfigurazioneException("Impossibile recuperare l'id del Servizio Applicativo [" + nomeSA + "] di [" + tipoProprietarioSA + "/" + nomeProprietarioSA + "]");
stm.setLong(1, idPortaApplicativa);
stm.setLong(2, idSA);
stm.executeUpdate();
}
stm.close();
DriverConfigurazioneDBLib.logDebug("Inseriti " + i + " servizi applicativi autorizzati (token) associati alla PortaApplicativa[" + idPortaApplicativa + "]");
}
// Ruoli (token)
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" ruoli (token) associati alla Porta Applicativa "+idPortaApplicativa);
n=0;
if(aPA.getAutorizzazioneToken()!=null && aPA.getAutorizzazioneToken().getRuoli()!=null && aPA.getAutorizzazioneToken().getRuoli().sizeRuoloList()>0){
for (int j = 0; j < aPA.getAutorizzazioneToken().getRuoli().sizeRuoloList(); j++) {
Ruolo ruolo = aPA.getAutorizzazioneToken().getRuoli().getRuolo(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("ruolo", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, ruolo.getNome());
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto ruolo[" + ruolo.getNome() + "] (token) alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunti " + n + " ruoli (token) alla PortaApplicativa[" + idPortaApplicativa + "]");
// Azioni
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" azioni associati alla Porta Applicativa "+idPortaApplicativa);
n=0;
if(aPA.getAzione()!=null && aPA.getAzione().sizeAzioneDelegataList()>0){
for (int j = 0; j < aPA.getAzione().sizeAzioneDelegataList(); j++) {
String azioneDelegata = aPA.getAzione().getAzioneDelegata(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("azione", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, azioneDelegata);
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto azione delegata [" + azioneDelegata + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " azione delegate alla PortaApplicativa[" + idPortaApplicativa + "]");
// Cache Regole
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CACHE_REGOLE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" regole di cache associate alla PortaApplicativa "+idPortaApplicativa);
n=0;
if(responseCacheRegole!=null && responseCacheRegole.size()>0){
for (int j = 0; j < responseCacheRegole.size(); j++) {
ResponseCachingConfigurazioneRegola regola = responseCacheRegole.get(j);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_CACHE_REGOLE);
sqlQueryObject.addInsertField("id_porta", "?");
if(regola.getReturnCodeMin()!=null && regola.getReturnCodeMin()>0) {
sqlQueryObject.addInsertField("status_min", "?");
}
if(regola.getReturnCodeMax()!=null && regola.getReturnCodeMax()>0) {
sqlQueryObject.addInsertField("status_max", "?");
}
sqlQueryObject.addInsertField("fault", "?");
if(regola.getCacheTimeoutSeconds()!=null && regola.getCacheTimeoutSeconds()>0) {
sqlQueryObject.addInsertField("cache_seconds", "?");
}
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
int indexCR = 1;
stm.setLong(indexCR++, idPortaApplicativa);
if(regola.getReturnCodeMin()!=null && regola.getReturnCodeMin()>0) {
stm.setInt(indexCR++, regola.getReturnCodeMin());
}
if(regola.getReturnCodeMax()!=null && regola.getReturnCodeMax()>0) {
stm.setInt(indexCR++, regola.getReturnCodeMax());
}
stm.setInt(indexCR++, regola.getFault() ? CostantiDB.TRUE : CostantiDB.FALSE);
if(regola.getCacheTimeoutSeconds()!=null && regola.getCacheTimeoutSeconds()>0) {
stm.setInt(indexCR++, regola.getCacheTimeoutSeconds());
}
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunta regola di cache alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " regole di cache alla PortaApplicativa[" + idPortaApplicativa + "]");
// AttributeAuthority
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellate "+n+" A.A. associate alla Porta Applicativa "+idPortaApplicativa);
n=0;
if(aPA.sizeAttributeAuthorityList()>0){
for (int j = 0; j < aPA.sizeAttributeAuthorityList(); j++) {
AttributeAuthority aa = aPA.getAttributeAuthority(j);
String attributi = null;
if(aa.sizeAttributoList()>0) {
StringBuilder bf = new StringBuilder();
for (int aaI = 0; aaI < aa.sizeAttributoList(); aaI++) {
if(aaI>0) {
bf.append(",");
}
bf.append(aa.getAttributo(aaI));
}
attributi = bf.toString();
}
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addInsertTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
sqlQueryObject.addInsertField("id_porta", "?");
sqlQueryObject.addInsertField("nome", "?");
sqlQueryObject.addInsertField("attributi", "?");
sqlQuery = sqlQueryObject.createSQLInsert();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setString(2, aa.getNome());
stm.setString(3, attributi);
stm.executeUpdate();
stm.close();
n++;
DriverConfigurazioneDBLib.logDebug("Aggiunto A.A.[" + aa.getNome() + "] alla PortaApplicativa[" + idPortaApplicativa + "]");
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunte " + n + " A.A. alla PortaApplicativa[" + idPortaApplicativa + "]");
// tracciamentoConfigurazione
DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoDatabase, idPortaApplicativa,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_DB);
DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoFiletrace, idPortaApplicativa,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_FILETRACE);
DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazioneFiletrace(type, con, tracciamentoFiletraceDetails, idPortaApplicativa,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA);
// dumpConfigurazione
DriverConfigurazioneDB_dumpLIB.CRUDDumpConfigurazione(type, con, aPA.getDump(), idPortaApplicativa, CostantiDB.DUMP_CONFIGURAZIONE_PROPRIETARIO_PA);
// trasformazioni
DriverConfigurazioneDBTrasformazioniLib.CRUDTrasformazioni(type, con, aPA.getTrasformazioni(), idPortaApplicativa, false);
// Handlers
DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, idPortaApplicativa, true, (configHandlers!=null) ? configHandlers.getRequest() : null);
DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, idPortaApplicativa, false, (configHandlers!=null) ? configHandlers.getResponse() : null);
// extendedInfo
if(extInfoConfigurazioneDriver!=null){
extInfoConfigurazioneDriver.deleteAllExtendedInfo(con, DriverConfigurazioneDBLib.log, aPA, CRUDType.UPDATE);
}
i=0;
if(aPA.sizeExtendedInfoList()>0 &&
(extInfoConfigurazioneDriver!=null)
){
for (i = 0; i < aPA.sizeExtendedInfoList(); i++) {
extInfoConfigurazioneDriver.createExtendedInfo(con, DriverConfigurazioneDBLib.log, aPA, aPA.getExtendedInfo(i), CRUDType.UPDATE);
}
}
DriverConfigurazioneDBLib.logDebug("Aggiunte " + i + " associazioni ExtendedInfo<->PortaApplicativa associati alla PortaApplicativa[" + idPortaApplicativa + "]");
break;
case DELETE:
// DELETE
/** if(aPA.getId()==null || aPA.getId()<=0) throw new
// DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa(DELETE)]
// id della PortaApplicativa non valida.");*/
idPortaApplicativa = DBUtils.getIdPortaApplicativa(nomePorta, con, DriverConfigurazioneDBLib.tipoDB);
if (idPortaApplicativa <= 0)
throw new DriverConfigurazioneException("Non e' stato possibile recuperare l'id della Porta Applicativa.");
// tracciamentoConfigurazione
DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoDatabase, idPortaApplicativa,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_DB);
DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazione(type, con, tracciamentoFiletrace, idPortaApplicativa,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_TIPO_FILETRACE);
DriverConfigurazioneDBTracciamentoLIB.crudTracciamentoConfigurazioneFiletrace(type, con, tracciamentoFiletraceDetails, idPortaApplicativa,
CostantiDB.TRACCIAMENTO_CONFIGURAZIONE_PROPRIETARIO_PA);
// dumpConfigurazione
DriverConfigurazioneDB_dumpLIB.CRUDDumpConfigurazione(type, con, aPA.getDump(), idPortaApplicativa, CostantiDB.DUMP_CONFIGURAZIONE_PROPRIETARIO_PA);
// trasformazioni
DriverConfigurazioneDBTrasformazioniLib.CRUDTrasformazioni(type, con, aPA.getTrasformazioni(), idPortaApplicativa, false);
// Handlers
DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, idPortaApplicativa, true, (configHandlers!=null) ? configHandlers.getRequest() : null);
DriverConfigurazioneDB_handlerLIB.CRUDConfigurazioneMessageHandlers(type, con, null, idPortaApplicativa, false, (configHandlers!=null) ? configHandlers.getResponse() : null);
// AttributeAuthority
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_ATTRIBUTE_AUTHORITY);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellate "+n+" A.A. associate alla Porta Applicativa "+idPortaApplicativa);
// Cache Regole
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CACHE_REGOLE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" regole di cache associate alla Porta Applicativa "+idPortaApplicativa);
// azioni delegate
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AZIONI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellate "+n+" azioni delegate associate alla Porta Applicativa "+idPortaApplicativa);
// ruoli (token)
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_RUOLI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" ruoli (token) associati alla Porta Applicativa "+idPortaApplicativa);
// sa autorizzati (token)
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_TOKEN_SA);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi autorizzati (token) associati alla Porta Applicativa "+idPortaApplicativa);
// sa autorizzati
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA_AUTORIZZATI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" servizi applicativi autorizzati associati alla Porta Applicativa "+idPortaApplicativa);
// soggetti
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SOGGETTI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" soggetti associati alla Porta Applicativa "+idPortaApplicativa);
// ruoli
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_RUOLI);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" ruoli associati alla Porta Applicativa "+idPortaApplicativa);
// scope
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SCOPE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Cancellati "+n+" scope associati alla Porta Applicativa "+idPortaApplicativa);
// mtom
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MTOM_REQUEST);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " request flow con id=" + idPortaApplicativa);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MTOM_RESPONSE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " response flow con id=" + idPortaApplicativa);
// message security
//if ( CostantiConfigurazione.ABILITATO.toString().equals(messageSecurityStatus) ) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " request flow con id=" + idPortaApplicativa);
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " response flow con id=" + idPortaApplicativa);
//}
// serviziapplicativi props
idsPaSa = new ArrayList<>();
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addFromTable(CostantiDB.PORTE_APPLICATIVE_SA);
sqlQueryObject.addSelectField("id");
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLQuery();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
rs = stm.executeQuery();
while(rs.next()) {
idsPaSa.add(rs.getLong("id"));
}
rs.close();
stm.close();
if(!idsPaSa.isEmpty()) {
for (Long idsapa : idsPaSa) {
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA_PROPS);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idsapa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Eliminate "+n+" proprieta relative all'associazione '"+idsapa+"' (Porta Applicativa "+idPortaApplicativa+")");
}
}
// serviziapplicativi
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_SA);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " servizi applicativi associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// cancello le prop relative al behaviour
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_BEHAVIOUR_PROPS);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " BehaviourProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// cancello anche le flow di request/response associate a questa
// porta applicativa
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_REQUEST);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " security_request flow associate alla PortaApplicativa[" + idPortaApplicativa + "]");
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_MESSAGE_SECURITY_RESPONSE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " security_response flow associate alla PortaApplicativa[" + idPortaApplicativa + "]");
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n = stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " correlazione associate alla PortaApplicativa[" + idPortaApplicativa + "]");
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_CORRELAZIONE_RISPOSTA);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n = stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " correlazione della risposta associate alla PortaApplicativa[" + idPortaApplicativa + "]");
// cancello le prop
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolProp associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// cancello le prop di rate limiting
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_RATE_LIMITING_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolPropRateLimiting associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// cancello le prop di autorizzazione contenuti
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_CONTENUTI_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolPropAutorizzazioneContenuto associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// cancello le prop di autorizzazione
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTORIZZAZIONE_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolPropAutorizzazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// cancello le prop di autenticazione
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE_AUTENTICAZIONE_PROP);
sqlQueryObject.addWhereCondition("id_porta=?");
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
n=stm.executeUpdate();
stm.close();
if (n > 0)
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " SetProtocolPropAutenticazione associati alla PortaApplicativa[" + idPortaApplicativa + "]");
// extendedInfo
if(extInfoConfigurazioneDriver!=null){
extInfoConfigurazioneDriver.deleteAllExtendedInfo(con, DriverConfigurazioneDBLib.log, aPA, CRUDType.DELETE);
}
// porta applicativa
sqlQueryObject = SQLObjectFactory.createSQLQueryObject(DriverConfigurazioneDBLib.tipoDB);
sqlQueryObject.addDeleteTable(CostantiDB.PORTE_APPLICATIVE);
sqlQueryObject.addWhereCondition("id=?");
sqlQueryObject.addWhereCondition("id_soggetto=?");
sqlQueryObject.addWhereCondition("nome_porta=?");
sqlQueryObject.setANDLogicOperator(true);
sqlQuery = sqlQueryObject.createSQLDelete();
stm = con.prepareStatement(sqlQuery);
stm.setLong(1, idPortaApplicativa);
stm.setLong(2, idProprietario);
stm.setString(3, nomePorta);
n=stm.executeUpdate();
stm.close();
DriverConfigurazioneDBLib.logDebug("Deleted " + n + " row(s).");
break;
}
return idPortaApplicativa;
} catch (DriverConfigurazioneException e) {
throw e;
} catch (SQLException se) {
throw new DriverConfigurazioneException("[DriverConfigurazioneDB_LIB::CRUDPortaApplicativa] SQLException [" + se.getMessage() + "].",se);
} catch (Exception e) {
throw new DriverConfigurazioneException("Errore durante operazione("+type+") CRUDPortaApplicativa.",e);
}finally {
//Chiudo statement and resultset
JDBCUtilities.closeResources(rs, stm);
}
}
}