ConfigLocalProperties.java

  1. /*
  2.  * GovWay - A customizable API Gateway
  3.  * https://govway.org
  4.  *
  5.  * Copyright (c) 2005-2025 Link.it srl (https://link.it).
  6.  *
  7.  * This program is free software: you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License version 3, as published by
  9.  * the Free Software Foundation.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  *
  19.  */


  20. package org.openspcoop2.pdd.config;

  21. import java.util.Enumeration;
  22. import java.util.Properties;

  23. import org.slf4j.Logger;
  24. import org.openspcoop2.core.config.AccessoConfigurazione;
  25. import org.openspcoop2.core.config.AccessoDatiAutenticazione;
  26. import org.openspcoop2.core.config.AccessoDatiAutorizzazione;
  27. import org.openspcoop2.core.config.AccessoRegistro;
  28. import org.openspcoop2.core.config.AccessoRegistroRegistro;
  29. import org.openspcoop2.core.config.Attachments;
  30. import org.openspcoop2.core.config.Cache;
  31. import org.openspcoop2.core.config.Configurazione;
  32. import org.openspcoop2.core.config.Dump;
  33. import org.openspcoop2.core.config.DumpConfigurazione;
  34. import org.openspcoop2.core.config.DumpConfigurazioneRegola;
  35. import org.openspcoop2.core.config.GestioneErrore;
  36. import org.openspcoop2.core.config.GestioneErroreCodiceTrasporto;
  37. import org.openspcoop2.core.config.GestioneErroreSoapFault;
  38. import org.openspcoop2.core.config.IndirizzoRisposta;
  39. import org.openspcoop2.core.config.InoltroBusteNonRiscontrate;
  40. import org.openspcoop2.core.config.IntegrationManager;
  41. import org.openspcoop2.core.config.OpenspcoopAppender;
  42. import org.openspcoop2.core.config.Property;
  43. import org.openspcoop2.core.config.Risposte;
  44. import org.openspcoop2.core.config.Route;
  45. import org.openspcoop2.core.config.RouteGateway;
  46. import org.openspcoop2.core.config.RouteRegistro;
  47. import org.openspcoop2.core.config.RoutingTable;
  48. import org.openspcoop2.core.config.RoutingTableDefault;
  49. import org.openspcoop2.core.config.RoutingTableDestinazione;
  50. import org.openspcoop2.core.config.Tracciamento;
  51. import org.openspcoop2.core.config.ValidazioneBuste;
  52. import org.openspcoop2.core.config.ValidazioneContenutiApplicativi;
  53. import org.openspcoop2.core.config.constants.AlgoritmoCache;
  54. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  55. import org.openspcoop2.core.config.constants.GestioneErroreComportamento;
  56. import org.openspcoop2.core.config.constants.RegistroTipo;
  57. import org.openspcoop2.core.config.constants.Severita;
  58. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  59. import org.openspcoop2.core.config.constants.StatoFunzionalitaConWarning;
  60. import org.openspcoop2.core.config.constants.TipoConnessioneRisposte;
  61. import org.openspcoop2.core.config.constants.ValidazioneBusteTipoControllo;
  62. import org.openspcoop2.core.config.constants.ValidazioneContenutiApplicativiTipo;
  63. import org.openspcoop2.pdd.core.CostantiPdD;
  64. import org.openspcoop2.pdd.logger.LogLevels;
  65. import org.openspcoop2.utils.properties.CollectionProperties;
  66. import org.openspcoop2.utils.properties.InstanceProperties;
  67. import org.openspcoop2.utils.properties.PropertiesUtilities;


  68. /**
  69. * ConfigLocalProperties
  70. *
  71. * @author Andrea Poli (apoli@link.it)
  72.  * @author $Author$
  73.  * @version $Rev$, $Date$
  74. */

  75. public class ConfigLocalProperties extends InstanceProperties {

  76.     private boolean configLocal = false;
  77.    
  78.     public ConfigLocalProperties(Logger log,String confDir,Properties prop) {
  79.        
  80.         super(CostantiPdD.OPENSPCOOP2_LOCAL_HOME,new Properties(), log);  // L'originale del file config non esiste, e' su file XML o su database
  81.        
  82.         CollectionProperties properties =
  83.                 PropertiesUtilities.searchLocalImplementation(CostantiPdD.OPENSPCOOP2_LOCAL_HOME,log, CostantiPdD.OPENSPCOOP2_CONFIG_PROPERTIES , CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH, confDir);
  84.         if(properties!=null){
  85.             this.configLocal = true;
  86.             this.setLocalFileImplementation(properties);
  87.         }
  88.        
  89.         if(prop!=null){
  90.             this.configLocal = true;
  91.             this.setLocalObjectImplementation(prop);
  92.         }
  93.        
  94.     }
  95.        
  96.     public RoutingTable updateRouting(RoutingTable routingTable) throws Exception{
  97.        
  98.         if(!this.configLocal)
  99.             return routingTable;
  100.        
  101.         try{
  102.                    
  103.             // Abiltata?
  104.             String enabled = this.getValue("routingTable.enabled");
  105.             if(enabled!=null){
  106.                 enabled = enabled.trim();
  107.                 if("false".equals(enabled)){
  108.                     if(routingTable==null)
  109.                         routingTable = new RoutingTable();
  110.                     routingTable.setAbilitata(false);
  111.                     return routingTable;
  112.                 }
  113.             }
  114.            
  115.             // Properties
  116.             String defaultRoutesTmp = this.getValue("routingTable.default.routes");
  117.             String [] defaultRoutes = null;
  118.             if(defaultRoutesTmp!=null && defaultRoutesTmp.length()>0){
  119.                 defaultRoutes = defaultRoutesTmp.split(",");
  120.                 if(defaultRoutes!=null){
  121.                     if(defaultRoutes.length>0){
  122.                         for (int i = 0; i < defaultRoutes.length; i++) {
  123.                             defaultRoutes[i] = defaultRoutes[i].trim();
  124.                         }
  125.                     }else{
  126.                         defaultRoutes = null;
  127.                     }
  128.                 }
  129.             }
  130.            
  131.             String staticRoutesTmp = this.getValue("routingTable.routes");
  132.             String [] staticRoutes = null;
  133.             if(staticRoutesTmp!=null && staticRoutesTmp.length()>0){
  134.                 staticRoutes = staticRoutesTmp.split(",");
  135.                 if(staticRoutes!=null){
  136.                     if(staticRoutes.length>0){
  137.                         for (int i = 0; i < staticRoutes.length; i++) {
  138.                             staticRoutes[i] = staticRoutes[i].trim();
  139.                         }
  140.                     }else{
  141.                         staticRoutes = null;
  142.                     }
  143.                 }
  144.             }
  145.            
  146.             if(defaultRoutes!=null || staticRoutesTmp!=null){
  147.            
  148.                 if(enabled==null){
  149.                     throw new Exception("Indicazione se la tabella di routing e' abilitata o meno non fornita");
  150.                 }
  151.                 if(!"true".equals(enabled) && !"false".equals(enabled) ){
  152.                     throw new Exception("Indicazione se la tabella di routing e' abilitata o meno fornita non correttamente");
  153.                 }
  154.                 if(routingTable==null){
  155.                    
  156.                     // Se la configurazione originale non forniva routing table, il local env deve definire il default
  157.                     if(defaultRoutes==null){
  158.                         throw new Exception("Rotte di default non definite");
  159.                     }
  160.                    
  161.                     routingTable = new RoutingTable();
  162.                 }
  163.                 routingTable.setAbilitata("true".equals(enabled));
  164.             }
  165.            
  166.            
  167.             // Default
  168.             if(defaultRoutes!=null){
  169.                
  170.                 // elimino vecchie rotte di default
  171.                 if(routingTable.getDefault()!=null){
  172.                     while(routingTable.getDefault().sizeRouteList()>0){
  173.                         routingTable.getDefault().removeRoute(0);
  174.                     }
  175.                 }
  176.                
  177.                 if(defaultRoutes.length>0){
  178.                     if(routingTable.getDefault()==null){
  179.                         routingTable.setDefault(new RoutingTableDefault());
  180.                     }
  181.                 }
  182.                
  183.                 for (int i = 0; i < defaultRoutes.length; i++) {
  184.                    
  185.                     Route route = new Route();
  186.                    
  187.                     String tipo = this.getValue("routingTable.default.route."+defaultRoutes[i]+".tipo");
  188.                     if(tipo==null){
  189.                         throw new Exception("Tipo della rotta "+defaultRoutes[i]+" non definito");
  190.                     }else{
  191.                         tipo = tipo.trim();
  192.                     }
  193.                     if(!CostantiConfigurazione.ROUTE_REGISTRO.equals(tipo) && !CostantiConfigurazione.ROUTE_GATEWAY.equals(tipo)){
  194.                         throw new Exception("Tipo della rotta "+defaultRoutes[i]+" non corretto");
  195.                     }
  196.                    
  197.                     if(CostantiConfigurazione.ROUTE_REGISTRO.equals(tipo)){
  198.                        
  199.                         RouteRegistro rr = new RouteRegistro();                
  200.                         String nome = this.getValue("routingTable.default.route."+defaultRoutes[i]+".registro.nome");
  201.                         if(nome!=null){
  202.                             nome = nome.trim();
  203.                             rr.setNome(nome);
  204.                         }
  205.                         route.setRegistro(rr);
  206.                        
  207.                     }else{
  208.                        
  209.                         RouteGateway rg = new RouteGateway();
  210.                         String tipoGW = this.getValue("routingTable.default.route."+defaultRoutes[i]+".gateway.tipo");
  211.                         if(tipoGW==null){
  212.                             throw new Exception("Tipo del soggetto della rotta gateway "+defaultRoutes[i]+" non definito");
  213.                         }else{
  214.                             tipoGW = tipoGW.trim();
  215.                             rg.setTipo(tipoGW);
  216.                         }
  217.                         String nomeGW = this.getValue("routingTable.default.route."+defaultRoutes[i]+".gateway.nome");
  218.                         if(nomeGW==null){
  219.                             throw new Exception("Tipo del soggetto della rotta gateway "+defaultRoutes[i]+" non definito");
  220.                         }else{
  221.                             nomeGW = nomeGW.trim();
  222.                             rg.setNome(nomeGW);
  223.                         }
  224.                         route.setGateway(rg);
  225.                     }
  226.                    
  227.                     routingTable.getDefault().addRoute(route);

  228.                 }
  229.             }
  230.            
  231.            
  232.             // Rotte statiche
  233.             if(staticRoutes!=null){
  234.                
  235.                 for (int i = 0; i < staticRoutes.length; i++) {
  236.                    
  237.                     String tipoSoggettoDestinazione = this.getValue("routingTable.route."+staticRoutes[i]+".soggetto.tipo");
  238.                     if(tipoSoggettoDestinazione==null){
  239.                         throw new Exception("Tipo del soggetto della rotta statica "+staticRoutes[i]+" non definito");
  240.                     }else{
  241.                         tipoSoggettoDestinazione = tipoSoggettoDestinazione.trim();
  242.                     }
  243.                     String nomeSoggettoDestinazione = this.getValue("routingTable.route."+staticRoutes[i]+".soggetto.nome");
  244.                     if(nomeSoggettoDestinazione==null){
  245.                         throw new Exception("Nome del soggetto della rotta statica "+staticRoutes[i]+" non definito");
  246.                     }else{
  247.                         nomeSoggettoDestinazione = nomeSoggettoDestinazione.trim();
  248.                     }
  249.                    
  250.                     String valueEnable = this.getValue("routingTable.route."+staticRoutes[i]+".enabled");
  251.                     if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
  252.                         // Voglio eliminare tale rotta statica
  253.                         for(int j=0; j<routingTable.sizeDestinazioneList(); j++){
  254.                             if(tipoSoggettoDestinazione.equals(routingTable.getDestinazione(j).getTipo()) &&
  255.                                     nomeSoggettoDestinazione.equals(routingTable.getDestinazione(j).getNome()) ){
  256.                                 routingTable.removeDestinazione(j);
  257.                                 break;
  258.                             }
  259.                         }
  260.                     }
  261.                     else{
  262.                         // Voglio creare/modificare una nuova rotta statica
  263.                         RoutingTableDestinazione rtd = null;
  264.                         for(int j=0; j<routingTable.sizeDestinazioneList(); j++){
  265.                             if(tipoSoggettoDestinazione.equals(routingTable.getDestinazione(j).getTipo()) &&
  266.                                     nomeSoggettoDestinazione.equals(routingTable.getDestinazione(j).getNome()) ){
  267.                                 rtd = routingTable.removeDestinazione(j);
  268.                                 break;
  269.                             }
  270.                         }
  271.                         if(rtd==null){
  272.                             // creo
  273.                             rtd = new RoutingTableDestinazione();
  274.                             rtd.setTipo(tipoSoggettoDestinazione);
  275.                             rtd.setNome(nomeSoggettoDestinazione);
  276.                         }
  277.                         else{
  278.                             // elimino le vecchie rotte
  279.                             while(rtd.sizeRouteList()>0){
  280.                                 rtd.removeRoute(0);
  281.                             }
  282.                         }
  283.    
  284.                         Route route = new Route();
  285.                        
  286.                         String tipo = this.getValue("routingTable.route."+staticRoutes[i]+".tipo");
  287.                         if(tipo==null){
  288.                             throw new Exception("Tipo della rotta statica "+staticRoutes[i]+" non definito");
  289.                         }else{
  290.                             tipo = tipo.trim();
  291.                         }
  292.                         if(!CostantiConfigurazione.ROUTE_REGISTRO.equals(tipo) && !CostantiConfigurazione.ROUTE_GATEWAY.equals(tipo)){
  293.                             throw new Exception("Tipo della rotta statica "+staticRoutes[i]+" non corretto");
  294.                         }
  295.                        
  296.                         if(CostantiConfigurazione.ROUTE_REGISTRO.equals(tipo)){
  297.                            
  298.                             RouteRegistro rr = new RouteRegistro();                
  299.                             String nome = this.getValue("routingTable.route."+staticRoutes[i]+".registro.nome");
  300.                             if(nome!=null){
  301.                                 nome = nome.trim();
  302.                                 rr.setNome(nome);
  303.                             }
  304.                             route.setRegistro(rr);
  305.                            
  306.                         }else{
  307.                            
  308.                             RouteGateway rg = new RouteGateway();
  309.                             String tipoGW = this.getValue("routingTable.route."+staticRoutes[i]+".gateway.tipo");
  310.                             if(tipoGW==null){
  311.                                 throw new Exception("Tipo del soggetto della rotta statica di tipo gateway "+staticRoutes[i]+" non definito");
  312.                             }else{
  313.                                 tipoGW = tipoGW.trim();
  314.                                 rg.setTipo(tipoGW);
  315.                             }
  316.                             String nomeGW = this.getValue("routingTable.route."+staticRoutes[i]+".gateway.nome");
  317.                             if(nomeGW==null){
  318.                                 throw new Exception("Tipo del soggetto della rotta statica di tipo gateway "+staticRoutes[i]+" non definito");
  319.                             }else{
  320.                                 nomeGW = nomeGW.trim();
  321.                                 rg.setNome(nomeGW);
  322.                             }
  323.                             route.setGateway(rg);
  324.                         }
  325.                        
  326.                         rtd.addRoute(route);
  327.                         routingTable.addDestinazione(rtd);
  328.                     }
  329.                    
  330.                 }
  331.                
  332.             }
  333.            
  334.             return routingTable;
  335.            
  336.         }catch(Exception e){
  337.             this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (RoutingTable): "+e.getMessage(),e);
  338.             throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (RoutingTable): "+e.getMessage(),e);
  339.         }
  340.     }
  341.    
  342.     private boolean isStatoCacheDisabilitata(String prefix)throws Exception{
  343.         // **** Cache *****
  344.         String cacheAbilitata = this.getValue(prefix+".cache.enabled");
  345.         boolean cacheDisabilitata = false;
  346.         if(cacheAbilitata!=null){
  347.             if("false".equalsIgnoreCase(cacheAbilitata.trim())){
  348.                 cacheDisabilitata = true;
  349.             }
  350.         }
  351.         return cacheDisabilitata;
  352.     }
  353.    
  354.     private Cache readDatiCache(String prefix, Cache cacheParam)throws Exception{
  355.         // **** Cache *****
  356.         Cache cache = cacheParam;
  357.        
  358.         if(this.isStatoCacheDisabilitata(prefix)==false){
  359.             String cacheDimensione = this.getValue(prefix+".cache.dimensione");
  360.             if(cacheDimensione!=null){
  361.                 cacheDimensione = cacheDimensione.trim();
  362.                 try{
  363.                     Integer.parseInt(cacheDimensione);
  364.                 }catch(Exception e){
  365.                     throw new Exception("Valore impostato non corretto per "+prefix+".cache.dimensione");
  366.                 }
  367.             }
  368.             String cacheAlgoritmo = this.getValue(prefix+".cache.algoritmo");
  369.             if(cacheAlgoritmo!=null){
  370.                 cacheAlgoritmo = cacheAlgoritmo.trim();
  371.                 if(!CostantiConfigurazione.CACHE_LRU.equals(cacheAlgoritmo) && !CostantiConfigurazione.CACHE_MRU.equals(cacheAlgoritmo)){
  372.                     throw new Exception("Algoritmo impostato per la cache del "+prefix+" non corretto");
  373.                 }
  374.             }
  375.             String cacheItemIdleTime = this.getValue(prefix+".cache.item-idle-time");
  376.             if(cacheItemIdleTime!=null){
  377.                 cacheItemIdleTime = cacheItemIdleTime.trim();
  378.                 try{
  379.                     Integer.parseInt(cacheItemIdleTime);
  380.                 }catch(Exception e){
  381.                     throw new Exception("Valore impostato non corretto per "+prefix+".cache.item-idle-time");
  382.                 }
  383.             }
  384.             String cacheItemLifeSecond = this.getValue(prefix+".cache.item-life-second");
  385.             if(cacheItemLifeSecond!=null){
  386.                 cacheItemLifeSecond = cacheItemLifeSecond.trim();
  387.                 try{
  388.                     Integer.parseInt(cacheItemLifeSecond);
  389.                 }catch(Exception e){
  390.                     throw new Exception("Valore impostato non corretto per "+prefix+".cache.item-life-second");
  391.                 }
  392.             }
  393.        
  394.             if(cacheDimensione!=null || cacheAlgoritmo!=null || cacheItemIdleTime!=null || cacheItemLifeSecond!=null){
  395.                 if(cache==null){
  396.                     cache = new Cache();
  397.                 }
  398.                 if(cacheDimensione!=null){
  399.                     cache.setDimensione(cacheDimensione);
  400.                 }
  401.                 if(cacheAlgoritmo!=null){
  402.                     cache.setAlgoritmo(AlgoritmoCache.toEnumConstant(cacheAlgoritmo));
  403.                 }
  404.                 if(cacheItemIdleTime!=null){
  405.                     cache.setItemIdleTime(cacheItemIdleTime);
  406.                 }
  407.                 if(cacheItemLifeSecond!=null){
  408.                     cache.setItemLifeSecond(cacheItemLifeSecond);
  409.                 }
  410.             }
  411.         }
  412.         return cache;
  413.     }
  414.    
  415.     public AccessoRegistro updateAccessoRegistro(AccessoRegistro accessoRegistro)throws Exception{
  416.            
  417.         if(!this.configLocal)
  418.             return accessoRegistro;
  419.        
  420.         try{
  421.            
  422.             // **** Cache *****
  423.             if(this.isStatoCacheDisabilitata("registro")){
  424.                 accessoRegistro.setCache(null);
  425.             }
  426.             else{
  427.                 // aggiorno dati
  428.                 accessoRegistro.setCache(this.readDatiCache("registro", accessoRegistro.getCache()));
  429.             }
  430.            
  431.            
  432.             // **** Registri *****
  433.             String registriTmp = this.getValue("registri");
  434.             String [] registri = null;
  435.             if(registriTmp!=null){
  436.                 registriTmp = registriTmp.trim();
  437.                 registri = registriTmp.split(",");
  438.                 if(registri!=null){
  439.                     if(registri.length>0){
  440.                         for (int i = 0; i < registri.length; i++) {
  441.                             registri[i] = registri[i].trim();
  442.                         }
  443.                     }else{
  444.                         registri = null;
  445.                     }
  446.                 }
  447.             }
  448.            
  449.             if(registri!=null){
  450.                 for (int i = 0; i < registri.length; i++) {
  451.                    
  452.                     String nomeRegistro = this.getValue("registro."+registri[i]+".nome");
  453.                     if(nomeRegistro==null){
  454.                         throw new Exception("Nome del registro "+registri[i]+" non definito");
  455.                     }else{
  456.                         nomeRegistro = nomeRegistro.trim();
  457.                     }
  458.                    
  459.                     String valueEnable = this.getValue("registro."+registri[i]+".enabled");
  460.                     if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
  461.                         // Voglio eliminare tale registro
  462.                         for(int j=0; j<accessoRegistro.sizeRegistroList(); j++){
  463.                             if(nomeRegistro.equals(accessoRegistro.getRegistro(j).getNome()) ){
  464.                                 accessoRegistro.removeRegistro(j);
  465.                                 break;
  466.                             }
  467.                         }
  468.                     }
  469.                     else{
  470.                         // Voglio creare/modificare un registro
  471.                         AccessoRegistroRegistro registro = null;
  472.                         for(int j=0; j<accessoRegistro.sizeRegistroList(); j++){
  473.                             if(nomeRegistro.equals(accessoRegistro.getRegistro(j).getNome()) ){
  474.                                 registro = accessoRegistro.removeRegistro(j);
  475.                                 break;
  476.                             }
  477.                         }
  478.                         if(registro==null){
  479.                             // creo
  480.                             registro = new AccessoRegistroRegistro();
  481.                             registro.setNome(nomeRegistro);
  482.                         }  
  483.                                    
  484.                         String tipo = this.getValue("registro."+registri[i]+".tipo");
  485.                         if(tipo==null){
  486.                             throw new Exception("Tipo del registro "+registri[i]+" non definito");
  487.                         }else{
  488.                             tipo = tipo.trim();
  489.                         }
  490.                         if(!CostantiConfigurazione.REGISTRO_DB.equals(tipo) &&
  491.                                 !CostantiConfigurazione.REGISTRO_UDDI.equals(tipo) &&
  492.                                 !CostantiConfigurazione.REGISTRO_WEB.equals(tipo) &&
  493.                                 !CostantiConfigurazione.REGISTRO_WS.equals(tipo) &&
  494.                                 !CostantiConfigurazione.REGISTRO_XML.equals(tipo)){
  495.                             throw new Exception("Tipo del registro "+registri[i]+" non corretto");
  496.                         }
  497.                         registro.setTipo(RegistroTipo.toEnumConstant(tipo));
  498.                        
  499.                         String location = this.getValue("registro."+registri[i]+".location");
  500.                         if(location==null){
  501.                             throw new Exception("Location del registro "+registri[i]+" non definito");
  502.                         }else{
  503.                             location = location.trim();
  504.                         }
  505.                         registro.setLocation(location);
  506.                        
  507.                         String username = this.getValue("registro."+registri[i]+".user");
  508.                         if(username!=null){
  509.                             username = username.trim();
  510.                             if("".equals(username)){
  511.                                 registro.setUser(null);
  512.                             }else{
  513.                                 registro.setUser(username);
  514.                             }
  515.                         }
  516.                        
  517.                         String password = this.getValue("registro."+registri[i]+".password");
  518.                         if(password!=null){
  519.                             password = password.trim();
  520.                             if("".equals(password)){
  521.                                 registro.setPassword(null);
  522.                             }else{
  523.                                 registro.setPassword(password);
  524.                             }
  525.                         }
  526.                        
  527.                         accessoRegistro.addRegistro(registro);
  528.                     }
  529.                    
  530.                 }
  531.             }
  532.            
  533.            
  534.             return accessoRegistro;
  535.            
  536.         }catch(Exception e){
  537.             this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoRegistro): "+e.getMessage(),e);
  538.             throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoRegistro): "+e.getMessage(),e);
  539.         }
  540.        
  541.     }
  542.    
  543.    
  544.    
  545.     public AccessoConfigurazione updateAccessoConfigurazione(AccessoConfigurazione accessoConfigurazione)throws Exception{
  546.        
  547.         if(!this.configLocal)
  548.             return accessoConfigurazione;
  549.        
  550.         try{
  551.            
  552.             // **** Cache *****
  553.             if(this.isStatoCacheDisabilitata("config")){
  554.                 accessoConfigurazione.setCache(null);
  555.             }
  556.             else{
  557.                 // aggiorno dati
  558.                 accessoConfigurazione.setCache(this.readDatiCache("config", accessoConfigurazione.getCache()));
  559.             }
  560.            
  561.             return accessoConfigurazione;
  562.            
  563.         }catch(Exception e){
  564.             this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoConfigurazione): "+e.getMessage(),e);
  565.             throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoConfigurazione): "+e.getMessage(),e);
  566.         }
  567.        
  568.     }
  569.    
  570.     public AccessoDatiAutorizzazione updateAccessoDatiAutorizzazione(AccessoDatiAutorizzazione accessoDatiConfigurazione)throws Exception{
  571.        
  572.         if(!this.configLocal)
  573.             return accessoDatiConfigurazione;
  574.        
  575.         try{
  576.            
  577.             // **** Cache *****
  578.             if(this.isStatoCacheDisabilitata("autorizzazione")){
  579.                 accessoDatiConfigurazione.setCache(null);
  580.             }
  581.             else{
  582.                 // aggiorno dati
  583.                 accessoDatiConfigurazione.setCache(this.readDatiCache("autorizzazione", accessoDatiConfigurazione.getCache()));
  584.             }
  585.            
  586.             return accessoDatiConfigurazione;
  587.            
  588.         }catch(Exception e){
  589.             this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoDatiAutorizzazione): "+e.getMessage(),e);
  590.             throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoDatiAutorizzazione): "+e.getMessage(),e);
  591.         }
  592.        
  593.     }
  594.    
  595.     public AccessoDatiAutenticazione updateAccessoDatiAutenticazione(AccessoDatiAutenticazione accessoDatiConfigurazione)throws Exception{
  596.        
  597.         if(!this.configLocal)
  598.             return accessoDatiConfigurazione;
  599.        
  600.         try{
  601.            
  602.             // **** Cache *****
  603.             if(this.isStatoCacheDisabilitata("autenticazione")){
  604.                 accessoDatiConfigurazione.setCache(null);
  605.             }
  606.             else{
  607.                 // aggiorno dati
  608.                 accessoDatiConfigurazione.setCache(this.readDatiCache("autenticazione", accessoDatiConfigurazione.getCache()));
  609.             }
  610.            
  611.             return accessoDatiConfigurazione;
  612.            
  613.         }catch(Exception e){
  614.             this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoDatiAutenticazione): "+e.getMessage(),e);
  615.             throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (AccessoDatiAutenticazione): "+e.getMessage(),e);
  616.         }
  617.        
  618.     }
  619.    
  620.     public GestioneErrore updateGestioneErroreCooperazione(GestioneErrore gestioneErrore)throws Exception{
  621.        
  622.         if(!this.configLocal)
  623.             return gestioneErrore;
  624.        
  625.         try{
  626.             return updateGestioneErrore(gestioneErrore,"cooperazione");
  627.         }catch(Exception e){
  628.             this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (GestioneErrore Cooperazione): "+e.getMessage(),e);
  629.             throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (GestioneErrore Cooperazione): "+e.getMessage(),e);
  630.         }
  631.        
  632.     }
  633.    
  634.     public GestioneErrore updateGestioneErroreIntegrazione(GestioneErrore gestioneErrore)throws Exception{
  635.        
  636.         if(!this.configLocal)
  637.             return gestioneErrore;
  638.        
  639.         try{
  640.             return updateGestioneErrore(gestioneErrore,"integrazione");
  641.         }catch(Exception e){
  642.             this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (GestioneErrore Integrazione): "+e.getMessage(),e);
  643.             throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (GestioneErrore Integrazione): "+e.getMessage(),e);
  644.         }
  645.        
  646.     }
  647.        
  648.     private GestioneErrore updateGestioneErrore(GestioneErrore gestioneErrore,String tipo)throws Exception{
  649.        
  650.         String gestioneErroreDefaultComportamento = this.getValue("gestioneErrore."+tipo+".comportamento");
  651.         if(gestioneErroreDefaultComportamento!=null){
  652.             gestioneErroreDefaultComportamento = gestioneErroreDefaultComportamento.trim();
  653.             if(!CostantiConfigurazione.GESTIONE_ERRORE_ACCETTA_MSG.equals(gestioneErroreDefaultComportamento) &&
  654.                     !CostantiConfigurazione.GESTIONE_ERRORE_RISPEDISCI_MSG.equals(gestioneErroreDefaultComportamento)  ){
  655.                 throw new Exception("Comportamento di default per la gestione errore ("+tipo+") non correttamento fornito");
  656.             }
  657.         }
  658.         String gestioneErroreDefaultCadenzaRispedizione = this.getValue("gestioneErrore."+tipo+".cadenzaRispedizione");
  659.         if(gestioneErroreDefaultCadenzaRispedizione!=null){
  660.             gestioneErroreDefaultCadenzaRispedizione = gestioneErroreDefaultCadenzaRispedizione.trim();
  661.             try{
  662.                 Integer.parseInt(gestioneErroreDefaultCadenzaRispedizione);
  663.             }catch(Exception e){
  664.                 throw new Exception("Cadenza di rispedizione di default per la gestione errore ("+tipo+") non correttamento fornito");
  665.             }
  666.         }
  667.         String gestioneErroreCodiciTrasportoTmp = this.getValue("gestioneErrore."+tipo+".codiciTrasporto");
  668.         String [] gestioneErroreCodiciTrasporto = null;
  669.         if(gestioneErroreCodiciTrasportoTmp!=null){
  670.             gestioneErroreCodiciTrasportoTmp = gestioneErroreCodiciTrasportoTmp.trim();
  671.             gestioneErroreCodiciTrasporto = gestioneErroreCodiciTrasportoTmp.split(",");
  672.             if(gestioneErroreCodiciTrasporto!=null){
  673.                 if(gestioneErroreCodiciTrasporto.length>0){
  674.                     for (int i = 0; i < gestioneErroreCodiciTrasporto.length; i++) {
  675.                         gestioneErroreCodiciTrasporto[i] = gestioneErroreCodiciTrasporto[i].trim();
  676.                     }
  677.                 }else{
  678.                     gestioneErroreCodiciTrasporto = null;
  679.                 }
  680.             }
  681.         }
  682.         String gestioneErroreFaultTmp = this.getValue("gestioneErrore."+tipo+".soapFault");
  683.         String [] gestioneErroreFault = null;
  684.         if(gestioneErroreFaultTmp!=null){
  685.             gestioneErroreFaultTmp = gestioneErroreFaultTmp.trim();
  686.             gestioneErroreFault = gestioneErroreFaultTmp.split(",");
  687.             if(gestioneErroreFault!=null){
  688.                 if(gestioneErroreFault.length>0){
  689.                     for (int i = 0; i < gestioneErroreFault.length; i++) {
  690.                         gestioneErroreFault[i] = gestioneErroreFault[i].trim();
  691.                     }
  692.                 }else{
  693.                     gestioneErroreFault = null;
  694.                 }
  695.             }
  696.         }
  697.        
  698.         if(gestioneErroreDefaultComportamento!=null || gestioneErroreDefaultCadenzaRispedizione!=null ||
  699.                 gestioneErroreCodiciTrasporto!=null || gestioneErroreFault!=null ){
  700.            
  701.             if(gestioneErroreDefaultComportamento==null){
  702.                 throw new Exception("Comportamento di default deve essere fornito");
  703.             }
  704.            
  705.             gestioneErrore = new GestioneErrore(); // Creo una nuova gestione di errore sovrascrivendo completamente quella vecchia!!!
  706.             gestioneErrore.setComportamento(GestioneErroreComportamento.toEnumConstant(gestioneErroreDefaultComportamento));
  707.            
  708.             if(gestioneErroreDefaultCadenzaRispedizione!=null){
  709.                 gestioneErrore.setCadenzaRispedizione(gestioneErroreDefaultCadenzaRispedizione);
  710.             }
  711.            
  712.             if(gestioneErroreCodiciTrasporto!=null){
  713.                
  714.                 // codici di trasporto
  715.                 for (int i = 0; i < gestioneErroreCodiciTrasporto.length; i++) {
  716.                    
  717.                     GestioneErroreCodiceTrasporto ct = new GestioneErroreCodiceTrasporto();
  718.                    
  719.                     String codiceTrasportoMinimo = this.getValue("gestioneErrore."+tipo+".codiceTrasporto."+gestioneErroreCodiciTrasporto[i]+".valoreMinimo");
  720.                     if(codiceTrasportoMinimo!=null){
  721.                         codiceTrasportoMinimo = codiceTrasportoMinimo.trim();
  722.                         try{
  723.                             Integer.parseInt(codiceTrasportoMinimo);
  724.                         }catch(Exception e){
  725.                             throw new Exception("Codice di trasporto minimo non correttaemnte definito la gestione errore ("+tipo+"), trasporto "+gestioneErroreCodiciTrasporto[i]);
  726.                         }
  727.                         ct.setValoreMinimo(Integer.valueOf(codiceTrasportoMinimo));
  728.                     }
  729.                    
  730.                     String codiceTrasportoMassimo = this.getValue("gestioneErrore."+tipo+".codiceTrasporto."+gestioneErroreCodiciTrasporto[i]+".valoreMassimo");
  731.                     if(codiceTrasportoMassimo!=null){
  732.                         codiceTrasportoMassimo = codiceTrasportoMassimo.trim();
  733.                         try{
  734.                             Integer.parseInt(codiceTrasportoMassimo);
  735.                         }catch(Exception e){
  736.                             throw new Exception("Codice di trasporto massimo non correttaemnte definito la gestione errore ("+tipo+"), trasporto "+gestioneErroreCodiciTrasporto[i]);
  737.                         }
  738.                         ct.setValoreMassimo(Integer.valueOf(codiceTrasportoMassimo));
  739.                     }
  740.                    
  741.                     if(codiceTrasportoMinimo==null && codiceTrasportoMassimo==null){
  742.                         throw new Exception("Ne valore minimo, ne valore massimo fornito per la gestione errore ("+tipo+"), codice di trasporto "+gestioneErroreCodiciTrasporto[i]);
  743.                     }
  744.                    
  745.                     String codiceTrasportoComportamento = this.getValue("gestioneErrore."+tipo+".codiceTrasporto."+gestioneErroreCodiciTrasporto[i]+".comportamento");
  746.                     if(codiceTrasportoComportamento!=null){
  747.                         codiceTrasportoComportamento = codiceTrasportoComportamento.trim();
  748.                         if(!CostantiConfigurazione.GESTIONE_ERRORE_ACCETTA_MSG.equals(codiceTrasportoComportamento) &&
  749.                                 !CostantiConfigurazione.GESTIONE_ERRORE_RISPEDISCI_MSG.equals(codiceTrasportoComportamento)  ){
  750.                             throw new Exception("Comportamento  per la gestione errore ("+tipo+"), codice di trasporto "+gestioneErroreCodiciTrasporto[i]+" non correttamento fornito");
  751.                         }
  752.                         ct.setComportamento(GestioneErroreComportamento.toEnumConstant(codiceTrasportoComportamento));
  753.                     }
  754.                    
  755.                     String codiceTrasportoCadenza = this.getValue("gestioneErrore."+tipo+".codiceTrasporto."+gestioneErroreCodiciTrasporto[i]+".cadenzaRispedizione");
  756.                     if(codiceTrasportoCadenza!=null){
  757.                         codiceTrasportoCadenza = codiceTrasportoCadenza.trim();
  758.                         try{
  759.                             Integer.parseInt(gestioneErroreDefaultCadenzaRispedizione);
  760.                         }catch(Exception e){
  761.                             throw new Exception("Cadenza di rispedizione di default per la gestione errore ("+tipo+"), codice di trasporto "+gestioneErroreCodiciTrasporto[i]+" non correttamento fornito");
  762.                         }
  763.                         ct.setCadenzaRispedizione(codiceTrasportoCadenza);
  764.                     }
  765.                    
  766.                     gestioneErrore.addCodiceTrasporto(ct);
  767.                 }
  768.             }
  769.            
  770.             if(gestioneErroreFault!=null){
  771.                
  772.                 // fault soap
  773.                 for (int i = 0; i < gestioneErroreFault.length; i++) {
  774.                    
  775.                     GestioneErroreSoapFault fault = new GestioneErroreSoapFault();
  776.                    
  777.                     String faultActor = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".faultActor");
  778.                     if(faultActor!=null){
  779.                         faultActor = faultActor.trim();
  780.                         fault.setFaultActor(faultActor);
  781.                     }
  782.                     String faultCode = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".faultCode");
  783.                     if(faultCode!=null){
  784.                         faultCode = faultCode.trim();
  785.                         fault.setFaultCode(faultCode);
  786.                     }
  787.                     String faultString = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".faultString");
  788.                     if(faultString!=null){
  789.                         faultString = faultString.trim();
  790.                         fault.setFaultString(faultString);
  791.                     }
  792.                    
  793.                     String faultComportamento = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".comportamento");
  794.                     if(faultComportamento!=null){
  795.                         faultComportamento = faultComportamento.trim();
  796.                         if(!CostantiConfigurazione.GESTIONE_ERRORE_ACCETTA_MSG.equals(faultComportamento) &&
  797.                                 !CostantiConfigurazione.GESTIONE_ERRORE_RISPEDISCI_MSG.equals(faultComportamento)  ){
  798.                             throw new Exception("Comportamento  per la gestione errore ("+tipo+"), soapFault "+gestioneErroreFault[i]+" non correttamento fornito");
  799.                         }
  800.                         fault.setComportamento(GestioneErroreComportamento.toEnumConstant(faultComportamento));
  801.                     }
  802.                    
  803.                     String faultCadenza = this.getValue("gestioneErrore."+tipo+".soapFault."+gestioneErroreFault[i]+".cadenzaRispedizione");
  804.                     if(faultCadenza!=null){
  805.                         faultCadenza = faultCadenza.trim();
  806.                         try{
  807.                             Integer.parseInt(gestioneErroreDefaultCadenzaRispedizione);
  808.                         }catch(Exception e){
  809.                             throw new Exception("Cadenza di rispedizione di default per la gestione errore ("+tipo+"), soapFault "+gestioneErroreFault[i]+" non correttamento fornito");
  810.                         }
  811.                         fault.setCadenzaRispedizione(faultCadenza);
  812.                     }
  813.                    
  814.                     gestioneErrore.addSoapFault(fault);
  815.                 }
  816.             }
  817.            
  818.         }
  819.        
  820.         return gestioneErrore;
  821.     }
  822.    
  823.     public Configurazione updateConfigurazione(Configurazione configurazione)throws Exception{
  824.        
  825.         if(!this.configLocal)
  826.             return configurazione;
  827.        
  828.         try{
  829.        
  830.             // validazione-buste
  831.             String validazioneBuste_stato = this.getValue("validazione.protocol.stato");
  832.             if(validazioneBuste_stato!=null){
  833.                 validazioneBuste_stato = validazioneBuste_stato.trim();
  834.                 if(!CostantiConfigurazione.STATO_CON_WARNING_ABILITATO.toString().equals(validazioneBuste_stato) &&
  835.                         !CostantiConfigurazione.STATO_CON_WARNING_DISABILITATO.toString().equals(validazioneBuste_stato) &&
  836.                         !CostantiConfigurazione.STATO_CON_WARNING_WARNING_ONLY.toString().equals(validazioneBuste_stato) ){
  837.                     throw new Exception("Stato della validazione protocol non corretto");
  838.                 }
  839.             }
  840.             String validazioneBuste_controllo = this.getValue("validazione.protocol.controllo");
  841.             if(validazioneBuste_controllo!=null){
  842.                 validazioneBuste_controllo = validazioneBuste_controllo.trim();
  843.                 if(!CostantiConfigurazione.VALIDAZIONE_PROTOCOL_LIVELLO_NORMALE.equals(validazioneBuste_controllo) &&
  844.                         !CostantiConfigurazione.VALIDAZIONE_PROTOCOL_LIVELLO_RIGIDO.equals(validazioneBuste_controllo) ){
  845.                     throw new Exception("Tipo di controllo della validazione protocol non corretto");
  846.                 }
  847.             }
  848.             String validazioneBuste_profiloCollaborazione = this.getValue("validazione.protocol.profiloCollaborazione");
  849.             if(validazioneBuste_profiloCollaborazione!=null){
  850.                 validazioneBuste_profiloCollaborazione = validazioneBuste_profiloCollaborazione.trim();
  851.                 if(!CostantiConfigurazione.ABILITATO.equals(validazioneBuste_profiloCollaborazione) &&
  852.                         !CostantiConfigurazione.DISABILITATO.equals(validazioneBuste_profiloCollaborazione)  ){
  853.                     throw new Exception("Stato della validazione del profilo di collaborazione protocol non corretto");
  854.                 }
  855.             }
  856.             String validazioneBuste_manifestAttachments = this.getValue("validazione.protocol.manifestAttachments");
  857.             if(validazioneBuste_manifestAttachments!=null){
  858.                 validazioneBuste_manifestAttachments = validazioneBuste_manifestAttachments.trim();
  859.                 if(!CostantiConfigurazione.ABILITATO.equals(validazioneBuste_manifestAttachments) &&
  860.                         !CostantiConfigurazione.DISABILITATO.equals(validazioneBuste_manifestAttachments)  ){
  861.                     throw new Exception("Stato della validazione del manifest degli attachments non corretto");
  862.                 }
  863.             }
  864.             if(validazioneBuste_stato!=null || validazioneBuste_controllo!=null ||
  865.                     validazioneBuste_profiloCollaborazione!=null || validazioneBuste_manifestAttachments!=null){
  866.                 if(configurazione.getValidazioneBuste()==null){
  867.                     configurazione.setValidazioneBuste(new ValidazioneBuste());
  868.                 }
  869.                 if(validazioneBuste_stato!=null){
  870.                     configurazione.getValidazioneBuste().setStato(StatoFunzionalitaConWarning.toEnumConstant(validazioneBuste_stato));
  871.                 }
  872.                 if(validazioneBuste_controllo!=null){
  873.                     configurazione.getValidazioneBuste().setControllo(ValidazioneBusteTipoControllo.toEnumConstant(validazioneBuste_controllo));
  874.                 }
  875.                 if(validazioneBuste_profiloCollaborazione!=null){
  876.                     configurazione.getValidazioneBuste().setProfiloCollaborazione(StatoFunzionalita.toEnumConstant(validazioneBuste_profiloCollaborazione));
  877.                 }
  878.                 if(validazioneBuste_manifestAttachments!=null){
  879.                     configurazione.getValidazioneBuste().setManifestAttachments(StatoFunzionalita.toEnumConstant(validazioneBuste_manifestAttachments));
  880.                 }
  881.             }
  882.            
  883.            
  884.            
  885.             // validazione-contenuti-applicativi
  886.             String validazioneContenutiApplicativi_stato = this.getValue("validazione.contenutiApplicativi.stato");
  887.             if(validazioneContenutiApplicativi_stato!=null){
  888.                 validazioneContenutiApplicativi_stato = validazioneContenutiApplicativi_stato.trim();
  889.                 if(!CostantiConfigurazione.STATO_CON_WARNING_ABILITATO.toString().equals(validazioneContenutiApplicativi_stato) &&
  890.                         !CostantiConfigurazione.STATO_CON_WARNING_DISABILITATO.toString().equals(validazioneContenutiApplicativi_stato) &&
  891.                         !CostantiConfigurazione.STATO_CON_WARNING_WARNING_ONLY.toString().equals(validazioneContenutiApplicativi_stato) ){
  892.                     throw new Exception("Stato della validazione dei contenuti applicativi non corretto");
  893.                 }
  894.             }
  895.             String validazioneContenutiApplicativi_tipo = this.getValue("validazione.contenutiApplicativi.tipo");
  896.             if(validazioneContenutiApplicativi_tipo!=null){
  897.                 validazioneContenutiApplicativi_tipo = validazioneContenutiApplicativi_tipo.trim();
  898.                 if(!CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_XSD.equals(validazioneContenutiApplicativi_tipo) &&
  899.                         !CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_INTERFACE.equals(validazioneContenutiApplicativi_tipo)  &&
  900.                         !CostantiConfigurazione.VALIDAZIONE_CONTENUTI_APPLICATIVI_OPENSPCOOP.equals(validazioneContenutiApplicativi_tipo) ){
  901.                     throw new Exception("Tipo di controllo della validazione dei contenuti applicativi non corretto");
  902.                 }
  903.             }
  904.             if(validazioneContenutiApplicativi_stato!=null || validazioneContenutiApplicativi_tipo!=null){
  905.                 if(configurazione.getValidazioneContenutiApplicativi()==null){
  906.                     configurazione.setValidazioneContenutiApplicativi(new ValidazioneContenutiApplicativi());
  907.                 }
  908.                 if(validazioneContenutiApplicativi_stato!=null){
  909.                     configurazione.getValidazioneContenutiApplicativi().setStato(StatoFunzionalitaConWarning.toEnumConstant(validazioneContenutiApplicativi_stato));
  910.                 }
  911.                 if(validazioneContenutiApplicativi_tipo!=null){
  912.                     configurazione.getValidazioneContenutiApplicativi().setTipo(ValidazioneContenutiApplicativiTipo.toEnumConstant(validazioneContenutiApplicativi_tipo));
  913.                 }
  914.             }
  915.            
  916.            
  917.            
  918.            
  919.             // indirizzo telematico
  920.             String indirizzoRisposta_utilizzo = this.getValue("indirizzoRisposta.utilizzo");
  921.             if(indirizzoRisposta_utilizzo!=null){
  922.                 indirizzoRisposta_utilizzo = indirizzoRisposta_utilizzo.trim();
  923.                 if(!CostantiConfigurazione.ABILITATO.equals(indirizzoRisposta_utilizzo) &&
  924.                         !CostantiConfigurazione.DISABILITATO.equals(indirizzoRisposta_utilizzo) ){
  925.                     throw new Exception("Impostazione sull'utilizzo dell'indirizzo risposta non corretta");
  926.                 }
  927.                 if(configurazione.getIndirizzoRisposta()==null){
  928.                     configurazione.setIndirizzoRisposta(new IndirizzoRisposta());  
  929.                 }
  930.                 configurazione.getIndirizzoRisposta().setUtilizzo(StatoFunzionalita.toEnumConstant(indirizzoRisposta_utilizzo));
  931.             }
  932.            
  933.            
  934.            
  935.             // Attachments
  936.             String attachments_gestioneManifest = this.getValue("attachments.gestioneManifest");
  937.             if(attachments_gestioneManifest!=null){
  938.                 attachments_gestioneManifest = attachments_gestioneManifest.trim();
  939.                 if(!CostantiConfigurazione.ABILITATO.equals(attachments_gestioneManifest) &&
  940.                         !CostantiConfigurazione.DISABILITATO.equals(attachments_gestioneManifest) ){
  941.                     throw new Exception("Impostazione sulla gestione del manifest non corretta");
  942.                 }
  943.                 if(configurazione.getAttachments()==null){
  944.                     configurazione.setAttachments(new Attachments());  
  945.                 }
  946.                 configurazione.getAttachments().setGestioneManifest(StatoFunzionalita.toEnumConstant(attachments_gestioneManifest));
  947.             }
  948.            
  949.            
  950.            
  951.             // Risposte
  952.             String risposte_connection = this.getValue("risposte.connessione");
  953.             if(risposte_connection!=null){
  954.                 risposte_connection = risposte_connection.trim();
  955.                 if(!CostantiConfigurazione.CONNECTION_REPLY.equals(risposte_connection) &&
  956.                         !CostantiConfigurazione.NEW_CONNECTION.equals(risposte_connection) ){
  957.                     throw new Exception("Impostazione sulla gestione della connessione per le risposte non corretta");
  958.                 }
  959.                 if(configurazione.getRisposte()==null){
  960.                     configurazione.setRisposte(new Risposte());
  961.                 }
  962.                 configurazione.getRisposte().setConnessione(TipoConnessioneRisposte.toEnumConstant(risposte_connection));
  963.             }
  964.            
  965.            
  966.            
  967.            
  968.             // InoltroBuste
  969.             String inoltroBuste_cadenza = this.getValue("inoltroBusteNonRiscontrate.cadenza");
  970.             if(inoltroBuste_cadenza!=null){
  971.                 inoltroBuste_cadenza = inoltroBuste_cadenza.trim();
  972.                 try{
  973.                     Integer.parseInt(inoltroBuste_cadenza);
  974.                 }catch(Exception e){
  975.                     throw new Exception("Impostazione sulla cadenza per l'inoltro di buste non riscontrate non corretta");
  976.                 }
  977.                 if(configurazione.getInoltroBusteNonRiscontrate()==null){
  978.                     configurazione.setInoltroBusteNonRiscontrate(new InoltroBusteNonRiscontrate());
  979.                 }
  980.                 configurazione.getInoltroBusteNonRiscontrate().setCadenza(inoltroBuste_cadenza);
  981.             }
  982.            
  983.            
  984.            
  985.             // Messaggi diagnostici
  986.            
  987.             String msgDiagnostici_livelloSeveritaLog4J = this.getValue("messaggiDiagnostici.livelloSeveritaLog4j");
  988.             if(msgDiagnostici_livelloSeveritaLog4J!=null){
  989.                 msgDiagnostici_livelloSeveritaLog4J = msgDiagnostici_livelloSeveritaLog4J.trim();
  990.                 if(!LogLevels.LIVELLO_ALL.equals(msgDiagnostici_livelloSeveritaLog4J) &&
  991.                         !LogLevels.LIVELLO_DEBUG_HIGH.equals(msgDiagnostici_livelloSeveritaLog4J) &&
  992.                         !LogLevels.LIVELLO_DEBUG_MEDIUM.equals(msgDiagnostici_livelloSeveritaLog4J)&&
  993.                         !LogLevels.LIVELLO_DEBUG_LOW.equals(msgDiagnostici_livelloSeveritaLog4J)&&
  994.                         !LogLevels.LIVELLO_ERROR_INTEGRATION.equals(msgDiagnostici_livelloSeveritaLog4J)&&
  995.                         !LogLevels.LIVELLO_ERROR_PROTOCOL.equals(msgDiagnostici_livelloSeveritaLog4J)&&
  996.                         !LogLevels.LIVELLO_FATAL.equals(msgDiagnostici_livelloSeveritaLog4J)&&
  997.                         !LogLevels.LIVELLO_INFO_INTEGRATION.equals(msgDiagnostici_livelloSeveritaLog4J)&&
  998.                         !LogLevels.LIVELLO_INFO_PROTOCOL.equals(msgDiagnostici_livelloSeveritaLog4J)&&
  999.                         !LogLevels.LIVELLO_OFF.equals(msgDiagnostici_livelloSeveritaLog4J)){
  1000.                     throw new Exception("Impostazione sul livello log4j di severita dei messsaggi diagnostici emessi non corretta");
  1001.                 }
  1002.                 configurazione.getMessaggiDiagnostici().setSeveritaLog4j(Severita.toEnumConstant(msgDiagnostici_livelloSeveritaLog4J));
  1003.             }
  1004.             String msgDiagnostici_livelloSeverita = this.getValue("messaggiDiagnostici.livelloSeverita");
  1005.             if(msgDiagnostici_livelloSeverita!=null){
  1006.                 msgDiagnostici_livelloSeverita = msgDiagnostici_livelloSeverita.trim();
  1007.                 if(!LogLevels.LIVELLO_ALL.equals(msgDiagnostici_livelloSeverita) &&
  1008.                         !LogLevels.LIVELLO_DEBUG_HIGH.equals(msgDiagnostici_livelloSeverita) &&
  1009.                         !LogLevels.LIVELLO_DEBUG_MEDIUM.equals(msgDiagnostici_livelloSeverita)&&
  1010.                         !LogLevels.LIVELLO_DEBUG_LOW.equals(msgDiagnostici_livelloSeverita)&&
  1011.                         !LogLevels.LIVELLO_ERROR_INTEGRATION.equals(msgDiagnostici_livelloSeverita)&&
  1012.                         !LogLevels.LIVELLO_ERROR_PROTOCOL.equals(msgDiagnostici_livelloSeverita)&&
  1013.                         !LogLevels.LIVELLO_FATAL.equals(msgDiagnostici_livelloSeverita)&&
  1014.                         !LogLevels.LIVELLO_INFO_INTEGRATION.equals(msgDiagnostici_livelloSeverita)&&
  1015.                         !LogLevels.LIVELLO_INFO_PROTOCOL.equals(msgDiagnostici_livelloSeverita)&&
  1016.                         !LogLevels.LIVELLO_OFF.equals(msgDiagnostici_livelloSeverita)){
  1017.                     throw new Exception("Impostazione sul livello di severita dei messsaggi diagnostici emessi non corretta");
  1018.                 }
  1019.                 configurazione.getMessaggiDiagnostici().setSeverita(Severita.toEnumConstant(msgDiagnostici_livelloSeverita));
  1020.             }
  1021.            
  1022.             // Messaggi diagnostici (Appender)
  1023.            
  1024.             String msgDiagnosticiAppendersDisabledTmp = this.getValue("messaggiDiagnostici.appenders.disabled");
  1025.             boolean disabilitatiMsgDiagnosticiAppenderOriginali = false;
  1026.             if(msgDiagnosticiAppendersDisabledTmp!=null && "true".equals(msgDiagnosticiAppendersDisabledTmp)){
  1027.                 disabilitatiMsgDiagnosticiAppenderOriginali = true;
  1028.                 while(configurazione.getMessaggiDiagnostici().sizeOpenspcoopAppenderList()>0){
  1029.                     configurazione.getMessaggiDiagnostici().removeOpenspcoopAppender(0);
  1030.                 }
  1031.             }
  1032.            
  1033.             String msgDiagnosticiAppendersTmp = this.getValue("messaggiDiagnostici.appenders");
  1034.             String [] msgDiagnosticiAppenders = null;
  1035.             if(msgDiagnosticiAppendersTmp!=null){
  1036.                 msgDiagnosticiAppendersTmp = msgDiagnosticiAppendersTmp.trim();
  1037.                 msgDiagnosticiAppenders = msgDiagnosticiAppendersTmp.split(",");
  1038.                 if(msgDiagnosticiAppenders!=null){
  1039.                     if(msgDiagnosticiAppenders.length>0){
  1040.                         for (int i = 0; i < msgDiagnosticiAppenders.length; i++) {
  1041.                             msgDiagnosticiAppenders[i] = msgDiagnosticiAppenders[i].trim();
  1042.                         }
  1043.                     }else{
  1044.                         msgDiagnosticiAppenders = null;
  1045.                     }
  1046.                 }
  1047.             }
  1048.             if(msgDiagnosticiAppenders!=null){
  1049.                 for (int i = 0; i < msgDiagnosticiAppenders.length; i++) {
  1050.                    
  1051.                     String tipo = this.getValue("messaggiDiagnostici.appender."+msgDiagnosticiAppenders[i]+".tipo");
  1052.                     if(tipo==null){
  1053.                         throw new Exception("Tipo dell'appender dei messaggi diagnostici "+msgDiagnosticiAppenders[i]+" non definito");
  1054.                     }else{
  1055.                         tipo = tipo.trim();
  1056.                     }
  1057.                    
  1058.                     String valueEnable = this.getValue("messaggiDiagnostici.appender."+msgDiagnosticiAppenders[i]+".enabled");
  1059.                     if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
  1060.                         // Voglio eliminare tale appender
  1061.                         if(disabilitatiMsgDiagnosticiAppenderOriginali==false){
  1062.                             for(int j=0; j<configurazione.getMessaggiDiagnostici().sizeOpenspcoopAppenderList(); j++){
  1063.                                 if(tipo.equals(configurazione.getMessaggiDiagnostici().getOpenspcoopAppender(j).getTipo()) ){
  1064.                                     configurazione.getMessaggiDiagnostici().removeOpenspcoopAppender(j);
  1065.                                     break;
  1066.                                 }
  1067.                             }
  1068.                         }// else ho gia eliminato gli appenders originali
  1069.                     }
  1070.                     else{
  1071.                         // Voglio creare/modificare un appender
  1072.                         OpenspcoopAppender appender = null;
  1073.                         for(int j=0; j<configurazione.getMessaggiDiagnostici().sizeOpenspcoopAppenderList(); j++){
  1074.                             if(tipo.equals(configurazione.getMessaggiDiagnostici().getOpenspcoopAppender(j).getTipo()) ){
  1075.                                 appender = configurazione.getMessaggiDiagnostici().removeOpenspcoopAppender(j);
  1076.                                 break;
  1077.                             }
  1078.                         }
  1079.                         if(appender==null){
  1080.                             // creo
  1081.                             appender = new OpenspcoopAppender();
  1082.                             appender.setTipo(tipo);
  1083.                         }  
  1084.                        
  1085.                         // Elimino vecchie properties
  1086.                         while(appender.sizePropertyList()>0){
  1087.                             appender.removeProperty(0);
  1088.                         }
  1089.                        
  1090.                         // Aggiunto nuove
  1091.                         Properties properties = this.readProperties("messaggiDiagnostici.appender."+msgDiagnosticiAppenders[i]+".property.");
  1092.                         Enumeration<?> keys = properties.keys();
  1093.                         while (keys.hasMoreElements()) {
  1094.                             String key = (String) keys.nextElement();
  1095.                             Property ap = new Property();
  1096.                             ap.setNome(key);
  1097.                             ap.setValore(properties.getProperty(key));
  1098.                             appender.addProperty(ap);
  1099.                         }
  1100.                        
  1101.                         configurazione.getMessaggiDiagnostici().addOpenspcoopAppender(appender);
  1102.                     }
  1103.                    
  1104.                 }
  1105.             }
  1106.            
  1107.            
  1108.            
  1109.             // Tracciamento
  1110.            
  1111.             String tracciamentoBuste = this.getValue("tracciamento.stato");
  1112.             if(tracciamentoBuste!=null){
  1113.                 tracciamentoBuste = tracciamentoBuste.trim();
  1114.                 if(!CostantiConfigurazione.ABILITATO.equals(tracciamentoBuste) &&
  1115.                         !CostantiConfigurazione.DISABILITATO.equals(tracciamentoBuste)){
  1116.                     throw new Exception("Impostazione sul tracciamento buste non corretta");
  1117.                 }
  1118.             }
  1119.                        
  1120.             String tracciamentoAppendersDisabledTmp = this.getValue("tracciamento.appenders.disabled");
  1121.             boolean disabilitatiTracciamentoAppenderOriginali = false;
  1122.             if(tracciamentoAppendersDisabledTmp!=null && "true".equals(tracciamentoAppendersDisabledTmp)){
  1123.                 disabilitatiTracciamentoAppenderOriginali = true;
  1124.                 if(configurazione.getTracciamento()!=null){
  1125.                     while(configurazione.getTracciamento().sizeOpenspcoopAppenderList()>0){
  1126.                         configurazione.getTracciamento().removeOpenspcoopAppender(0);
  1127.                     }
  1128.                 }
  1129.             }
  1130.            
  1131.             String tracciamentoAppendersTmp = this.getValue("tracciamento.appenders");
  1132.             String [] tracciamentoAppenders = null;
  1133.             if(tracciamentoAppendersTmp!=null){
  1134.                 tracciamentoAppendersTmp = tracciamentoAppendersTmp.trim();
  1135.                 tracciamentoAppenders = tracciamentoAppendersTmp.split(",");
  1136.                 if(tracciamentoAppenders!=null){
  1137.                     if(tracciamentoAppenders.length>0){
  1138.                         for (int i = 0; i < tracciamentoAppenders.length; i++) {
  1139.                             tracciamentoAppenders[i] = tracciamentoAppenders[i].trim();
  1140.                         }
  1141.                     }else{
  1142.                         tracciamentoAppenders = null;
  1143.                     }
  1144.                 }
  1145.             }
  1146.             if(tracciamentoBuste!=null ||
  1147.                     tracciamentoAppenders!=null){
  1148.                 if(configurazione.getTracciamento()==null){
  1149.                     configurazione.setTracciamento(new Tracciamento());
  1150.                     if(tracciamentoBuste==null){
  1151.                         configurazione.getTracciamento().setStato(CostantiConfigurazione.ABILITATO); // default
  1152.                     }
  1153.                 }
  1154.             }
  1155.             if(tracciamentoBuste!=null){
  1156.                 configurazione.getTracciamento().setStato(StatoFunzionalita.toEnumConstant(tracciamentoBuste));
  1157.             }
  1158.             if(tracciamentoAppenders!=null){
  1159.                
  1160.                 // Tracciamento appenders
  1161.                
  1162.                 for (int i = 0; i < tracciamentoAppenders.length; i++) {
  1163.                    
  1164.                     String tipo = this.getValue("tracciamento.appender."+tracciamentoAppenders[i]+".tipo");
  1165.                     if(tipo==null){
  1166.                         throw new Exception("Tipo dell'appender delle tracce "+tracciamentoAppenders[i]+" non definito");
  1167.                     }else{
  1168.                         tipo = tipo.trim();
  1169.                     }
  1170.                    
  1171.                     String valueEnable = this.getValue("tracciamento.appender."+tracciamentoAppenders[i]+".enabled");
  1172.                     if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
  1173.                         // Voglio eliminare tale appender
  1174.                         if(disabilitatiTracciamentoAppenderOriginali==false){
  1175.                             for(int j=0; j<configurazione.getTracciamento().sizeOpenspcoopAppenderList(); j++){
  1176.                                 if(tipo.equals(configurazione.getTracciamento().getOpenspcoopAppender(j).getTipo()) ){
  1177.                                     configurazione.getTracciamento().removeOpenspcoopAppender(j);
  1178.                                     break;
  1179.                                 }
  1180.                             }
  1181.                         }// else ho gia eliminato gli appenders originali
  1182.                     }
  1183.                     else{
  1184.                         // Voglio creare/modificare un appender
  1185.                         OpenspcoopAppender appender = null;
  1186.                         for(int j=0; j<configurazione.getTracciamento().sizeOpenspcoopAppenderList(); j++){
  1187.                             if(tipo.equals(configurazione.getTracciamento().getOpenspcoopAppender(j).getTipo()) ){
  1188.                                 appender = configurazione.getTracciamento().removeOpenspcoopAppender(j);
  1189.                                 break;
  1190.                             }
  1191.                         }
  1192.                         if(appender==null){
  1193.                             // creo
  1194.                             appender = new OpenspcoopAppender();
  1195.                             appender.setTipo(tipo);
  1196.                         }  
  1197.                        
  1198.                         // Elimino vecchie properties
  1199.                         while(appender.sizePropertyList()>0){
  1200.                             appender.removeProperty(0);
  1201.                         }
  1202.                        
  1203.                         // Aggiunto nuove
  1204.                         Properties properties = this.readProperties("tracciamento.appender."+tracciamentoAppenders[i]+".property.");
  1205.                         Enumeration<?> keys = properties.keys();
  1206.                         while (keys.hasMoreElements()) {
  1207.                             String key = (String) keys.nextElement();
  1208.                             Property ap = new Property();
  1209.                             ap.setNome(key);
  1210.                             ap.setValore(properties.getProperty(key));
  1211.                             appender.addProperty(ap);
  1212.                         }
  1213.                        
  1214.                         configurazione.getTracciamento().addOpenspcoopAppender(appender);
  1215.                     }
  1216.                    
  1217.                 }
  1218.                
  1219.             }
  1220.            
  1221.            
  1222.            
  1223.            
  1224.            
  1225.            
  1226.            
  1227.             // Dump
  1228.            
  1229.             String dumpStato = this.getValue("dump.stato");
  1230.             if(dumpStato!=null){
  1231.                 dumpStato = dumpStato.trim();
  1232.                 if(!CostantiConfigurazione.ABILITATO.equals(dumpStato) &&
  1233.                         !CostantiConfigurazione.DISABILITATO.equals(dumpStato)){
  1234.                     throw new Exception("Impostazione sul dump applicativo non corretta");
  1235.                 }
  1236.             }
  1237.             String dumpBinarioPortaDelegata = this.getValue("dump.dumpBinarioPortaDelegata");
  1238.             if(dumpBinarioPortaDelegata!=null){
  1239.                 dumpBinarioPortaDelegata = dumpBinarioPortaDelegata.trim();
  1240.                 if(!CostantiConfigurazione.ABILITATO.equals(dumpBinarioPortaDelegata) &&
  1241.                         !CostantiConfigurazione.DISABILITATO.equals(dumpBinarioPortaDelegata)){
  1242.                     throw new Exception("Impostazione sul dump binario della porta delegata non corretta");
  1243.                 }
  1244.             }
  1245.             String dumpBinarioPortaApplicativa = this.getValue("dump.dumpBinarioPortaApplicativa");
  1246.             if(dumpBinarioPortaApplicativa!=null){
  1247.                 dumpBinarioPortaApplicativa = dumpBinarioPortaApplicativa.trim();
  1248.                 if(!CostantiConfigurazione.ABILITATO.equals(dumpBinarioPortaApplicativa) &&
  1249.                         !CostantiConfigurazione.DISABILITATO.equals(dumpBinarioPortaApplicativa)){
  1250.                     throw new Exception("Impostazione sul dump binario della porta applicativa non corretta");
  1251.                 }
  1252.             }
  1253.            
  1254.             String dumpAppendersDisabledTmp = this.getValue("dump.appenders.disabled");
  1255.             boolean disabilitatiDumpAppenderOriginali = false;
  1256.             if(dumpAppendersDisabledTmp!=null && "true".equals(dumpAppendersDisabledTmp)){
  1257.                 disabilitatiDumpAppenderOriginali = true;
  1258.                 if(configurazione.getDump()!=null){
  1259.                     while(configurazione.getDump().sizeOpenspcoopAppenderList()>0){
  1260.                         configurazione.getDump().removeOpenspcoopAppender(0);
  1261.                     }
  1262.                 }
  1263.             }
  1264.            
  1265.             String dumpAppendersTmp = this.getValue("dump.appenders");
  1266.             String [] dumpAppenders = null;
  1267.             if(dumpAppendersTmp!=null){
  1268.                 dumpAppendersTmp = dumpAppendersTmp.trim();
  1269.                 dumpAppenders = dumpAppendersTmp.split(",");
  1270.                 if(dumpAppenders!=null){
  1271.                     if(dumpAppenders.length>0){
  1272.                         for (int i = 0; i < dumpAppenders.length; i++) {
  1273.                             dumpAppenders[i] = dumpAppenders[i].trim();
  1274.                         }
  1275.                     }else{
  1276.                         dumpAppenders = null;
  1277.                     }
  1278.                 }
  1279.             }
  1280.             if(dumpStato!=null ||
  1281.                     dumpBinarioPortaDelegata!=null || dumpBinarioPortaApplicativa!=null ||
  1282.                     dumpAppenders!=null){
  1283.                 if(configurazione.getDump()==null){
  1284.                     configurazione.setDump(new Dump());
  1285.                     if(dumpStato==null){
  1286.                         configurazione.getDump().setStato(CostantiConfigurazione.DISABILITATO); // default
  1287.                     }
  1288.                 }
  1289.             }
  1290.             if(dumpStato!=null){
  1291.                 configurazione.getDump().setStato(StatoFunzionalita.toEnumConstant(dumpStato));
  1292.             }
  1293.             if(dumpBinarioPortaDelegata!=null){
  1294.                 configurazione.getDump().setDumpBinarioPortaDelegata(StatoFunzionalita.toEnumConstant(dumpBinarioPortaDelegata));
  1295.             }
  1296.             if(dumpBinarioPortaApplicativa!=null){
  1297.                 configurazione.getDump().setDumpBinarioPortaApplicativa(StatoFunzionalita.toEnumConstant(dumpBinarioPortaApplicativa));
  1298.             }
  1299.             if(dumpAppenders!=null){
  1300.                
  1301.                 // Dump appenders
  1302.                
  1303.                 for (int i = 0; i < dumpAppenders.length; i++) {
  1304.                    
  1305.                     String tipo = this.getValue("dump.appender."+dumpAppenders[i]+".tipo");
  1306.                     if(tipo==null){
  1307.                         throw new Exception("Tipo dell'appender del dump "+dumpAppenders[i]+" non definito");
  1308.                     }else{
  1309.                         tipo = tipo.trim();
  1310.                     }
  1311.                    
  1312.                     String valueEnable = this.getValue("dump.appender."+dumpAppenders[i]+".enabled");
  1313.                     if(valueEnable!=null && "false".equalsIgnoreCase(valueEnable.trim())){
  1314.                         // Voglio eliminare tale appender
  1315.                         if(disabilitatiDumpAppenderOriginali==false){
  1316.                             for(int j=0; j<configurazione.getDump().sizeOpenspcoopAppenderList(); j++){
  1317.                                 if(tipo.equals(configurazione.getDump().getOpenspcoopAppender(j).getTipo()) ){
  1318.                                     configurazione.getDump().removeOpenspcoopAppender(j);
  1319.                                     break;
  1320.                                 }
  1321.                             }
  1322.                         }// else ho gia eliminato gli appenders originali
  1323.                     }
  1324.                     else{
  1325.                         // Voglio creare/modificare un appender
  1326.                         OpenspcoopAppender appender = null;
  1327.                         for(int j=0; j<configurazione.getDump().sizeOpenspcoopAppenderList(); j++){
  1328.                             if(tipo.equals(configurazione.getDump().getOpenspcoopAppender(j).getTipo()) ){
  1329.                                 appender = configurazione.getDump().removeOpenspcoopAppender(j);
  1330.                                 break;
  1331.                             }
  1332.                         }
  1333.                         if(appender==null){
  1334.                             // creo
  1335.                             appender = new OpenspcoopAppender();
  1336.                             appender.setTipo(tipo);
  1337.                         }  
  1338.                        
  1339.                         // Elimino vecchie properties
  1340.                         while(appender.sizePropertyList()>0){
  1341.                             appender.removeProperty(0);
  1342.                         }
  1343.                        
  1344.                         // Aggiunto nuove
  1345.                         Properties properties = this.readProperties("dump.appender."+dumpAppenders[i]+".property.");
  1346.                         Enumeration<?> keys = properties.keys();
  1347.                         while (keys.hasMoreElements()) {
  1348.                             String key = (String) keys.nextElement();
  1349.                             Property ap = new Property();
  1350.                             ap.setNome(key);
  1351.                             ap.setValore(properties.getProperty(key));
  1352.                             appender.addProperty(ap);
  1353.                         }
  1354.                        
  1355.                         configurazione.getDump().addOpenspcoopAppender(appender);
  1356.                     }
  1357.                    
  1358.                 }
  1359.                
  1360.             }
  1361.            
  1362.             // regole di dump
  1363.            
  1364.             // *** Backward Compatibility ****
  1365.            
  1366.             setDump(dumpStato, configurazione);
  1367.            
  1368.             setDump(dumpStato, configurazione, true);
  1369.            
  1370.             setDump(dumpStato, configurazione, false);
  1371.            
  1372.            
  1373.            
  1374.             // IntegrationManager
  1375.             String integrationManager_autenticazione = this.getValue("integrationManager.autenticazione");
  1376.             if(integrationManager_autenticazione!=null){
  1377.                 integrationManager_autenticazione = integrationManager_autenticazione.trim();
  1378.                 if(configurazione.getIntegrationManager()==null){
  1379.                     configurazione.setIntegrationManager(new IntegrationManager());
  1380.                 }
  1381.                 configurazione.getIntegrationManager().setAutenticazione(integrationManager_autenticazione);
  1382.             }
  1383.            
  1384.            
  1385.            
  1386.            
  1387.            
  1388.             return configurazione;
  1389.            
  1390.         }catch(Exception e){
  1391.             this.log.error("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (Configurazione): "+e.getMessage(),e);
  1392.             throw new Exception("Errore durante la lettura del file "+CostantiPdD.OPENSPCOOP2_CONFIG_LOCAL_PATH+" (Configurazione): "+e.getMessage(),e);
  1393.         }
  1394.        
  1395.     }
  1396.    
  1397.     @SuppressWarnings("deprecation")
  1398.     private void setDump(String dumpStato, Configurazione configurazione) throws Exception {
  1399.         String dumpRealtime = this.getValue("dump.realtime");
  1400.         if(dumpRealtime!=null){
  1401.             dumpRealtime = dumpRealtime.trim();
  1402.             if(!CostantiConfigurazione.ABILITATO.equals(dumpStato) &&
  1403.                     !CostantiConfigurazione.DISABILITATO.equals(dumpStato)){
  1404.                 throw new Exception("Impostazione sul dump realtime non corretta");
  1405.             }
  1406.         }
  1407.        
  1408.         DumpConfigurazioneRegola regolaRequestIn = this.readRegola("request", "in", true);
  1409.         DumpConfigurazioneRegola regolaRequestOut = this.readRegola("request", "out", true);
  1410.         DumpConfigurazioneRegola regolaResponseIn = this.readRegola("response", "in", true);
  1411.         DumpConfigurazioneRegola regolaResponseOut = this.readRegola("response", "out", true);
  1412.        
  1413.         if(dumpRealtime!=null ||
  1414.                 regolaRequestIn!=null || regolaRequestOut!=null ||
  1415.                 regolaResponseIn!=null || regolaResponseOut!=null ) {
  1416.             if(configurazione.getDump()==null){
  1417.                 configurazione.setDump(new Dump());
  1418.                 if(dumpStato==null){
  1419.                     configurazione.getDump().setStato(CostantiConfigurazione.DISABILITATO); // default
  1420.                 }
  1421.             }
  1422.             if(configurazione.getDump().getConfigurazione()==null){
  1423.                 configurazione.getDump().setConfigurazione(new DumpConfigurazione());
  1424.             }
  1425.         }
  1426.        
  1427.         if(dumpRealtime!=null) {
  1428.             configurazione.getDump().getConfigurazione().setRealtime(StatoFunzionalita.toEnumConstant(dumpRealtime));
  1429.         }
  1430.         if(regolaRequestIn!=null) {
  1431.             configurazione.getDump().getConfigurazione().setRichiestaIngresso(regolaRequestIn);
  1432.         }
  1433.         if(regolaRequestOut!=null) {
  1434.             configurazione.getDump().getConfigurazione().setRichiestaUscita(regolaRequestOut);
  1435.         }
  1436.         if(regolaResponseIn!=null) {
  1437.             configurazione.getDump().getConfigurazione().setRispostaIngresso(regolaResponseIn);
  1438.         }
  1439.         if(regolaResponseOut!=null) {
  1440.             configurazione.getDump().getConfigurazione().setRispostaUscita(regolaResponseOut);
  1441.         }
  1442.     }
  1443.    
  1444.     private void setDump(String dumpStato, Configurazione configurazione, boolean erogazioni) throws Exception {
  1445.        
  1446.         String tipo = erogazioni ? "erogazioni" : "fruizioni";
  1447.        
  1448.         String dumpRealtime = this.getValue("dump."+tipo+".realtime");
  1449.         if(dumpRealtime!=null){
  1450.             dumpRealtime = dumpRealtime.trim();
  1451.             if(!CostantiConfigurazione.ABILITATO.equals(dumpStato) &&
  1452.                     !CostantiConfigurazione.DISABILITATO.equals(dumpStato)){
  1453.                 throw new Exception("Impostazione sul dump realtime non corretta");
  1454.             }
  1455.         }
  1456.        
  1457.         DumpConfigurazioneRegola regolaRequestIn = this.readRegola(tipo+".request", "in", false);
  1458.         DumpConfigurazioneRegola regolaRequestOut = this.readRegola(tipo+".request", "out", false);
  1459.         DumpConfigurazioneRegola regolaResponseIn = this.readRegola(tipo+".response", "in", false);
  1460.         DumpConfigurazioneRegola regolaResponseOut = this.readRegola(tipo+".response", "out", false);
  1461.        
  1462.         if(dumpRealtime!=null ||
  1463.                 regolaRequestIn!=null || regolaRequestOut!=null ||
  1464.                 regolaResponseIn!=null || regolaResponseOut!=null ) {
  1465.             if(configurazione.getDump()==null){
  1466.                 configurazione.setDump(new Dump());
  1467.                 if(dumpStato==null){
  1468.                     configurazione.getDump().setStato(CostantiConfigurazione.DISABILITATO); // default
  1469.                 }
  1470.             }
  1471.             if(erogazioni) {
  1472.                 if(configurazione.getDump().getConfigurazionePortaApplicativa()==null){
  1473.                     configurazione.getDump().setConfigurazionePortaApplicativa(new DumpConfigurazione());
  1474.                 }
  1475.             }
  1476.             else {
  1477.                 if(configurazione.getDump().getConfigurazionePortaDelegata()==null){
  1478.                     configurazione.getDump().setConfigurazionePortaDelegata(new DumpConfigurazione());
  1479.                 }
  1480.             }
  1481.         }
  1482.        
  1483.         if(erogazioni) {
  1484.             if(dumpRealtime!=null) {
  1485.                 configurazione.getDump().getConfigurazionePortaApplicativa().setRealtime(StatoFunzionalita.toEnumConstant(dumpRealtime));
  1486.             }
  1487.             if(regolaRequestIn!=null) {
  1488.                 configurazione.getDump().getConfigurazionePortaApplicativa().setRichiestaIngresso(regolaRequestIn);
  1489.             }
  1490.             if(regolaRequestOut!=null) {
  1491.                 configurazione.getDump().getConfigurazionePortaApplicativa().setRichiestaUscita(regolaRequestOut);
  1492.             }
  1493.             if(regolaResponseIn!=null) {
  1494.                 configurazione.getDump().getConfigurazionePortaApplicativa().setRispostaIngresso(regolaResponseIn);
  1495.             }
  1496.             if(regolaResponseOut!=null) {
  1497.                 configurazione.getDump().getConfigurazionePortaApplicativa().setRispostaUscita(regolaResponseOut);
  1498.             }
  1499.         }
  1500.         else {
  1501.             if(dumpRealtime!=null) {
  1502.                 configurazione.getDump().getConfigurazionePortaDelegata().setRealtime(StatoFunzionalita.toEnumConstant(dumpRealtime));
  1503.             }
  1504.             if(regolaRequestIn!=null) {
  1505.                 configurazione.getDump().getConfigurazionePortaDelegata().setRichiestaIngresso(regolaRequestIn);
  1506.             }
  1507.             if(regolaRequestOut!=null) {
  1508.                 configurazione.getDump().getConfigurazionePortaDelegata().setRichiestaUscita(regolaRequestOut);
  1509.             }
  1510.             if(regolaResponseIn!=null) {
  1511.                 configurazione.getDump().getConfigurazionePortaDelegata().setRispostaIngresso(regolaResponseIn);
  1512.             }
  1513.             if(regolaResponseOut!=null) {
  1514.                 configurazione.getDump().getConfigurazionePortaDelegata().setRispostaUscita(regolaResponseOut);
  1515.             }
  1516.         }
  1517.     }
  1518.    
  1519.    
  1520.     private DumpConfigurazioneRegola readRegola(String flow, String inOut, boolean backwardCompatibility) throws Exception {
  1521.        
  1522.         DumpConfigurazioneRegola regola = null;

  1523.        
  1524.         String payload = this.getValue("dump."+flow+"."+inOut+".payload");
  1525.         if(payload!=null){
  1526.             payload = payload.trim();
  1527.             if(!CostantiConfigurazione.ABILITATO.equals(payload) &&
  1528.                     !CostantiConfigurazione.DISABILITATO.equals(payload)){
  1529.                 throw new Exception("Impostazione sul dump payload ("+flow+"."+inOut+") non corretta");
  1530.             }
  1531.         }
  1532.        
  1533.         String payload_parsing = this.getValue("dump."+flow+"."+inOut+".payload-parsing");
  1534.         if(payload_parsing!=null){
  1535.             payload_parsing = payload_parsing.trim();
  1536.             if(!CostantiConfigurazione.ABILITATO.equals(payload_parsing) &&
  1537.                     !CostantiConfigurazione.DISABILITATO.equals(payload_parsing)){
  1538.                 throw new Exception("Impostazione sul dump payload-parsing ("+flow+"."+inOut+") non corretta");
  1539.             }
  1540.         }
  1541.        
  1542.         String body = this.getValue("dump."+flow+"."+inOut+".body");
  1543.         if(body!=null){
  1544.             body = body.trim();
  1545.             if(!CostantiConfigurazione.ABILITATO.equals(body) &&
  1546.                     !CostantiConfigurazione.DISABILITATO.equals(body)){
  1547.                 throw new Exception("Impostazione sul dump body ("+flow+"."+inOut+") non corretta");
  1548.             }
  1549.         }
  1550.        
  1551.         String attachments = this.getValue("dump."+flow+"."+inOut+".attachments");
  1552.         if(attachments!=null){
  1553.             attachments = attachments.trim();
  1554.             if(!CostantiConfigurazione.ABILITATO.equals(attachments) &&
  1555.                     !CostantiConfigurazione.DISABILITATO.equals(attachments)){
  1556.                 throw new Exception("Impostazione sul dump attachments ("+flow+"."+inOut+") non corretta");
  1557.             }
  1558.         }
  1559.        
  1560.         String headers = this.getValue("dump."+flow+"."+inOut+".headers");
  1561.         if(headers!=null){
  1562.             headers = headers.trim();
  1563.             if(!CostantiConfigurazione.ABILITATO.equals(headers) &&
  1564.                     !CostantiConfigurazione.DISABILITATO.equals(headers)){
  1565.                 throw new Exception("Impostazione sul dump headers ("+flow+"."+inOut+") non corretta");
  1566.             }
  1567.         }
  1568.        
  1569.         if(backwardCompatibility) {
  1570.             if(body!=null || attachments!=null || headers!=null){
  1571.                 regola = new DumpConfigurazioneRegola();
  1572.             }
  1573.            
  1574.             if(regola!=null) {
  1575.                 if(body!=null) {
  1576.                     regola.setBody(StatoFunzionalita.toEnumConstant(body));
  1577.                 }
  1578.                
  1579.                 if(attachments!=null) {
  1580.                     regola.setAttachments(StatoFunzionalita.toEnumConstant(attachments));
  1581.                 }
  1582.                
  1583.                 if(StatoFunzionalita.ABILITATO.equals(regola.getBody()) || StatoFunzionalita.ABILITATO.equals(regola.getAttachments())) {
  1584.                     regola.setPayload(StatoFunzionalita.ABILITATO);
  1585.                     regola.setPayloadParsing(StatoFunzionalita.ABILITATO);
  1586.                 }
  1587.                 else {
  1588.                     regola.setPayload(StatoFunzionalita.DISABILITATO);
  1589.                     regola.setPayloadParsing(StatoFunzionalita.DISABILITATO);
  1590.                 }
  1591.             }
  1592.         }
  1593.         else {
  1594.                        
  1595.             if(payload!=null || payload_parsing!=null || body!=null || attachments!=null || headers!=null){
  1596.                 regola = new DumpConfigurazioneRegola();
  1597.             }          
  1598.            
  1599.             if(regola!=null) {
  1600.                 if(payload!=null) {
  1601.                     regola.setPayload(StatoFunzionalita.toEnumConstant(payload));
  1602.                 }
  1603.                
  1604.                 if(StatoFunzionalita.ABILITATO.equals(regola.getPayload())){
  1605.                    
  1606.                     if(payload_parsing!=null) {
  1607.                         regola.setPayloadParsing(StatoFunzionalita.toEnumConstant(payload_parsing));
  1608.                     }
  1609.                    
  1610.                     if(StatoFunzionalita.ABILITATO.equals(regola.getPayloadParsing())){
  1611.                        
  1612.                         if(body!=null) {
  1613.                             regola.setBody(StatoFunzionalita.toEnumConstant(body));
  1614.                         }
  1615.                        
  1616.                         if(attachments!=null) {
  1617.                             regola.setAttachments(StatoFunzionalita.toEnumConstant(attachments));
  1618.                         }
  1619.                        
  1620.                     }
  1621.                     else {
  1622.                         regola.setBody(StatoFunzionalita.DISABILITATO);
  1623.                         regola.setAttachments(StatoFunzionalita.DISABILITATO);
  1624.                     }
  1625.                    
  1626.                 }
  1627.                 else {
  1628.                     regola.setPayloadParsing(StatoFunzionalita.DISABILITATO);
  1629.                     regola.setBody(StatoFunzionalita.DISABILITATO);
  1630.                     regola.setAttachments(StatoFunzionalita.DISABILITATO);
  1631.                 }
  1632.             }
  1633.         }

  1634.         if(regola!=null && headers!=null) {
  1635.             regola.setHeaders(StatoFunzionalita.toEnumConstant(headers));
  1636.         }
  1637.        
  1638.         return regola;
  1639.     }
  1640. }