ExporterArchiveUtils.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.protocol.engine.archive;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.openspcoop2.core.allarmi.Allarme;
import org.openspcoop2.core.allarmi.IdAllarme;
import org.openspcoop2.core.config.AttributeAuthority;
import org.openspcoop2.core.config.Configurazione;
import org.openspcoop2.core.config.ConfigurazioneHandler;
import org.openspcoop2.core.config.ConfigurazioneUrlInvocazione;
import org.openspcoop2.core.config.ConfigurazioneUrlInvocazioneRegola;
import org.openspcoop2.core.config.GenericProperties;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneServizioApplicativo;
import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneSoggetto;
import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
import org.openspcoop2.core.config.PortaDelegata;
import org.openspcoop2.core.config.PortaDelegataServizioApplicativo;
import org.openspcoop2.core.config.Property;
import org.openspcoop2.core.config.Ruolo;
import org.openspcoop2.core.config.Scope;
import org.openspcoop2.core.config.ServizioApplicativo;
import org.openspcoop2.core.config.TrasformazioneRegola;
import org.openspcoop2.core.config.TrasformazioneRegolaApplicabilitaServizioApplicativo;
import org.openspcoop2.core.config.TrasformazioneRegolaApplicabilitaSoggetto;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.constants.TipoAutenticazione;
import org.openspcoop2.core.config.constants.TipoAutorizzazione;
import org.openspcoop2.core.config.constants.TipoBehaviour;
import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
import org.openspcoop2.core.config.driver.FiltroRicercaPorteApplicative;
import org.openspcoop2.core.config.driver.FiltroRicercaPorteDelegate;
import org.openspcoop2.core.config.driver.FiltroRicercaServiziApplicativi;
import org.openspcoop2.core.constants.CostantiConnettori;
import org.openspcoop2.core.constants.CostantiDB;
import org.openspcoop2.core.constants.TipiConnettore;
import org.openspcoop2.core.controllo_traffico.AttivazionePolicy;
import org.openspcoop2.core.controllo_traffico.ConfigurazionePolicy;
import org.openspcoop2.core.controllo_traffico.IdActivePolicy;
import org.openspcoop2.core.controllo_traffico.IdPolicy;
import org.openspcoop2.core.controllo_traffico.constants.TipoFiltroApplicativo;
import org.openspcoop2.core.id.IDAccordo;
import org.openspcoop2.core.id.IDAccordoCooperazione;
import org.openspcoop2.core.id.IDFruizione;
import org.openspcoop2.core.id.IDGenericProperties;
import org.openspcoop2.core.id.IDGruppo;
import org.openspcoop2.core.id.IDPortaApplicativa;
import org.openspcoop2.core.id.IDPortaDelegata;
import org.openspcoop2.core.id.IDRuolo;
import org.openspcoop2.core.id.IDScope;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDServizioApplicativo;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.core.plugins.IdPlugin;
import org.openspcoop2.core.plugins.constants.TipoPlugin;
import org.openspcoop2.core.registry.AccordoServizioParteComune;
import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioCompostoServizioComponente;
import org.openspcoop2.core.registry.ConfigurazioneServizioAzione;
import org.openspcoop2.core.registry.Fruitore;
import org.openspcoop2.core.registry.GruppoAccordo;
import org.openspcoop2.core.registry.IdSoggetto;
import org.openspcoop2.core.registry.RuoloSoggetto;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
import org.openspcoop2.core.registry.driver.FiltroRicerca;
import org.openspcoop2.core.registry.driver.FiltroRicercaAccordi;
import org.openspcoop2.core.registry.driver.FiltroRicercaGruppi;
import org.openspcoop2.core.registry.driver.FiltroRicercaRuoli;
import org.openspcoop2.core.registry.driver.FiltroRicercaScope;
import org.openspcoop2.core.registry.driver.FiltroRicercaServizi;
import org.openspcoop2.core.registry.driver.FiltroRicercaSoggetti;
import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
import org.openspcoop2.core.registry.driver.IDAccordoFactory;
import org.openspcoop2.core.registry.driver.IDServizioFactory;
import org.openspcoop2.protocol.basic.registry.ConfigIntegrationReader;
import org.openspcoop2.protocol.basic.registry.RegistryReader;
import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
import org.openspcoop2.protocol.sdk.ProtocolException;
import org.openspcoop2.protocol.sdk.archive.Archive;
import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoCooperazione;
import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioComposto;
import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteComune;
import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteSpecifica;
import org.openspcoop2.protocol.sdk.archive.ArchiveActivePolicy;
import org.openspcoop2.protocol.sdk.archive.ArchiveAllarme;
import org.openspcoop2.protocol.sdk.archive.ArchiveAttributeAuthority;
import org.openspcoop2.protocol.sdk.archive.ArchiveCascadeConfiguration;
import org.openspcoop2.protocol.sdk.archive.ArchiveConfigurationPolicy;
import org.openspcoop2.protocol.sdk.archive.ArchiveFruitore;
import org.openspcoop2.protocol.sdk.archive.ArchiveGruppo;
import org.openspcoop2.protocol.sdk.archive.ArchiveIdCorrelazione;
import org.openspcoop2.protocol.sdk.archive.ArchiveMode;
import org.openspcoop2.protocol.sdk.archive.ArchivePdd;
import org.openspcoop2.protocol.sdk.archive.ArchivePluginArchivio;
import org.openspcoop2.protocol.sdk.archive.ArchivePluginClasse;
import org.openspcoop2.protocol.sdk.archive.ArchivePortaApplicativa;
import org.openspcoop2.protocol.sdk.archive.ArchivePortaDelegata;
import org.openspcoop2.protocol.sdk.archive.ArchiveRuolo;
import org.openspcoop2.protocol.sdk.archive.ArchiveScope;
import org.openspcoop2.protocol.sdk.archive.ArchiveServizioApplicativo;
import org.openspcoop2.protocol.sdk.archive.ArchiveSoggetto;
import org.openspcoop2.protocol.sdk.archive.ArchiveTokenPolicy;
import org.openspcoop2.protocol.sdk.archive.ArchiveUrlInvocazioneRegola;
import org.openspcoop2.protocol.sdk.archive.IArchive;
import org.openspcoop2.protocol.sdk.constants.ArchiveType;
import org.slf4j.Logger;
/**
* ExporterArchiveUtils
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class ExporterArchiveUtils {
private AbstractArchiveEngine archiveEngine;
private Logger log;
private ProtocolFactoryManager protocolFactoryManager;
private ArchiveIdCorrelazione idCorrelazione = null;
public ExporterArchiveUtils(AbstractArchiveEngine archiveEngine,Logger log) throws Exception{
this.archiveEngine = archiveEngine;
this.log = log;
this.protocolFactoryManager = ProtocolFactoryManager.getInstance();
this.idCorrelazione = new ArchiveIdCorrelazione("export"); // non necessario in questa funzione. Comunque viene qua usata una variabile se servisse in futuro
}
public void export(String protocol,Archive archive,OutputStream out,ArchiveMode mode) throws Exception{
IProtocolFactory<?> protocolFactory = this.protocolFactoryManager.getProtocolFactoryByName(protocol);
IArchive archiveEngine = protocolFactory.createArchive();
RegistryReader archiveRegistryReader = new RegistryReader(this.archiveEngine.getDriverRegistroServizi(),this.log);
ConfigIntegrationReader archiveConfigIntegrationReader = new ConfigIntegrationReader(this.archiveEngine.getDriverConfigurazione(),this.log);
archiveEngine.exportArchive(archive, out, mode, archiveRegistryReader, archiveConfigIntegrationReader);
}
public byte[] export(String protocol,Archive archive,ArchiveMode mode) throws Exception{
IProtocolFactory<?> protocolFactory = this.protocolFactoryManager.getProtocolFactoryByName(protocol);
IArchive archiveEngine = protocolFactory.createArchive();
RegistryReader archiveRegistryReader = new RegistryReader(this.archiveEngine.getDriverRegistroServizi(),this.log);
ConfigIntegrationReader archiveConfigIntegrationReader = new ConfigIntegrationReader(this.archiveEngine.getDriverConfigurazione(),this.log);
return archiveEngine.exportArchive(archive, mode, archiveRegistryReader, archiveConfigIntegrationReader);
}
public void fillArchive(Archive archive, ArchiveType exportSourceArchiveType,List<?> listObject, ArchiveCascadeConfiguration cascadeConfig) throws Exception{
// La navigazione dell'albero degli oggetti avviente con le chiamate effettuate di seguito.
//
// Per ogni oggetto e' possibile identificare:
// - gli oggetti che lo riferiscono (cascadeAvanti)
// - gli oggetti che lui riferisce (dipendenza)
//
// Un oggetto (catalogato come servizioApplicativo,pa,pd,accordo....) viene aggiunto all'archivio SOLO SE e' richiesto dalla configurazione di cascade.
//
// Gli oggetti che vengono riferiti da un oggetto (dipendenza) vengono navigati SOLO SE l'oggetto e' stato aggiunto all'archivio (e quindi abilitato dalla configurazione di cascade).
// Saranno aggiunti pero' solo se poi essi stessi sono richiesti dalla configurazione di cascade.
//
// Gli oggetti che lo riferiscono (cascadeAvanti) sono sempre navigati.
// Anche questi pero' saranno aggiunti solo se poi essi stessi sono richiesti dalla configurazione di cascade.
//
// Con questo approccio la navigazione e' sempre completa verso gli oggetti che lo riferiscono (cascadeAvanti)
// mentre gli oggetti padre sono navigati solo se l'oggetto e' abilitato dalla configurazione di cascade.
//
// L'utente che configura il cascade puo' di fatto implementare una navigazione che tronca un ramo se disattiva il cascade di tutti i sotto elementi.
// Fanno eccezione i servizi applicativi per i quali esiste piu' di un padre. In questo caso si esamina il padre:
// - nel caso di padre=soggetto/sa si vede esclusivamente il cascade dei servizi applicativi
// - nel caso di padre=porta delegata si controlla sia il cascade dei servizi applicativi che il cascade della porta delegata
// - nel caso di padre=porta applicativa si controlla sia il cascade dei servizi applicativi che il cascade della porta applicativa
// - nel caso di padre=fruitore si controlla sia il cascade dei servizi applicativi che il cascade delle fruizioni
switch (exportSourceArchiveType) {
case PDD:
for (Object object : listObject) {
this.readPdd(archive, (String)object, cascadeConfig, exportSourceArchiveType);
}
break;
case GRUPPO:
for (Object object : listObject) {
this.readGruppo(archive, (IDGruppo)object, cascadeConfig, exportSourceArchiveType);
}
break;
case RUOLO:
for (Object object : listObject) {
this.readRuolo(archive, (IDRuolo)object, cascadeConfig, exportSourceArchiveType);
}
break;
case SCOPE:
for (Object object : listObject) {
this.readScope(archive, (IDScope)object, cascadeConfig, exportSourceArchiveType);
}
break;
case SOGGETTO:
for (Object object : listObject) {
this.readSoggetto(archive, (IDSoggetto)object, cascadeConfig, exportSourceArchiveType);
}
break;
case SERVIZIO_APPLICATIVO:
for (Object object : listObject) {
this.readServizioApplicativo(archive, (IDServizioApplicativo)object, cascadeConfig, exportSourceArchiveType);
}
break;
case PORTA_DELEGATA:
for (Object object : listObject) {
this.readPortaDelegata(archive, (IDPortaDelegata)object, cascadeConfig, exportSourceArchiveType);
}
break;
case PORTA_APPLICATIVA:
for (Object object : listObject) {
this.readPortaApplicativa(archive, (IDPortaApplicativa)object, cascadeConfig, exportSourceArchiveType);
}
break;
case ACCORDO_COOPERAZIONE:
for (Object object : listObject) {
this.readAccordoCooperazione(archive, (IDAccordoCooperazione)object, cascadeConfig, exportSourceArchiveType);
}
break;
case ACCORDO_SERVIZIO_PARTE_COMUNE:
for (Object object : listObject) {
this.readAccordoServizioParteComune(archive, (IDAccordo)object, cascadeConfig, exportSourceArchiveType);
}
break;
case ACCORDO_SERVIZIO_COMPOSTO:
for (Object object : listObject) {
this.readAccordoServizioComposto(archive, (IDAccordo)object, cascadeConfig, exportSourceArchiveType);
}
break;
case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
for (Object object : listObject) {
this.readAccordoServizioParteSpecifica(archive, (IDServizio)object, cascadeConfig, exportSourceArchiveType);
}
break;
case EROGAZIONE:
for (Object object : listObject) {
this.readErogazione(archive, (IDServizio)object, cascadeConfig);
}
break;
case FRUIZIONE:
for (Object object : listObject) {
this.readFruizione(archive, (IDFruizione)object, cascadeConfig);
}
break;
case CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIG_POLICY:
for (Object object : listObject) {
this.readControlloTraffico_configurationPolicy(archive, (IdPolicy) object, cascadeConfig, exportSourceArchiveType);
}
break;
case CONFIGURAZIONE_CONTROLLO_TRAFFICO_ACTIVE_POLICY:
for (Object object : listObject) {
this.readControlloTraffico_activePolicy(archive, (IdActivePolicy) object, cascadeConfig, exportSourceArchiveType);
}
break;
case ALLARME:
for (Object object : listObject) {
this.readAllarme(archive, (IdAllarme) object, cascadeConfig, exportSourceArchiveType);
}
break;
case CONFIGURAZIONE_TOKEN_POLICY:
for (Object object : listObject) {
this.readTokenPolicy(archive, (IDGenericProperties) object, cascadeConfig, exportSourceArchiveType);
}
break;
case CONFIGURAZIONE_ATTRIBUTE_AUTHORITY:
for (Object object : listObject) {
this.readAttributeAuthority(archive, (IDGenericProperties) object, cascadeConfig, exportSourceArchiveType);
}
break;
case CONFIGURAZIONE_PLUGIN_CLASSE:
for (Object object : listObject) {
this.readPlugin_classe(archive, (IdPlugin) object, cascadeConfig, exportSourceArchiveType);
}
break;
case CONFIGURAZIONE_PLUGIN_ARCHVIO:
for (Object object : listObject) {
this.readPlugin_archivio(archive, (String) object, cascadeConfig, exportSourceArchiveType);
}
break;
case CONFIGURAZIONE_URL_INVOCAZIONE_REGOLA:
for (Object object : listObject) {
this.readUrlInvocazioneRegola(archive, (String) object, cascadeConfig);
}
break;
case CONFIGURAZIONE_URL_INVOCAZIONE:
setConfigurazioneUrlInvocazione(archive);
break;
case CONFIGURAZIONE:
readControlloTrafficoConfigurazione(archive, true, false, exportSourceArchiveType);
readAllarmiConfigurazione(archive, true, false, exportSourceArchiveType);
readTokenPolicyConfigurazione(archive, exportSourceArchiveType);
readAttributeAuthorityConfigurazione(archive, exportSourceArchiveType);
readPluginConfigurazione(archive, exportSourceArchiveType);
setConfigurazione(archive);
// aggiungo gruppi 'zombie'
FiltroRicercaGruppi filtroRicercaGruppi = new FiltroRicercaGruppi();
List<IDGruppo> idGruppi = null;
try{
idGruppi = this.archiveEngine.getAllIdGruppi(filtroRicercaGruppi);
for (IDGruppo idGruppo : idGruppi) {
boolean found = false;
if(archive.getGruppi()!=null && archive.getGruppi().size()>0){
for (String idArchiveGruppo : archive.getGruppi().keys()) {
ArchiveGruppo archiveGruppo = archive.getGruppi().get(idArchiveGruppo);
if(archiveGruppo.getIdGruppo().equals(idGruppo)){
found = true;
break;
}
}
}
if(!found){
this.readGruppo(archive, idGruppo, cascadeConfig, false, ArchiveType.GRUPPO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
break;
case ALL:
case ALL_WITHOUT_CONFIGURAZIONE:
// soggetti e tutti gli oggetti interni
FiltroRicercaSoggetti filtroSoggetti = new FiltroRicercaSoggetti();
try{
ArchiveCascadeConfiguration cascadeAll = new ArchiveCascadeConfiguration(true);
List<IDSoggetto> idsSoggetti = this.archiveEngine.getAllIdSoggettiRegistro(filtroSoggetti);
if(idsSoggetti!=null && idsSoggetti.size()>0){
for (IDSoggetto idSoggetto : idsSoggetti) {
this.readSoggetto(archive, idSoggetto, cascadeAll, exportSourceArchiveType); // vengono prese anche le pdd
}
}
}catch(DriverConfigurazioneNotFound notFound){}
// configurazione solo se richiesta
//boolean loadActivePolicyFruizioneErogazione = true;
boolean loadActivePolicyFruizioneErogazione = false; // vengono gia' caricate da sopra con il cascade sui soggetti, che arriva sulle PD e PA
boolean loadAllarmiErogazioneFruizione = false; // vale lo stesso motivo delle policy, vengono giĆ caricate sopra con il cascade dei soggetti
if(exportSourceArchiveType.equals(ArchiveType.ALL)){
readControlloTrafficoConfigurazione(archive, true, loadActivePolicyFruizioneErogazione, exportSourceArchiveType);
readAllarmiConfigurazione(archive, true, loadAllarmiErogazioneFruizione, exportSourceArchiveType);
readTokenPolicyConfigurazione(archive, exportSourceArchiveType);
readAttributeAuthorityConfigurazione(archive, exportSourceArchiveType);
readPluginConfigurazione(archive, exportSourceArchiveType);
setConfigurazione(archive);
}
else if(exportSourceArchiveType.equals(ArchiveType.ALL_WITHOUT_CONFIGURAZIONE)){
readControlloTrafficoConfigurazione(archive, false, loadActivePolicyFruizioneErogazione, exportSourceArchiveType);
readAllarmiConfigurazione(archive, false, loadAllarmiErogazioneFruizione, exportSourceArchiveType);
}
// aggiungo porte di dominio 'zombie'
FiltroRicerca filtroRicercaPdd = new FiltroRicerca();
List<String> idPdds = null;
try{
idPdds = this.archiveEngine.getAllIdPorteDominio(filtroRicercaPdd);
for (String idPdd : idPdds) {
boolean found = false;
if(archive.getPdd()!=null && archive.getPdd().size()>0){
for (String idArchivePdd : archive.getPdd().keys()) {
ArchivePdd archivePdd = archive.getPdd().get(idArchivePdd);
if(archivePdd.getNomePdd().equals(idPdd)){
found = true;
break;
}
}
}
if(!found){
this.readPdd(archive, idPdd, cascadeConfig, false, ArchiveType.PDD);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// aggiungo gruppi 'zombie'
if(exportSourceArchiveType.equals(ArchiveType.ALL)){
filtroRicercaGruppi = new FiltroRicercaGruppi();
idGruppi = null;
try{
idGruppi = this.archiveEngine.getAllIdGruppi(filtroRicercaGruppi);
for (IDGruppo idGruppo : idGruppi) {
boolean found = false;
if(archive.getGruppi()!=null && archive.getGruppi().size()>0){
for (String idArchiveGruppo : archive.getGruppi().keys()) {
ArchiveGruppo archiveGruppo = archive.getGruppi().get(idArchiveGruppo);
if(archiveGruppo.getIdGruppo().equals(idGruppo)){
found = true;
break;
}
}
}
if(!found){
this.readGruppo(archive, idGruppo, cascadeConfig, false, ArchiveType.GRUPPO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
// aggiungo ruoli 'zombie'
FiltroRicercaRuoli filtroRicercaRuoli = new FiltroRicercaRuoli();
List<IDRuolo> idRuoli = null;
try{
idRuoli = this.archiveEngine.getAllIdRuoli(filtroRicercaRuoli);
for (IDRuolo idRuolo : idRuoli) {
boolean found = false;
if(archive.getRuoli()!=null && archive.getRuoli().size()>0){
for (String idArchiveRuolo : archive.getRuoli().keys()) {
ArchiveRuolo archiveRuolo = archive.getRuoli().get(idArchiveRuolo);
if(archiveRuolo.getIdRuolo().equals(idRuolo)){
found = true;
break;
}
}
}
if(!found){
this.readRuolo(archive, idRuolo, cascadeConfig, false, ArchiveType.RUOLO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// aggiungo scope 'zombie'
FiltroRicercaScope filtroRicercaScope = new FiltroRicercaScope();
List<IDScope> idScopes = null;
try{
idScopes = this.archiveEngine.getAllIdScope(filtroRicercaScope);
for (IDScope idScope : idScopes) {
boolean found = false;
if(archive.getScope()!=null && archive.getScope().size()>0){
for (String idArchiveScope : archive.getScope().keys()) {
ArchiveScope archiveScope = archive.getScope().get(idArchiveScope);
if(archiveScope.getIdScope().equals(idScope)){
found = true;
break;
}
}
}
if(!found){
this.readScope(archive, idScope, cascadeConfig, false, ArchiveType.SCOPE);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
break;
default:
break;
}
}
private void setConfigurazione(Archive archive) throws Exception {
Configurazione configurazione = this.archiveEngine.getConfigurazione();
_setConfigurazioneUrlInvocazione(archive, configurazione);
archive.setConfigurazionePdD(configurazione);
}
private void setConfigurazioneUrlInvocazione(Archive archive) throws Exception {
Configurazione configurazione = this.archiveEngine.getConfigurazione();
_setConfigurazioneUrlInvocazione(archive, configurazione);
}
private void _setConfigurazioneUrlInvocazione(Archive archive, Configurazione configurazione) throws Exception {
if(configurazione!=null && configurazione.getUrlInvocazione()!=null) {
ConfigurazioneUrlInvocazione urlInvocazione = configurazione.getUrlInvocazione();
while(urlInvocazione.sizeRegolaList()>0) {
ConfigurazioneUrlInvocazioneRegola regola = urlInvocazione.removeRegola(0);
String key = ArchiveUrlInvocazioneRegola.buildKey(regola.getNome());
if(!archive.getConfigurazionePdD_urlInvocazione_regole().containsKey(key)){
archive.getConfigurazionePdD_urlInvocazione_regole().add(new ArchiveUrlInvocazioneRegola(regola, this.idCorrelazione));
}
}
archive.setConfigurazionePdD_urlInvocazione(urlInvocazione);
}
}
private void readUrlInvocazioneRegola(Archive archive, String nome, ArchiveCascadeConfiguration cascadeConfig) throws Exception {
String key = ArchiveUrlInvocazioneRegola.buildKey(nome);
if(archive.getConfigurazionePdD_urlInvocazione_regole().containsKey(key)){
// gia gestito
}
else{
archive.getConfigurazionePdD_urlInvocazione_regole().add(new ArchiveUrlInvocazioneRegola(this.archiveEngine.getUrlInvocazioneRegola(nome), this.idCorrelazione));
}
}
private void readControlloTrafficoConfigurazione(Archive archive, boolean policyGlobali, boolean policyFruizioniErogazioni, ArchiveType provenienza) throws Exception {
archive.setControlloTraffico_configurazione(this.archiveEngine.getControlloTraffico_Configurazione());
List<IdPolicy> listControlloTraffico_configurationPolicies = null;
try {
listControlloTraffico_configurationPolicies = this.archiveEngine.getAllIdControlloTraffico_configurationPolicies();
}catch(DriverConfigurazioneNotFound notFound) {}
if(policyGlobali) {
if(listControlloTraffico_configurationPolicies!=null && listControlloTraffico_configurationPolicies.size()>0) {
for (IdPolicy idPolicy : listControlloTraffico_configurationPolicies) {
String keyPolicyConfig = ArchiveConfigurationPolicy.buildKey(idPolicy.getNome());
if(archive.getControlloTraffico_configurationPolicies().containsKey(keyPolicyConfig)==false) {
archive.getControlloTraffico_configurationPolicies().add(new ArchiveConfigurationPolicy(
this.archiveEngine.getControlloTraffico_configurationPolicy(idPolicy),
this.idCorrelazione));
}
}
}
}
else {
// le aggiungo dopo: aggiungo le policy configurate solamente realmente utilizzate.
}
List<IdActivePolicy> listControlloTraffico_activePolicies = null;
try {
if(policyGlobali && policyFruizioniErogazioni) {
listControlloTraffico_activePolicies = this.archiveEngine.getAllIdControlloTraffico_activePolicies_all(null);
}
else if(policyGlobali) {
listControlloTraffico_activePolicies = this.archiveEngine.getAllIdControlloTraffico_activePolicies_globali(null);
}
else if(policyFruizioniErogazioni) {
listControlloTraffico_activePolicies = this.archiveEngine.getAllIdControlloTraffico_activePolicies_erogazioniFruizioni(null);
}
}catch(DriverConfigurazioneNotFound notFound) {}
if(listControlloTraffico_activePolicies!=null && listControlloTraffico_activePolicies.size()>0) {
for (IdActivePolicy idPolicy : listControlloTraffico_activePolicies) {
AttivazionePolicy policy = null;
String keyActivePolicy = ArchiveActivePolicy.buildKey(idPolicy.getFiltroRuoloPorta(), idPolicy.getFiltroNomePorta(), idPolicy.getAlias());
if(archive.getControlloTraffico_activePolicies().containsKey(keyActivePolicy)==false) {
policy = this.archiveEngine.getControlloTraffico_activePolicy(idPolicy.getFiltroRuoloPorta(), idPolicy.getFiltroNomePorta(), idPolicy.getAlias());
archive.getControlloTraffico_activePolicies().add(new ArchiveActivePolicy(
policy,
this.idCorrelazione));
}
if(!policyGlobali) {
// aggiungo le policy configurate solamente realmente utilizzate.
String keyPolicyConfig = ArchiveConfigurationPolicy.buildKey(idPolicy.getIdPolicy());
if(archive.getControlloTraffico_configurationPolicies().containsKey(keyPolicyConfig)==false) {
if(listControlloTraffico_configurationPolicies!=null && listControlloTraffico_configurationPolicies.size()>0) {
for (IdPolicy idConfigPolicy : listControlloTraffico_configurationPolicies) {
if(idConfigPolicy.getNome().equals(idPolicy.getIdPolicy())) {
archive.getControlloTraffico_configurationPolicies().add(new ArchiveConfigurationPolicy(
this.archiveEngine.getControlloTraffico_configurationPolicy(idConfigPolicy),
this.idCorrelazione));
break;
}
}
}
}
// aggiungo i plugin configurate solamente realmente utilizzate.
if(policy!=null && policy.getFiltro()!=null && policy.getFiltro().isEnabled() &&
policy.getFiltro().isInformazioneApplicativaEnabled() &&
StringUtils.isNotEmpty(policy.getFiltro().getInformazioneApplicativaTipo())) {
TipoFiltroApplicativo tipoFiltro = TipoFiltroApplicativo.toEnumConstant(policy.getFiltro().getInformazioneApplicativaTipo(), false);
if(TipoFiltroApplicativo.PLUGIN_BASED.equals(tipoFiltro)) {
try {
ArchiveCascadeConfiguration cascadeConfig = new ArchiveCascadeConfiguration();
cascadeConfig.setCascadePluginConfigurazione(true);
readPlugin_classe(archive, TipoPlugin.RATE_LIMITING.getValue(), policy.getFiltro().getInformazioneApplicativaNome(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(policy!=null && policy.getGroupBy()!=null && policy.getGroupBy().isEnabled() &&
policy.getGroupBy().isInformazioneApplicativaEnabled() &&
StringUtils.isNotEmpty(policy.getGroupBy().getInformazioneApplicativaTipo())) {
TipoFiltroApplicativo tipoFiltro = TipoFiltroApplicativo.toEnumConstant(policy.getGroupBy().getInformazioneApplicativaTipo(), false);
if(TipoFiltroApplicativo.PLUGIN_BASED.equals(tipoFiltro)) {
try {
ArchiveCascadeConfiguration cascadeConfig = new ArchiveCascadeConfiguration();
cascadeConfig.setCascadePluginConfigurazione(true);
readPlugin_classe(archive, TipoPlugin.RATE_LIMITING.getValue(), policy.getGroupBy().getInformazioneApplicativaNome(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
}
}
private void readControlloTrafficoPolicyPorta(Archive archive, boolean delegata, String nomePorta, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
List<IdActivePolicy> listControlloTraffico_activePolicies = null;
try {
if(delegata) {
listControlloTraffico_activePolicies = this.archiveEngine.getAllIdControlloTraffico_activePolicies_fruizione(nomePorta);
}
else {
listControlloTraffico_activePolicies = this.archiveEngine.getAllIdControlloTraffico_activePolicies_erogazione(nomePorta);
}
}catch(DriverConfigurazioneNotFound notFound) {}
if(listControlloTraffico_activePolicies!=null && listControlloTraffico_activePolicies.size()>0) {
for (IdActivePolicy idPolicy : listControlloTraffico_activePolicies) {
this.readControlloTraffico_activePolicy(archive, idPolicy, cascadeConfig, provenienza);
}
}
}
private void readControlloTraffico_configurationPolicy(Archive archive, IdPolicy idPolicy, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
ConfigurazionePolicy policy = null;
String key = ArchiveConfigurationPolicy.buildKey(idPolicy.getNome());
if(archive.getControlloTraffico_configurationPolicies().containsKey(key)){
// gia gestito
}
else{
policy = this.archiveEngine.getControlloTraffico_configurationPolicy(idPolicy.getNome());
archive.getControlloTraffico_configurationPolicies().add(new ArchiveConfigurationPolicy(policy, this.idCorrelazione));
}
}
private void readControlloTraffico_activePolicy(Archive archive, IdActivePolicy idPolicy, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
AttivazionePolicy policy = null;
String keyActivePolicy = ArchiveActivePolicy.buildKey(idPolicy.getFiltroRuoloPorta(), idPolicy.getFiltroNomePorta(), idPolicy.getAlias());
if(archive.getControlloTraffico_activePolicies().containsKey(keyActivePolicy)==false) {
policy = this.archiveEngine.getControlloTraffico_activePolicy(idPolicy.getFiltroRuoloPorta(), idPolicy.getFiltroNomePorta(), idPolicy.getAlias());
archive.getControlloTraffico_activePolicies().add(new ArchiveActivePolicy(
policy,
this.idCorrelazione));
}
// aggiungo anche la policy configurata.
if(cascadeConfig.isCascadePolicyConfigurazione()) {
IdPolicy idPolicyConfig = new IdPolicy();
idPolicyConfig.setNome(idPolicy.getIdPolicy());
readControlloTraffico_configurationPolicy(archive, idPolicyConfig, cascadeConfig, provenienza);
}
// aggiungo plugin
if(cascadeConfig.isCascadePluginConfigurazione()) {
if(policy!=null && policy.getFiltro()!=null && policy.getFiltro().isEnabled() &&
policy.getFiltro().isInformazioneApplicativaEnabled() &&
StringUtils.isNotEmpty(policy.getFiltro().getInformazioneApplicativaTipo())) {
TipoFiltroApplicativo tipoFiltro = TipoFiltroApplicativo.toEnumConstant(policy.getFiltro().getInformazioneApplicativaTipo(), false);
if(TipoFiltroApplicativo.PLUGIN_BASED.equals(tipoFiltro)) {
try {
readPlugin_classe(archive, TipoPlugin.RATE_LIMITING.getValue(), policy.getFiltro().getInformazioneApplicativaNome(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(policy!=null && policy.getGroupBy()!=null && policy.getGroupBy().isEnabled() &&
policy.getGroupBy().isInformazioneApplicativaEnabled() &&
StringUtils.isNotEmpty(policy.getGroupBy().getInformazioneApplicativaTipo())) {
TipoFiltroApplicativo tipoFiltro = TipoFiltroApplicativo.toEnumConstant(policy.getGroupBy().getInformazioneApplicativaTipo(), false);
if(TipoFiltroApplicativo.PLUGIN_BASED.equals(tipoFiltro)) {
try {
readPlugin_classe(archive, TipoPlugin.RATE_LIMITING.getValue(), policy.getGroupBy().getInformazioneApplicativaNome(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
private void readAllarmiConfigurazione(Archive archive, boolean policyGlobali, boolean policyFruizioniErogazioni, ArchiveType provenienza) throws Exception {
if(!CostantiDB.isAllarmiEnabled()) {
return;
}
List<IdAllarme> listAllarmi = null;
try {
if(policyGlobali && policyFruizioniErogazioni) {
listAllarmi = this.archiveEngine.getAllIdAllarmi_all(null);
}
else if(policyGlobali) {
listAllarmi = this.archiveEngine.getAllIdAllarmi_globali(null);
}
else if(policyFruizioniErogazioni) {
listAllarmi = this.archiveEngine.getAllIdAllarmi_erogazioniFruizioni(null);
}
}catch(DriverConfigurazioneNotFound notFound) {}
if(listAllarmi!=null && !listAllarmi.isEmpty()) {
for (IdAllarme idAllarme : listAllarmi) {
String keyAllarme = ArchiveAllarme.buildKey(idAllarme.getFiltroRuoloPorta(), idAllarme.getFiltroNomePorta(), idAllarme.getAlias());
if(archive.getAllarmi().containsKey(keyAllarme)==false) {
archive.getAllarmi().add(new ArchiveAllarme(
this.archiveEngine.getAllarme(idAllarme.getFiltroRuoloPorta(), idAllarme.getFiltroNomePorta(), idAllarme.getAlias()),
this.idCorrelazione));
}
if(!policyGlobali) {
// aggiungo le policy configurate solamente realmente utilizzate.
// aggiungo anche il plugin configurato.
try {
ArchiveCascadeConfiguration cascadeConfig = new ArchiveCascadeConfiguration();
cascadeConfig.setCascadePluginConfigurazione(true);
readPlugin_classe(archive, TipoPlugin.ALLARME.getValue(), idAllarme.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
private void readAllarmiPorta(Archive archive, boolean delegata, String nomePorta, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
if(!CostantiDB.isAllarmiEnabled()) {
return;
}
List<IdAllarme> listAllarmi = null;
try {
if(delegata) {
listAllarmi = this.archiveEngine.getAllIdAllarmi_fruizione(nomePorta);
}
else {
listAllarmi = this.archiveEngine.getAllIdAllarmi_erogazione(nomePorta);
}
}catch(DriverConfigurazioneNotFound notFound) {}
if(listAllarmi!=null && listAllarmi.size()>0) {
for (IdAllarme idAllarme : listAllarmi) {
String keyAllarme = ArchiveAllarme.buildKey(idAllarme.getFiltroRuoloPorta(), idAllarme.getFiltroNomePorta(), idAllarme.getAlias());
if(archive.getAllarmi().containsKey(keyAllarme)==false) {
archive.getAllarmi().add(new ArchiveAllarme(
this.archiveEngine.getAllarme(idAllarme.getFiltroRuoloPorta(), idAllarme.getFiltroNomePorta(), idAllarme.getAlias()),
this.idCorrelazione));
}
// aggiungo anche il plugin configurato.
if(cascadeConfig.isCascadePluginConfigurazione()) {
try {
readPlugin_classe(archive, TipoPlugin.ALLARME.getValue(), idAllarme.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
private void readAllarme(Archive archive, IdAllarme idAllarme, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
Allarme allarme = null;
String key = ArchiveAllarme.buildKey(idAllarme.getFiltroRuoloPorta(),idAllarme.getFiltroNomePorta(),idAllarme.getAlias());
if(archive.getAllarmi().containsKey(key)){
// gia gestito
}
else{
allarme = this.archiveEngine.getAllarme(idAllarme.getFiltroRuoloPorta(),idAllarme.getFiltroNomePorta(),idAllarme.getAlias());
archive.getAllarmi().add(new ArchiveAllarme(allarme, this.idCorrelazione));
}
// aggiungo anche il plugin configurato.
if(cascadeConfig.isCascadePluginConfigurazione()) {
try {
readPlugin_classe(archive, TipoPlugin.ALLARME.getValue(), idAllarme.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
private void readTokenPolicyConfigurazione(Archive archive, ArchiveType provenienza) throws Exception {
ArchiveCascadeConfiguration cascadeConfigPolicy = new ArchiveCascadeConfiguration();
cascadeConfigPolicy.setCascadePolicyConfigurazione(true);
List<IDGenericProperties> listPolicies_validation = null;
try {
listPolicies_validation = this.archiveEngine.getAllIdGenericProperties_validation();
}catch(DriverConfigurazioneNotFound notFound) {}
if(listPolicies_validation!=null && listPolicies_validation.size()>0) {
for (IDGenericProperties idGP : listPolicies_validation) {
readTokenPolicy_validation(archive,idGP.getNome(), cascadeConfigPolicy, provenienza);
}
}
List<IDGenericProperties> listPolicies_retrieve = null;
try {
listPolicies_retrieve = this.archiveEngine.getAllIdGenericProperties_retrieve();
}catch(DriverConfigurazioneNotFound notFound) {}
if(listPolicies_retrieve!=null && listPolicies_retrieve.size()>0) {
for (IDGenericProperties idGP : listPolicies_retrieve) {
readTokenPolicy_retrieve(archive,idGP.getNome(), cascadeConfigPolicy, provenienza);
}
}
}
private void readTokenPolicy(Archive archive,IDGenericProperties idGP, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
if(CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_VALIDATION.equals(idGP.getTipologia())) {
readTokenPolicy_validation(archive, idGP.getNome(), cascadeConfig, provenienza);
}
else if(CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_RETRIEVE.equals(idGP.getTipologia())) {
readTokenPolicy_retrieve(archive, idGP.getNome(), cascadeConfig, provenienza);
}
}
private void readTokenPolicy_validation(Archive archive, String nomePolicy, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
if(cascadeConfig.isCascadePolicyConfigurazione() || ArchiveType.CONFIGURAZIONE_TOKEN_POLICY.equals(provenienza)) {
String key = ArchiveTokenPolicy.buildKey(CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_VALIDATION, nomePolicy);
if(archive.getToken_validation_policies().containsKey(key)){
// gia gestito
}
else{
GenericProperties policy = this.archiveEngine.getGenericProperties_validation(nomePolicy);
archive.getToken_validation_policies().add(new ArchiveTokenPolicy(policy, this.idCorrelazione));
// aggiungo plugin
if(policy!=null && policy.sizePropertyList()>0) {
for (int i = 0; i < policy.sizePropertyList(); i++) {
Property p = policy.getProperty(i);
if(CostantiConfigurazione.POLICY_DYNAMIC_DISCOVERY_CLAIMS_PARSER_TYPE.equals(p.getNome()) &&
CostantiConfigurazione.POLICY_DYNAMIC_DISCOVERY_CLAIMS_PARSER_TYPE_CUSTOM.equals(p.getValore())) {
for (int j = 0; j < policy.sizePropertyList(); j++) {
Property pJ = policy.getProperty(j);
if(CostantiConfigurazione.POLICY_DYNAMIC_DISCOVERY_CLAIMS_PARSER_PLUGIN_TYPE.equals(pJ.getNome())) {
try {
ArchiveCascadeConfiguration cascadeConfigPlugin = new ArchiveCascadeConfiguration();
cascadeConfigPlugin.setCascadePluginConfigurazione(true);
readPlugin_classe(archive, TipoPlugin.TOKEN_DYNAMIC_DISCOVERY.getValue(), pJ.getValore(), cascadeConfigPlugin, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
else if(CostantiConfigurazione.POLICY_VALIDAZIONE_CLAIMS_PARSER_TYPE.equals(p.getNome()) &&
CostantiConfigurazione.POLICY_VALIDAZIONE_CLAIMS_PARSER_TYPE_CUSTOM.equals(p.getValore())) {
for (int j = 0; j < policy.sizePropertyList(); j++) {
Property pJ = policy.getProperty(j);
if(CostantiConfigurazione.POLICY_VALIDAZIONE_CLAIMS_PARSER_PLUGIN_TYPE.equals(pJ.getNome())) {
try {
ArchiveCascadeConfiguration cascadeConfigPlugin = new ArchiveCascadeConfiguration();
cascadeConfigPlugin.setCascadePluginConfigurazione(true);
readPlugin_classe(archive, TipoPlugin.TOKEN_VALIDAZIONE.getValue(), pJ.getValore(), cascadeConfigPlugin, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
else if(CostantiConfigurazione.POLICY_INTROSPECTION_CLAIMS_PARSER_TYPE.equals(p.getNome()) &&
CostantiConfigurazione.POLICY_INTROSPECTION_CLAIMS_PARSER_TYPE_CUSTOM.equals(p.getValore())) {
for (int j = 0; j < policy.sizePropertyList(); j++) {
Property pJ = policy.getProperty(j);
if(CostantiConfigurazione.POLICY_INTROSPECTION_CLAIMS_PARSER_PLUGIN_TYPE.equals(pJ.getNome())) {
try {
ArchiveCascadeConfiguration cascadeConfigPlugin = new ArchiveCascadeConfiguration();
cascadeConfigPlugin.setCascadePluginConfigurazione(true);
readPlugin_classe(archive, TipoPlugin.TOKEN_VALIDAZIONE.getValue(), pJ.getValore(), cascadeConfigPlugin, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
else if(CostantiConfigurazione.POLICY_USER_INFO_CLAIMS_PARSER_TYPE.equals(p.getNome()) &&
CostantiConfigurazione.POLICY_USER_INFO_CLAIMS_PARSER_TYPE_CUSTOM.equals(p.getValore())) {
for (int j = 0; j < policy.sizePropertyList(); j++) {
Property pJ = policy.getProperty(j);
if(CostantiConfigurazione.POLICY_USER_INFO_CLAIMS_PARSER_PLUGIN_TYPE.equals(pJ.getNome())) {
try {
ArchiveCascadeConfiguration cascadeConfigPlugin = new ArchiveCascadeConfiguration();
cascadeConfigPlugin.setCascadePluginConfigurazione(true);
readPlugin_classe(archive, TipoPlugin.TOKEN_VALIDAZIONE.getValue(), pJ.getValore(), cascadeConfigPlugin, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
}
}
}
}
private void readTokenPolicy_retrieve(Archive archive, String nomePolicy, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
if(cascadeConfig.isCascadePolicyConfigurazione() || ArchiveType.CONFIGURAZIONE_TOKEN_POLICY.equals(provenienza)) {
String key = ArchiveTokenPolicy.buildKey(CostantiConfigurazione.GENERIC_PROPERTIES_TOKEN_TIPOLOGIA_RETRIEVE, nomePolicy);
if(archive.getToken_retrieve_policies().containsKey(key)){
// gia gestito
}
else{
GenericProperties policy = this.archiveEngine.getGenericProperties_retrieve(nomePolicy);
archive.getToken_retrieve_policies().add(new ArchiveTokenPolicy(policy, this.idCorrelazione));
// aggiungo plugin
if(policy!=null && policy.sizePropertyList()>0) {
for (int i = 0; i < policy.sizePropertyList(); i++) {
Property p = policy.getProperty(i);
if(CostantiConfigurazione.POLICY_RETRIEVE_TOKEN_PARSER_TYPE_CUSTOM.equals(p.getNome()) &&
CostantiConfigurazione.POLICY_RETRIEVE_TOKEN_PARSER_TYPE_CUSTOM_CYSTOM.equals(p.getValore())) {
for (int j = 0; j < policy.sizePropertyList(); j++) {
Property pJ = policy.getProperty(j);
if(CostantiConfigurazione.POLICY_RETRIEVE_TOKEN_PARSER_PLUGIN_TYPE.equals(pJ.getNome())) {
try {
ArchiveCascadeConfiguration cascadeConfigPlugin = new ArchiveCascadeConfiguration();
cascadeConfigPlugin.setCascadePluginConfigurazione(true);
readPlugin_classe(archive, TipoPlugin.TOKEN_NEGOZIAZIONE.getValue(), pJ.getValore(), cascadeConfigPlugin, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
}
}
}
}
private void readAttributeAuthorityConfigurazione(Archive archive, ArchiveType provenienza) throws Exception {
ArchiveCascadeConfiguration cascadeConfigPolicy = new ArchiveCascadeConfiguration();
cascadeConfigPolicy.setCascadePolicyConfigurazione(true);
List<IDGenericProperties> listAttributeAuthorities = null;
try {
listAttributeAuthorities = this.archiveEngine.getAllIdGenericProperties_attributeAuthorities();
}catch(DriverConfigurazioneNotFound notFound) {}
if(listAttributeAuthorities!=null && listAttributeAuthorities.size()>0) {
for (IDGenericProperties idGP : listAttributeAuthorities) {
readAttributeAuthority(archive,idGP.getNome(), cascadeConfigPolicy, provenienza);
}
}
}
private void readAttributeAuthority(Archive archive,IDGenericProperties idGP, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
if(CostantiConfigurazione.GENERIC_PROPERTIES_ATTRIBUTE_AUTHORITY.equals(idGP.getTipologia())) {
readAttributeAuthority(archive, idGP.getNome(), cascadeConfig, provenienza);
}
}
private void readAttributeAuthority(Archive archive, String nomePolicy, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
if(cascadeConfig.isCascadePolicyConfigurazione() || ArchiveType.CONFIGURAZIONE_ATTRIBUTE_AUTHORITY.equals(provenienza)) {
String key = ArchiveAttributeAuthority.buildKey(CostantiConfigurazione.GENERIC_PROPERTIES_ATTRIBUTE_AUTHORITY, nomePolicy);
if(archive.getAttributeAuthorities().containsKey(key)){
// gia gestito
}
else{
GenericProperties policy = this.archiveEngine.getGenericProperties_attributeAuthority(nomePolicy);
archive.getAttributeAuthorities().add(new ArchiveAttributeAuthority(policy, this.idCorrelazione));
// aggiungo plugin
if(policy!=null && policy.sizePropertyList()>0) {
for (int i = 0; i < policy.sizePropertyList(); i++) {
Property p = policy.getProperty(i);
if(CostantiConfigurazione.AA_RESPONSE_TYPE.equals(p.getNome()) &&
CostantiConfigurazione.AA_RESPONSE_TYPE_VALUE_CUSTOM.equals(p.getValore())) {
for (int j = 0; j < policy.sizePropertyList(); j++) {
Property pJ = policy.getProperty(j);
if(CostantiConfigurazione.AA_RESPONSE_PARSER_PLUGIN_TYPE.equals(pJ.getNome())) {
try {
// aggiungo anche il plugin configurato.
ArchiveCascadeConfiguration cascadeConfigPlugin = new ArchiveCascadeConfiguration();
cascadeConfigPlugin.setCascadePluginConfigurazione(true);
readPlugin_classe(archive, TipoPlugin.ATTRIBUTE_AUTHORITY.getValue(), pJ.getValore(), cascadeConfigPlugin, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
}
}
}
}
private void readPluginConfigurazione(Archive archive, ArchiveType provenienza) throws Exception {
ArchiveCascadeConfiguration cascadeConfigPlugin = new ArchiveCascadeConfiguration();
cascadeConfigPlugin.setCascadePluginConfigurazione(true);
List<IdPlugin> listPluginClasse = null;
try {
listPluginClasse = this.archiveEngine.getAllIdPluginClasse();
}catch(DriverConfigurazioneNotFound notFound) {}
if(listPluginClasse!=null && listPluginClasse.size()>0) {
for (IdPlugin idP : listPluginClasse) {
readPlugin_classe(archive,idP.getTipoPlugin(), idP.getTipo(), cascadeConfigPlugin, provenienza);
}
}
List<String> listPluginArchivi = null;
try {
listPluginArchivi = this.archiveEngine.getAllIdPluginArchivio();
}catch(DriverConfigurazioneNotFound notFound) {}
if(listPluginArchivi!=null && listPluginArchivi.size()>0) {
for (String idP : listPluginArchivi) {
readPlugin_archivio(archive,idP, cascadeConfigPlugin, provenienza);
}
}
}
private void readPlugin_classe(Archive archive, IdPlugin idPlugin, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
this.readPlugin_classe(archive, idPlugin.getTipoPlugin(), idPlugin.getTipo(), cascadeConfig, provenienza);
}
private void readPlugin_classe(Archive archive, String tipoPlugin, String tipo, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
if(cascadeConfig.isCascadePluginConfigurazione() || ArchiveType.CONFIGURAZIONE_PLUGIN_CLASSE.equals(provenienza)) {
String key = ArchivePluginClasse.buildKey(tipoPlugin, tipo);
if(archive.getPlugin_classi().containsKey(key)){
// gia gestito
}
else{
archive.getPlugin_classi().add(new ArchivePluginClasse(this.archiveEngine.getPluginClasse(tipoPlugin, tipo), this.idCorrelazione));
}
}
}
private void readPlugin_archivio(Archive archive, String nome, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception {
if(cascadeConfig.isCascadePluginConfigurazione() || ArchiveType.CONFIGURAZIONE_PLUGIN_ARCHVIO.equals(provenienza)) {
String key = ArchivePluginArchivio.buildKey(nome);
if(archive.getPlugin_archivi().containsKey(key)){
// gia gestito
}
else{
archive.getPlugin_archivi().add(new ArchivePluginArchivio(this.archiveEngine.getPluginArchivio(nome), this.idCorrelazione));
}
}
}
private void readPdd(Archive archive, String nomePdd, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readPdd(archive, nomePdd, cascadeConfig, true, provenienza);
}
private void readPdd(Archive archive, String nomePdd, ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String key = ArchivePdd.buildKey(nomePdd);
if(archive.getPdd().containsKey(key)){
// gia gestito
}
else{
try{
if(cascadeConfig.isCascadePdd() || ArchiveType.PDD.equals(provenienza)){
// add
org.openspcoop2.core.registry.PortaDominio pdd = this.archiveEngine.getPortaDominio(nomePdd);
ArchivePdd archivePdd = new ArchivePdd(pdd, this.idCorrelazione);
archive.getPdd().add(archivePdd);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// non vi sono oggetti che possiedono come figlio la pdd
}
}catch(Exception e){
throw new ProtocolException("(PdD "+nomePdd+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// soggetti
FiltroRicercaSoggetti filtroSoggetti = new FiltroRicercaSoggetti();
filtroSoggetti.setNomePdd(nomePdd);
try{
List<IDSoggetto> idsSoggetti = this.archiveEngine.getAllIdSoggettiRegistro(filtroSoggetti);
if(idsSoggetti!=null && idsSoggetti.size()>0){
for (IDSoggetto idSoggetto : idsSoggetti) {
this.readSoggetto(archive, idSoggetto, cascadeConfig, ArchiveType.PDD);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
private void readGruppo(Archive archive, IDGruppo idGruppo, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readGruppo(archive, idGruppo, cascadeConfig, true, provenienza);
}
private void readGruppo(Archive archive, IDGruppo idGruppo, ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String key = ArchiveGruppo.buildKey(idGruppo.getNome());
if(archive.getGruppi().containsKey(key)){
// gia gestito
}
else{
try{
if(cascadeConfig.isCascadeGruppi() || ArchiveType.GRUPPO.equals(provenienza)){
// add
org.openspcoop2.core.registry.Gruppo gruppo = this.archiveEngine.getGruppo(idGruppo);
ArchiveGruppo archiveGruppo = new ArchiveGruppo(gruppo, this.idCorrelazione);
archive.getGruppi().add(archiveGruppo);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// non vi sono oggetti che possiedono come figlio il gruppo
}
}catch(Exception e){
throw new ProtocolException("(Gruppo "+idGruppo.getNome()+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// accordi servizio parte comune
FiltroRicercaAccordi filtroAccordiServizioParteComune = new FiltroRicercaAccordi();
filtroAccordiServizioParteComune.setIdGruppo(idGruppo);
filtroAccordiServizioParteComune.setServizioComposto(false);
try{
List<IDAccordo> idsAccordi = this.archiveEngine.getAllIdAccordiServizioParteComune(filtroAccordiServizioParteComune);
if(idsAccordi!=null && idsAccordi.size()>0){
for (IDAccordo idAccordo : idsAccordi) {
this.readAccordoServizioParteComune(archive, idAccordo, cascadeConfig, ArchiveType.GRUPPO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// accordi servizio composto
FiltroRicercaAccordi filtroAccordiServizioComposto = new FiltroRicercaAccordi();
filtroAccordiServizioComposto.setIdGruppo(idGruppo);
filtroAccordiServizioComposto.setServizioComposto(true);
try{
List<IDAccordo> idsAccordi = this.archiveEngine.getAllIdAccordiServizioParteComune(filtroAccordiServizioComposto);
if(idsAccordi!=null && idsAccordi.size()>0){
for (IDAccordo idAccordo : idsAccordi) {
this.readAccordoServizioComposto(archive, idAccordo, cascadeConfig, ArchiveType.GRUPPO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
if(cascadeConfig.isCascadePolicyConfigurazione()) {
// rate limiting
List<IdActivePolicy> listControlloTraffico_activePolicies = null;
try {
listControlloTraffico_activePolicies = this.archiveEngine.getAllIdControlloTraffico_activePolicies_all(idGruppo.getNome());
}catch(DriverConfigurazioneNotFound notFound) {}
if(listControlloTraffico_activePolicies!=null && listControlloTraffico_activePolicies.size()>0) {
for (IdActivePolicy idPolicy : listControlloTraffico_activePolicies) {
this.readControlloTraffico_activePolicy(archive, idPolicy, cascadeConfig, provenienza);
}
}
// allarmi
List<IdAllarme> listAllarmi = null;
try {
listAllarmi = this.archiveEngine.getAllIdAllarmi_all(idGruppo.getNome());
}catch(DriverConfigurazioneNotFound notFound) {}
if(listAllarmi!=null && listAllarmi.size()>0) {
for (IdAllarme idAllarme : listAllarmi) {
this.readAllarme(archive, idAllarme, cascadeConfig, provenienza);
}
}
}
}
}
private void readRuolo(Archive archive, IDRuolo idRuolo, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readRuolo(archive, idRuolo, cascadeConfig, true, provenienza);
}
private void readRuolo(Archive archive, IDRuolo idRuolo, ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String key = ArchiveRuolo.buildKey(idRuolo.getNome());
if(archive.getRuoli().containsKey(key)){
// gia gestito
}
else{
try{
if(cascadeConfig.isCascadeRuoli() || ArchiveType.RUOLO.equals(provenienza)){
// add
org.openspcoop2.core.registry.Ruolo ruolo = this.archiveEngine.getRuolo(idRuolo);
ArchiveRuolo archiveRuolo = new ArchiveRuolo(ruolo, this.idCorrelazione);
archive.getRuoli().add(archiveRuolo);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// non vi sono oggetti che possiedono come figlio il ruolo
}
}catch(Exception e){
throw new ProtocolException("(Ruolo "+idRuolo.getNome()+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// soggetti
FiltroRicercaSoggetti filtroSoggetti = new FiltroRicercaSoggetti();
filtroSoggetti.setIdRuolo(idRuolo);
try{
List<IDSoggetto> idsSoggetti = this.archiveEngine.getAllIdSoggettiRegistro(filtroSoggetti);
if(idsSoggetti!=null && idsSoggetti.size()>0){
for (IDSoggetto idSoggetto : idsSoggetti) {
this.readSoggetto(archive, idSoggetto, cascadeConfig, ArchiveType.RUOLO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// porteDelegate
List<IDPortaDelegata> idsPD = new ArrayList<IDPortaDelegata>();
FiltroRicercaPorteDelegate filtroPorteDelegate = new FiltroRicercaPorteDelegate();
filtroPorteDelegate.setIdRuolo(idRuolo);
try{
List<IDPortaDelegata> _idsPD = this.archiveEngine.getAllIdPorteDelegate(filtroPorteDelegate);
if(_idsPD!=null && _idsPD.size()>0){
idsPD.addAll(_idsPD);
}
}catch(DriverConfigurazioneNotFound notFound){}
filtroPorteDelegate = new FiltroRicercaPorteDelegate();
filtroPorteDelegate.setIdRuoloToken(idRuolo);
try{
List<IDPortaDelegata> _idsPD = this.archiveEngine.getAllIdPorteDelegate(filtroPorteDelegate);
if(_idsPD!=null && _idsPD.size()>0){
for (IDPortaDelegata idPortaDelegataCheck : _idsPD) {
if(!idsPD.contains(idPortaDelegataCheck)) {
idsPD.add(idPortaDelegataCheck);
}
}
}
}catch(DriverConfigurazioneNotFound notFound){}
if(idsPD!=null && idsPD.size()>0){
for (IDPortaDelegata idPD : idsPD) {
this.readPortaDelegata(archive, idPD, cascadeConfig, ArchiveType.RUOLO);
}
}
// porteApplicative
List<IDPortaApplicativa> idsPA = new ArrayList<IDPortaApplicativa>();
FiltroRicercaPorteApplicative filtroPorteApplicative = new FiltroRicercaPorteApplicative();
filtroPorteApplicative.setIdRuolo(idRuolo);
try{
List<IDPortaApplicativa> _idsPA = this.archiveEngine.getAllIdPorteApplicative(filtroPorteApplicative);
if(_idsPA!=null && !_idsPA.isEmpty()) {
idsPA.addAll(_idsPA);
}
}catch(DriverConfigurazioneNotFound notFound){}
filtroPorteApplicative = new FiltroRicercaPorteApplicative();
filtroPorteApplicative.setIdRuoloToken(idRuolo);
try{
List<IDPortaApplicativa> _idsPA = this.archiveEngine.getAllIdPorteApplicative(filtroPorteApplicative);
if(_idsPA!=null && !_idsPA.isEmpty()) {
for (IDPortaApplicativa idPortaApplicativaCheck : _idsPA) {
if(!idsPA.contains(idPortaApplicativaCheck)) {
idsPA.add(idPortaApplicativaCheck);
}
}
}
}catch(DriverConfigurazioneNotFound notFound){}
if(idsPA!=null && idsPA.size()>0){
for (IDPortaApplicativa idPA : idsPA) {
this.readPortaApplicativa(archive, idPA, cascadeConfig, ArchiveType.RUOLO);
}
}
// serviziApplicativi
FiltroRicercaServiziApplicativi filtroServiziApplicativi = new FiltroRicercaServiziApplicativi();
filtroServiziApplicativi.setIdRuolo(idRuolo);
try{
List<IDServizioApplicativo> idsSA = this.archiveEngine.getAllIdServiziApplicativi(filtroServiziApplicativi);
if(idsSA!=null && idsSA.size()>0){
for (IDServizioApplicativo idSA : idsSA) {
this.readServizioApplicativo(archive, idSA, cascadeConfig, ArchiveType.RUOLO);
}
}
}catch(DriverConfigurazioneNotFound notFound){}
}
}
private void readScope(Archive archive, IDScope idScope, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readScope(archive, idScope, cascadeConfig, true, provenienza);
}
private void readScope(Archive archive, IDScope idScope, ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String key = ArchiveScope.buildKey(idScope.getNome());
if(archive.getScope().containsKey(key)){
// gia gestito
}
else{
try{
if(cascadeConfig.isCascadeScope() || ArchiveType.SCOPE.equals(provenienza)){
// add
org.openspcoop2.core.registry.Scope scope = this.archiveEngine.getScope(idScope);
ArchiveScope archiveScope = new ArchiveScope(scope, this.idCorrelazione);
archive.getScope().add(archiveScope);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// non vi sono oggetti che possiedono come figlio il scope
}
}catch(Exception e){
throw new ProtocolException("(Scope "+idScope.getNome()+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// porteDelegate
FiltroRicercaPorteDelegate filtroPorteDelegate = new FiltroRicercaPorteDelegate();
filtroPorteDelegate.setIdScope(idScope);
try{
List<IDPortaDelegata> idsPD = this.archiveEngine.getAllIdPorteDelegate(filtroPorteDelegate);
if(idsPD!=null && idsPD.size()>0){
for (IDPortaDelegata idPD : idsPD) {
this.readPortaDelegata(archive, idPD, cascadeConfig, ArchiveType.SCOPE);
}
}
}catch(DriverConfigurazioneNotFound notFound){}
// porteApplicative
FiltroRicercaPorteApplicative filtroPorteApplicative = new FiltroRicercaPorteApplicative();
filtroPorteApplicative.setIdScope(idScope);
try{
List<IDPortaApplicativa> idsPA = this.archiveEngine.getAllIdPorteApplicative(filtroPorteApplicative);
if(idsPA!=null && idsPA.size()>0){
for (IDPortaApplicativa idPA : idsPA) {
this.readPortaApplicativa(archive, idPA, cascadeConfig, ArchiveType.SCOPE);
}
}
}catch(DriverConfigurazioneNotFound notFound){}
}
}
private void readSoggetto(Archive archive, IDSoggetto idSoggetto, ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readSoggetto(archive, idSoggetto, cascadeConfig, true, provenienza);
}
private void readSoggetto(Archive archive, IDSoggetto idSoggetto, ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String key = ArchiveSoggetto.buildKey(idSoggetto.getTipo(), idSoggetto.getNome());
if(archive.getSoggetti().containsKey(key)){
// gia gestito
}
else{
try{
if(cascadeConfig.isCascadeSoggetti() || ArchiveType.SOGGETTO.equals(provenienza)){
// add
org.openspcoop2.core.registry.Soggetto soggettoRegistro = this.archiveEngine.getSoggettoRegistro(idSoggetto);
org.openspcoop2.core.config.Soggetto soggettoConfigurazione = this.archiveEngine.getSoggettoConfigurazione(idSoggetto);
ArchiveSoggetto archiveSoggetto = new ArchiveSoggetto(soggettoConfigurazione, soggettoRegistro, this.idCorrelazione);
archive.getSoggetti().add(archiveSoggetto);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// porteDominio
FiltroRicerca filtroPdd = new FiltroRicerca();
filtroPdd.setNome(soggettoRegistro.getPortaDominio());
try{
List<String> idsPdD = this.archiveEngine.getAllIdPorteDominio(filtroPdd);
if(idsPdD!=null && idsPdD.size()>0){
for (String idPdd : idsPdD) {
this.readPdd(archive, idPdd, cascadeConfig, false, ArchiveType.SOGGETTO); // per evitare loop
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// ruoli
if(soggettoRegistro.getRuoli()!=null && soggettoRegistro.getRuoli().sizeRuoloList()>0){
for (int i = 0; i < soggettoRegistro.getRuoli().sizeRuoloList(); i++) {
RuoloSoggetto ruolo = soggettoRegistro.getRuoli().getRuolo(i);
FiltroRicercaRuoli filtroRuolo = new FiltroRicercaRuoli();
filtroRuolo.setNome(ruolo.getNome());
try{
List<IDRuolo> idsRuoli = this.archiveEngine.getAllIdRuoli(filtroRuolo);
if(idsRuoli!=null && idsRuoli.size()>0){
for (IDRuolo idRuolo : idsRuoli) {
this.readRuolo(archive, idRuolo, cascadeConfig, false, ArchiveType.SOGGETTO); // per evitare loop
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
}
}catch(Exception e){
throw new ProtocolException("(Soggetto "+idSoggetto+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// serviziApplicativi
FiltroRicercaServiziApplicativi filtroServiziApplicativi = new FiltroRicercaServiziApplicativi();
filtroServiziApplicativi.setTipoSoggetto(idSoggetto.getTipo());
filtroServiziApplicativi.setNomeSoggetto(idSoggetto.getNome());
try{
List<IDServizioApplicativo> idsSA = this.archiveEngine.getAllIdServiziApplicativi(filtroServiziApplicativi);
if(idsSA!=null && idsSA.size()>0){
for (IDServizioApplicativo idServizioApplicativo : idsSA) {
this.readServizioApplicativo(archive, idServizioApplicativo, cascadeConfig, ArchiveType.SOGGETTO);
}
}
}catch(DriverConfigurazioneNotFound notFound){}
// accordi cooperazione
FiltroRicercaAccordi filtroAccordiCooperazione = new FiltroRicercaAccordi();
filtroAccordiCooperazione.setTipoSoggettoReferente(idSoggetto.getTipo());
filtroAccordiCooperazione.setNomeSoggettoReferente(idSoggetto.getNome());
try{
List<IDAccordoCooperazione> idsAC = this.archiveEngine.getAllIdAccordiCooperazione(filtroAccordiCooperazione);
if(idsAC!=null && idsAC.size()>0){
for (IDAccordoCooperazione idAccordoCooperazione : idsAC) {
this.readAccordoCooperazione(archive, idAccordoCooperazione, cascadeConfig, ArchiveType.SOGGETTO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// accordi servizio parte comune
FiltroRicercaAccordi filtroAccordiServizioParteComune = new FiltroRicercaAccordi();
filtroAccordiServizioParteComune.setTipoSoggettoReferente(idSoggetto.getTipo());
filtroAccordiServizioParteComune.setNomeSoggettoReferente(idSoggetto.getNome());
filtroAccordiServizioParteComune.setServizioComposto(false);
try{
List<IDAccordo> idsAccordi = this.archiveEngine.getAllIdAccordiServizioParteComune(filtroAccordiServizioParteComune);
if(idsAccordi!=null && idsAccordi.size()>0){
for (IDAccordo idAccordo : idsAccordi) {
this.readAccordoServizioParteComune(archive, idAccordo, cascadeConfig, ArchiveType.SOGGETTO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// accordi servizio composto
FiltroRicercaAccordi filtroAccordiServizioComposto = new FiltroRicercaAccordi();
filtroAccordiServizioComposto.setTipoSoggettoReferente(idSoggetto.getTipo());
filtroAccordiServizioComposto.setNomeSoggettoReferente(idSoggetto.getNome());
filtroAccordiServizioComposto.setServizioComposto(true);
try{
List<IDAccordo> idsAccordi = this.archiveEngine.getAllIdAccordiServizioParteComune(filtroAccordiServizioComposto);
if(idsAccordi!=null && idsAccordi.size()>0){
for (IDAccordo idAccordo : idsAccordi) {
this.readAccordoServizioComposto(archive, idAccordo, cascadeConfig, ArchiveType.SOGGETTO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// accordi servizio parte specifica
FiltroRicercaServizi filtroAccordiServizioParteSpecifica = new FiltroRicercaServizi();
filtroAccordiServizioParteSpecifica.setTipoSoggettoErogatore(idSoggetto.getTipo());
filtroAccordiServizioParteSpecifica.setNomeSoggettoErogatore(idSoggetto.getNome());
try{
List<IDServizio> idsAccordi = this.archiveEngine.getAllIdAccordiServizioParteSpecifica(filtroAccordiServizioParteSpecifica);
if(idsAccordi!=null && idsAccordi.size()>0){
for (IDServizio idAccordo : idsAccordi) {
this.readAccordoServizioParteSpecifica(archive, idAccordo, cascadeConfig, ArchiveType.SOGGETTO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// porteDelegate
FiltroRicercaPorteDelegate filtroPorteDelegate = new FiltroRicercaPorteDelegate();
filtroPorteDelegate.setTipoSoggetto(idSoggetto.getTipo());
filtroPorteDelegate.setNomeSoggetto(idSoggetto.getNome());
try{
List<IDPortaDelegata> idsPD = this.archiveEngine.getAllIdPorteDelegate(filtroPorteDelegate);
if(idsPD!=null && idsPD.size()>0){
for (IDPortaDelegata idPortaDelegata : idsPD) {
this.readPortaDelegata(archive, idPortaDelegata, cascadeConfig, ArchiveType.SOGGETTO);
}
}
}catch(DriverConfigurazioneNotFound notFound){}
// porteApplicative
FiltroRicercaPorteApplicative filtroPorteApplicative = new FiltroRicercaPorteApplicative();
filtroPorteApplicative.setTipoSoggetto(idSoggetto.getTipo());
filtroPorteApplicative.setNomeSoggetto(idSoggetto.getNome());
try{
List<IDPortaApplicativa> idsPA = this.archiveEngine.getAllIdPorteApplicative(filtroPorteApplicative);
if(idsPA!=null && idsPA.size()>0){
for (IDPortaApplicativa idPortaApplicativa : idsPA) {
this.readPortaApplicativa(archive, idPortaApplicativa, cascadeConfig, ArchiveType.SOGGETTO);
}
}
}catch(DriverConfigurazioneNotFound notFound){}
}
}
private void readServizioApplicativo(Archive archive, IDServizioApplicativo idServizioApplicativo,
ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readServizioApplicativo(archive, idServizioApplicativo, cascadeConfig, true, provenienza);
}
private void readServizioApplicativo(Archive archive, IDServizioApplicativo idServizioApplicativo,
ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String key = ArchiveServizioApplicativo.buildKey(idServizioApplicativo.getIdSoggettoProprietario().getTipo(),
idServizioApplicativo.getIdSoggettoProprietario().getNome(),
idServizioApplicativo.getNome());
if(archive.getServiziApplicativi().containsKey(key)){
// gia gestito
}
else{
try{
// Fanno eccezione i servizi applicativi per i quali esiste piu' di un padre. In questo caso si esamina il padre:
// - nel caso di padre=soggetto/sa si vede esclusivamente il cascade dei servizi applicativi
// - nel caso di padre=porta delegata si controlla sia il cascade dei servizi applicativi che il cascade della porta delegata
// - nel caso di padre=porta applicativa si controlla sia il cascade dei servizi applicativi che il cascade della porta applicativa
// - nel caso di padre=fruitore si controlla sia il cascade dei servizi applicativi che il cascade delle fruizioni
boolean enabled = cascadeConfig.isCascadeServiziApplicativi();
switch (provenienza) {
case SOGGETTO:
break;
case SERVIZIO_APPLICATIVO:
enabled = enabled || ArchiveType.SERVIZIO_APPLICATIVO.equals(provenienza);
break;
case PORTA_DELEGATA:
enabled = enabled && cascadeConfig.isCascadePorteDelegate();
break;
case PORTA_APPLICATIVA:
enabled = enabled && cascadeConfig.isCascadePorteApplicative();
break;
case FRUITORE:
enabled = enabled && cascadeConfig.isCascadeFruizioni();
break;
default:
break;
}
if(enabled){
// add
org.openspcoop2.core.config.ServizioApplicativo sa = this.archiveEngine.getServizioApplicativo(idServizioApplicativo);
if(sa==null) {
throw new Exception("Servizio Applicativo '"+idServizioApplicativo+"' non esistente");
}
if(sa.getTipoSoggettoProprietario()==null){
sa.setTipoSoggettoProprietario(idServizioApplicativo.getIdSoggettoProprietario().getTipo());
}
if(sa.getNomeSoggettoProprietario()==null){
sa.setNomeSoggettoProprietario(idServizioApplicativo.getIdSoggettoProprietario().getNome());
}
ArchiveServizioApplicativo archiveSa = new ArchiveServizioApplicativo(sa, this.idCorrelazione);
archive.getServiziApplicativi().add(archiveSa);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// soggetto proprietario
this.readSoggetto(archive, idServizioApplicativo.getIdSoggettoProprietario(), cascadeConfig, false, ArchiveType.SERVIZIO_APPLICATIVO); // per evitare loop
// ruoli
if(sa.getInvocazionePorta()!=null && sa.getInvocazionePorta().getRuoli()!=null &&
sa.getInvocazionePorta().getRuoli().sizeRuoloList()>0){
for (int i = 0; i < sa.getInvocazionePorta().getRuoli().sizeRuoloList(); i++) {
Ruolo ruolo = sa.getInvocazionePorta().getRuoli().getRuolo(i);
FiltroRicercaRuoli filtroRuolo = new FiltroRicercaRuoli();
filtroRuolo.setNome(ruolo.getNome());
try{
List<IDRuolo> idsRuoli = this.archiveEngine.getAllIdRuoli(filtroRuolo);
if(idsRuoli!=null && idsRuoli.size()>0){
for (IDRuolo idRuolo : idsRuoli) {
this.readRuolo(archive, idRuolo, cascadeConfig, false, ArchiveType.SERVIZIO_APPLICATIVO); // per evitare loop
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
// token policy di negoziazione
if(cascadeConfig.isCascadePolicyConfigurazione()) {
if(sa!=null && sa.getInvocazioneServizio()!=null) {
if(sa.getInvocazioneServizio().getConnettore()!=null &&
sa.getInvocazioneServizio().getConnettore().getProperties()!=null && sa.getInvocazioneServizio().getConnettore().getProperties().containsKey(CostantiConnettori.CONNETTORE_TOKEN_POLICY)) {
this.readTokenPolicy_retrieve(archive, sa.getInvocazioneServizio().getConnettore().getProperties().get(CostantiConnettori.CONNETTORE_TOKEN_POLICY),
cascadeConfig, provenienza);
}
}
if(sa!=null && sa.getRispostaAsincrona()!=null) {
if(sa.getRispostaAsincrona().getConnettore()!=null &&
sa.getRispostaAsincrona().getConnettore().getProperties()!=null && sa.getRispostaAsincrona().getConnettore().getProperties().containsKey(CostantiConnettori.CONNETTORE_TOKEN_POLICY)) {
this.readTokenPolicy_retrieve(archive, sa.getRispostaAsincrona().getConnettore().getProperties().get(CostantiConnettori.CONNETTORE_TOKEN_POLICY),
cascadeConfig, provenienza);
}
}
}
// aggiungo eventuale plugin configurato.
if(cascadeConfig.isCascadePluginConfigurazione()) {
if(sa!=null && sa.getInvocazioneServizio()!=null) {
if(sa.getInvocazioneServizio().getConnettore()!=null &&
sa.getInvocazioneServizio().getConnettore().getCustom()!=null &&
sa.getInvocazioneServizio().getConnettore().getCustom() &&
sa.getInvocazioneServizio().getConnettore().getTipo()!=null) {
TipiConnettore tipo = TipiConnettore.toEnumFromName(sa.getInvocazioneServizio().getConnettore().getTipo());
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.CONNETTORE.getValue(), sa.getInvocazioneServizio().getConnettore().getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(sa!=null && sa.getRispostaAsincrona()!=null) {
if(sa.getRispostaAsincrona().getConnettore()!=null &&
sa.getRispostaAsincrona().getConnettore().getCustom()!=null &&
sa.getRispostaAsincrona().getConnettore().getCustom() &&
sa.getRispostaAsincrona().getConnettore().getTipo()!=null) {
TipiConnettore tipo = TipiConnettore.toEnumFromName(sa.getRispostaAsincrona().getConnettore().getTipo());
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.CONNETTORE.getValue(), sa.getRispostaAsincrona().getConnettore().getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
}
}catch(Exception e){
throw new ProtocolException("(ServizioApplicativo "+idServizioApplicativo+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// non vi sono oggetti con padre un servizio applicativo
}
}
private void readAccordoCooperazione(Archive archive, IDAccordoCooperazione idAccordoCooperazione,
ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readAccordoCooperazione(archive, idAccordoCooperazione, cascadeConfig, true, provenienza);
}
private void readAccordoCooperazione(Archive archive, IDAccordoCooperazione idAccordoCooperazione,
ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String tipoSoggetto = null;
String nomeSoggetto = null;
if(idAccordoCooperazione.getSoggettoReferente()!=null){
tipoSoggetto = idAccordoCooperazione.getSoggettoReferente().getTipo();
nomeSoggetto = idAccordoCooperazione.getSoggettoReferente().getNome();
}
String key = ArchiveAccordoCooperazione.buildKey(tipoSoggetto,nomeSoggetto,
idAccordoCooperazione.getNome(),idAccordoCooperazione.getVersione());
if(archive.getAccordiCooperazione().containsKey(key)){
// gia gestito
}
else{
try{
if(cascadeConfig.isCascadeAccordoCooperazione() || ArchiveType.ACCORDO_COOPERAZIONE.equals(provenienza)){
// add
org.openspcoop2.core.registry.AccordoCooperazione ac = this.archiveEngine.getAccordoCooperazione(idAccordoCooperazione,true);
ArchiveAccordoCooperazione archiveAc = new ArchiveAccordoCooperazione(ac, this.idCorrelazione);
archive.getAccordiCooperazione().add(archiveAc);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// soggetto referente
this.readSoggetto(archive, idAccordoCooperazione.getSoggettoReferente(), cascadeConfig, false, ArchiveType.ACCORDO_COOPERAZIONE); // per evitare loop
// soggetti partecipanti
if( ac.getElencoPartecipanti()!=null && ac.getElencoPartecipanti().sizeSoggettoPartecipanteList()>0){
for (IdSoggetto partecipante : ac.getElencoPartecipanti().getSoggettoPartecipanteList()) {
IDSoggetto idPartecipante = new IDSoggetto(partecipante.getTipo(), partecipante.getNome());
this.readSoggetto(archive, idPartecipante, cascadeConfig, false, ArchiveType.ACCORDO_COOPERAZIONE); // per evitare loop
// tutti gli accordi esati o fruiti dai soggetti partecipanti saranno gestiti dagli accordi di servizio composti tramite i servizi componenti
}
}
}
}catch(Exception e){
throw new ProtocolException("(AccordoCooperazione "+IDAccordoCooperazioneFactory.getInstance().getUriFromIDAccordo(idAccordoCooperazione)+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// accordi di servizio composti
FiltroRicercaAccordi filtroRicercaAccordi = new FiltroRicercaAccordi();
filtroRicercaAccordi.setIdAccordoCooperazione(idAccordoCooperazione);
try{
List<IDAccordo> idsAS = this.archiveEngine.getAllIdAccordiServizioParteComune(filtroRicercaAccordi);
if(idsAS!=null && idsAS.size()>0){
for (IDAccordo idAccordo : idsAS) {
this.readAccordoServizioComposto(archive, idAccordo, cascadeConfig, ArchiveType.ACCORDO_COOPERAZIONE);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
private void readAccordoServizioParteComune(Archive archive, IDAccordo idAccordoServizio,
ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readAccordoServizioParteComune(archive, idAccordoServizio, cascadeConfig, true, provenienza);
}
private void readAccordoServizioParteComune(Archive archive, IDAccordo idAccordoServizio,
ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String tipoSoggetto = null;
String nomeSoggetto = null;
if(idAccordoServizio.getSoggettoReferente()!=null){
tipoSoggetto = idAccordoServizio.getSoggettoReferente().getTipo();
nomeSoggetto = idAccordoServizio.getSoggettoReferente().getNome();
}
String key = ArchiveAccordoServizioParteComune.buildKey(tipoSoggetto,nomeSoggetto,
idAccordoServizio.getNome(),idAccordoServizio.getVersione());
if(archive.getAccordiServizioParteComune().containsKey(key)){
// gia gestito
}
else{
try{
if(cascadeConfig.isCascadeAccordoServizioParteComune() || ArchiveType.ACCORDO_SERVIZIO_PARTE_COMUNE.equals(provenienza)){
// add
org.openspcoop2.core.registry.AccordoServizioParteComune as = this.archiveEngine.getAccordoServizioParteComune(idAccordoServizio,true,true);
ArchiveAccordoServizioParteComune archiveAs = new ArchiveAccordoServizioParteComune(as, this.idCorrelazione);
archive.getAccordiServizioParteComune().add(archiveAs);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
this.readSoggetto(archive, idAccordoServizio.getSoggettoReferente(), cascadeConfig, false, ArchiveType.ACCORDO_SERVIZIO_PARTE_COMUNE); // per evitare loop
if(as.getGruppi()!=null && as.getGruppi().sizeGruppoList()>0) {
for (GruppoAccordo gruppo : as.getGruppi().getGruppoList()) {
IDGruppo idGruppo = new IDGruppo(gruppo.getNome());
this.readGruppo(archive, idGruppo, cascadeConfig, false,
ArchiveType.GRUPPO); // voglio che sia aggiunto sempre e comunque il tag (si tratta di un caso eccezionale, essendo il tag un elemento che non contiene aspetti di configurazione)
//ArchiveType.ACCORDO_SERVIZIO_PARTE_COMUNE); // per evitare loop
}
}
}
}catch(Exception e){
throw new ProtocolException("(AccordoServizioParteComune "+IDAccordoFactory.getInstance().getUriFromIDAccordo(idAccordoServizio)+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// accordi di servizio parte specifica
FiltroRicercaServizi filtroRicercaAccordi = new FiltroRicercaServizi();
filtroRicercaAccordi.setIdAccordoServizioParteComune(idAccordoServizio);
try{
List<IDServizio> idsAS = this.archiveEngine.getAllIdAccordiServizioParteSpecifica(filtroRicercaAccordi);
if(idsAS!=null && idsAS.size()>0){
for (IDServizio idAccordo : idsAS) {
this.readAccordoServizioParteSpecifica(archive, idAccordo, cascadeConfig, ArchiveType.ACCORDO_SERVIZIO_PARTE_COMUNE);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
private void readAccordoServizioComposto(Archive archive, IDAccordo idAccordoServizio,
ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readAccordoServizioComposto(archive, idAccordoServizio, cascadeConfig, true, provenienza);
}
private void readAccordoServizioComposto(Archive archive, IDAccordo idAccordoServizio,
ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String tipoSoggetto = null;
String nomeSoggetto = null;
if(idAccordoServizio.getSoggettoReferente()!=null){
tipoSoggetto = idAccordoServizio.getSoggettoReferente().getTipo();
nomeSoggetto = idAccordoServizio.getSoggettoReferente().getNome();
}
String key = ArchiveAccordoServizioComposto.buildKey(tipoSoggetto,nomeSoggetto,
idAccordoServizio.getNome(),idAccordoServizio.getVersione());
org.openspcoop2.core.registry.AccordoServizioParteComune as = null;
if(archive.getAccordiServizioComposto().containsKey(key)){
// gia gestito
as = archive.getAccordiServizioComposto().get(key).getAccordoServizioParteComune();
}
else{
try{
if(cascadeConfig.isCascadeAccordoServizioComposto() || ArchiveType.ACCORDO_SERVIZIO_COMPOSTO.equals(provenienza)){
// add
as = this.archiveEngine.getAccordoServizioParteComune(idAccordoServizio,true,true);
ArchiveAccordoServizioComposto archiveAs = new ArchiveAccordoServizioComposto(as, this.idCorrelazione);
archive.getAccordiServizioComposto().add(archiveAs);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
this.readSoggetto(archive, idAccordoServizio.getSoggettoReferente(), cascadeConfig, false, ArchiveType.ACCORDO_SERVIZIO_COMPOSTO); // per evitare loop
}
else{
as = this.archiveEngine.getAccordoServizioParteComune(idAccordoServizio,false,true);
}
}catch(Exception e){
throw new ProtocolException("(AccordoServizioComposto "+IDAccordoFactory.getInstance().getUriFromIDAccordo(idAccordoServizio)+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// accordi di servizio parte specifica
FiltroRicercaServizi filtroRicercaAccordi = new FiltroRicercaServizi();
filtroRicercaAccordi.setIdAccordoServizioParteComune(idAccordoServizio);
try{
List<IDServizio> idsAS = this.archiveEngine.getAllIdAccordiServizioParteSpecifica(filtroRicercaAccordi);
if(idsAS!=null && idsAS.size()>0){
for (IDServizio idAccordo : idsAS) {
this.readAccordoServizioParteSpecifica(archive, idAccordo, cascadeConfig, ArchiveType.ACCORDO_SERVIZIO_COMPOSTO);
}
}
}catch(DriverRegistroServiziNotFound notFound){}
// servizi componenti
for (AccordoServizioParteComuneServizioCompostoServizioComponente servizioComponente : as.getServizioComposto().getServizioComponenteList()) {
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(servizioComponente.getTipo(),servizioComponente.getNome(),
servizioComponente.getTipoSoggetto(),servizioComponente.getNomeSoggetto(),
servizioComponente.getVersione());
this.readAccordoServizioParteSpecifica(archive, idServizio, cascadeConfig, ArchiveType.ACCORDO_SERVIZIO_COMPOSTO);
}
}
}
private void readAccordoServizioParteSpecifica(Archive archive, IDServizio idAccordoServizio,
ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readAccordoServizioParteSpecifica(archive, idAccordoServizio, cascadeConfig, true, provenienza);
}
private void readAccordoServizioParteSpecifica(Archive archive, IDServizio idAccordoServizio,
ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String tipoSoggetto = null;
String nomeSoggetto = null;
if(idAccordoServizio.getSoggettoErogatore()!=null){
tipoSoggetto = idAccordoServizio.getSoggettoErogatore().getTipo();
nomeSoggetto = idAccordoServizio.getSoggettoErogatore().getNome();
}
String key = ArchiveAccordoServizioParteSpecifica.buildKey(tipoSoggetto,nomeSoggetto,
idAccordoServizio.getTipo(),idAccordoServizio.getNome(),idAccordoServizio.getVersione());
List<Fruitore> fruitoriList = null;
org.openspcoop2.core.registry.AccordoServizioParteSpecifica as = null;
if(archive.getAccordiServizioParteSpecifica().containsKey(key)){
// gia gestito
as = archive.getAccordiServizioParteSpecifica().get(key).getAccordoServizioParteSpecifica();
}
else{
try{
if(cascadeConfig.isCascadeAccordoServizioParteSpecifica()
|| ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA.equals(provenienza)
|| ArchiveType.EROGAZIONE.equals(provenienza)
|| ArchiveType.FRUIZIONE.equals(provenienza)){
fruitoriList = new ArrayList<Fruitore>();
// add
as = this.archiveEngine.getAccordoServizioParteSpecifica(idAccordoServizio,true);
if(as==null) {
throw new Exception("Accordo di servizio '"+idAccordoServizio+"' non esistente");
}
if(as.getTipoSoggettoErogatore()==null){
as.setTipoSoggettoErogatore(tipoSoggetto);
}
if(as.getNomeSoggettoErogatore()==null){
as.setNomeSoggettoErogatore(nomeSoggetto);
}
ArchiveAccordoServizioParteSpecifica archiveAs = new ArchiveAccordoServizioParteSpecifica(as, this.idCorrelazione);
while(as.sizeFruitoreList()>0){
fruitoriList.add(as.removeFruitore(0));
}
archive.getAccordiServizioParteSpecifica().add(archiveAs);
// porteApplicative associate
if(!ArchiveType.FRUIZIONE.equals(provenienza)) {
List<IDPortaApplicativa> listIDPA = this.archiveEngine.getIDPorteApplicativeAssociateErogazione(idAccordoServizio);
if(listIDPA!=null && listIDPA.size()>0){
if(archiveAs.getMappingPorteApplicativeAssociate()==null) {
archiveAs.setMappingPorteApplicativeAssociate(new ArrayList<>());
}
for (IDPortaApplicativa idPortaApplicativa : listIDPA) {
archiveAs.getMappingPorteApplicativeAssociate().add(this.archiveEngine.getMappingErogazionePortaApplicativa(idAccordoServizio, idPortaApplicativa));
}
}
}
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// soggetto proprietario
this.readSoggetto(archive, idAccordoServizio.getSoggettoErogatore(), cascadeConfig, false, ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA); // per evitare loop
// accordoServizioParteComune
IDAccordo idAccordoServizioParteComune = IDAccordoFactory.getInstance().getIDAccordoFromUri(as.getAccordoServizioParteComune());
AccordoServizioParteComune aspc = this.archiveEngine.getAccordoServizioParteComune(idAccordoServizioParteComune);
if(aspc.getServizioComposto()==null){
this.readAccordoServizioParteComune(archive, idAccordoServizioParteComune, cascadeConfig, false, ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA); // per evitare loop
}
else{
this.readAccordoServizioComposto(archive, idAccordoServizioParteComune, cascadeConfig, false, ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA); // per evitare loop
}
// token policy di negoziazione (aggiunte solamente se abilitato il cascade di configurazione)
if(cascadeConfig.isCascadePolicyConfigurazione()) {
if(as!=null && as.getConfigurazioneServizio()!=null) {
if(as.getConfigurazioneServizio().getConnettore()!=null &&
as.getConfigurazioneServizio().getConnettore().getProperties()!=null && as.getConfigurazioneServizio().getConnettore().getProperties().containsKey(CostantiConnettori.CONNETTORE_TOKEN_POLICY)) {
this.readTokenPolicy_retrieve(archive, as.getConfigurazioneServizio().getConnettore().getProperties().get(CostantiConnettori.CONNETTORE_TOKEN_POLICY),
cascadeConfig, provenienza);
}
if(as.getConfigurazioneServizio().sizeConfigurazioneAzioneList()>0) {
for (ConfigurazioneServizioAzione confAzione : as.getConfigurazioneServizio().getConfigurazioneAzioneList()) {
if(confAzione.getConnettore()!=null &&
confAzione.getConnettore().getProperties()!=null && confAzione.getConnettore().getProperties().containsKey(CostantiConnettori.CONNETTORE_TOKEN_POLICY)) {
this.readTokenPolicy_retrieve(archive, confAzione.getConnettore().getProperties().get(CostantiConnettori.CONNETTORE_TOKEN_POLICY),
cascadeConfig, provenienza);
}
}
}
}
}
// aggiungo eventuale plugin configurato.
if(cascadeConfig.isCascadePluginConfigurazione()) {
if(as!=null && as.getConfigurazioneServizio()!=null) {
if(as.getConfigurazioneServizio().getConnettore()!=null &&
as.getConfigurazioneServizio().getConnettore().getCustom()!=null &&
as.getConfigurazioneServizio().getConnettore().getCustom() &&
as.getConfigurazioneServizio().getConnettore().getTipo()!=null) {
TipiConnettore tipo = TipiConnettore.toEnumFromName(as.getConfigurazioneServizio().getConnettore().getTipo());
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.CONNETTORE.getValue(), as.getConfigurazioneServizio().getConnettore().getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(as.getConfigurazioneServizio().sizeConfigurazioneAzioneList()>0) {
for (ConfigurazioneServizioAzione confAzione : as.getConfigurazioneServizio().getConfigurazioneAzioneList()) {
if(confAzione.getConnettore()!=null &&
confAzione.getConnettore().getCustom()!=null &&
confAzione.getConnettore().getCustom() &&
confAzione.getConnettore().getTipo()!=null) {
TipiConnettore tipo = TipiConnettore.toEnumFromName(confAzione.getConnettore().getTipo());
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.CONNETTORE.getValue(), confAzione.getConnettore().getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
}
}
}
}catch(Exception e){
throw new ProtocolException("(AccordoServizioParteSpecifica "+IDServizioFactory.getInstance().getUriFromIDServizio(idAccordoServizio)+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// fruitori
if(fruitoriList==null){
// devo rileggere l'accordo. Quello salvato non contiene i fruitori
fruitoriList = new ArrayList<Fruitore>();
as = this.archiveEngine.getAccordoServizioParteSpecifica(idAccordoServizio,true);
while(as.sizeFruitoreList()>0){
fruitoriList.add(as.removeFruitore(0));
}
}
for (Fruitore fruitore : fruitoriList) {
IDSoggetto idFruitore = new IDSoggetto(fruitore.getTipo(), fruitore.getNome());
this.readFruitore(archive, idAccordoServizio, idFruitore, fruitore, cascadeConfig, ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA);
}
// porteDelegate
FiltroRicercaPorteDelegate filtroRicercaPorteDelegate = new FiltroRicercaPorteDelegate();
filtroRicercaPorteDelegate.setTipoSoggettoErogatore(idAccordoServizio.getSoggettoErogatore().getTipo());
filtroRicercaPorteDelegate.setNomeSoggettoErogatore(idAccordoServizio.getSoggettoErogatore().getNome());
filtroRicercaPorteDelegate.setTipoServizio(as.getTipo());
filtroRicercaPorteDelegate.setNomeServizio(as.getNome());
filtroRicercaPorteDelegate.setVersioneServizio(as.getVersione());
try{
List<IDPortaDelegata> idsPD = this.archiveEngine.getAllIdPorteDelegate(filtroRicercaPorteDelegate);
if(idsPD!=null && idsPD.size()>0){
for (IDPortaDelegata idPortaDelegata : idsPD) {
this.readPortaDelegata(archive, idPortaDelegata, cascadeConfig, ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA);
}
}
}catch(DriverConfigurazioneNotFound notFound){}
// porteApplicative associate
List<IDPortaApplicativa> listIDPA_associate = this.archiveEngine.getIDPorteApplicativeAssociateErogazione(idAccordoServizio);
if(listIDPA_associate!=null && listIDPA_associate.size()>0){
for (IDPortaApplicativa idPA_associata : listIDPA_associate) {
this.readPortaApplicativa(archive, idPA_associata, cascadeConfig, ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA);
}
}
// porteApplicative "normali"
FiltroRicercaPorteApplicative filtroRicercaPorteApplicative = new FiltroRicercaPorteApplicative();
filtroRicercaPorteApplicative.setTipoSoggetto(idAccordoServizio.getSoggettoErogatore().getTipo());
filtroRicercaPorteApplicative.setNomeSoggetto(idAccordoServizio.getSoggettoErogatore().getNome());
filtroRicercaPorteApplicative.setTipoServizio(as.getTipo());
filtroRicercaPorteApplicative.setNomeServizio(as.getNome());
filtroRicercaPorteApplicative.setVersioneServizio(as.getVersione());
try{
List<IDPortaApplicativa> idsPA = this.archiveEngine.getAllIdPorteApplicative(filtroRicercaPorteApplicative);
if(idsPA!=null && idsPA.size()>0){
for (IDPortaApplicativa idPortaApplicativa : idsPA) {
if(listIDPA_associate!=null && listIDPA_associate.size()>0){
if(listIDPA_associate.contains(idPortaApplicativa)){
continue;
}
}
this.readPortaApplicativa(archive, idPortaApplicativa, cascadeConfig, ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA);
}
}
}catch(DriverConfigurazioneNotFound notFound){}
// porteApplicative "virtuali"
filtroRicercaPorteApplicative = new FiltroRicercaPorteApplicative();
filtroRicercaPorteApplicative.setTipoSoggettoVirtuale(idAccordoServizio.getSoggettoErogatore().getTipo());
filtroRicercaPorteApplicative.setNomeSoggettoVirtuale(idAccordoServizio.getSoggettoErogatore().getNome());
filtroRicercaPorteApplicative.setTipoServizio(as.getTipo());
filtroRicercaPorteApplicative.setNomeServizio(as.getNome());
filtroRicercaPorteApplicative.setVersioneServizio(as.getVersione());
try{
List<IDPortaApplicativa> idsPA = this.archiveEngine.getAllIdPorteApplicative(filtroRicercaPorteApplicative);
if(idsPA!=null && idsPA.size()>0){
for (IDPortaApplicativa idPortaApplicativa : idsPA) {
this.readPortaApplicativa(archive, idPortaApplicativa, cascadeConfig, ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA);
}
}
}catch(DriverConfigurazioneNotFound notFound){}
}
}
private void readFruitore(Archive archive, IDServizio idAccordoServizio, IDSoggetto idFruitore, Fruitore fruitore,
ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
this.readFruitore(archive, idAccordoServizio, idFruitore, fruitore, cascadeConfig, true, provenienza);
}
private void readFruitore(Archive archive, IDServizio idAccordoServizio, IDSoggetto idFruitore, Fruitore fruitore,
ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
String tipoSoggetto = null;
String nomeSoggetto = null;
if(idAccordoServizio.getSoggettoErogatore()!=null){
tipoSoggetto = idAccordoServizio.getSoggettoErogatore().getTipo();
nomeSoggetto = idAccordoServizio.getSoggettoErogatore().getNome();
}
String key = ArchiveFruitore.buildKey(idFruitore.getTipo(),idFruitore.getNome(),
tipoSoggetto,nomeSoggetto,
idAccordoServizio.getTipo(),idAccordoServizio.getNome(),idAccordoServizio.getVersione());
if(archive.getAccordiFruitori().containsKey(key)){
// gia gestito
}
else{
try{
if(cascadeConfig.isCascadeFruizioni() || ArchiveType.FRUITORE.equals(provenienza)){
// add
if(fruitore==null){
org.openspcoop2.core.registry.AccordoServizioParteSpecifica as = this.archiveEngine.getAccordoServizioParteSpecifica(idAccordoServizio,true);
for (Fruitore fruitoreCheck : as.getFruitoreList()) {
if(fruitoreCheck.getTipo().equals(idFruitore.getTipo()) &&
fruitoreCheck.getNome().equals(idFruitore.getNome())){
fruitore = fruitoreCheck;
break;
}
}
}
ArchiveFruitore archiveFruitore = new ArchiveFruitore(idAccordoServizio, fruitore, this.idCorrelazione);
archive.getAccordiFruitori().add(archiveFruitore);
// porteDelegate associate
List<IDPortaDelegata> listIDPD = this.archiveEngine.getIDPorteDelegateAssociateFruizione(idAccordoServizio, idFruitore);
if(listIDPD!=null && listIDPD.size()>0){
if(archiveFruitore.getMappingPorteDelegateAssociate()==null) {
archiveFruitore.setMappingPorteDelegateAssociate(new ArrayList<>());
}
for (IDPortaDelegata idPortaDelegata : listIDPD) {
archiveFruitore.getMappingPorteDelegateAssociate().add( this.archiveEngine.getMappingFruizionePortaDelegata(idAccordoServizio, idFruitore, idPortaDelegata));
}
}
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// soggetto
this.readSoggetto(archive, idFruitore, cascadeConfig, false, ArchiveType.FRUITORE); // per evitare loop
// accordoServizioParteSpecifica
this.readAccordoServizioParteSpecifica(archive, idAccordoServizio, cascadeConfig, false, ArchiveType.FRUITORE); // per evitare loop
// token policy di negoziazione
if(cascadeConfig.isCascadePolicyConfigurazione()) {
if(fruitore!=null) {
if(fruitore.getConnettore()!=null &&
fruitore.getConnettore().getProperties()!=null && fruitore.getConnettore().getProperties().containsKey(CostantiConnettori.CONNETTORE_TOKEN_POLICY)) {
this.readTokenPolicy_retrieve(archive, fruitore.getConnettore().getProperties().get(CostantiConnettori.CONNETTORE_TOKEN_POLICY),
cascadeConfig, provenienza);
}
if(fruitore.sizeConfigurazioneAzioneList()>0) {
for (ConfigurazioneServizioAzione confAzione : fruitore.getConfigurazioneAzioneList()) {
if(confAzione.getConnettore()!=null &&
confAzione.getConnettore().getProperties()!=null && confAzione.getConnettore().getProperties().containsKey(CostantiConnettori.CONNETTORE_TOKEN_POLICY)) {
this.readTokenPolicy_retrieve(archive, confAzione.getConnettore().getProperties().get(CostantiConnettori.CONNETTORE_TOKEN_POLICY),
cascadeConfig, provenienza);
}
}
}
}
}
// aggiungo eventuale plugin configurato.
if(cascadeConfig.isCascadePluginConfigurazione()) {
if(fruitore!=null) {
if(fruitore.getConnettore()!=null &&
fruitore.getConnettore().getCustom()!=null &&
fruitore.getConnettore().getCustom() &&
fruitore.getConnettore().getTipo()!=null) {
TipiConnettore tipo = TipiConnettore.toEnumFromName(fruitore.getConnettore().getTipo());
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.CONNETTORE.getValue(), fruitore.getConnettore().getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(fruitore.sizeConfigurazioneAzioneList()>0) {
for (ConfigurazioneServizioAzione confAzione : fruitore.getConfigurazioneAzioneList()) {
if(confAzione.getConnettore()!=null &&
confAzione.getConnettore().getCustom()!=null &&
confAzione.getConnettore().getCustom() &&
confAzione.getConnettore().getTipo()!=null) {
TipiConnettore tipo = TipiConnettore.toEnumFromName(confAzione.getConnettore().getTipo());
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.CONNETTORE.getValue(), confAzione.getConnettore().getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
}
}
}
}catch(Exception e){
throw new ProtocolException("(Fruitore "+idFruitore+" dell'accordo "+IDServizioFactory.getInstance().getUriFromIDServizio(idAccordoServizio)+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// porteDelegate associate
List<IDPortaDelegata> listIDPD = this.archiveEngine.getIDPorteDelegateAssociateFruizione(idAccordoServizio, idFruitore);
if(listIDPD!=null && listIDPD.size()>0){
for (IDPortaDelegata idPortaDelegata_associata : listIDPD) {
this.readPortaDelegata(archive, idPortaDelegata_associata, cascadeConfig, ArchiveType.FRUITORE);
}
}
}
}
private PortaDelegata readPortaDelegata(Archive archive, IDPortaDelegata idPortaDelegata,
ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
return this.readPortaDelegata(archive, idPortaDelegata, cascadeConfig, true, provenienza);
}
private PortaDelegata readPortaDelegata(Archive archive, IDPortaDelegata idPortaDelegata,
ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
IDSoggetto idSoggettoFruitore = idPortaDelegata.getIdentificativiFruizione().getSoggettoFruitore();
String key = ArchivePortaDelegata.buildKey(idSoggettoFruitore.getTipo(),
idSoggettoFruitore.getNome(),
idPortaDelegata.getNome());
org.openspcoop2.core.config.PortaDelegata pd = null;
if(archive.getPorteDelegate().containsKey(key)){
// gia gestito
pd = archive.getPorteDelegate().get(key).getPortaDelegata();
}
else{
try{
pd = this.archiveEngine.getPortaDelegata(idPortaDelegata);
if(cascadeConfig.isCascadePorteDelegate() || ArchiveType.PORTA_DELEGATA.equals(provenienza)){
if(pd==null) {
throw new Exception("Porta delegata '"+idPortaDelegata+"' non esistente");
}
// add
if(pd.getTipoSoggettoProprietario()==null){
pd.setTipoSoggettoProprietario(idSoggettoFruitore.getTipo());
}
if(pd.getNomeSoggettoProprietario()==null){
pd.setNomeSoggettoProprietario(idSoggettoFruitore.getNome());
}
ArchivePortaDelegata archivePd = new ArchivePortaDelegata(pd, this.idCorrelazione);
archive.getPorteDelegate().add(archivePd);
// add rateLimiting
readControlloTrafficoPolicyPorta(archive, true, pd.getNome(), cascadeConfig, provenienza);
// add allarmi
readAllarmiPorta(archive, true, pd.getNome(), cascadeConfig, provenienza);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// soggetto proprietario
this.readSoggetto(archive, idSoggettoFruitore, cascadeConfig, false, ArchiveType.PORTA_DELEGATA); // per evitare loop
// eventuale servizio riferito
if(pd.getSoggettoErogatore()!=null &&
pd.getSoggettoErogatore().getTipo()!=null && !"".equals(pd.getSoggettoErogatore().getTipo()) &&
pd.getSoggettoErogatore().getNome()!=null && !"".equals(pd.getSoggettoErogatore().getNome()) &&
pd.getServizio()!=null &&
pd.getServizio().getTipo()!=null && !"".equals(pd.getServizio().getTipo()) &&
pd.getServizio().getNome()!=null && !"".equals(pd.getServizio().getNome()) &&
pd.getServizio().getVersione()!=null
){
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(pd.getServizio().getTipo(), pd.getServizio().getNome(),
pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome(),
pd.getServizio().getVersione());
this.readAccordoServizioParteSpecifica(archive, idServizio, cascadeConfig, false, ArchiveType.PORTA_DELEGATA); // per evitare loop
}
// ruoli
if(pd!=null && pd.getRuoli()!=null &&
pd.getRuoli().sizeRuoloList()>0){
for (int i = 0; i < pd.getRuoli().sizeRuoloList(); i++) {
Ruolo ruolo = pd.getRuoli().getRuolo(i);
FiltroRicercaRuoli filtroRuolo = new FiltroRicercaRuoli();
filtroRuolo.setNome(ruolo.getNome());
try{
List<IDRuolo> idsRuoli = this.archiveEngine.getAllIdRuoli(filtroRuolo);
if(idsRuoli!=null && idsRuoli.size()>0){
for (IDRuolo idRuolo : idsRuoli) {
this.readRuolo(archive, idRuolo, cascadeConfig, false, ArchiveType.PORTA_DELEGATA); // per evitare loop
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
// serviziApplicativi autorizzati
if(pd.getAutorizzazioneToken()!=null && pd.getAutorizzazioneToken().getServiziApplicativi()!=null &&
pd.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()>0){
for (PortaDelegataServizioApplicativo sa: pd.getAutorizzazioneToken().getServiziApplicativi().getServizioApplicativoList()) {
IDServizioApplicativo idSA = new IDServizioApplicativo();
idSA.setIdSoggettoProprietario(idSoggettoFruitore);
idSA.setNome(sa.getNome());
this.readServizioApplicativo(archive, idSA, cascadeConfig, ArchiveType.PORTA_DELEGATA);
}
}
// ruoli token
if(pd!=null && pd.getAutorizzazioneToken()!=null && pd.getAutorizzazioneToken().getRuoli()!=null &&
pd.getAutorizzazioneToken().getRuoli().sizeRuoloList()>0){
for (int i = 0; i < pd.getAutorizzazioneToken().getRuoli().sizeRuoloList(); i++) {
Ruolo ruolo = pd.getAutorizzazioneToken().getRuoli().getRuolo(i);
FiltroRicercaRuoli filtroRuolo = new FiltroRicercaRuoli();
filtroRuolo.setNome(ruolo.getNome());
try{
List<IDRuolo> idsRuoli = this.archiveEngine.getAllIdRuoli(filtroRuolo);
if(idsRuoli!=null && idsRuoli.size()>0){
for (IDRuolo idRuolo : idsRuoli) {
this.readRuolo(archive, idRuolo, cascadeConfig, false, ArchiveType.PORTA_DELEGATA); // per evitare loop
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
// scope
if(pd!=null && pd.getScope()!=null &&
pd.getScope().sizeScopeList()>0){
for (int i = 0; i < pd.getScope().sizeScopeList(); i++) {
Scope scope = pd.getScope().getScope(i);
FiltroRicercaScope filtroScope = new FiltroRicercaScope();
filtroScope.setNome(scope.getNome());
try{
List<IDScope> idsScope = this.archiveEngine.getAllIdScope(filtroScope);
if(idsScope!=null && idsScope.size()>0){
for (IDScope idScope : idsScope) {
this.readScope(archive, idScope, cascadeConfig, false, ArchiveType.PORTA_DELEGATA); // per evitare loop
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
// token policy di validazione
if(cascadeConfig.isCascadePolicyConfigurazione()) {
if(pd!=null && pd.getGestioneToken()!=null && pd.getGestioneToken().getPolicy()!=null && !"".equals(pd.getGestioneToken().getPolicy())) {
this.readTokenPolicy_validation(archive, pd.getGestioneToken().getPolicy(), cascadeConfig, provenienza);
}
}
// attribute authority
if(cascadeConfig.isCascadePolicyConfigurazione()) {
if(pd!=null && pd.sizeAttributeAuthorityList()>0) {
for (AttributeAuthority aa : pd.getAttributeAuthorityList()) {
String nomeAA = aa.getNome();
if(nomeAA!=null && !"".equals(nomeAA)) {
this.readAttributeAuthority(archive, nomeAA, cascadeConfig, provenienza);
}
}
}
}
// trasformazioni
if(pd!=null && pd.getTrasformazioni()!=null &&
pd.getTrasformazioni().sizeRegolaList()>0) {
for (int i = 0; i < pd.getTrasformazioni().sizeRegolaList(); i++) {
TrasformazioneRegola regola = pd.getTrasformazioni().getRegola(i);
if(regola.getApplicabilita()!=null) {
if(regola.getApplicabilita().sizeServizioApplicativoList()>0) {
for (int j = 0; j < regola.getApplicabilita().sizeServizioApplicativoList(); j++) {
TrasformazioneRegolaApplicabilitaServizioApplicativo trSa = regola.getApplicabilita().getServizioApplicativo(j);
if(trSa.getTipoSoggettoProprietario()!=null && trSa.getNomeSoggettoProprietario()!=null && trSa.getNome()!=null) {
IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
idServizioApplicativo.setNome(trSa.getNome());
idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(trSa.getTipoSoggettoProprietario(), trSa.getNomeSoggettoProprietario()));
this.readServizioApplicativo(archive, idServizioApplicativo, cascadeConfig, false, ArchiveType.PORTA_DELEGATA); // per evitare loop
}
}
}
if(regola.getApplicabilita().sizeSoggettoList()>0) {
for (int j = 0; j < regola.getApplicabilita().sizeSoggettoList(); j++) {
TrasformazioneRegolaApplicabilitaSoggetto trSoggetto = regola.getApplicabilita().getSoggetto(j);
if(trSoggetto.getTipo()!=null && trSoggetto.getNome()!=null) {
IDSoggetto idSoggetto = new IDSoggetto(trSoggetto.getTipo(), trSoggetto.getNome());
this.readSoggetto(archive, idSoggetto, cascadeConfig, false, ArchiveType.PORTA_DELEGATA); // per evitare loop
}
}
}
}
}
}
// aggiungo eventuale plugin configurato.
if(cascadeConfig.isCascadePluginConfigurazione()) {
if(pd!=null && StringUtils.isNotEmpty(pd.getAutenticazione())) {
TipoAutenticazione tipo = TipoAutenticazione.toEnumConstant(pd.getAutenticazione(), false);
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.AUTENTICAZIONE.getValue(), pd.getAutenticazione(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(pd!=null && StringUtils.isNotEmpty(pd.getAutorizzazione())) {
TipoAutorizzazione tipo = TipoAutorizzazione.toEnumConstant(pd.getAutorizzazione(), false);
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.AUTORIZZAZIONE.getValue(), pd.getAutorizzazione(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(pd!=null && StringUtils.isNotEmpty(pd.getAutorizzazioneContenuto())) {
if(!CostantiConfigurazione.AUTORIZZAZIONE_CONTENUTO_BUILT_IN.equals(pd.getAutorizzazioneContenuto())) {
try {
readPlugin_classe(archive, TipoPlugin.AUTORIZZAZIONE_CONTENUTI.getValue(), pd.getAutorizzazioneContenuto(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(pd!=null && pd.getIntegrazione()!=null && StringUtils.isNotEmpty(pd.getIntegrazione())) {
String[]tipi = pd.getIntegrazione().trim().split(",");
if(tipi!=null && tipi.length>0) {
for (String t : tipi) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.INTEGRAZIONE.getValue(), t)){
try {
readPlugin_classe(archive, TipoPlugin.INTEGRAZIONE.getValue(), t, cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
if(pd!=null && pd.getConfigurazioneHandler()!=null) {
if(pd.getConfigurazioneHandler().getRequest()!=null) {
if(pd.getConfigurazioneHandler().getRequest().sizePreInList()>0) {
for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getRequest().getPreInList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pd.getConfigurazioneHandler().getRequest().sizeInList()>0) {
for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getRequest().getInList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pd.getConfigurazioneHandler().getRequest().sizeInProtocolInfoList()>0) {
for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getRequest().getInProtocolInfoList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pd.getConfigurazioneHandler().getRequest().sizeOutList()>0) {
for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getRequest().getOutList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pd.getConfigurazioneHandler().getRequest().sizePostOutList()>0) {
for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getRequest().getPostOutList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
if(pd.getConfigurazioneHandler().getResponse()!=null) {
if(pd.getConfigurazioneHandler().getResponse().sizePreInList()>0) {
for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getResponse().getPreInList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pd.getConfigurazioneHandler().getResponse().sizeInList()>0) {
for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getResponse().getInList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
// if(pd.getConfigurazioneHandler().getResponse().sizeInProtocolInfoList()>0) {
// for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getResponse().getInProtocolInfoList()) {
// if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
// try {
// readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
// }catch(DriverConfigurazioneNotFound notFound) {}
// }
// }
// }
if(pd.getConfigurazioneHandler().getResponse().sizeOutList()>0) {
for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getResponse().getOutList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pd.getConfigurazioneHandler().getResponse().sizePostOutList()>0) {
for (ConfigurazioneHandler ch : pd.getConfigurazioneHandler().getResponse().getPostOutList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
}
}
}
}catch(Exception e){
throw new ProtocolException("(PortaDelegata "+idPortaDelegata+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// serviziApplicativi
if(pd.sizeServizioApplicativoList()>0){
for (PortaDelegataServizioApplicativo sa: pd.getServizioApplicativoList()) {
IDServizioApplicativo idSA = new IDServizioApplicativo();
idSA.setIdSoggettoProprietario(idSoggettoFruitore);
idSA.setNome(sa.getNome());
this.readServizioApplicativo(archive, idSA, cascadeConfig, ArchiveType.PORTA_DELEGATA);
}
}
}
return pd;
}
private PortaApplicativa readPortaApplicativa(Archive archive, IDPortaApplicativa idPortaApplicativa,
ArchiveCascadeConfiguration cascadeConfig, ArchiveType provenienza) throws Exception{
return this.readPortaApplicativa(archive, idPortaApplicativa, cascadeConfig, true, provenienza);
}
private PortaApplicativa readPortaApplicativa(Archive archive, IDPortaApplicativa idPortaApplicativa,
ArchiveCascadeConfiguration cascadeConfig, boolean cascadeAvanti, ArchiveType provenienza) throws Exception{
IDSoggetto idSoggettoErogatore = idPortaApplicativa.getIdentificativiErogazione().getIdServizio().getSoggettoErogatore();
String key = ArchivePortaApplicativa.buildKey(idSoggettoErogatore.getTipo(),
idSoggettoErogatore.getNome(),
idPortaApplicativa.getNome());
org.openspcoop2.core.config.PortaApplicativa pa = null;
if(archive.getPorteApplicative().containsKey(key)){
// gia gestito
pa = archive.getPorteApplicative().get(key).getPortaApplicativa();
}
else{
try{
pa = this.archiveEngine.getPortaApplicativa(idPortaApplicativa);
if(cascadeConfig.isCascadePorteApplicative() || ArchiveType.PORTA_APPLICATIVA.equals(provenienza)){
if(pa==null) {
throw new Exception("Porta applicativa '"+idPortaApplicativa+"' non esistente");
}
// add
if(pa.getTipoSoggettoProprietario()==null){
pa.setTipoSoggettoProprietario(idSoggettoErogatore.getTipo());
}
if(pa.getNomeSoggettoProprietario()==null){
pa.setNomeSoggettoProprietario(idSoggettoErogatore.getNome());
}
ArchivePortaApplicativa archivePa = new ArchivePortaApplicativa(pa, this.idCorrelazione);
archive.getPorteApplicative().add(archivePa);
// add rateLimiting
readControlloTrafficoPolicyPorta(archive, false, pa.getNome(), cascadeConfig, provenienza);
// add allarmi
readAllarmiPorta(archive, false, pa.getNome(), cascadeConfig, provenienza);
// *** dipendenze: oggetti necessari per la creazione dell'oggetto sopra aggiunto ***
// proprietario
this.readSoggetto(archive, idSoggettoErogatore, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
// virtuale
if(pa.getSoggettoVirtuale()!=null &&
pa.getSoggettoVirtuale().getTipo()!=null && !"".equals(pa.getSoggettoVirtuale().getTipo()) &&
pa.getSoggettoVirtuale().getNome()!=null && !"".equals(pa.getSoggettoVirtuale().getNome()) ){
IDSoggetto idSoggetto = new IDSoggetto(pa.getSoggettoVirtuale().getTipo(),pa.getSoggettoVirtuale().getNome());
this.readSoggetto(archive, idSoggetto, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
// eventuale servizio riferito
if(pa.getServizio()!=null &&
pa.getServizio().getTipo()!=null && !"".equals(pa.getServizio().getTipo()) &&
pa.getServizio().getNome()!=null && !"".equals(pa.getServizio().getNome()) &&
pa.getServizio().getVersione()!=null
){
if(pa.getSoggettoVirtuale()!=null &&
pa.getSoggettoVirtuale().getTipo()!=null && !"".equals(pa.getSoggettoVirtuale().getTipo()) &&
pa.getSoggettoVirtuale().getNome()!=null && !"".equals(pa.getSoggettoVirtuale().getNome()) ){
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(pa.getServizio().getTipo(), pa.getServizio().getNome(),
pa.getSoggettoVirtuale().getTipo(), pa.getSoggettoVirtuale().getNome(),
pa.getServizio().getVersione());
this.readAccordoServizioParteSpecifica(archive, idServizio, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
else {
IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(pa.getServizio().getTipo(), pa.getServizio().getNome(),
idSoggettoErogatore,
pa.getServizio().getVersione());
this.readAccordoServizioParteSpecifica(archive, idServizio, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
}
// ruoli
if(pa!=null && pa.getRuoli()!=null &&
pa.getRuoli().sizeRuoloList()>0){
for (int i = 0; i < pa.getRuoli().sizeRuoloList(); i++) {
Ruolo ruolo = pa.getRuoli().getRuolo(i);
FiltroRicercaRuoli filtroRuolo = new FiltroRicercaRuoli();
filtroRuolo.setNome(ruolo.getNome());
try{
List<IDRuolo> idsRuoli = this.archiveEngine.getAllIdRuoli(filtroRuolo);
if(idsRuoli!=null && idsRuoli.size()>0){
for (IDRuolo idRuolo : idsRuoli) {
this.readRuolo(archive, idRuolo, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
// serviziApplicativi autorizzati token
if(pa!=null && pa.getAutorizzazioneToken()!=null && pa.getAutorizzazioneToken().getServiziApplicativi()!=null &&
pa.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList()>0) {
for (int i = 0; i < pa.getAutorizzazioneToken().getServiziApplicativi().sizeServizioApplicativoList(); i++) {
PortaApplicativaAutorizzazioneServizioApplicativo paSa = pa.getAutorizzazioneToken().getServiziApplicativi().getServizioApplicativo(i);
if(paSa.getTipoSoggettoProprietario()!=null && paSa.getNomeSoggettoProprietario()!=null && paSa.getNome()!=null) {
IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
idServizioApplicativo.setNome(paSa.getNome());
idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(paSa.getTipoSoggettoProprietario(), paSa.getNomeSoggettoProprietario()));
this.readServizioApplicativo(archive, idServizioApplicativo, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
}
}
// ruoli token
if(pa!=null && pa.getAutorizzazioneToken()!=null && pa.getAutorizzazioneToken().getRuoli()!=null &&
pa.getAutorizzazioneToken().getRuoli().sizeRuoloList()>0){
for (int i = 0; i < pa.getAutorizzazioneToken().getRuoli().sizeRuoloList(); i++) {
Ruolo ruolo = pa.getAutorizzazioneToken().getRuoli().getRuolo(i);
FiltroRicercaRuoli filtroRuolo = new FiltroRicercaRuoli();
filtroRuolo.setNome(ruolo.getNome());
try{
List<IDRuolo> idsRuoli = this.archiveEngine.getAllIdRuoli(filtroRuolo);
if(idsRuoli!=null && idsRuoli.size()>0){
for (IDRuolo idRuolo : idsRuoli) {
this.readRuolo(archive, idRuolo, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
// scope
if(pa!=null && pa.getScope()!=null &&
pa.getScope().sizeScopeList()>0){
for (int i = 0; i < pa.getScope().sizeScopeList(); i++) {
Scope scope = pa.getScope().getScope(i);
FiltroRicercaScope filtroScope = new FiltroRicercaScope();
filtroScope.setNome(scope.getNome());
try{
List<IDScope> idsScope = this.archiveEngine.getAllIdScope(filtroScope);
if(idsScope!=null && idsScope.size()>0){
for (IDScope idScope : idsScope) {
this.readScope(archive, idScope, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
}
}catch(DriverRegistroServiziNotFound notFound){}
}
}
// token policy di validazione
if(cascadeConfig.isCascadePolicyConfigurazione()) {
if(pa!=null && pa.getGestioneToken()!=null && pa.getGestioneToken().getPolicy()!=null && !"".equals(pa.getGestioneToken().getPolicy())) {
this.readTokenPolicy_validation(archive, pa.getGestioneToken().getPolicy(), cascadeConfig, provenienza);
}
}
// attribute authority
if(cascadeConfig.isCascadePolicyConfigurazione()) {
if(pa!=null && pa.sizeAttributeAuthorityList()>0) {
for (AttributeAuthority aa : pa.getAttributeAuthorityList()) {
String nomeAA = aa.getNome();
if(nomeAA!=null && !"".equals(nomeAA)) {
this.readAttributeAuthority(archive, nomeAA, cascadeConfig, provenienza);
}
}
}
}
// serviziApplicativi autorizzati
if(pa!=null && pa.getServiziApplicativiAutorizzati()!=null &&
pa.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()>0) {
for (int i = 0; i < pa.getServiziApplicativiAutorizzati().sizeServizioApplicativoList(); i++) {
PortaApplicativaAutorizzazioneServizioApplicativo paSa = pa.getServiziApplicativiAutorizzati().getServizioApplicativo(i);
if(paSa.getTipoSoggettoProprietario()!=null && paSa.getNomeSoggettoProprietario()!=null && paSa.getNome()!=null) {
IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
idServizioApplicativo.setNome(paSa.getNome());
idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(paSa.getTipoSoggettoProprietario(), paSa.getNomeSoggettoProprietario()));
this.readServizioApplicativo(archive, idServizioApplicativo, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
}
}
// soggetti autorizzati
if(pa!=null && pa.getSoggetti()!=null &&
pa.getSoggetti().sizeSoggettoList()>0) {
for (int i = 0; i < pa.getSoggetti().sizeSoggettoList(); i++) {
PortaApplicativaAutorizzazioneSoggetto paSoggetto = pa.getSoggetti().getSoggetto(i);
if(paSoggetto.getTipo()!=null && paSoggetto.getNome()!=null) {
IDSoggetto idSoggetto = new IDSoggetto(paSoggetto.getTipo(), paSoggetto.getNome());
this.readSoggetto(archive, idSoggetto, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
}
}
// trasformazioni
if(pa!=null && pa.getTrasformazioni()!=null &&
pa.getTrasformazioni().sizeRegolaList()>0) {
for (int i = 0; i < pa.getTrasformazioni().sizeRegolaList(); i++) {
TrasformazioneRegola regola = pa.getTrasformazioni().getRegola(i);
if(regola.getApplicabilita()!=null) {
if(regola.getApplicabilita().sizeServizioApplicativoList()>0) {
for (int j = 0; j < regola.getApplicabilita().sizeServizioApplicativoList(); j++) {
TrasformazioneRegolaApplicabilitaServizioApplicativo trSa = regola.getApplicabilita().getServizioApplicativo(j);
if(trSa.getTipoSoggettoProprietario()!=null && trSa.getNomeSoggettoProprietario()!=null && trSa.getNome()!=null) {
IDServizioApplicativo idServizioApplicativo = new IDServizioApplicativo();
idServizioApplicativo.setNome(trSa.getNome());
idServizioApplicativo.setIdSoggettoProprietario(new IDSoggetto(trSa.getTipoSoggettoProprietario(), trSa.getNomeSoggettoProprietario()));
this.readServizioApplicativo(archive, idServizioApplicativo, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
}
}
if(regola.getApplicabilita().sizeSoggettoList()>0) {
for (int j = 0; j < regola.getApplicabilita().sizeSoggettoList(); j++) {
TrasformazioneRegolaApplicabilitaSoggetto trSoggetto = regola.getApplicabilita().getSoggetto(j);
if(trSoggetto.getTipo()!=null && trSoggetto.getNome()!=null) {
IDSoggetto idSoggetto = new IDSoggetto(trSoggetto.getTipo(), trSoggetto.getNome());
this.readSoggetto(archive, idSoggetto, cascadeConfig, false, ArchiveType.PORTA_APPLICATIVA); // per evitare loop
}
}
}
}
}
}
// aggiungo eventuale plugin configurato.
if(cascadeConfig.isCascadePluginConfigurazione()) {
if(pa!=null && StringUtils.isNotEmpty(pa.getAutenticazione())) {
TipoAutenticazione tipo = TipoAutenticazione.toEnumConstant(pa.getAutenticazione(), false);
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.AUTENTICAZIONE.getValue(), pa.getAutenticazione(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(pa!=null && StringUtils.isNotEmpty(pa.getAutorizzazione())) {
TipoAutorizzazione tipo = TipoAutorizzazione.toEnumConstant(pa.getAutorizzazione(), false);
if(tipo==null) {
try {
readPlugin_classe(archive, TipoPlugin.AUTORIZZAZIONE.getValue(), pa.getAutorizzazione(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(pa!=null && StringUtils.isNotEmpty(pa.getAutorizzazioneContenuto())) {
if(!CostantiConfigurazione.AUTORIZZAZIONE_CONTENUTO_BUILT_IN.equals(pa.getAutorizzazioneContenuto())) {
try {
readPlugin_classe(archive, TipoPlugin.AUTORIZZAZIONE_CONTENUTI.getValue(), pa.getAutorizzazioneContenuto(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(pa!=null && pa.getBehaviour()!=null && pa.getBehaviour().getNome()!=null) {
TipoBehaviour behaviourType = TipoBehaviour.toEnumConstant(pa.getBehaviour().getNome());
if(TipoBehaviour.CUSTOM.equals(behaviourType)){
try {
readPlugin_classe(archive, TipoPlugin.BEHAVIOUR.getValue(), pa.getBehaviour().getNome(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
if(pa!=null && pa.getIntegrazione()!=null && StringUtils.isNotEmpty(pa.getIntegrazione())) {
String[]tipi = pa.getIntegrazione().trim().split(",");
if(tipi!=null && tipi.length>0) {
for (String t : tipi) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.INTEGRAZIONE.getValue(), t)){
try {
readPlugin_classe(archive, TipoPlugin.INTEGRAZIONE.getValue(), t, cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
if(pa!=null && pa.getConfigurazioneHandler()!=null) {
if(pa.getConfigurazioneHandler().getRequest()!=null) {
if(pa.getConfigurazioneHandler().getRequest().sizePreInList()>0) {
for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getRequest().getPreInList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pa.getConfigurazioneHandler().getRequest().sizeInList()>0) {
for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getRequest().getInList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pa.getConfigurazioneHandler().getRequest().sizeInProtocolInfoList()>0) {
for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getRequest().getInProtocolInfoList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pa.getConfigurazioneHandler().getRequest().sizeOutList()>0) {
for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getRequest().getOutList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pa.getConfigurazioneHandler().getRequest().sizePostOutList()>0) {
for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getRequest().getPostOutList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
if(pa.getConfigurazioneHandler().getResponse()!=null) {
if(pa.getConfigurazioneHandler().getResponse().sizePreInList()>0) {
for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getResponse().getPreInList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pa.getConfigurazioneHandler().getResponse().sizeInList()>0) {
for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getResponse().getInList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
// if(pa.getConfigurazioneHandler().getResponse().sizeInProtocolInfoList()>0) {
// for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getResponse().getInProtocolInfoList()) {
// if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
// try {
// readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
// }catch(DriverConfigurazioneNotFound notFound) {}
// }
// }
// }
if(pa.getConfigurazioneHandler().getResponse().sizeOutList()>0) {
for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getResponse().getOutList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
if(pa.getConfigurazioneHandler().getResponse().sizePostOutList()>0) {
for (ConfigurazioneHandler ch : pa.getConfigurazioneHandler().getResponse().getPostOutList()) {
if(this.archiveEngine.existsPluginClasse(TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo())){
try {
readPlugin_classe(archive, TipoPlugin.MESSAGE_HANDLER.getValue(), ch.getTipo(), cascadeConfig, provenienza);
}catch(DriverConfigurazioneNotFound notFound) {}
}
}
}
}
}
}
}
}catch(Exception e){
throw new ProtocolException("(PortaApplicativa "+idPortaApplicativa+") "+e.getMessage(),e);
}
}
// *** cascade in avanti ***
if(cascadeAvanti){
// serviziApplicativi
if(pa.sizeServizioApplicativoList()>0){
for (PortaApplicativaServizioApplicativo sa: pa.getServizioApplicativoList()) {
IDServizioApplicativo idSA = new IDServizioApplicativo();
idSA.setIdSoggettoProprietario(idSoggettoErogatore);
idSA.setNome(sa.getNome());
this.readServizioApplicativo(archive, idSA, cascadeConfig, ArchiveType.PORTA_APPLICATIVA);
}
}
if(pa.getServizioApplicativoDefault()!=null && !"".equals(pa.getServizioApplicativoDefault())) {
IDServizioApplicativo idSA = new IDServizioApplicativo();
idSA.setIdSoggettoProprietario(idSoggettoErogatore);
idSA.setNome(pa.getServizioApplicativoDefault());
this.readServizioApplicativo(archive, idSA, cascadeConfig, ArchiveType.PORTA_APPLICATIVA);
}
}
return pa;
}
private void readErogazione(Archive archive, IDServizio idServizio, ArchiveCascadeConfiguration cascadeConfig) throws Exception{
this.readAccordoServizioParteSpecifica(archive, idServizio, cascadeConfig, ArchiveType.EROGAZIONE);
// porteApplicative associate
List<IDPortaApplicativa> listIDPA = this.archiveEngine.getIDPorteApplicativeAssociateErogazione(idServizio);
if(listIDPA!=null && listIDPA.size()>0){
for (IDPortaApplicativa idPortaApplicativa : listIDPA) {
PortaApplicativa pa = this.readPortaApplicativa(archive, idPortaApplicativa, cascadeConfig, ArchiveType.PORTA_APPLICATIVA);
if(pa!=null && pa.sizeServizioApplicativoList()>0) {
for (PortaApplicativaServizioApplicativo pasa : pa.getServizioApplicativoList()) {
IDServizioApplicativo idSA = new IDServizioApplicativo();
idSA.setNome(pasa.getNome());
idSA.setIdSoggettoProprietario(new IDSoggetto(pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
ServizioApplicativo sa = this.archiveEngine.getServizioApplicativo(idSA);
if(!CostantiConfigurazione.SERVER.equals(sa.getTipo()) && !CostantiConfigurazione.CLIENT_OR_SERVER.equals(sa.getTipo())) {
// i server verranno inclusi solamente se viene scelto di includere tutti gli elementi riferiti
this.readServizioApplicativo(archive, idSA, cascadeConfig, ArchiveType.SERVIZIO_APPLICATIVO);
}
}
}
if(pa!=null && pa.getServizioApplicativoDefault()!=null && !"".equals(pa.getServizioApplicativoDefault())) {
IDServizioApplicativo idSA = new IDServizioApplicativo();
idSA.setNome(pa.getServizioApplicativoDefault());
idSA.setIdSoggettoProprietario(new IDSoggetto(pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
ServizioApplicativo sa = this.archiveEngine.getServizioApplicativo(idSA);
if(!CostantiConfigurazione.SERVER.equals(sa.getTipo()) && !CostantiConfigurazione.CLIENT_OR_SERVER.equals(sa.getTipo())) {
// i server verranno inclusi solamente se viene scelto di includere tutti gli elementi riferiti
this.readServizioApplicativo(archive, idSA, cascadeConfig, ArchiveType.SERVIZIO_APPLICATIVO);
}
}
}
}
}
private void readFruizione(Archive archive, IDFruizione idFruizione, ArchiveCascadeConfiguration cascadeConfig) throws Exception{
this.readAccordoServizioParteSpecifica(archive, idFruizione.getIdServizio(), cascadeConfig, ArchiveType.FRUIZIONE);
this.readFruitore(archive, idFruizione.getIdServizio(), idFruizione.getIdFruitore(), null, cascadeConfig, ArchiveType.FRUITORE);
// porteDelegate associate
List<IDPortaDelegata> listIDPD = this.archiveEngine.getIDPorteDelegateAssociateFruizione(idFruizione.getIdServizio(), idFruizione.getIdFruitore());
if(listIDPD!=null && listIDPD.size()>0){
for (IDPortaDelegata idPortaDelegata : listIDPD) {
this.readPortaDelegata(archive, idPortaDelegata, cascadeConfig, ArchiveType.PORTA_DELEGATA);
}
}
}
}