ConfigLocalProperties.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.pdd.config;
import java.util.Enumeration;
import java.util.Properties;
import org.slf4j.Logger;
import org.openspcoop2.core.config.AccessoConfigurazione;
import org.openspcoop2.core.config.AccessoDatiAutenticazione;
import org.openspcoop2.core.config.AccessoDatiAutorizzazione;
import org.openspcoop2.core.config.AccessoRegistro;
import org.openspcoop2.core.config.AccessoRegistroRegistro;
import org.openspcoop2.core.config.Attachments;
import org.openspcoop2.core.config.Cache;
import org.openspcoop2.core.config.Configurazione;
import org.openspcoop2.core.config.Dump;
import org.openspcoop2.core.config.DumpConfigurazione;
import org.openspcoop2.core.config.DumpConfigurazioneRegola;
import org.openspcoop2.core.config.GestioneErrore;
import org.openspcoop2.core.config.GestioneErroreCodiceTrasporto;
import org.openspcoop2.core.config.GestioneErroreSoapFault;
import org.openspcoop2.core.config.IndirizzoRisposta;
import org.openspcoop2.core.config.InoltroBusteNonRiscontrate;
import org.openspcoop2.core.config.IntegrationManager;
import org.openspcoop2.core.config.OpenspcoopAppender;
import org.openspcoop2.core.config.Property;
import org.openspcoop2.core.config.Risposte;
import org.openspcoop2.core.config.Route;
import org.openspcoop2.core.config.RouteGateway;
import org.openspcoop2.core.config.RouteRegistro;
import org.openspcoop2.core.config.RoutingTable;
import org.openspcoop2.core.config.RoutingTableDefault;
import org.openspcoop2.core.config.RoutingTableDestinazione;
import org.openspcoop2.core.config.Tracciamento;
import org.openspcoop2.core.config.ValidazioneBuste;
import org.openspcoop2.core.config.ValidazioneContenutiApplicativi;
import org.openspcoop2.core.config.constants.AlgoritmoCache;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.constants.GestioneErroreComportamento;
import org.openspcoop2.core.config.constants.RegistroTipo;
import org.openspcoop2.core.config.constants.Severita;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
import org.openspcoop2.core.config.constants.StatoFunzionalitaConWarning;
import org.openspcoop2.core.config.constants.TipoConnessioneRisposte;
import org.openspcoop2.core.config.constants.ValidazioneBusteTipoControllo;
import org.openspcoop2.core.config.constants.ValidazioneContenutiApplicativiTipo;
import org.openspcoop2.pdd.core.CostantiPdD;
import org.openspcoop2.pdd.logger.LogLevels;
import org.openspcoop2.utils.properties.CollectionProperties;
import org.openspcoop2.utils.properties.InstanceProperties;
import org.openspcoop2.utils.properties.PropertiesUtilities;
/**
* ConfigLocalProperties
*
* @author Andrea Poli (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class ConfigLocalProperties extends InstanceProperties {
private boolean configLocal = false;
public ConfigLocalProperties(Logger log,String confDir,Properties prop) {
super(CostantiPdD.OPENSPCOOP2_LOCAL_HOME,new Properties(), log); // L'originale del file config non esiste, e' su file XML o su database
CollectionProperties properties =
PropertiesUtilities.searchLocalImplementation(CostantiPdD.OPENSPCOOP2_LOCAL_HOME,log, CostantiPdD.OPENSPCOOP2_CONFIG_PROPERTIES , CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH, confDir);
if(properties!=null){
this.configLocal = true;
this.setLocalFileImplementation(properties);
}
if(prop!=null){
this.configLocal = true;
this.setLocalObjectImplementation(prop);
}
}
public RoutingTable updateRouting(RoutingTable routingTable) throws Exception{
if(!this.configLocal)
return routingTable;
try{
// Abiltata?
String enabled = this.getValue("routingTable.enabled");
if(enabled!=null){
enabled = enabled.trim();
if("false".equals(enabled)){
if(routingTable==null)
routingTable = new RoutingTable();
routingTable.setAbilitata(false);
return routingTable;
}
}
// Properties
String defaultRoutesTmp = this.getValue("routingTable.default.routes");
String [] defaultRoutes = null;
if(defaultRoutesTmp!=null && defaultRoutesTmp.length()>0){
defaultRoutes = defaultRoutesTmp.split(",");
if(defaultRoutes!=null){
if(defaultRoutes.length>0){
for (int i = 0; i < defaultRoutes.length; i++) {
defaultRoutes[i] = defaultRoutes[i].trim();
}
}else{
defaultRoutes = null;
}
}
}
String staticRoutesTmp = this.getValue("routingTable.routes");
String [] staticRoutes = null;
if(staticRoutesTmp!=null && staticRoutesTmp.length()>0){
staticRoutes = staticRoutesTmp.split(",");
if(staticRoutes!=null){
if(staticRoutes.length>0){
for (int i = 0; i < staticRoutes.length; i++) {
staticRoutes[i] = staticRoutes[i].trim();
}
}else{
staticRoutes = null;
}
}
}
if(defaultRoutes!=null || staticRoutesTmp!=null){
if(enabled==null){
throw new Exception("Indicazione se la tabella di routing e' abilitata o meno non fornita");
}
if(!"true".equals(enabled) && !"false".equals(enabled) ){
throw new Exception("Indicazione se la tabella di routing e' abilitata o meno fornita non correttamente");
}
if(routingTable==null){
// Se la configurazione originale non forniva routing table, il local env deve definire il default
if(defaultRoutes==null){
throw new Exception("Rotte di default non definite");
}
routingTable = new RoutingTable();
}
routingTable.setAbilitata("true".equals(enabled));
}
// Default
if(defaultRoutes!=null){
// elimino vecchie rotte di default
if(routingTable.getDefault()!=null){
while(routingTable.getDefault().sizeRouteList()>0){
routingTable.getDefault().removeRoute(0);
}
}
if(defaultRoutes.length>0){
if(routingTable.getDefault()==null){
routingTable.setDefault(new RoutingTableDefault());
}
}
for (int i = 0; i < defaultRoutes.length; i++) {
Route route = new Route();
String tipo = this.getValue("routingTable.default.route."+defaultRoutes[i]+".tipo");
if(tipo==null){
throw new Exception("Tipo della rotta "+defaultRoutes[i]+" non definito");
}else{
tipo = tipo.trim();
}
if(!CostantiConfigurazione.ROUTE_REGISTRO.equals(tipo) && !CostantiConfigurazione.ROUTE_GATEWAY.equals(tipo)){
throw new Exception("Tipo della rotta "+defaultRoutes[i]+" non corretto");
}
if(CostantiConfigurazione.ROUTE_REGISTRO.equals(tipo)){
RouteRegistro rr = new RouteRegistro();
String nome = this.getValue("routingTable.default.route."+defaultRoutes[i]+".registro.nome");
if(nome!=null){
nome = nome.trim();
rr.setNome(nome);
}
route.setRegistro(rr);
}else{
RouteGateway rg = new RouteGateway();
String tipoGW = this.getValue("routingTable.default.route."+defaultRoutes[i]+".gateway.tipo");
if(tipoGW==null){
throw new Exception("Tipo del soggetto della rotta gateway "+defaultRoutes[i]+" non definito");
}else{
tipoGW = tipoGW.trim();
rg.setTipo(tipoGW);
}
String nomeGW = this.getValue("routingTable.default.route."+defaultRoutes[i]+".gateway.nome");
if(nomeGW==null){
throw new Exception("Tipo del soggetto della rotta gateway "+defaultRoutes[i]+" non definito");
}else{
nomeGW = nomeGW.trim();
rg.setNome(nomeGW);
}
route.setGateway(rg);
}
routingTable.getDefault().addRoute(route);
}
}
// Rotte statiche
if(staticRoutes!=null){
for (int i = 0; i < staticRoutes.length; i++) {
String tipoSoggettoDestinazione = this.getValue("routingTable.route."+staticRoutes[i]+".soggetto.tipo");
if(tipoSoggettoDestinazione==null){
throw new Exception("Tipo del soggetto della rotta statica "+staticRoutes[i]+" non definito");
}else{
tipoSoggettoDestinazione = tipoSoggettoDestinazione.trim();
}
String nomeSoggettoDestinazione = this.getValue("routingTable.route."+staticRoutes[i]+".soggetto.nome");
if(nomeSoggettoDestinazione==null){
throw new Exception("Nome del soggetto della rotta statica "+staticRoutes[i]+" non definito");
}else{
nomeSoggettoDestinazione = nomeSoggettoDestinazione.trim();
}
String valueEnable = this.getValue("routingTable.route."+staticRoutes[i]+".enabled");
if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
// Voglio eliminare tale rotta statica
for(int j=0; j<routingTable.sizeDestinazioneList(); j++){
if(tipoSoggettoDestinazione.equals(routingTable.getDestinazione(j).getTipo()) &&
nomeSoggettoDestinazione.equals(routingTable.getDestinazione(j).getNome()) ){
routingTable.removeDestinazione(j);
break;
}
}
}
else{
// Voglio creare/modificare una nuova rotta statica
RoutingTableDestinazione rtd = null;
for(int j=0; j<routingTable.sizeDestinazioneList(); j++){
if(tipoSoggettoDestinazione.equals(routingTable.getDestinazione(j).getTipo()) &&
nomeSoggettoDestinazione.equals(routingTable.getDestinazione(j).getNome()) ){
rtd = routingTable.removeDestinazione(j);
break;
}
}
if(rtd==null){
// creo
rtd = new RoutingTableDestinazione();
rtd.setTipo(tipoSoggettoDestinazione);
rtd.setNome(nomeSoggettoDestinazione);
}
else{
// elimino le vecchie rotte
while(rtd.sizeRouteList()>0){
rtd.removeRoute(0);
}
}
Route route = new Route();
String tipo = this.getValue("routingTable.route."+staticRoutes[i]+".tipo");
if(tipo==null){
throw new Exception("Tipo della rotta statica "+staticRoutes[i]+" non definito");
}else{
tipo = tipo.trim();
}
if(!CostantiConfigurazione.ROUTE_REGISTRO.equals(tipo) && !CostantiConfigurazione.ROUTE_GATEWAY.equals(tipo)){
throw new Exception("Tipo della rotta statica "+staticRoutes[i]+" non corretto");
}
if(CostantiConfigurazione.ROUTE_REGISTRO.equals(tipo)){
RouteRegistro rr = new RouteRegistro();
String nome = this.getValue("routingTable.route."+staticRoutes[i]+".registro.nome");
if(nome!=null){
nome = nome.trim();
rr.setNome(nome);
}
route.setRegistro(rr);
}else{
RouteGateway rg = new RouteGateway();
String tipoGW = this.getValue("routingTable.route."+staticRoutes[i]+".gateway.tipo");
if(tipoGW==null){
throw new Exception("Tipo del soggetto della rotta statica di tipo gateway "+staticRoutes[i]+" non definito");
}else{
tipoGW = tipoGW.trim();
rg.setTipo(tipoGW);
}
String nomeGW = this.getValue("routingTable.route."+staticRoutes[i]+".gateway.nome");
if(nomeGW==null){
throw new Exception("Tipo del soggetto della rotta statica di tipo gateway "+staticRoutes[i]+" non definito");
}else{
nomeGW = nomeGW.trim();
rg.setNome(nomeGW);
}
route.setGateway(rg);
}
rtd.addRoute(route);
routingTable.addDestinazione(rtd);
}
}
}
return routingTable;
}catch(Exception e){
this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (RoutingTable): "+e.getMessage(),e);
throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (RoutingTable): "+e.getMessage(),e);
}
}
private boolean isStatoCacheDisabilitata(String prefix)throws Exception{
// **** Cache *****
String cacheAbilitata = this.getValue(prefix+".cache.enabled");
boolean cacheDisabilitata = false;
if(cacheAbilitata!=null){
if("false".equalsIgnoreCase(cacheAbilitata.trim())){
cacheDisabilitata = true;
}
}
return cacheDisabilitata;
}
private Cache readDatiCache(String prefix, Cache cacheParam)throws Exception{
// **** Cache *****
Cache cache = cacheParam;
if(this.isStatoCacheDisabilitata(prefix)==false){
String cacheDimensione = this.getValue(prefix+".cache.dimensione");
if(cacheDimensione!=null){
cacheDimensione = cacheDimensione.trim();
try{
Integer.parseInt(cacheDimensione);
}catch(Exception e){
throw new Exception("Valore impostato non corretto per "+prefix+".cache.dimensione");
}
}
String cacheAlgoritmo = this.getValue(prefix+".cache.algoritmo");
if(cacheAlgoritmo!=null){
cacheAlgoritmo = cacheAlgoritmo.trim();
if(!CostantiConfigurazione.CACHE_LRU.equals(cacheAlgoritmo) && !CostantiConfigurazione.CACHE_MRU.equals(cacheAlgoritmo)){
throw new Exception("Algoritmo impostato per la cache del "+prefix+" non corretto");
}
}
String cacheItemIdleTime = this.getValue(prefix+".cache.item-idle-time");
if(cacheItemIdleTime!=null){
cacheItemIdleTime = cacheItemIdleTime.trim();
try{
Integer.parseInt(cacheItemIdleTime);
}catch(Exception e){
throw new Exception("Valore impostato non corretto per "+prefix+".cache.item-idle-time");
}
}
String cacheItemLifeSecond = this.getValue(prefix+".cache.item-life-second");
if(cacheItemLifeSecond!=null){
cacheItemLifeSecond = cacheItemLifeSecond.trim();
try{
Integer.parseInt(cacheItemLifeSecond);
}catch(Exception e){
throw new Exception("Valore impostato non corretto per "+prefix+".cache.item-life-second");
}
}
if(cacheDimensione!=null || cacheAlgoritmo!=null || cacheItemIdleTime!=null || cacheItemLifeSecond!=null){
if(cache==null){
cache = new Cache();
}
if(cacheDimensione!=null){
cache.setDimensione(cacheDimensione);
}
if(cacheAlgoritmo!=null){
cache.setAlgoritmo(AlgoritmoCache.toEnumConstant(cacheAlgoritmo));
}
if(cacheItemIdleTime!=null){
cache.setItemIdleTime(cacheItemIdleTime);
}
if(cacheItemLifeSecond!=null){
cache.setItemLifeSecond(cacheItemLifeSecond);
}
}
}
return cache;
}
public AccessoRegistro updateAccessoRegistro(AccessoRegistro accessoRegistro)throws Exception{
if(!this.configLocal)
return accessoRegistro;
try{
// **** Cache *****
if(this.isStatoCacheDisabilitata("registro")){
accessoRegistro.setCache(null);
}
else{
// aggiorno dati
accessoRegistro.setCache(this.readDatiCache("registro", accessoRegistro.getCache()));
}
// **** Registri *****
String registriTmp = this.getValue("registri");
String [] registri = null;
if(registriTmp!=null){
registriTmp = registriTmp.trim();
registri = registriTmp.split(",");
if(registri!=null){
if(registri.length>0){
for (int i = 0; i < registri.length; i++) {
registri[i] = registri[i].trim();
}
}else{
registri = null;
}
}
}
if(registri!=null){
for (int i = 0; i < registri.length; i++) {
String nomeRegistro = this.getValue("registro."+registri[i]+".nome");
if(nomeRegistro==null){
throw new Exception("Nome del registro "+registri[i]+" non definito");
}else{
nomeRegistro = nomeRegistro.trim();
}
String valueEnable = this.getValue("registro."+registri[i]+".enabled");
if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
// Voglio eliminare tale registro
for(int j=0; j<accessoRegistro.sizeRegistroList(); j++){
if(nomeRegistro.equals(accessoRegistro.getRegistro(j).getNome()) ){
accessoRegistro.removeRegistro(j);
break;
}
}
}
else{
// Voglio creare/modificare un registro
AccessoRegistroRegistro registro = null;
for(int j=0; j<accessoRegistro.sizeRegistroList(); j++){
if(nomeRegistro.equals(accessoRegistro.getRegistro(j).getNome()) ){
registro = accessoRegistro.removeRegistro(j);
break;
}
}
if(registro==null){
// creo
registro = new AccessoRegistroRegistro();
registro.setNome(nomeRegistro);
}
String tipo = this.getValue("registro."+registri[i]+".tipo");
if(tipo==null){
throw new Exception("Tipo del registro "+registri[i]+" non definito");
}else{
tipo = tipo.trim();
}
if(!CostantiConfigurazione.REGISTRO_DB.equals(tipo) &&
!CostantiConfigurazione.REGISTRO_UDDI.equals(tipo) &&
!CostantiConfigurazione.REGISTRO_WEB.equals(tipo) &&
!CostantiConfigurazione.REGISTRO_WS.equals(tipo) &&
!CostantiConfigurazione.REGISTRO_XML.equals(tipo)){
throw new Exception("Tipo del registro "+registri[i]+" non corretto");
}
registro.setTipo(RegistroTipo.toEnumConstant(tipo));
String location = this.getValue("registro."+registri[i]+".location");
if(location==null){
throw new Exception("Location del registro "+registri[i]+" non definito");
}else{
location = location.trim();
}
registro.setLocation(location);
String username = this.getValue("registro."+registri[i]+".user");
if(username!=null){
username = username.trim();
if("".equals(username)){
registro.setUser(null);
}else{
registro.setUser(username);
}
}
String password = this.getValue("registro."+registri[i]+".password");
if(password!=null){
password = password.trim();
if("".equals(password)){
registro.setPassword(null);
}else{
registro.setPassword(password);
}
}
accessoRegistro.addRegistro(registro);
}
}
}
return accessoRegistro;
}catch(Exception e){
this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoRegistro): "+e.getMessage(),e);
throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoRegistro): "+e.getMessage(),e);
}
}
public AccessoConfigurazione updateAccessoConfigurazione(AccessoConfigurazione accessoConfigurazione)throws Exception{
if(!this.configLocal)
return accessoConfigurazione;
try{
// **** Cache *****
if(this.isStatoCacheDisabilitata("config")){
accessoConfigurazione.setCache(null);
}
else{
// aggiorno dati
accessoConfigurazione.setCache(this.readDatiCache("config", accessoConfigurazione.getCache()));
}
return accessoConfigurazione;
}catch(Exception e){
this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoConfigurazione): "+e.getMessage(),e);
throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoConfigurazione): "+e.getMessage(),e);
}
}
public AccessoDatiAutorizzazione updateAccessoDatiAutorizzazione(AccessoDatiAutorizzazione accessoDatiConfigurazione)throws Exception{
if(!this.configLocal)
return accessoDatiConfigurazione;
try{
// **** Cache *****
if(this.isStatoCacheDisabilitata("autorizzazione")){
accessoDatiConfigurazione.setCache(null);
}
else{
// aggiorno dati
accessoDatiConfigurazione.setCache(this.readDatiCache("autorizzazione", accessoDatiConfigurazione.getCache()));
}
return accessoDatiConfigurazione;
}catch(Exception e){
this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoDatiAutorizzazione): "+e.getMessage(),e);
throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoDatiAutorizzazione): "+e.getMessage(),e);
}
}
public AccessoDatiAutenticazione updateAccessoDatiAutenticazione(AccessoDatiAutenticazione accessoDatiConfigurazione)throws Exception{
if(!this.configLocal)
return accessoDatiConfigurazione;
try{
// **** Cache *****
if(this.isStatoCacheDisabilitata("autenticazione")){
accessoDatiConfigurazione.setCache(null);
}
else{
// aggiorno dati
accessoDatiConfigurazione.setCache(this.readDatiCache("autenticazione", accessoDatiConfigurazione.getCache()));
}
return accessoDatiConfigurazione;
}catch(Exception e){
this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoDatiAutenticazione): "+e.getMessage(),e);
throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoDatiAutenticazione): "+e.getMessage(),e);
}
}
public GestioneErrore updateGestioneErroreCooperazione(GestioneErrore gestioneErrore)throws Exception{
if(!this.configLocal)
return gestioneErrore;
try{
return updateGestioneErrore(gestioneErrore,"cooperazione");
}catch(Exception e){
this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (GestioneErrore Cooperazione): "+e.getMessage(),e);
throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (GestioneErrore Cooperazione): "+e.getMessage(),e);
}
}
public GestioneErrore updateGestioneErroreIntegrazione(GestioneErrore gestioneErrore)throws Exception{
if(!this.configLocal)
return gestioneErrore;
try{
return updateGestioneErrore(gestioneErrore,"integrazione");
}catch(Exception e){
this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (GestioneErrore Integrazione): "+e.getMessage(),e);
throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (GestioneErrore Integrazione): "+e.getMessage(),e);
}
}
private GestioneErrore updateGestioneErrore(GestioneErrore gestioneErrore,String tipo)throws Exception{
String gestioneErroreDefaultComportamento = this.getValue("gestioneErrore."+tipo+".comportamento");
if(gestioneErroreDefaultComportamento!=null){
gestioneErroreDefaultComportamento = gestioneErroreDefaultComportamento.trim();
if(!CostantiConfigurazione.GESTIONE_ERRORE_ACCETTA_MSG.equals(gestioneErroreDefaultComportamento) &&
!CostantiConfigurazione.GESTIONE_ERRORE_RISPEDISCI_MSG.equals(gestioneErroreDefaultComportamento) ){
throw new Exception("Comportamento di default per la gestione errore ("+tipo+") non correttamento fornito");
}
}
String gestioneErroreDefaultCadenzaRispedizione = this.getValue("gestioneErrore."+tipo+".cadenzaRispedizione");
if(gestioneErroreDefaultCadenzaRispedizione!=null){
gestioneErroreDefaultCadenzaRispedizione = gestioneErroreDefaultCadenzaRispedizione.trim();
try{
Integer.parseInt(gestioneErroreDefaultCadenzaRispedizione);
}catch(Exception e){
throw new Exception("Cadenza di rispedizione di default per la gestione errore ("+tipo+") non correttamento fornito");
}
}
String gestioneErroreCodiciTrasportoTmp = this.getValue("gestioneErrore."+tipo+".codiciTrasporto");
String [] gestioneErroreCodiciTrasporto = null;
if(gestioneErroreCodiciTrasportoTmp!=null){
gestioneErroreCodiciTrasportoTmp = gestioneErroreCodiciTrasportoTmp.trim();
gestioneErroreCodiciTrasporto = gestioneErroreCodiciTrasportoTmp.split(",");
if(gestioneErroreCodiciTrasporto!=null){
if(gestioneErroreCodiciTrasporto.length>0){
for (int i = 0; i < gestioneErroreCodiciTrasporto.length; i++) {
gestioneErroreCodiciTrasporto[i] = gestioneErroreCodiciTrasporto[i].trim();
}
}else{
gestioneErroreCodiciTrasporto = null;
}
}
}
String gestioneErroreFaultTmp = this.getValue("gestioneErrore."+tipo+".soapFault");
String [] gestioneErroreFault = null;
if(gestioneErroreFaultTmp!=null){
gestioneErroreFaultTmp = gestioneErroreFaultTmp.trim();
gestioneErroreFault = gestioneErroreFaultTmp.split(",");
if(gestioneErroreFault!=null){
if(gestioneErroreFault.length>0){
for (int i = 0; i < gestioneErroreFault.length; i++) {
gestioneErroreFault[i] = gestioneErroreFault[i].trim();
}
}else{
gestioneErroreFault = null;
}
}
}
if(gestioneErroreDefaultComportamento!=null || gestioneErroreDefaultCadenzaRispedizione!=null ||
gestioneErroreCodiciTrasporto!=null || gestioneErroreFault!=null ){
if(gestioneErroreDefaultComportamento==null){
throw new Exception("Comportamento di default deve essere fornito");
}
gestioneErrore = new GestioneErrore(); // Creo una nuova gestione di errore sovrascrivendo completamente quella vecchia!!!
gestioneErrore.setComportamento(GestioneErroreComportamento.toEnumConstant(gestioneErroreDefaultComportamento));
if(gestioneErroreDefaultCadenzaRispedizione!=null){
gestioneErrore.setCadenzaRispedizione(gestioneErroreDefaultCadenzaRispedizione);
}
if(gestioneErroreCodiciTrasporto!=null){
// codici di trasporto
for (int i = 0; i < gestioneErroreCodiciTrasporto.length; i++) {
GestioneErroreCodiceTrasporto ct = new GestioneErroreCodiceTrasporto();
String codiceTrasportoMinimo = this.getValue("gestioneErrore."+tipo+".codiceTrasporto."+gestioneErroreCodiciTrasporto[i]+".valoreMinimo");
if(codiceTrasportoMinimo!=null){
codiceTrasportoMinimo = codiceTrasportoMinimo.trim();
try{
Integer.parseInt(codiceTrasportoMinimo);
}catch(Exception e){
throw new Exception("Codice di trasporto minimo non correttaemnte definito la gestione errore ("+tipo+"), trasporto "+gestioneErroreCodiciTrasporto[i]);
}
ct.setValoreMinimo(Integer.valueOf(codiceTrasportoMinimo));
}
String codiceTrasportoMassimo = this.getValue("gestioneErrore."+tipo+".codiceTrasporto."+gestioneErroreCodiciTrasporto[i]+".valoreMassimo");
if(codiceTrasportoMassimo!=null){
codiceTrasportoMassimo = codiceTrasportoMassimo.trim();
try{
Integer.parseInt(codiceTrasportoMassimo);
}catch(Exception e){
throw new Exception("Codice di trasporto massimo non correttaemnte definito la gestione errore ("+tipo+"), trasporto "+gestioneErroreCodiciTrasporto[i]);
}
ct.setValoreMassimo(Integer.valueOf(codiceTrasportoMassimo));
}
if(codiceTrasportoMinimo==null && codiceTrasportoMassimo==null){
throw new Exception("Ne valore minimo, ne valore massimo fornito per la gestione errore ("+tipo+"), codice di trasporto "+gestioneErroreCodiciTrasporto[i]);
}
String codiceTrasportoComportamento = this.getValue("gestioneErrore."+tipo+".codiceTrasporto."+gestioneErroreCodiciTrasporto[i]+".comportamento");
if(codiceTrasportoComportamento!=null){
codiceTrasportoComportamento = codiceTrasportoComportamento.trim();
if(!CostantiConfigurazione.GESTIONE_ERRORE_ACCETTA_MSG.equals(codiceTrasportoComportamento) &&
!CostantiConfigurazione.GESTIONE_ERRORE_RISPEDISCI_MSG.equals(codiceTrasportoComportamento) ){
throw new Exception("Comportamento per la gestione errore ("+tipo+"), codice di trasporto "+gestioneErroreCodiciTrasporto[i]+" non correttamento fornito");
}
ct.setComportamento(GestioneErroreComportamento.toEnumConstant(codiceTrasportoComportamento));
}
String codiceTrasportoCadenza = this.getValue("gestioneErrore."+tipo+".codiceTrasporto."+gestioneErroreCodiciTrasporto[i]+".cadenzaRispedizione");
if(codiceTrasportoCadenza!=null){
codiceTrasportoCadenza = codiceTrasportoCadenza.trim();
try{
Integer.parseInt(gestioneErroreDefaultCadenzaRispedizione);
}catch(Exception e){
throw new Exception("Cadenza di rispedizione di default per la gestione errore ("+tipo+"), codice di trasporto "+gestioneErroreCodiciTrasporto[i]+" non correttamento fornito");
}
ct.setCadenzaRispedizione(codiceTrasportoCadenza);
}
gestioneErrore.addCodiceTrasporto(ct);
}
}
if(gestioneErroreFault!=null){
// fault soap
for (int i = 0; i < gestioneErroreFault.length; i++) {
GestioneErroreSoapFault fault = new GestioneErroreSoapFault();
String faultActor = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".faultActor");
if(faultActor!=null){
faultActor = faultActor.trim();
fault.setFaultActor(faultActor);
}
String faultCode = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".faultCode");
if(faultCode!=null){
faultCode = faultCode.trim();
fault.setFaultCode(faultCode);
}
String faultString = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".faultString");
if(faultString!=null){
faultString = faultString.trim();
fault.setFaultString(faultString);
}
String faultComportamento = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".comportamento");
if(faultComportamento!=null){
faultComportamento = faultComportamento.trim();
if(!CostantiConfigurazione.GESTIONE_ERRORE_ACCETTA_MSG.equals(faultComportamento) &&
!CostantiConfigurazione.GESTIONE_ERRORE_RISPEDISCI_MSG.equals(faultComportamento) ){
throw new Exception("Comportamento per la gestione errore ("+tipo+"), soapFault "+gestioneErroreFault[i]+" non correttamento fornito");
}
fault.setComportamento(GestioneErroreComportamento.toEnumConstant(faultComportamento));
}
String faultCadenza = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".cadenzaRispedizione");
if(faultCadenza!=null){
faultCadenza = faultCadenza.trim();
try{
Integer.parseInt(gestioneErroreDefaultCadenzaRispedizione);
}catch(Exception e){
throw new Exception("Cadenza di rispedizione di default per la gestione errore ("+tipo+"), soapFault "+gestioneErroreFault[i]+" non correttamento fornito");
}
fault.setCadenzaRispedizione(faultCadenza);
}
gestioneErrore.addSoapFault(fault);
}
}
}
return gestioneErrore;
}
public Configurazione updateConfigurazione(Configurazione configurazione)throws Exception{
if(!this.configLocal)
return configurazione;
try{
// validazione-buste
String validazioneBuste_stato = this.getValue("validazione.protocol.stato");
if(validazioneBuste_stato!=null){
validazioneBuste_stato = validazioneBuste_stato.trim();
if(!CostantiConfigurazione.STATO_CON_WARNING_ABILITATO.toString().equals(validazioneBuste_stato) &&
!CostantiConfigurazione.STATO_CON_WARNING_DISABILITATO.toString().equals(validazioneBuste_stato) &&
!CostantiConfigurazione.STATO_CON_WARNING_WARNING_ONLY.toString().equals(validazioneBuste_stato) ){
throw new Exception("Stato della validazione protocol non corretto");
}
}
String validazioneBuste_controllo = this.getValue("validazione.protocol.controllo");
if(validazioneBuste_controllo!=null){
validazioneBuste_controllo = validazioneBuste_controllo.trim();
if(!CostantiConfigurazione.VALIDAZIONE_PROTOCOL_LIVELLO_NORMALE.equals(validazioneBuste_controllo) &&
!CostantiConfigurazione.VALIDAZIONE_PROTOCOL_LIVELLO_RIGIDO.equals(validazioneBuste_controllo) ){
throw new Exception("Tipo di controllo della validazione protocol non corretto");
}
}
String validazioneBuste_profiloCollaborazione = this.getValue("validazione.protocol.profiloCollaborazione");
if(validazioneBuste_profiloCollaborazione!=null){
validazioneBuste_profiloCollaborazione = validazioneBuste_profiloCollaborazione.trim();
if(!CostantiConfigurazione.ABILITATO.equals(validazioneBuste_profiloCollaborazione) &&
!CostantiConfigurazione.DISABILITATO.equals(validazioneBuste_profiloCollaborazione) ){
throw new Exception("Stato della validazione del profilo di collaborazione protocol non corretto");
}
}
String validazioneBuste_manifestAttachments = this.getValue("validazione.protocol.manifestAttachments");
if(validazioneBuste_manifestAttachments!=null){
validazioneBuste_manifestAttachments = validazioneBuste_manifestAttachments.trim();
if(!CostantiConfigurazione.ABILITATO.equals(validazioneBuste_manifestAttachments) &&
!CostantiConfigurazione.DISABILITATO.equals(validazioneBuste_manifestAttachments) ){
throw new Exception("Stato della validazione del manifest degli attachments non corretto");
}
}
if(validazioneBuste_stato!=null || validazioneBuste_controllo!=null ||
validazioneBuste_profiloCollaborazione!=null || validazioneBuste_manifestAttachments!=null){
if(configurazione.getValidazioneBuste()==null){
configurazione.setValidazioneBuste(new ValidazioneBuste());
}
if(validazioneBuste_stato!=null){
configurazione.getValidazioneBuste().setStato(StatoFunzionalitaConWarning.toEnumConstant(validazioneBuste_stato));
}
if(validazioneBuste_controllo!=null){
configurazione.getValidazioneBuste().setControllo(ValidazioneBusteTipoControllo.toEnumConstant(validazioneBuste_controllo));
}
if(validazioneBuste_profiloCollaborazione!=null){
configurazione.getValidazioneBuste().setProfiloCollaborazione(StatoFunzionalita.toEnumConstant(validazioneBuste_profiloCollaborazione));
}
if(validazioneBuste_manifestAttachments!=null){
configurazione.getValidazioneBuste().setManifestAttachments(StatoFunzionalita.toEnumConstant(validazioneBuste_manifestAttachments));
}
}
// validazione-contenuti-applicativi
String validazioneContenutiApplicativi_stato = this.getValue("validazione.contenutiApplicativi.stato");
if(validazioneContenutiApplicativi_stato!=null){
validazioneContenutiApplicativi_stato = validazioneContenutiApplicativi_stato.trim();
if(!CostantiConfigurazione.STATO_CON_WARNING_ABILITATO.toString().equals(validazioneContenutiApplicativi_stato) &&
!CostantiConfigurazione.STATO_CON_WARNING_DISABILITATO.toString().equals(validazioneContenutiApplicativi_stato) &&
!CostantiConfigurazione.STATO_CON_WARNING_WARNING_ONLY.toString().equals(validazioneContenutiApplicativi_stato) ){
throw new Exception("Stato della validazione dei contenuti applicativi non corretto");
}
}
String validazioneContenutiApplicativi_tipo = this.getValue("validazione.contenutiApplicativi.tipo");
if(validazioneContenutiApplicativi_tipo!=null){
validazioneContenutiApplicativi_tipo = validazioneContenutiApplicativi_tipo.trim();
if(!CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_XSD.equals(validazioneContenutiApplicativi_tipo) &&
!CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_INTERFACE.equals(validazioneContenutiApplicativi_tipo) &&
!CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_OPENSPCOOP.equals(validazioneContenutiApplicativi_tipo) ){
throw new Exception("Tipo di controllo della validazione dei contenuti applicativi non corretto");
}
}
if(validazioneContenutiApplicativi_stato!=null || validazioneContenutiApplicativi_tipo!=null){
if(configurazione.getValidazioneContenutiApplicativi()==null){
configurazione.setValidazioneContenutiApplicativi(new ValidazioneContenutiApplicativi());
}
if(validazioneContenutiApplicativi_stato!=null){
configurazione.getValidazioneContenutiApplicativi().setStato(StatoFunzionalitaConWarning.toEnumConstant(validazioneContenutiApplicativi_stato));
}
if(validazioneContenutiApplicativi_tipo!=null){
configurazione.getValidazioneContenutiApplicativi().setTipo(ValidazioneContenutiApplicativiTipo.toEnumConstant(validazioneContenutiApplicativi_tipo));
}
}
// indirizzo telematico
String indirizzoRisposta_utilizzo = this.getValue("indirizzoRisposta.utilizzo");
if(indirizzoRisposta_utilizzo!=null){
indirizzoRisposta_utilizzo = indirizzoRisposta_utilizzo.trim();
if(!CostantiConfigurazione.ABILITATO.equals(indirizzoRisposta_utilizzo) &&
!CostantiConfigurazione.DISABILITATO.equals(indirizzoRisposta_utilizzo) ){
throw new Exception("Impostazione sull'utilizzo dell'indirizzo risposta non corretta");
}
if(configurazione.getIndirizzoRisposta()==null){
configurazione.setIndirizzoRisposta(new IndirizzoRisposta());
}
configurazione.getIndirizzoRisposta().setUtilizzo(StatoFunzionalita.toEnumConstant(indirizzoRisposta_utilizzo));
}
// Attachments
String attachments_gestioneManifest = this.getValue("attachments.gestioneManifest");
if(attachments_gestioneManifest!=null){
attachments_gestioneManifest = attachments_gestioneManifest.trim();
if(!CostantiConfigurazione.ABILITATO.equals(attachments_gestioneManifest) &&
!CostantiConfigurazione.DISABILITATO.equals(attachments_gestioneManifest) ){
throw new Exception("Impostazione sulla gestione del manifest non corretta");
}
if(configurazione.getAttachments()==null){
configurazione.setAttachments(new Attachments());
}
configurazione.getAttachments().setGestioneManifest(StatoFunzionalita.toEnumConstant(attachments_gestioneManifest));
}
// Risposte
String risposte_connection = this.getValue("risposte.connessione");
if(risposte_connection!=null){
risposte_connection = risposte_connection.trim();
if(!CostantiConfigurazione.CONNECTION_REPLY.equals(risposte_connection) &&
!CostantiConfigurazione.NEW_CONNECTION.equals(risposte_connection) ){
throw new Exception("Impostazione sulla gestione della connessione per le risposte non corretta");
}
if(configurazione.getRisposte()==null){
configurazione.setRisposte(new Risposte());
}
configurazione.getRisposte().setConnessione(TipoConnessioneRisposte.toEnumConstant(risposte_connection));
}
// InoltroBuste
String inoltroBuste_cadenza = this.getValue("inoltroBusteNonRiscontrate.cadenza");
if(inoltroBuste_cadenza!=null){
inoltroBuste_cadenza = inoltroBuste_cadenza.trim();
try{
Integer.parseInt(inoltroBuste_cadenza);
}catch(Exception e){
throw new Exception("Impostazione sulla cadenza per l'inoltro di buste non riscontrate non corretta");
}
if(configurazione.getInoltroBusteNonRiscontrate()==null){
configurazione.setInoltroBusteNonRiscontrate(new InoltroBusteNonRiscontrate());
}
configurazione.getInoltroBusteNonRiscontrate().setCadenza(inoltroBuste_cadenza);
}
// Messaggi diagnostici
String msgDiagnostici_livelloSeveritaLog4J = this.getValue("messaggiDiagnostici.livelloSeveritaLog4j");
if(msgDiagnostici_livelloSeveritaLog4J!=null){
msgDiagnostici_livelloSeveritaLog4J = msgDiagnostici_livelloSeveritaLog4J.trim();
if(!LogLevels.LIVELLO_ALL.equals(msgDiagnostici_livelloSeveritaLog4J) &&
!LogLevels.LIVELLO_DEBUG_HIGH.equals(msgDiagnostici_livelloSeveritaLog4J) &&
!LogLevels.LIVELLO_DEBUG_MEDIUM.equals(msgDiagnostici_livelloSeveritaLog4J)&&
!LogLevels.LIVELLO_DEBUG_LOW.equals(msgDiagnostici_livelloSeveritaLog4J)&&
!LogLevels.LIVELLO_ERROR_INTEGRATION.equals(msgDiagnostici_livelloSeveritaLog4J)&&
!LogLevels.LIVELLO_ERROR_PROTOCOL.equals(msgDiagnostici_livelloSeveritaLog4J)&&
!LogLevels.LIVELLO_FATAL.equals(msgDiagnostici_livelloSeveritaLog4J)&&
!LogLevels.LIVELLO_INFO_INTEGRATION.equals(msgDiagnostici_livelloSeveritaLog4J)&&
!LogLevels.LIVELLO_INFO_PROTOCOL.equals(msgDiagnostici_livelloSeveritaLog4J)&&
!LogLevels.LIVELLO_OFF.equals(msgDiagnostici_livelloSeveritaLog4J)){
throw new Exception("Impostazione sul livello log4j di severita dei messsaggi diagnostici emessi non corretta");
}
configurazione.getMessaggiDiagnostici().setSeveritaLog4j(Severita.toEnumConstant(msgDiagnostici_livelloSeveritaLog4J));
}
String msgDiagnostici_livelloSeverita = this.getValue("messaggiDiagnostici.livelloSeverita");
if(msgDiagnostici_livelloSeverita!=null){
msgDiagnostici_livelloSeverita = msgDiagnostici_livelloSeverita.trim();
if(!LogLevels.LIVELLO_ALL.equals(msgDiagnostici_livelloSeverita) &&
!LogLevels.LIVELLO_DEBUG_HIGH.equals(msgDiagnostici_livelloSeverita) &&
!LogLevels.LIVELLO_DEBUG_MEDIUM.equals(msgDiagnostici_livelloSeverita)&&
!LogLevels.LIVELLO_DEBUG_LOW.equals(msgDiagnostici_livelloSeverita)&&
!LogLevels.LIVELLO_ERROR_INTEGRATION.equals(msgDiagnostici_livelloSeverita)&&
!LogLevels.LIVELLO_ERROR_PROTOCOL.equals(msgDiagnostici_livelloSeverita)&&
!LogLevels.LIVELLO_FATAL.equals(msgDiagnostici_livelloSeverita)&&
!LogLevels.LIVELLO_INFO_INTEGRATION.equals(msgDiagnostici_livelloSeverita)&&
!LogLevels.LIVELLO_INFO_PROTOCOL.equals(msgDiagnostici_livelloSeverita)&&
!LogLevels.LIVELLO_OFF.equals(msgDiagnostici_livelloSeverita)){
throw new Exception("Impostazione sul livello di severita dei messsaggi diagnostici emessi non corretta");
}
configurazione.getMessaggiDiagnostici().setSeverita(Severita.toEnumConstant(msgDiagnostici_livelloSeverita));
}
// Messaggi diagnostici (Appender)
String msgDiagnosticiAppendersDisabledTmp = this.getValue("messaggiDiagnostici.appenders.disabled");
boolean disabilitatiMsgDiagnosticiAppenderOriginali = false;
if(msgDiagnosticiAppendersDisabledTmp!=null && "true".equals(msgDiagnosticiAppendersDisabledTmp)){
disabilitatiMsgDiagnosticiAppenderOriginali = true;
while(configurazione.getMessaggiDiagnostici().sizeOpenspcoopAppenderList()>0){
configurazione.getMessaggiDiagnostici().removeOpenspcoopAppender(0);
}
}
String msgDiagnosticiAppendersTmp = this.getValue("messaggiDiagnostici.appenders");
String [] msgDiagnosticiAppenders = null;
if(msgDiagnosticiAppendersTmp!=null){
msgDiagnosticiAppendersTmp = msgDiagnosticiAppendersTmp.trim();
msgDiagnosticiAppenders = msgDiagnosticiAppendersTmp.split(",");
if(msgDiagnosticiAppenders!=null){
if(msgDiagnosticiAppenders.length>0){
for (int i = 0; i < msgDiagnosticiAppenders.length; i++) {
msgDiagnosticiAppenders[i] = msgDiagnosticiAppenders[i].trim();
}
}else{
msgDiagnosticiAppenders = null;
}
}
}
if(msgDiagnosticiAppenders!=null){
for (int i = 0; i < msgDiagnosticiAppenders.length; i++) {
String tipo = this.getValue("messaggiDiagnostici.appender."+msgDiagnosticiAppenders[i]+".tipo");
if(tipo==null){
throw new Exception("Tipo dell'appender dei messaggi diagnostici "+msgDiagnosticiAppenders[i]+" non definito");
}else{
tipo = tipo.trim();
}
String valueEnable = this.getValue("messaggiDiagnostici.appender."+msgDiagnosticiAppenders[i]+".enabled");
if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
// Voglio eliminare tale appender
if(disabilitatiMsgDiagnosticiAppenderOriginali==false){
for(int j=0; j<configurazione.getMessaggiDiagnostici().sizeOpenspcoopAppenderList(); j++){
if(tipo.equals(configurazione.getMessaggiDiagnostici().getOpenspcoopAppender(j).getTipo()) ){
configurazione.getMessaggiDiagnostici().removeOpenspcoopAppender(j);
break;
}
}
}// else ho gia eliminato gli appenders originali
}
else{
// Voglio creare/modificare un appender
OpenspcoopAppender appender = null;
for(int j=0; j<configurazione.getMessaggiDiagnostici().sizeOpenspcoopAppenderList(); j++){
if(tipo.equals(configurazione.getMessaggiDiagnostici().getOpenspcoopAppender(j).getTipo()) ){
appender = configurazione.getMessaggiDiagnostici().removeOpenspcoopAppender(j);
break;
}
}
if(appender==null){
// creo
appender = new OpenspcoopAppender();
appender.setTipo(tipo);
}
// Elimino vecchie properties
while(appender.sizePropertyList()>0){
appender.removeProperty(0);
}
// Aggiunto nuove
Properties properties = this.readProperties("messaggiDiagnostici.appender."+msgDiagnosticiAppenders[i]+".property.");
Enumeration<?> keys = properties.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
Property ap = new Property();
ap.setNome(key);
ap.setValore(properties.getProperty(key));
appender.addProperty(ap);
}
configurazione.getMessaggiDiagnostici().addOpenspcoopAppender(appender);
}
}
}
// Tracciamento
String tracciamentoBuste = this.getValue("tracciamento.stato");
if(tracciamentoBuste!=null){
tracciamentoBuste = tracciamentoBuste.trim();
if(!CostantiConfigurazione.ABILITATO.equals(tracciamentoBuste) &&
!CostantiConfigurazione.DISABILITATO.equals(tracciamentoBuste)){
throw new Exception("Impostazione sul tracciamento buste non corretta");
}
}
String tracciamentoAppendersDisabledTmp = this.getValue("tracciamento.appenders.disabled");
boolean disabilitatiTracciamentoAppenderOriginali = false;
if(tracciamentoAppendersDisabledTmp!=null && "true".equals(tracciamentoAppendersDisabledTmp)){
disabilitatiTracciamentoAppenderOriginali = true;
if(configurazione.getTracciamento()!=null){
while(configurazione.getTracciamento().sizeOpenspcoopAppenderList()>0){
configurazione.getTracciamento().removeOpenspcoopAppender(0);
}
}
}
String tracciamentoAppendersTmp = this.getValue("tracciamento.appenders");
String [] tracciamentoAppenders = null;
if(tracciamentoAppendersTmp!=null){
tracciamentoAppendersTmp = tracciamentoAppendersTmp.trim();
tracciamentoAppenders = tracciamentoAppendersTmp.split(",");
if(tracciamentoAppenders!=null){
if(tracciamentoAppenders.length>0){
for (int i = 0; i < tracciamentoAppenders.length; i++) {
tracciamentoAppenders[i] = tracciamentoAppenders[i].trim();
}
}else{
tracciamentoAppenders = null;
}
}
}
if(tracciamentoBuste!=null ||
tracciamentoAppenders!=null){
if(configurazione.getTracciamento()==null){
configurazione.setTracciamento(new Tracciamento());
if(tracciamentoBuste==null){
configurazione.getTracciamento().setStato(CostantiConfigurazione.ABILITATO); // default
}
}
}
if(tracciamentoBuste!=null){
configurazione.getTracciamento().setStato(StatoFunzionalita.toEnumConstant(tracciamentoBuste));
}
if(tracciamentoAppenders!=null){
// Tracciamento appenders
for (int i = 0; i < tracciamentoAppenders.length; i++) {
String tipo = this.getValue("tracciamento.appender."+tracciamentoAppenders[i]+".tipo");
if(tipo==null){
throw new Exception("Tipo dell'appender delle tracce "+tracciamentoAppenders[i]+" non definito");
}else{
tipo = tipo.trim();
}
String valueEnable = this.getValue("tracciamento.appender."+tracciamentoAppenders[i]+".enabled");
if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
// Voglio eliminare tale appender
if(disabilitatiTracciamentoAppenderOriginali==false){
for(int j=0; j<configurazione.getTracciamento().sizeOpenspcoopAppenderList(); j++){
if(tipo.equals(configurazione.getTracciamento().getOpenspcoopAppender(j).getTipo()) ){
configurazione.getTracciamento().removeOpenspcoopAppender(j);
break;
}
}
}// else ho gia eliminato gli appenders originali
}
else{
// Voglio creare/modificare un appender
OpenspcoopAppender appender = null;
for(int j=0; j<configurazione.getTracciamento().sizeOpenspcoopAppenderList(); j++){
if(tipo.equals(configurazione.getTracciamento().getOpenspcoopAppender(j).getTipo()) ){
appender = configurazione.getTracciamento().removeOpenspcoopAppender(j);
break;
}
}
if(appender==null){
// creo
appender = new OpenspcoopAppender();
appender.setTipo(tipo);
}
// Elimino vecchie properties
while(appender.sizePropertyList()>0){
appender.removeProperty(0);
}
// Aggiunto nuove
Properties properties = this.readProperties("tracciamento.appender."+tracciamentoAppenders[i]+".property.");
Enumeration<?> keys = properties.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
Property ap = new Property();
ap.setNome(key);
ap.setValore(properties.getProperty(key));
appender.addProperty(ap);
}
configurazione.getTracciamento().addOpenspcoopAppender(appender);
}
}
}
// Dump
String dumpStato = this.getValue("dump.stato");
if(dumpStato!=null){
dumpStato = dumpStato.trim();
if(!CostantiConfigurazione.ABILITATO.equals(dumpStato) &&
!CostantiConfigurazione.DISABILITATO.equals(dumpStato)){
throw new Exception("Impostazione sul dump applicativo non corretta");
}
}
String dumpBinarioPortaDelegata = this.getValue("dump.dumpBinarioPortaDelegata");
if(dumpBinarioPortaDelegata!=null){
dumpBinarioPortaDelegata = dumpBinarioPortaDelegata.trim();
if(!CostantiConfigurazione.ABILITATO.equals(dumpBinarioPortaDelegata) &&
!CostantiConfigurazione.DISABILITATO.equals(dumpBinarioPortaDelegata)){
throw new Exception("Impostazione sul dump binario della porta delegata non corretta");
}
}
String dumpBinarioPortaApplicativa = this.getValue("dump.dumpBinarioPortaApplicativa");
if(dumpBinarioPortaApplicativa!=null){
dumpBinarioPortaApplicativa = dumpBinarioPortaApplicativa.trim();
if(!CostantiConfigurazione.ABILITATO.equals(dumpBinarioPortaApplicativa) &&
!CostantiConfigurazione.DISABILITATO.equals(dumpBinarioPortaApplicativa)){
throw new Exception("Impostazione sul dump binario della porta applicativa non corretta");
}
}
String dumpAppendersDisabledTmp = this.getValue("dump.appenders.disabled");
boolean disabilitatiDumpAppenderOriginali = false;
if(dumpAppendersDisabledTmp!=null && "true".equals(dumpAppendersDisabledTmp)){
disabilitatiDumpAppenderOriginali = true;
if(configurazione.getDump()!=null){
while(configurazione.getDump().sizeOpenspcoopAppenderList()>0){
configurazione.getDump().removeOpenspcoopAppender(0);
}
}
}
String dumpAppendersTmp = this.getValue("dump.appenders");
String [] dumpAppenders = null;
if(dumpAppendersTmp!=null){
dumpAppendersTmp = dumpAppendersTmp.trim();
dumpAppenders = dumpAppendersTmp.split(",");
if(dumpAppenders!=null){
if(dumpAppenders.length>0){
for (int i = 0; i < dumpAppenders.length; i++) {
dumpAppenders[i] = dumpAppenders[i].trim();
}
}else{
dumpAppenders = null;
}
}
}
if(dumpStato!=null ||
dumpBinarioPortaDelegata!=null || dumpBinarioPortaApplicativa!=null ||
dumpAppenders!=null){
if(configurazione.getDump()==null){
configurazione.setDump(new Dump());
if(dumpStato==null){
configurazione.getDump().setStato(CostantiConfigurazione.DISABILITATO); // default
}
}
}
if(dumpStato!=null){
configurazione.getDump().setStato(StatoFunzionalita.toEnumConstant(dumpStato));
}
if(dumpBinarioPortaDelegata!=null){
configurazione.getDump().setDumpBinarioPortaDelegata(StatoFunzionalita.toEnumConstant(dumpBinarioPortaDelegata));
}
if(dumpBinarioPortaApplicativa!=null){
configurazione.getDump().setDumpBinarioPortaApplicativa(StatoFunzionalita.toEnumConstant(dumpBinarioPortaApplicativa));
}
if(dumpAppenders!=null){
// Dump appenders
for (int i = 0; i < dumpAppenders.length; i++) {
String tipo = this.getValue("dump.appender."+dumpAppenders[i]+".tipo");
if(tipo==null){
throw new Exception("Tipo dell'appender del dump "+dumpAppenders[i]+" non definito");
}else{
tipo = tipo.trim();
}
String valueEnable = this.getValue("dump.appender."+dumpAppenders[i]+".enabled");
if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
// Voglio eliminare tale appender
if(disabilitatiDumpAppenderOriginali==false){
for(int j=0; j<configurazione.getDump().sizeOpenspcoopAppenderList(); j++){
if(tipo.equals(configurazione.getDump().getOpenspcoopAppender(j).getTipo()) ){
configurazione.getDump().removeOpenspcoopAppender(j);
break;
}
}
}// else ho gia eliminato gli appenders originali
}
else{
// Voglio creare/modificare un appender
OpenspcoopAppender appender = null;
for(int j=0; j<configurazione.getDump().sizeOpenspcoopAppenderList(); j++){
if(tipo.equals(configurazione.getDump().getOpenspcoopAppender(j).getTipo()) ){
appender = configurazione.getDump().removeOpenspcoopAppender(j);
break;
}
}
if(appender==null){
// creo
appender = new OpenspcoopAppender();
appender.setTipo(tipo);
}
// Elimino vecchie properties
while(appender.sizePropertyList()>0){
appender.removeProperty(0);
}
// Aggiunto nuove
Properties properties = this.readProperties("dump.appender."+dumpAppenders[i]+".property.");
Enumeration<?> keys = properties.keys();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
Property ap = new Property();
ap.setNome(key);
ap.setValore(properties.getProperty(key));
appender.addProperty(ap);
}
configurazione.getDump().addOpenspcoopAppender(appender);
}
}
}
// regole di dump
// *** Backward Compatibility ****
setDump(dumpStato, configurazione);
setDump(dumpStato, configurazione, true);
setDump(dumpStato, configurazione, false);
// IntegrationManager
String integrationManager_autenticazione = this.getValue("integrationManager.autenticazione");
if(integrationManager_autenticazione!=null){
integrationManager_autenticazione = integrationManager_autenticazione.trim();
if(configurazione.getIntegrationManager()==null){
configurazione.setIntegrationManager(new IntegrationManager());
}
configurazione.getIntegrationManager().setAutenticazione(integrationManager_autenticazione);
}
return configurazione;
}catch(Exception e){
this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (Configurazione): "+e.getMessage(),e);
throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (Configurazione): "+e.getMessage(),e);
}
}
@SuppressWarnings("deprecation")
private void setDump(String dumpStato, Configurazione configurazione) throws Exception {
String dumpRealtime = this.getValue("dump.realtime");
if(dumpRealtime!=null){
dumpRealtime = dumpRealtime.trim();
if(!CostantiConfigurazione.ABILITATO.equals(dumpStato) &&
!CostantiConfigurazione.DISABILITATO.equals(dumpStato)){
throw new Exception("Impostazione sul dump realtime non corretta");
}
}
DumpConfigurazioneRegola regolaRequestIn = this.readRegola("request", "in", true);
DumpConfigurazioneRegola regolaRequestOut = this.readRegola("request", "out", true);
DumpConfigurazioneRegola regolaResponseIn = this.readRegola("response", "in", true);
DumpConfigurazioneRegola regolaResponseOut = this.readRegola("response", "out", true);
if(dumpRealtime!=null ||
regolaRequestIn!=null || regolaRequestOut!=null ||
regolaResponseIn!=null || regolaResponseOut!=null ) {
if(configurazione.getDump()==null){
configurazione.setDump(new Dump());
if(dumpStato==null){
configurazione.getDump().setStato(CostantiConfigurazione.DISABILITATO); // default
}
}
if(configurazione.getDump().getConfigurazione()==null){
configurazione.getDump().setConfigurazione(new DumpConfigurazione());
}
}
if(dumpRealtime!=null) {
configurazione.getDump().getConfigurazione().setRealtime(StatoFunzionalita.toEnumConstant(dumpRealtime));
}
if(regolaRequestIn!=null) {
configurazione.getDump().getConfigurazione().setRichiestaIngresso(regolaRequestIn);
}
if(regolaRequestOut!=null) {
configurazione.getDump().getConfigurazione().setRichiestaUscita(regolaRequestOut);
}
if(regolaResponseIn!=null) {
configurazione.getDump().getConfigurazione().setRispostaIngresso(regolaResponseIn);
}
if(regolaResponseOut!=null) {
configurazione.getDump().getConfigurazione().setRispostaUscita(regolaResponseOut);
}
}
private void setDump(String dumpStato, Configurazione configurazione, boolean erogazioni) throws Exception {
String tipo = erogazioni ? "erogazioni" : "fruizioni";
String dumpRealtime = this.getValue("dump."+tipo+".realtime");
if(dumpRealtime!=null){
dumpRealtime = dumpRealtime.trim();
if(!CostantiConfigurazione.ABILITATO.equals(dumpStato) &&
!CostantiConfigurazione.DISABILITATO.equals(dumpStato)){
throw new Exception("Impostazione sul dump realtime non corretta");
}
}
DumpConfigurazioneRegola regolaRequestIn = this.readRegola(tipo+".request", "in", false);
DumpConfigurazioneRegola regolaRequestOut = this.readRegola(tipo+".request", "out", false);
DumpConfigurazioneRegola regolaResponseIn = this.readRegola(tipo+".response", "in", false);
DumpConfigurazioneRegola regolaResponseOut = this.readRegola(tipo+".response", "out", false);
if(dumpRealtime!=null ||
regolaRequestIn!=null || regolaRequestOut!=null ||
regolaResponseIn!=null || regolaResponseOut!=null ) {
if(configurazione.getDump()==null){
configurazione.setDump(new Dump());
if(dumpStato==null){
configurazione.getDump().setStato(CostantiConfigurazione.DISABILITATO); // default
}
}
if(erogazioni) {
if(configurazione.getDump().getConfigurazionePortaApplicativa()==null){
configurazione.getDump().setConfigurazionePortaApplicativa(new DumpConfigurazione());
}
}
else {
if(configurazione.getDump().getConfigurazionePortaDelegata()==null){
configurazione.getDump().setConfigurazionePortaDelegata(new DumpConfigurazione());
}
}
}
if(erogazioni) {
if(dumpRealtime!=null) {
configurazione.getDump().getConfigurazionePortaApplicativa().setRealtime(StatoFunzionalita.toEnumConstant(dumpRealtime));
}
if(regolaRequestIn!=null) {
configurazione.getDump().getConfigurazionePortaApplicativa().setRichiestaIngresso(regolaRequestIn);
}
if(regolaRequestOut!=null) {
configurazione.getDump().getConfigurazionePortaApplicativa().setRichiestaUscita(regolaRequestOut);
}
if(regolaResponseIn!=null) {
configurazione.getDump().getConfigurazionePortaApplicativa().setRispostaIngresso(regolaResponseIn);
}
if(regolaResponseOut!=null) {
configurazione.getDump().getConfigurazionePortaApplicativa().setRispostaUscita(regolaResponseOut);
}
}
else {
if(dumpRealtime!=null) {
configurazione.getDump().getConfigurazionePortaDelegata().setRealtime(StatoFunzionalita.toEnumConstant(dumpRealtime));
}
if(regolaRequestIn!=null) {
configurazione.getDump().getConfigurazionePortaDelegata().setRichiestaIngresso(regolaRequestIn);
}
if(regolaRequestOut!=null) {
configurazione.getDump().getConfigurazionePortaDelegata().setRichiestaUscita(regolaRequestOut);
}
if(regolaResponseIn!=null) {
configurazione.getDump().getConfigurazionePortaDelegata().setRispostaIngresso(regolaResponseIn);
}
if(regolaResponseOut!=null) {
configurazione.getDump().getConfigurazionePortaDelegata().setRispostaUscita(regolaResponseOut);
}
}
}
private DumpConfigurazioneRegola readRegola(String flow, String inOut, boolean backwardCompatibility) throws Exception {
DumpConfigurazioneRegola regola = null;
String payload = this.getValue("dump."+flow+"."+inOut+".payload");
if(payload!=null){
payload = payload.trim();
if(!CostantiConfigurazione.ABILITATO.equals(payload) &&
!CostantiConfigurazione.DISABILITATO.equals(payload)){
throw new Exception("Impostazione sul dump payload ("+flow+"."+inOut+") non corretta");
}
}
String payload_parsing = this.getValue("dump."+flow+"."+inOut+".payload-parsing");
if(payload_parsing!=null){
payload_parsing = payload_parsing.trim();
if(!CostantiConfigurazione.ABILITATO.equals(payload_parsing) &&
!CostantiConfigurazione.DISABILITATO.equals(payload_parsing)){
throw new Exception("Impostazione sul dump payload-parsing ("+flow+"."+inOut+") non corretta");
}
}
String body = this.getValue("dump."+flow+"."+inOut+".body");
if(body!=null){
body = body.trim();
if(!CostantiConfigurazione.ABILITATO.equals(body) &&
!CostantiConfigurazione.DISABILITATO.equals(body)){
throw new Exception("Impostazione sul dump body ("+flow+"."+inOut+") non corretta");
}
}
String attachments = this.getValue("dump."+flow+"."+inOut+".attachments");
if(attachments!=null){
attachments = attachments.trim();
if(!CostantiConfigurazione.ABILITATO.equals(attachments) &&
!CostantiConfigurazione.DISABILITATO.equals(attachments)){
throw new Exception("Impostazione sul dump attachments ("+flow+"."+inOut+") non corretta");
}
}
String headers = this.getValue("dump."+flow+"."+inOut+".headers");
if(headers!=null){
headers = headers.trim();
if(!CostantiConfigurazione.ABILITATO.equals(headers) &&
!CostantiConfigurazione.DISABILITATO.equals(headers)){
throw new Exception("Impostazione sul dump headers ("+flow+"."+inOut+") non corretta");
}
}
if(backwardCompatibility) {
if(body!=null || attachments!=null || headers!=null){
regola = new DumpConfigurazioneRegola();
}
if(regola!=null) {
if(body!=null) {
regola.setBody(StatoFunzionalita.toEnumConstant(body));
}
if(attachments!=null) {
regola.setAttachments(StatoFunzionalita.toEnumConstant(attachments));
}
if(StatoFunzionalita.ABILITATO.equals(regola.getBody()) || StatoFunzionalita.ABILITATO.equals(regola.getAttachments())) {
regola.setPayload(StatoFunzionalita.ABILITATO);
regola.setPayloadParsing(StatoFunzionalita.ABILITATO);
}
else {
regola.setPayload(StatoFunzionalita.DISABILITATO);
regola.setPayloadParsing(StatoFunzionalita.DISABILITATO);
}
}
}
else {
if(payload!=null || payload_parsing!=null || body!=null || attachments!=null || headers!=null){
regola = new DumpConfigurazioneRegola();
}
if(regola!=null) {
if(payload!=null) {
regola.setPayload(StatoFunzionalita.toEnumConstant(payload));
}
if(StatoFunzionalita.ABILITATO.equals(regola.getPayload())){
if(payload_parsing!=null) {
regola.setPayloadParsing(StatoFunzionalita.toEnumConstant(payload_parsing));
}
if(StatoFunzionalita.ABILITATO.equals(regola.getPayloadParsing())){
if(body!=null) {
regola.setBody(StatoFunzionalita.toEnumConstant(body));
}
if(attachments!=null) {
regola.setAttachments(StatoFunzionalita.toEnumConstant(attachments));
}
}
else {
regola.setBody(StatoFunzionalita.DISABILITATO);
regola.setAttachments(StatoFunzionalita.DISABILITATO);
}
}
else {
regola.setPayloadParsing(StatoFunzionalita.DISABILITATO);
regola.setBody(StatoFunzionalita.DISABILITATO);
regola.setAttachments(StatoFunzionalita.DISABILITATO);
}
}
}
if(regola!=null && headers!=null) {
regola.setHeaders(StatoFunzionalita.toEnumConstant(headers));
}
return regola;
}
}