ImporterInformationMissingSetter.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.protocol.engine.archive;

  21. import java.util.ArrayList;
  22. import java.util.List;

  23. import org.openspcoop2.core.config.CorrelazioneApplicativaElemento;
  24. import org.openspcoop2.core.config.CorrelazioneApplicativaRispostaElemento;
  25. import org.openspcoop2.core.config.Credenziali;
  26. import org.openspcoop2.core.config.InvocazioneCredenziali;
  27. import org.openspcoop2.core.config.InvocazionePorta;
  28. import org.openspcoop2.core.config.InvocazioneServizio;
  29. import org.openspcoop2.core.config.PortaApplicativa;
  30. import org.openspcoop2.core.config.PortaDelegata;
  31. import org.openspcoop2.core.config.ServizioApplicativo;
  32. import org.openspcoop2.core.config.constants.CostantiConfigurazione;
  33. import org.openspcoop2.core.config.constants.StatoFunzionalita;
  34. import org.openspcoop2.core.config.constants.TipologiaFruizione;
  35. import org.openspcoop2.core.id.IDAccordo;
  36. import org.openspcoop2.core.id.IDAccordoCooperazione;
  37. import org.openspcoop2.core.id.IDServizio;
  38. import org.openspcoop2.core.id.IDSoggetto;
  39. import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
  40. import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
  41. import org.openspcoop2.core.registry.AccordoCooperazione;
  42. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  43. import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioComposto;
  44. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  45. import org.openspcoop2.core.registry.ConfigurazioneServizio;
  46. import org.openspcoop2.core.registry.Connettore;
  47. import org.openspcoop2.core.registry.Fruitore;
  48. import org.openspcoop2.core.registry.IdSoggetto;
  49. import org.openspcoop2.core.registry.Property;
  50. import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
  51. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  52. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  53. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  54. import org.openspcoop2.protocol.information_missing.ReplaceFruitoreMatchType;
  55. import org.openspcoop2.protocol.information_missing.ReplaceMatchFieldType;
  56. import org.openspcoop2.protocol.information_missing.ReplaceMatchType;
  57. import org.openspcoop2.protocol.information_missing.Soggetto;
  58. import org.openspcoop2.protocol.information_missing.constants.Costanti;
  59. import org.openspcoop2.protocol.information_missing.constants.ReplaceKeywordType;
  60. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  61. import org.openspcoop2.protocol.sdk.ProtocolException;
  62. import org.openspcoop2.protocol.sdk.archive.Archive;
  63. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteSpecifica;
  64. import org.openspcoop2.protocol.sdk.archive.ArchiveFruitore;
  65. import org.openspcoop2.protocol.sdk.registry.IRegistryReader;

  66. /**
  67.  * ImporterInformationMissingSetter
  68.  *
  69.  * @author Andrea Poli (apoli@link.it)
  70.  * @author $Author$
  71.  * @version $Rev$, $Date$
  72.  */
  73. public class ImporterInformationMissingSetter {

  74.     public static void setInformationMissingReferenteAPI(Archive archive, IRegistryReader registryReader) throws ProtocolException {
  75.         // Accordi di Servizio Parte Comune
  76.         if(archive.getAccordiServizioParteComune()!=null && archive.getAccordiServizioParteComune().size()>0) {
  77.             for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
  78.                 AccordoServizioParteComune as = archive.getAccordiServizioParteComune().get(i).getAccordoServizioParteComune();
  79.                 IdSoggetto soggettoReferente = as.getSoggettoReferente();
  80.                 String tipoSoggettoReferente = null;
  81.                 String nomeSoggettoReferente = null;
  82.                 if(soggettoReferente!=null){
  83.                     tipoSoggettoReferente = soggettoReferente.getTipo();
  84.                     nomeSoggettoReferente = soggettoReferente.getNome();
  85.                 }
  86.                 if(tipoSoggettoReferente!=null && !"".equals(tipoSoggettoReferente) &&
  87.                         (nomeSoggettoReferente==null || "".equals(nomeSoggettoReferente))){
  88.                    
  89.                     ProtocolFactoryManager protocolFactoryManager = ProtocolFactoryManager.getInstance();
  90.                     IProtocolFactory<?> protocol = protocolFactoryManager.getProtocolFactoryByOrganizationType(tipoSoggettoReferente);
  91.                     boolean referente = protocol.createProtocolConfiguration().isSupportoSoggettoReferenteAccordiParteComune();
  92.                     if(!referente) {
  93.                         String tipoSoggettoDefault = protocolFactoryManager.getDefaultOrganizationTypes().get(protocol.getProtocol());
  94.                         IDSoggetto idSoggettoDefault = null;
  95.                         try {
  96.                             idSoggettoDefault = registryReader.getIdSoggettoDefault(tipoSoggettoDefault);
  97.                         }catch(Exception e) {
  98.                             throw new ProtocolException(e.getMessage(),e);
  99.                         }
  100.                         as.getSoggettoReferente().setNome(idSoggettoDefault.getNome());                    
  101.                     }
  102.                 }
  103.             }
  104.         }
  105.     }
  106.    
  107.     public static void setInformationMissingSoggetto(Archive archive, Soggetto soggetto, IDSoggetto idSoggetto, Connettore connettore) throws ProtocolException{
  108.        
  109.         switch (soggetto.getTipo()) {
  110.         case RIFERIMENTO:
  111.             setInformationMissing_RiferimentoSoggetto(archive, soggetto, idSoggetto);
  112.             break;
  113.         case CONNETTORE:
  114.             setInformationMissing_ConnettoreSoggetto(archive, soggetto, connettore);
  115.             break;
  116.         }
  117.        
  118.     }
  119.    
  120.     public static void setInformationMissingServizioApplicativo(Archive archive, org.openspcoop2.protocol.information_missing.ServizioApplicativo sa,
  121.             InvocazioneServizio invocazioneServizio, Credenziali credenziali) throws ProtocolException{
  122.        
  123.         switch (sa.getTipo()) {
  124.         case RIFERIMENTO:
  125.             // non ancora gestito
  126.             break;
  127.         case CONNETTORE:
  128.             setInformationMissing_ConnettoreSA(archive, sa, invocazioneServizio, credenziali);
  129.             break;
  130.         case CREDENZIALI_ACCESSO_PDD:
  131.             setInformationMissing_CredenzialiSA(archive, sa, credenziali);
  132.             break;
  133.         case ALLINEA_CREDENZIALI_PD:
  134.             setInformationMissing_AllineaCredenzialiPD(archive, sa);
  135.             break;
  136.         }
  137.        
  138.     }
  139.    
  140.     public static void setInformationMissingAccordoCooperazione(Archive archive, org.openspcoop2.protocol.information_missing.AccordoCooperazione ac, IDAccordoCooperazione idAccordo) throws ProtocolException{
  141.        
  142.         switch (ac.getTipo()) {
  143.         case RIFERIMENTO:
  144.             setInformationMissing_RiferimentoAccordoCooperazione(archive, ac, idAccordo);
  145.             break;
  146.         case STATO_ARCHIVIO:
  147.             if(ac.getStato()==null){
  148.                 throw new ProtocolException("Stato non fornito, è richiesto con tipo di operazione ["+ac.getTipo().name()+"]");
  149.             }
  150.             setInformationMissing_StatoAccordoCooperazione(archive, ac);
  151.             break;
  152.         }
  153.        
  154.     }
  155.    
  156.     public static void setInformationMissingAccordoServizioParteComune(Archive archive, org.openspcoop2.protocol.information_missing.AccordoServizioParteComune as, IDAccordo idAccordo) throws ProtocolException{
  157.        
  158.         switch (as.getTipo()) {
  159.         case RIFERIMENTO:
  160.             setInformationMissing_RiferimentoAccordoServizioParteComune(archive, as, idAccordo);
  161.             break;
  162.         case STATO_ARCHIVIO:
  163.             if(as.getStato()==null){
  164.                 throw new ProtocolException("Stato non fornito, è richiesto con tipo di operazione ["+as.getTipo().name()+"]");
  165.             }
  166.             setInformationMissing_StatoAccordoServizioParteComune(archive, as);
  167.             break;
  168.         }
  169.        
  170.     }
  171.    
  172.     public static void setInformationMissingAccordoServizioParteSpecifica(Archive archive, org.openspcoop2.protocol.information_missing.AccordoServizioParteSpecifica asps,
  173.             Connettore connettore) throws ProtocolException{
  174.        
  175.         switch (asps.getTipo()) {
  176.         case CONNETTORE:
  177.             setInformationMissing_ConnettoreASPS(archive, asps, connettore);
  178.             break;
  179.         case STATO_ARCHIVIO:
  180.             if(asps.getStato()==null){
  181.                 throw new ProtocolException("Stato non fornito, è richiesto con tipo di operazione ["+asps.getTipo().name()+"]");
  182.             }
  183.             setInformationMissing_StatoAccordoServizioParteSpecifica(archive, asps);
  184.             break;
  185.         }
  186.        
  187.     }
  188.    
  189.     public static void setInformationMissingAccordoServizioComposto(Archive archive, org.openspcoop2.protocol.information_missing.AccordoServizioParteComune as, IDAccordo idAccordo) throws ProtocolException{
  190.        
  191.         switch (as.getTipo()) {
  192.         case RIFERIMENTO:
  193.             setInformationMissing_RiferimentoAccordoServizioComposto(archive, as, idAccordo);
  194.             break;
  195.         case STATO_ARCHIVIO:
  196.             if(as.getStato()==null){
  197.                 throw new ProtocolException("Stato non fornito, è richiesto con tipo di operazione ["+as.getTipo().name()+"]");
  198.             }
  199.             setInformationMissing_StatoAccordoServizioComposto(archive, as);
  200.             break;
  201.         }
  202.        
  203.     }
  204.    
  205.     public static void setInformationMissingFruitore(Archive archive, org.openspcoop2.protocol.information_missing.Fruitore fruitore,
  206.             Connettore connettore) throws ProtocolException{
  207.        
  208.         switch (fruitore.getTipo()) {
  209.         case CONNETTORE:
  210.             setInformationMissing_ConnettoreFruitore(archive, fruitore, connettore);
  211.             break;
  212.         case STATO_ARCHIVIO:
  213.             setInformationMissing_StatoFruitore(archive, fruitore);
  214.             break;
  215.         }
  216.        
  217.     }
  218.    
  219.     public static void setInformationMissingPortaDelegata(Archive archive, org.openspcoop2.protocol.information_missing.PortaDelegata portaDelegata) throws ProtocolException{
  220.        
  221.         switch (portaDelegata.getTipo()) {
  222.         case STATO:
  223.             setInformationMissing_StatoPortaDelegata(archive, portaDelegata);
  224.             break;
  225.         }
  226.        
  227.     }
  228.    
  229.     public static void setInformationMissingPortaApplicativa(Archive archive, org.openspcoop2.protocol.information_missing.PortaApplicativa portaApplicativa) throws ProtocolException{
  230.        
  231.         switch (portaApplicativa.getTipo()) {
  232.         case STATO:
  233.             setInformationMissing_StatoPortaApplicativa(archive, portaApplicativa);
  234.             break;
  235.         }
  236.        
  237.     }
  238.    
  239.    
  240.    
  241.    
  242.     // ******* MATCH **********
  243.    
  244.     private static boolean match(ReplaceMatchFieldType fieldType,String value){
  245.         if(ReplaceKeywordType.EMPTY.equals(fieldType.getTipo())){
  246.             if( value==null || "".equals(value) ){
  247.                 return true;
  248.             }
  249.         }
  250.         else if(ReplaceKeywordType.EQUALS.equals(fieldType.getTipo())){
  251.             if(value!=null && value.equals(fieldType.getValore())){
  252.                 return true;
  253.             }
  254.         }
  255.         else if(ReplaceKeywordType.CONTAINS.equals(fieldType.getTipo())){
  256.             if(value!=null && value.contains(fieldType.getValore())){
  257.                 return true;
  258.             }
  259.         }
  260.         else if(ReplaceKeywordType.STARTS_WITH.equals(fieldType.getTipo())){
  261.             if(value!=null && value.startsWith(fieldType.getValore())){
  262.                 return true;
  263.             }
  264.         }
  265.         else if(ReplaceKeywordType.ENDS_WITH.equals(fieldType.getTipo())){
  266.             if(value!=null && value.endsWith(fieldType.getValore())){
  267.                 return true;
  268.             }
  269.         }
  270.         else if(ReplaceKeywordType.ALL.equals(fieldType.getTipo())){
  271.             return true;
  272.         }
  273.         return false;
  274.     }
  275.    
  276.     private static boolean matchSoggetto(ReplaceMatchType replaceMatch,
  277.             String tipoSoggetto,String nomeSoggetto){
  278.        
  279.         ReplaceMatchFieldType nome = replaceMatch.getNome();
  280.         ReplaceMatchFieldType tipo = replaceMatch.getTipo();
  281.         if(nome==null && tipo==null){
  282.             return false; // per trovare un soggetto almeno un criterio di ricerca deve essere fornito
  283.         }
  284.        
  285.         if(nome!=null){
  286.             if(match(nome, nomeSoggetto)==false){
  287.                 return false;
  288.             }
  289.         }
  290.        
  291.         if(tipo!=null){
  292.             if(match(tipo, tipoSoggetto)==false){
  293.                 return false;
  294.             }
  295.         }
  296.        
  297.         return true;
  298.     }
  299.    
  300.    
  301.     private static boolean matchServizio(ReplaceMatchType replaceMatch,
  302.             String tipoServizio,String nomeServizio){
  303.         ReplaceMatchFieldType nome = replaceMatch.getNome();
  304.         ReplaceMatchFieldType tipo = replaceMatch.getTipo();
  305.         if(nome==null && tipo==null){
  306.             return false; // per trovare un servizio almeno un criterio di ricerca deve essere fornito
  307.         }
  308.        
  309.         if(nome!=null){
  310.             if(match(nome, nomeServizio)==false){
  311.                 return false;
  312.             }
  313.         }
  314.        
  315.         if(tipo!=null){
  316.             if(match(tipo, tipoServizio)==false){
  317.                 return false;
  318.             }
  319.         }
  320.        
  321.         return true;
  322.     }
  323.    
  324.     private static boolean matchFruitore(ReplaceFruitoreMatchType replaceMatch,
  325.             String tipoSoggetto,String nomeSoggetto,
  326.             String tipoServizio,String nomeServizio,
  327.             String tipoSoggettoErogatore,String nomeSoggettoErogatore){
  328.        
  329.         ReplaceMatchFieldType nome = replaceMatch.getNome();
  330.         ReplaceMatchFieldType tipo = replaceMatch.getTipo();
  331.         ReplaceMatchFieldType rNomeServizio = replaceMatch.getNomeServizio();
  332.         ReplaceMatchFieldType rTipoServizio = replaceMatch.getTipoServizio();
  333.         ReplaceMatchFieldType rNomeSoggettoErogatore = replaceMatch.getNomeErogatore();
  334.         ReplaceMatchFieldType rTipoSoggettoErogatore = replaceMatch.getTipoErogatore();
  335.        
  336.         if(nome==null && tipo==null &&
  337.                 rNomeServizio==null && rTipoServizio==null &&
  338.                 rNomeSoggettoErogatore==null && rTipoSoggettoErogatore==null){
  339.             return false; // per trovare un soggetto almeno un criterio di ricerca deve essere fornito
  340.         }
  341.        
  342.         // tipo/nome soggetto
  343.        
  344.         if(nome!=null){
  345.             if(match(nome, nomeSoggetto)==false){
  346.                 return false;
  347.             }
  348.         }
  349.        
  350.         if(tipo!=null){
  351.             if(match(tipo, tipoSoggetto)==false){
  352.                 return false;
  353.             }
  354.         }
  355.        
  356.         // tipo/nome servizio

  357.         if(rNomeServizio!=null){
  358.             if(match(rNomeServizio, nomeServizio)==false){
  359.                 return false;
  360.             }
  361.         }
  362.        
  363.         if(rTipoServizio!=null){
  364.             if(match(rTipoServizio, tipoServizio)==false){
  365.                 return false;
  366.             }
  367.         }
  368.        
  369.         // tipo/nome erogatore

  370.         if(rNomeSoggettoErogatore!=null){
  371.             if(match(rNomeSoggettoErogatore, nomeSoggettoErogatore)==false){
  372.                 return false;
  373.             }
  374.         }
  375.        
  376.         if(rTipoSoggettoErogatore!=null){
  377.             if(match(rTipoSoggettoErogatore, tipoSoggettoErogatore)==false){
  378.                 return false;
  379.             }
  380.         }
  381.        
  382.         return true;
  383.     }
  384.    
  385.     private static boolean matchServizioApplicativo(ReplaceMatchType replaceMatch,
  386.             String nomeServizio){
  387.         ReplaceMatchFieldType nome = replaceMatch.getNome();
  388.         if(nome==null){
  389.             return false; // per trovare un servizio applicativo un criterio di ricerca deve essere fornito
  390.         }
  391.        
  392.         if(nome!=null){
  393.             if(match(nome, nomeServizio)==false){
  394.                 return false;
  395.             }
  396.         }
  397.        
  398.         return true;
  399.     }
  400.    
  401.     private static boolean matchAccordo(ReplaceMatchType replaceMatch,
  402.             String nomeAccordo){
  403.         ReplaceMatchFieldType nome = replaceMatch.getNome();
  404.         if(nome==null){
  405.             return false; // per trovare un accordo un criterio di ricerca deve essere fornito
  406.         }
  407.        
  408.         if(nome!=null){
  409.             if(match(nome, nomeAccordo)==false){
  410.                 return false;
  411.             }
  412.         }
  413.        
  414.         return true;
  415.     }
  416.    
  417.     private static boolean matchPorta(ReplaceMatchType replaceMatch,
  418.             String nomePorta){
  419.         ReplaceMatchFieldType nome = replaceMatch.getNome();
  420.         if(nome==null){
  421.             return false; // per trovare un accordo un criterio di ricerca deve essere fornito
  422.         }
  423.        
  424.         if(nome!=null){
  425.             if(match(nome, nomePorta)==false){
  426.                 return false;
  427.             }
  428.         }
  429.        
  430.         return true;
  431.     }
  432.    

  433.    
  434.    
  435.     // ******* SOGGETTI **********
  436.    
  437.     private static void setInformationMissing_RiferimentoSoggetto(Archive archive, Soggetto soggetto, IDSoggetto idSoggetto) throws ProtocolException{
  438.        
  439.         // ServiziApplicativi
  440.         for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  441.             ServizioApplicativo sa = archive.getServiziApplicativi().get(i).getServizioApplicativo();
  442.             if(matchSoggetto(soggetto.getReplaceMatch(),
  443.                     sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario())){
  444.                 sa.setTipoSoggettoProprietario(idSoggetto.getTipo());
  445.                 sa.setNomeSoggettoProprietario(idSoggetto.getNome());
  446.                 archive.getServiziApplicativi().get(i).update(sa, false);
  447.             }
  448.         }
  449.        
  450.         // PorteDelegate
  451.         for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
  452.             PortaDelegata pd = archive.getPorteDelegate().get(i).getPortaDelegata();
  453.             if(matchSoggetto(soggetto.getReplaceMatch(),
  454.                     pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario())){
  455.                 pd.setTipoSoggettoProprietario(idSoggetto.getTipo());
  456.                 pd.setNomeSoggettoProprietario(idSoggetto.getNome());
  457.                 archive.getPorteDelegate().get(i).update(pd, false);
  458.             }
  459.             if(pd.getSoggettoErogatore()!=null){
  460.                 if(matchSoggetto(soggetto.getReplaceMatch(),
  461.                         pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome())){
  462.                     pd.getSoggettoErogatore().setTipo(idSoggetto.getTipo());
  463.                     pd.getSoggettoErogatore().setNome(idSoggetto.getNome());
  464.                     archive.getPorteDelegate().get(i).update(pd, false);
  465.                 }
  466.             }
  467.         }
  468.        
  469.         // PorteApplicative
  470.         for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  471.             PortaApplicativa pa = archive.getPorteApplicative().get(i).getPortaApplicativa();
  472.             if(matchSoggetto(soggetto.getReplaceMatch(),
  473.                     pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario())){
  474.                 pa.setTipoSoggettoProprietario(idSoggetto.getTipo());
  475.                 pa.setNomeSoggettoProprietario(idSoggetto.getNome());
  476.                 archive.getPorteApplicative().get(i).update(pa, false);
  477.             }
  478.             if(pa.getSoggettoVirtuale()!=null){
  479.                 if(matchSoggetto(soggetto.getReplaceMatch(),
  480.                         pa.getSoggettoVirtuale().getTipo(), pa.getSoggettoVirtuale().getNome())){
  481.                     pa.getSoggettoVirtuale().setTipo(idSoggetto.getTipo());
  482.                     pa.getSoggettoVirtuale().setNome(idSoggetto.getNome());
  483.                     archive.getPorteApplicative().get(i).update(pa, false);
  484.                 }
  485.             }
  486.         }
  487.        
  488.         // Accordi di Cooperazione
  489.         for (int i = 0; i < archive.getAccordiCooperazione().size(); i++) {
  490.             AccordoCooperazione ac = archive.getAccordiCooperazione().get(i).getAccordoCooperazione();
  491.             IdSoggetto soggettoReferente = ac.getSoggettoReferente();
  492.             String tipoSoggettoReferente = null;
  493.             String nomeSoggettoReferente = null;
  494.             if(soggettoReferente!=null){
  495.                 tipoSoggettoReferente = soggettoReferente.getTipo();
  496.                 nomeSoggettoReferente = soggettoReferente.getNome();
  497.             }
  498.             if(matchSoggetto(soggetto.getReplaceMatch(),
  499.                     tipoSoggettoReferente, nomeSoggettoReferente)){
  500.                 if(soggettoReferente==null){
  501.                     ac.setSoggettoReferente(new IdSoggetto());
  502.                 }
  503.                 ac.getSoggettoReferente().setTipo(idSoggetto.getTipo());
  504.                 ac.getSoggettoReferente().setNome(idSoggetto.getNome());
  505.                 archive.getAccordiCooperazione().get(i).update(ac, false);
  506.             }
  507.         }
  508.        
  509.         // Accordi di Servizio Parte Comune
  510.         for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
  511.             AccordoServizioParteComune as = archive.getAccordiServizioParteComune().get(i).getAccordoServizioParteComune();
  512.             IdSoggetto soggettoReferente = as.getSoggettoReferente();
  513.             String tipoSoggettoReferente = null;
  514.             String nomeSoggettoReferente = null;
  515.             if(soggettoReferente!=null){
  516.                 tipoSoggettoReferente = soggettoReferente.getTipo();
  517.                 nomeSoggettoReferente = soggettoReferente.getNome();
  518.             }
  519.             if(matchSoggetto(soggetto.getReplaceMatch(),
  520.                     tipoSoggettoReferente, nomeSoggettoReferente)){
  521.                 if(soggettoReferente==null){
  522.                     as.setSoggettoReferente(new IdSoggetto());
  523.                 }
  524.                 as.getSoggettoReferente().setTipo(idSoggetto.getTipo());
  525.                 as.getSoggettoReferente().setNome(idSoggetto.getNome());
  526.                 archive.getAccordiServizioParteComune().get(i).update(as, false);
  527.             }
  528.         }
  529.        
  530.         // Accordi di Servizio Parte Specifica
  531.         for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  532.             ArchiveAccordoServizioParteSpecifica archiveAS = archive.getAccordiServizioParteSpecifica().get(i);
  533.             AccordoServizioParteSpecifica as = archiveAS.getAccordoServizioParteSpecifica();
  534.             String tipoSoggettoReferente = as.getTipoSoggettoErogatore();
  535.             String nomeSoggettoReferente = as.getNomeSoggettoErogatore();
  536.             if(matchSoggetto(soggetto.getReplaceMatch(),
  537.                     tipoSoggettoReferente, nomeSoggettoReferente)){
  538.                 as.setTipoSoggettoErogatore(idSoggetto.getTipo());
  539.                 as.setNomeSoggettoErogatore(idSoggetto.getNome());
  540.                 archive.getAccordiServizioParteSpecifica().get(i).update(as, false);
  541.             }
  542.            
  543.             if(as.getAccordoServizioParteComune()!=null) {
  544.                 try {
  545.                     IDAccordo idAccordo = IDAccordoFactory.getInstance().getIDAccordoFromUri(as.getAccordoServizioParteComune());
  546.                     if(idAccordo.getSoggettoReferente()!=null) {
  547.                         String tipoSoggettoReferenteAccordo = idAccordo.getSoggettoReferente().getTipo();
  548.                         String nomeSoggettoReferenteAccordo = idAccordo.getSoggettoReferente().getNome();
  549.                         if(matchSoggetto(soggetto.getReplaceMatch(),
  550.                                 tipoSoggettoReferenteAccordo, nomeSoggettoReferenteAccordo)){
  551.                             idAccordo.getSoggettoReferente().setTipo(idSoggetto.getTipo());
  552.                             idAccordo.getSoggettoReferente().setNome(idSoggetto.getNome());
  553.                             as.setAccordoServizioParteComune(IDAccordoFactory.getInstance().getUriFromIDAccordo(idAccordo));
  554.                             archive.getAccordiServizioParteSpecifica().get(i).update(as, false);
  555.                         }
  556.                     }
  557.                 }catch(Exception e) {
  558.                     throw new ProtocolException(e.getMessage(),e );
  559.                 }
  560.             }
  561.            
  562.             if(archiveAS.getMappingPorteApplicativeAssociate()!=null && !archiveAS.getMappingPorteApplicativeAssociate().isEmpty()) {
  563.                 for (MappingErogazionePortaApplicativa mappingPA : archiveAS.getMappingPorteApplicativeAssociate()) {
  564.                     if(mappingPA.getIdServizio()!=null && mappingPA.getIdServizio().getSoggettoErogatore()!=null) {
  565.                         String tipoSoggettoErogatore = mappingPA.getIdServizio().getSoggettoErogatore().getTipo();
  566.                         String nomeSoggettoErogatore = mappingPA.getIdServizio().getSoggettoErogatore().getNome();
  567.                         if(matchSoggetto(soggetto.getReplaceMatch(),
  568.                                 tipoSoggettoErogatore, nomeSoggettoErogatore)){
  569.                             mappingPA.getIdServizio().getSoggettoErogatore().setTipo(idSoggetto.getTipo());
  570.                             mappingPA.getIdServizio().getSoggettoErogatore().setNome(idSoggetto.getNome());
  571.                         }
  572.                     }
  573.                 }
  574.             }
  575.         }

  576.         // Accordi di Servizio Composti
  577.         for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
  578.             AccordoServizioParteComune as = archive.getAccordiServizioComposto().get(i).getAccordoServizioParteComune();
  579.             IdSoggetto soggettoReferente = as.getSoggettoReferente();
  580.             String tipoSoggettoReferente = null;
  581.             String nomeSoggettoReferente = null;
  582.             if(soggettoReferente!=null){
  583.                 tipoSoggettoReferente = soggettoReferente.getTipo();
  584.                 nomeSoggettoReferente = soggettoReferente.getNome();
  585.             }
  586.             if(matchSoggetto(soggetto.getReplaceMatch(),
  587.                     tipoSoggettoReferente, nomeSoggettoReferente)){
  588.                 if(soggettoReferente==null){
  589.                     as.setSoggettoReferente(new IdSoggetto());
  590.                 }
  591.                 as.getSoggettoReferente().setTipo(idSoggetto.getTipo());
  592.                 as.getSoggettoReferente().setNome(idSoggetto.getNome());
  593.                 archive.getAccordiServizioComposto().get(i).update(as, false);
  594.             }
  595.         }
  596.        
  597.         // Fruizioni
  598.         for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  599.             ArchiveFruitore archiveFruitore = archive.getAccordiFruitori().get(i);
  600.             Fruitore fruitore = archiveFruitore.getFruitore();
  601.             IDServizio idAps = archiveFruitore.getIdAccordoServizioParteSpecifica();
  602.             String tipoSoggettoReferente = null;
  603.             String nomeSoggettoReferente = null;
  604.             if(idAps.getSoggettoErogatore()!=null){
  605.                 tipoSoggettoReferente = idAps.getSoggettoErogatore().getTipo();
  606.                 nomeSoggettoReferente = idAps.getSoggettoErogatore().getNome();
  607.             }
  608.             if(matchSoggetto(soggetto.getReplaceMatch(),
  609.                     fruitore.getTipo(), fruitore.getNome())){
  610.                 fruitore.setTipo(idSoggetto.getTipo());
  611.                 fruitore.setNome(idSoggetto.getNome());
  612.                 archive.getAccordiFruitori().get(i).update(idAps,fruitore, false);
  613.             }
  614.             else if(matchSoggetto(soggetto.getReplaceMatch(),
  615.                     tipoSoggettoReferente, nomeSoggettoReferente)){
  616.                 try{
  617.                     idAps = IDServizioFactory.getInstance().getIDServizioFromValuesWithoutCheck(idAps.getTipo(),idAps.getNome(),
  618.                             idSoggetto.getTipo(),idSoggetto.getNome(), idAps.getVersione());
  619.                 }catch(Exception e){
  620.                     throw new ProtocolException(e.getMessage(),e);
  621.                 }
  622.                 archive.getAccordiFruitori().get(i).update(idAps,fruitore, false);
  623.             }
  624.            
  625.             if(archiveFruitore.getMappingPorteDelegateAssociate()!=null && !archiveFruitore.getMappingPorteDelegateAssociate().isEmpty()) {
  626.                 for (MappingFruizionePortaDelegata mappingPD : archiveFruitore.getMappingPorteDelegateAssociate()) {
  627.                     if(mappingPD.getIdServizio()!=null && mappingPD.getIdServizio().getSoggettoErogatore()!=null) {
  628.                         String tipoSoggettoErogatore = mappingPD.getIdServizio().getSoggettoErogatore().getTipo();
  629.                         String nomeSoggettoErogatore = mappingPD.getIdServizio().getSoggettoErogatore().getNome();
  630.                         if(matchSoggetto(soggetto.getReplaceMatch(),
  631.                                 tipoSoggettoErogatore, nomeSoggettoErogatore)){
  632.                             mappingPD.getIdServizio().getSoggettoErogatore().setTipo(idSoggetto.getTipo());
  633.                             mappingPD.getIdServizio().getSoggettoErogatore().setNome(idSoggetto.getNome());
  634.                         }
  635.                     }
  636.                     if(mappingPD.getIdFruitore()!=null) {
  637.                         String tipoSoggettoFruitore = mappingPD.getIdFruitore().getTipo();
  638.                         String nomeSoggettoFruitore = mappingPD.getIdFruitore().getNome();
  639.                         if(matchSoggetto(soggetto.getReplaceMatch(),
  640.                                 tipoSoggettoFruitore, nomeSoggettoFruitore)){
  641.                             mappingPD.getIdFruitore().setTipo(idSoggetto.getTipo());
  642.                             mappingPD.getIdFruitore().setNome(idSoggetto.getNome());
  643.                         }
  644.                     }
  645.                 }
  646.             }
  647.         }
  648.     }

  649.     private static void setInformationMissing_ConnettoreSoggetto(Archive archive, Soggetto soggetto, Connettore connettore) throws ProtocolException{
  650.        
  651.         // Soggetti
  652.         for (int i = 0; i < archive.getSoggetti().size(); i++) {
  653.             org.openspcoop2.core.registry.Soggetto soggettoRegistro = archive.getSoggetti().get(i).getSoggettoRegistro();
  654.             if(soggettoRegistro!=null){
  655.                 if(matchSoggetto(soggetto.getReplaceMatch(),
  656.                         soggettoRegistro.getTipo(), soggettoRegistro.getNome())){
  657.                     if(soggettoRegistro.getConnettore()==null)
  658.                         soggettoRegistro.setConnettore(connettore);
  659.                     else{
  660.                         soggettoRegistro.getConnettore().setCustom(connettore.getCustom());
  661.                         soggettoRegistro.getConnettore().setTipo(connettore.getTipo());
  662.                         while(soggettoRegistro.getConnettore().sizePropertyList()>0)
  663.                             soggettoRegistro.getConnettore().removeProperty(0);
  664.                         if(connettore.sizePropertyList()>0)
  665.                             soggettoRegistro.getConnettore().getPropertyList().addAll(connettore.getPropertyList());
  666.                     }
  667.                 }
  668.             }
  669.         }
  670.        
  671.     }
  672.    
  673.    
  674.    
  675.    
  676.     // ***** SERVIZI APPLICATIVI ******
  677.    
  678.     private static void setInformationMissing_ConnettoreSA(Archive archive,  org.openspcoop2.protocol.information_missing.ServizioApplicativo saMissingInfo,
  679.             InvocazioneServizio invocazioneServizio, Credenziali credenziali) throws ProtocolException{
  680.        
  681.         // ServiziApplicativi
  682.         for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  683.             ServizioApplicativo sa = archive.getServiziApplicativi().get(i).getServizioApplicativo();
  684.             if(matchServizioApplicativo(saMissingInfo.getReplaceMatch(),
  685.                     sa.getNome())){
  686.                
  687.                 if(credenziali!=null){
  688.                     if(sa.getInvocazionePorta()==null){
  689.                         sa.setInvocazionePorta(new InvocazionePorta());
  690.                     }
  691.                     while(sa.getInvocazionePorta().sizeCredenzialiList()>0){
  692.                         sa.getInvocazionePorta().removeCredenziali(0);
  693.                     }
  694.                     sa.getInvocazionePorta().addCredenziali(credenziali);
  695.                 }
  696.                
  697.                 if(sa.getInvocazioneServizio()==null){
  698.                     sa.setInvocazioneServizio(invocazioneServizio);
  699.                 }
  700.                 else{
  701.                     sa.getInvocazioneServizio().setSbustamentoInformazioniProtocollo(invocazioneServizio.getSbustamentoInformazioniProtocollo());
  702.                     sa.getInvocazioneServizio().setSbustamentoSoap(invocazioneServizio.getSbustamentoSoap());
  703.                     sa.getInvocazioneServizio().setGetMessage(invocazioneServizio.getGetMessage());
  704.                     sa.getInvocazioneServizio().setInvioPerRiferimento(invocazioneServizio.getInvioPerRiferimento());
  705.                     sa.getInvocazioneServizio().setRispostaPerRiferimento(invocazioneServizio.getRispostaPerRiferimento());
  706.                    
  707.                     if(sa.getInvocazioneServizio().getCredenziali()==null){
  708.                         sa.getInvocazioneServizio().setCredenziali(invocazioneServizio.getCredenziali());
  709.                     }
  710.                     else{
  711.                         sa.getInvocazioneServizio().getCredenziali().setUser(invocazioneServizio.getCredenziali().getUser());
  712.                         sa.getInvocazioneServizio().getCredenziali().setPassword(invocazioneServizio.getCredenziali().getPassword());
  713.                     }
  714.                    
  715.                     sa.getInvocazioneServizio().setAutenticazione(invocazioneServizio.getAutenticazione());
  716.                    
  717.                     if(sa.getInvocazioneServizio().getConnettore()==null){
  718.                         sa.getInvocazioneServizio().setConnettore(invocazioneServizio.getConnettore());
  719.                     }
  720.                     else{
  721.                         sa.getInvocazioneServizio().getConnettore().setCustom(invocazioneServizio.getConnettore().getCustom());
  722.                         sa.getInvocazioneServizio().getConnettore().setTipo(invocazioneServizio.getConnettore().getTipo());
  723.                         while(sa.getInvocazioneServizio().getConnettore().sizePropertyList()>0)
  724.                             sa.getInvocazioneServizio().getConnettore().removeProperty(0);
  725.                         if(invocazioneServizio.getConnettore().sizePropertyList()>0)
  726.                             sa.getInvocazioneServizio().getConnettore().getPropertyList().addAll(invocazioneServizio.getConnettore().getPropertyList());
  727.                     }
  728.                 }
  729.             }
  730.         }
  731.     }
  732.    
  733.     private static void setInformationMissing_CredenzialiSA(Archive archive,  org.openspcoop2.protocol.information_missing.ServizioApplicativo saMissingInfo,
  734.              Credenziali credenziali) throws ProtocolException{
  735.        
  736.         // ServiziApplicativi
  737.         for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  738.             ServizioApplicativo sa = archive.getServiziApplicativi().get(i).getServizioApplicativo();
  739.             if(matchServizioApplicativo(saMissingInfo.getReplaceMatch(),
  740.                     sa.getNome())){
  741.                
  742.                 if(sa.getInvocazionePorta()==null){
  743.                     sa.setInvocazionePorta(new InvocazionePorta());
  744.                 }
  745.                 while(sa.getInvocazionePorta().sizeCredenzialiList()>0){
  746.                     sa.getInvocazionePorta().removeCredenziali(0);
  747.                 }
  748.                 sa.getInvocazionePorta().addCredenziali(credenziali);
  749.                 sa.setTipologiaFruizione(TipologiaFruizione.NORMALE.getValue());
  750.                 sa.setTipo(CostantiConfigurazione.CLIENT);
  751.             }
  752.         }
  753.     }
  754.     private static void setInformationMissing_AllineaCredenzialiPD(Archive archive,  org.openspcoop2.protocol.information_missing.ServizioApplicativo saMissingInfo) throws ProtocolException{
  755.        
  756.         // ServiziApplicativi
  757.         for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  758.             ServizioApplicativo sa = archive.getServiziApplicativi().get(i).getServizioApplicativo();
  759.             if(matchServizioApplicativo(saMissingInfo.getReplaceMatch(),
  760.                     sa.getNome())){
  761.                
  762.                 if(sa.getInvocazionePorta()==null || sa.getInvocazionePorta().sizeCredenzialiList()<=0){
  763.                     throw new ProtocolException("Credenziali di accesso non presenti nel servizio applicativo ["+sa.getNome()+
  764.                             "]. Le credenziali sono richieste dalla modalità di gestione delle informazioni mancanti impostata");
  765.                 }
  766.                 Credenziali credenziali = sa.getInvocazionePorta().getCredenziali(0);
  767.                 if(credenziali.getTipo()==null){
  768.                     throw new ProtocolException("Credenziali di accesso non presenti nel servizio applicativo ["+sa.getNome()+
  769.                             "] (tipo non definito). Le credenziali sono richieste dalla modalità di gestione delle informazioni mancanti impostata");
  770.                 }
  771.                
  772.                 for (int j = 0; j < archive.getPorteDelegate().size(); j++) {
  773.                     PortaDelegata pd = archive.getPorteDelegate().get(j).getPortaDelegata();
  774.                     if(pd!=null && pd.sizeServizioApplicativoList()>0){
  775.                         for (int k = 0; k < pd.sizeServizioApplicativoList(); k++) {
  776.                             if(sa.getNome().equals(pd.getServizioApplicativo(k).getNome())){
  777.                                 pd.setAutenticazione(credenziali.getTipo().getValue());
  778.                                 break;
  779.                             }
  780.                         }
  781.                     }
  782.                 }
  783.             }
  784.         }
  785.     }
  786.    

  787.    
  788.    
  789.    
  790.    
  791.    
  792.    
  793.     // ******* ACCORDI COOPERAZIONE **********
  794.    
  795.     private static void setInformationMissing_RiferimentoAccordoCooperazione(Archive archive, org.openspcoop2.protocol.information_missing.AccordoCooperazione ac, IDAccordoCooperazione idAccordo) throws ProtocolException{
  796.        
  797.         // Accordi di Servizio Composti
  798.         for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
  799.             AccordoServizioParteComune as = archive.getAccordiServizioComposto().get(i).getAccordoServizioParteComune();
  800.            
  801.             String uriAccordoCooperazione = null;
  802.             if(as.getServizioComposto()!=null){
  803.                 uriAccordoCooperazione = as.getServizioComposto().getAccordoCooperazione();
  804.             }
  805.             if(matchAccordo(ac.getReplaceMatch(),
  806.                     uriAccordoCooperazione)){
  807.                 if(as.getServizioComposto()==null){
  808.                     as.setServizioComposto(new AccordoServizioParteComuneServizioComposto());
  809.                 }
  810.                 try{
  811.                     as.getServizioComposto().setAccordoCooperazione(IDAccordoCooperazioneFactory.getInstance().getUriFromIDAccordo(idAccordo));
  812.                 }catch(Exception e){
  813.                     throw new ProtocolException(e.getMessage(),e);
  814.                 }
  815.                 archive.getAccordiServizioComposto().get(i).update(as, false);
  816.             }
  817.         }
  818.            
  819.     }
  820.    
  821.     private static void setInformationMissing_StatoAccordoCooperazione(Archive archive, org.openspcoop2.protocol.information_missing.AccordoCooperazione ac) throws ProtocolException{
  822.        
  823.         // Accordi di Cooperazione
  824.         if(ac.getStato()!=null){
  825.             for (int i = 0; i < archive.getAccordiCooperazione().size(); i++) {
  826.                 AccordoCooperazione acObject = archive.getAccordiCooperazione().get(i).getAccordoCooperazione();
  827.                 String uriAccordoCooperazione = null;
  828.                 try{
  829.                     uriAccordoCooperazione = IDAccordoCooperazioneFactory.getInstance().getUriFromAccordo(acObject);
  830.                 }catch(Exception e){
  831.                     throw new ProtocolException(e.getMessage(),e);
  832.                 }
  833.                 if(matchAccordo(ac.getReplaceMatch(),
  834.                         uriAccordoCooperazione)){
  835.                     acObject.setStatoPackage(ac.getStato().getValue());
  836.                 }
  837.             }
  838.         }
  839.            
  840.     }
  841.    
  842.    
  843.    
  844.    
  845.    
  846.    
  847.    
  848.    
  849.    
  850.    
  851.    
  852.    
  853.     // ******* ACCORDI SERVIZIO PARTE COMUNE **********
  854.    
  855.     private static void setInformationMissing_RiferimentoAccordoServizioParteComune(Archive archive, org.openspcoop2.protocol.information_missing.AccordoServizioParteComune as, IDAccordo idAccordo) throws ProtocolException{
  856.        
  857.         // Accordi di Servizio Parte Specifica
  858.         for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  859.             AccordoServizioParteSpecifica asObject = archive.getAccordiServizioParteSpecifica().get(i).getAccordoServizioParteSpecifica();
  860.             String uriAccordo = null;
  861.             if(asObject.getAccordoServizioParteComune()!=null){
  862.                 uriAccordo = asObject.getAccordoServizioParteComune();
  863.             }
  864.             if(matchAccordo(as.getReplaceMatch(),
  865.                     uriAccordo)){
  866.                 try{
  867.                     asObject.setAccordoServizioParteComune(IDAccordoFactory.getInstance().getUriFromIDAccordo(idAccordo));
  868.                 }catch(Exception e){
  869.                     throw new ProtocolException(e.getMessage(),e);
  870.                 }
  871.                 archive.getAccordiServizioParteSpecifica().get(i).update(asObject, false);
  872.             }
  873.         }
  874.            
  875.     }
  876.    
  877.     private static void setInformationMissing_StatoAccordoServizioParteComune(Archive archive, org.openspcoop2.protocol.information_missing.AccordoServizioParteComune as) throws ProtocolException{
  878.        
  879.         // Accordi di Servizio Parte Comune
  880.         if(as.getStato()!=null){
  881.             for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
  882.                 AccordoServizioParteComune asObject = archive.getAccordiServizioParteComune().get(i).getAccordoServizioParteComune();
  883.                 String uriAccordo = null;
  884.                 try{
  885.                     uriAccordo = IDAccordoFactory.getInstance().getUriFromAccordo(asObject);
  886.                 }catch(Exception e){
  887.                     throw new ProtocolException(e.getMessage(),e);
  888.                 }
  889.                 if(matchAccordo(as.getReplaceMatch(),
  890.                         uriAccordo)){
  891.                     asObject.setStatoPackage(as.getStato().getValue());
  892.                 }
  893.             }
  894.         }
  895.            
  896.     }



  897.    
  898.    
  899.    
  900.    
  901.    
  902.    
  903.    
  904.     // ***** ACCORDI SERVIZIO PARTE SPECIFICA ******
  905.    
  906.     private static void setInformationMissing_ConnettoreASPS(Archive archive, org.openspcoop2.protocol.information_missing.AccordoServizioParteSpecifica aspsMissingInfo,
  907.             Connettore connettore) throws ProtocolException{
  908.        
  909.         // Accordi
  910.         for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  911.             org.openspcoop2.core.registry.AccordoServizioParteSpecifica asps = archive.getAccordiServizioParteSpecifica().get(i).getAccordoServizioParteSpecifica();
  912.             if(asps!=null){
  913.                
  914.                 boolean matchTipoNome = matchServizio(aspsMissingInfo.getReplaceMatch(),
  915.                         asps.getTipo(), asps.getNome());
  916.                    
  917.                 String uriAccordo = null;
  918.                 try{
  919.                     uriAccordo = IDServizioFactory.getInstance().getUriFromAccordo(asps);
  920.                 }catch(Exception e){
  921.                     throw new ProtocolException(e.getMessage(),e);
  922.                 }
  923.                 boolean matchAccordo = matchAccordo(aspsMissingInfo.getReplaceMatch(),
  924.                         uriAccordo);
  925.                
  926.                 if(matchTipoNome || matchAccordo){
  927.                     if(asps.getConfigurazioneServizio()==null){
  928.                         asps.setConfigurazioneServizio(new ConfigurazioneServizio());
  929.                     }
  930.                     if(asps.getConfigurazioneServizio().getConnettore()==null)
  931.                         asps.getConfigurazioneServizio().setConnettore(connettore);
  932.                     else{
  933.                         asps.getConfigurazioneServizio().getConnettore().setCustom(connettore.getCustom());
  934.                         asps.getConfigurazioneServizio().getConnettore().setTipo(connettore.getTipo());
  935.                         while(asps.getConfigurazioneServizio().getConnettore().sizePropertyList()>0)
  936.                             asps.getConfigurazioneServizio().getConnettore().removeProperty(0);
  937.                         if(connettore.sizePropertyList()>0)
  938.                             asps.getConfigurazioneServizio().getConnettore().getPropertyList().addAll(connettore.getPropertyList());
  939.                     }
  940.                 }
  941.             }
  942.         }
  943.        
  944.     }

  945.     private static void setInformationMissing_StatoAccordoServizioParteSpecifica(Archive archive, org.openspcoop2.protocol.information_missing.AccordoServizioParteSpecifica aspsMissingInfo) throws ProtocolException{
  946.        
  947.         // Accordi di Servizio Parte Specifica
  948.         if(aspsMissingInfo.getStato()!=null){
  949.             for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  950.                 org.openspcoop2.core.registry.AccordoServizioParteSpecifica asps = archive.getAccordiServizioParteSpecifica().get(i).getAccordoServizioParteSpecifica();
  951.                 if(asps!=null){
  952.                    
  953.                     boolean matchTipoNome = matchServizio(aspsMissingInfo.getReplaceMatch(),
  954.                             asps.getTipo(), asps.getNome());
  955.                        
  956.                     String uriAccordo = asps.getAccordoServizioParteComune();
  957.                     boolean matchAccordo = matchAccordo(aspsMissingInfo.getReplaceMatch(),
  958.                             uriAccordo);
  959.                                
  960.                     if(matchTipoNome || matchAccordo){
  961.                         asps.setStatoPackage(aspsMissingInfo.getStato().getValue());
  962.                     }
  963.                 }
  964.             }
  965.         }
  966.            
  967.     }
  968.    
  969.    
  970.    
  971.    
  972.    
  973.     // ******* ACCORDI SERVIZIO COMPOSTO **********
  974.    
  975.     private static void setInformationMissing_RiferimentoAccordoServizioComposto(Archive archive, org.openspcoop2.protocol.information_missing.AccordoServizioParteComune as, IDAccordo idAccordo) throws ProtocolException{
  976.        
  977.         setInformationMissing_RiferimentoAccordoServizioParteComune(archive, as, idAccordo);
  978.            
  979.     }
  980.    
  981.     private static void setInformationMissing_StatoAccordoServizioComposto(Archive archive, org.openspcoop2.protocol.information_missing.AccordoServizioParteComune as) throws ProtocolException{
  982.        
  983.         // Accordi di Servizio Composto
  984.         if(as.getStato()!=null){
  985.             for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
  986.                 AccordoServizioParteComune asObject = archive.getAccordiServizioComposto().get(i).getAccordoServizioParteComune();
  987.                 String uriAccordo = null;
  988.                 try{
  989.                     uriAccordo = IDAccordoFactory.getInstance().getUriFromAccordo(asObject);
  990.                 }catch(Exception e){
  991.                     throw new ProtocolException(e.getMessage(),e);
  992.                 }
  993.                 if(matchAccordo(as.getReplaceMatch(),
  994.                         uriAccordo)){
  995.                     asObject.setStatoPackage(as.getStato().getValue());
  996.                 }
  997.             }
  998.         }
  999.            
  1000.     }
  1001.    
  1002.    
  1003.    
  1004.    
  1005.    
  1006.    
  1007.    
  1008.    
  1009.    
  1010.    
  1011.     // ******* FRUITORE **********
  1012.    
  1013.     private static void setInformationMissing_ConnettoreFruitore(Archive archive, org.openspcoop2.protocol.information_missing.Fruitore fruitoreMissingInfo,
  1014.             Connettore connettore) throws ProtocolException{
  1015.        
  1016.         // Accordi
  1017.         for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  1018.             ArchiveFruitore archiveFruitore = archive.getAccordiFruitori().get(i);
  1019.             Fruitore fruitore = archiveFruitore.getFruitore();
  1020.            
  1021.             String tipoServizio = null;
  1022.             String nomeServizio = null;
  1023.             String tipoSoggettoErogatore = null;
  1024.             String nomeSoggettoErogatore = null;
  1025.             if(archiveFruitore.getIdAccordoServizioParteSpecifica()!=null) {
  1026.                 tipoServizio = archiveFruitore.getIdAccordoServizioParteSpecifica().getTipo();
  1027.                 nomeServizio = archiveFruitore.getIdAccordoServizioParteSpecifica().getNome();
  1028.                 if(archiveFruitore.getIdAccordoServizioParteSpecifica().getSoggettoErogatore()!=null) {
  1029.                     tipoSoggettoErogatore = archiveFruitore.getIdAccordoServizioParteSpecifica().getSoggettoErogatore().getTipo();
  1030.                     nomeSoggettoErogatore = archiveFruitore.getIdAccordoServizioParteSpecifica().getSoggettoErogatore().getNome();
  1031.                 }
  1032.             }
  1033.                
  1034.             if(fruitore!=null){
  1035.                
  1036.                 if(matchFruitore(fruitoreMissingInfo.getReplaceMatch(),
  1037.                         fruitore.getTipo(), fruitore.getNome(),
  1038.                         tipoServizio,nomeServizio,
  1039.                         tipoSoggettoErogatore,nomeSoggettoErogatore)){
  1040.                    
  1041.                     if(fruitore.getConnettore()==null) {
  1042.                         fruitore.setConnettore(connettore);
  1043.                     }
  1044.                     else {
  1045.                         fruitore.getConnettore().setCustom(connettore.getCustom());
  1046.                         fruitore.getConnettore().setTipo(connettore.getTipo());
  1047.                         while(fruitore.getConnettore().sizePropertyList()>0)
  1048.                             fruitore.getConnettore().removeProperty(0);
  1049.                         if(connettore.sizePropertyList()>0)
  1050.                             fruitore.getConnettore().getPropertyList().addAll(connettore.getPropertyList());
  1051.                     }
  1052.                    
  1053.                 }
  1054.                
  1055.             }
  1056.         }
  1057.        
  1058.     }
  1059.    
  1060.     private static void setInformationMissing_StatoFruitore(Archive archive, org.openspcoop2.protocol.information_missing.Fruitore fruitoreMissingInfo) throws ProtocolException{
  1061.        
  1062.         // Fruitori
  1063.         if(fruitoreMissingInfo.getStato()!=null){
  1064.             for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  1065.                 ArchiveFruitore archiveFruitore = archive.getAccordiFruitori().get(i);
  1066.                 Fruitore fruitore = archiveFruitore.getFruitore();
  1067.                
  1068.                 String tipoServizio = null;
  1069.                 String nomeServizio = null;
  1070.                 String tipoSoggettoErogatore = null;
  1071.                 String nomeSoggettoErogatore = null;
  1072.                 if(archiveFruitore.getIdAccordoServizioParteSpecifica()!=null) {
  1073.                     tipoServizio = archiveFruitore.getIdAccordoServizioParteSpecifica().getTipo();
  1074.                     nomeServizio = archiveFruitore.getIdAccordoServizioParteSpecifica().getNome();
  1075.                     if(archiveFruitore.getIdAccordoServizioParteSpecifica().getSoggettoErogatore()!=null) {
  1076.                         tipoSoggettoErogatore = archiveFruitore.getIdAccordoServizioParteSpecifica().getSoggettoErogatore().getTipo();
  1077.                         nomeSoggettoErogatore = archiveFruitore.getIdAccordoServizioParteSpecifica().getSoggettoErogatore().getNome();
  1078.                     }
  1079.                 }
  1080.                
  1081.                 if(matchFruitore(fruitoreMissingInfo.getReplaceMatch(),
  1082.                         fruitore.getTipo(), fruitore.getNome(),
  1083.                         tipoServizio,nomeServizio,
  1084.                         tipoSoggettoErogatore,nomeSoggettoErogatore)){
  1085.                     fruitore.setStatoPackage(fruitoreMissingInfo.getStato().getValue());
  1086.                 }
  1087.             }
  1088.         }
  1089.            
  1090.     }
  1091.    

  1092.    
  1093.    
  1094.    
  1095.    
  1096.    
  1097.     // ******* PORTA DELEGATA **********
  1098.    
  1099.     private static void setInformationMissing_StatoPortaDelegata(Archive archive, org.openspcoop2.protocol.information_missing.PortaDelegata portaDelegataMissingInfo) throws ProtocolException{
  1100.        
  1101.         // portaDelegataMissingInfo
  1102.         if(portaDelegataMissingInfo.getStato()!=null){
  1103.             for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
  1104.                 PortaDelegata portaDelegata = archive.getPorteDelegate().get(i).getPortaDelegata();
  1105.                 if(matchPorta(portaDelegataMissingInfo.getReplaceMatch(),
  1106.                         portaDelegata.getNome())){
  1107.                     portaDelegata.setStato(StatoFunzionalita.toEnumConstant(portaDelegataMissingInfo.getStato().getValue()));
  1108.                 }
  1109.             }
  1110.         }
  1111.            
  1112.     }
  1113.    
  1114.    
  1115.    
  1116.    
  1117.    
  1118.    
  1119.    
  1120.     // ******* PORTA APPLICATIVA **********
  1121.    
  1122.     private static void setInformationMissing_StatoPortaApplicativa(Archive archive, org.openspcoop2.protocol.information_missing.PortaApplicativa portaApplicativaMissingInfo) throws ProtocolException{
  1123.        
  1124.         // portaDelegataMissingInfo
  1125.         if(portaApplicativaMissingInfo.getStato()!=null){
  1126.             for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  1127.                 PortaApplicativa portaApplicativa = archive.getPorteApplicative().get(i).getPortaApplicativa();
  1128.                 if(matchPorta(portaApplicativaMissingInfo.getReplaceMatch(),
  1129.                         portaApplicativa.getNome())){
  1130.                     portaApplicativa.setStato(StatoFunzionalita.toEnumConstant(portaApplicativaMissingInfo.getStato().getValue()));
  1131.                 }
  1132.             }
  1133.         }
  1134.            
  1135.     }
  1136.    
  1137.    
  1138.    
  1139.    
  1140.    
  1141.    
  1142.    
  1143.     // ******* REPLACE NAME **********
  1144.    
  1145.     protected static String replaceSoggettoProprietarioOrDefault(IRegistryReader registryReader, String original, String tipoSoggetto, String nomeSoggetto) throws ProtocolException{
  1146.        
  1147.         if(original==null){
  1148.             return null;
  1149.         }
  1150.        
  1151.         String returnValue = new String(original);
  1152.        
  1153.         if(tipoSoggetto!=null && !"".equals(tipoSoggetto)){
  1154.             returnValue = returnValue.replace(Costanti.TIPO_SOGGETTO, tipoSoggetto);
  1155.             returnValue = returnValue.replace(Costanti.TIPO_SOGGETTO_PROPRIETARIO, tipoSoggetto);
  1156.            
  1157.             if(original.contains(Costanti.NOME_SOGGETTO_DEFAULT)) {
  1158.                
  1159.                 ProtocolFactoryManager protocolFactoryManager = ProtocolFactoryManager.getInstance();
  1160.                 IProtocolFactory<?> protocol = protocolFactoryManager.getProtocolFactoryByOrganizationType(tipoSoggetto);
  1161.                 String tipoSoggettoDefault = protocolFactoryManager.getDefaultOrganizationTypes().get(protocol.getProtocol());
  1162.                 IDSoggetto idSoggettoDefault = null;
  1163.                 try {
  1164.                     idSoggettoDefault = registryReader.getIdSoggettoDefault(tipoSoggettoDefault);
  1165.                 }catch(Exception e) {
  1166.                     throw new ProtocolException(e.getMessage(),e);
  1167.                 }
  1168.                 returnValue = returnValue.replace(Costanti.NOME_SOGGETTO_DEFAULT, idSoggettoDefault.getNome());
  1169.                
  1170.             }
  1171.         }
  1172.        
  1173.         if(nomeSoggetto!=null && !"".equals(nomeSoggetto)){
  1174.             returnValue = returnValue.replace(Costanti.NOME_SOGGETTO, nomeSoggetto);
  1175.             returnValue = returnValue.replace(Costanti.NOME_SOGGETTO_PROPRIETARIO, nomeSoggetto);
  1176.         }
  1177.        
  1178.         return returnValue;
  1179.     }
  1180.    
  1181.     protected static String replaceSoggettoErogatore(String original, String tipoSoggetto, String nomeSoggetto){
  1182.        
  1183.         if(original==null){
  1184.             return null;
  1185.         }
  1186.        
  1187.         String returnValue = new String(original);
  1188.        
  1189.         if(tipoSoggetto!=null && !"".equals(tipoSoggetto)){
  1190.             returnValue = returnValue.replace(Costanti.TIPO_SOGGETTO_EROGATORE, tipoSoggetto);
  1191.         }
  1192.        
  1193.         if(nomeSoggetto!=null && !"".equals(nomeSoggetto)){
  1194.             returnValue = returnValue.replace(Costanti.NOME_SOGGETTO_EROGATORE, nomeSoggetto);
  1195.         }
  1196.        
  1197.         return returnValue;
  1198.     }
  1199.    
  1200.     private static String replaceServizio(String original, String tipoServizio, String nomeServizio){
  1201.        
  1202.         if(original==null){
  1203.             return null;
  1204.         }
  1205.        
  1206.         String returnValue = new String(original);
  1207.        
  1208.         if(tipoServizio!=null && !"".equals(tipoServizio)){
  1209.             returnValue = returnValue.replace(Costanti.TIPO_SERVIZIO, tipoServizio);
  1210.         }
  1211.        
  1212.         if(nomeServizio!=null && !"".equals(nomeServizio)){
  1213.             returnValue = returnValue.replace(Costanti.NOME_SERVIZIO, nomeServizio);
  1214.         }
  1215.        
  1216.         return returnValue;
  1217.     }
  1218.    
  1219.     private static String replaceAzione(String original, String nome){
  1220.        
  1221.         if(original==null){
  1222.             return null;
  1223.         }
  1224.        
  1225.         String returnValue = new String(original);
  1226.        
  1227.         if(nome!=null && !"".equals(nome)){
  1228.             returnValue = returnValue.replace(Costanti.AZIONE, nome);
  1229.         }
  1230.        
  1231.         return returnValue;
  1232.     }
  1233.    
  1234.     private static String replaceFruitore(String original, String tipoSoggetto, String nomeSoggetto){
  1235.        
  1236.         if(original==null){
  1237.             return null;
  1238.         }
  1239.        
  1240.         String returnValue = new String(original);
  1241.        
  1242.         if(tipoSoggetto!=null && !"".equals(tipoSoggetto)){
  1243.             returnValue = returnValue.replace(Costanti.TIPO_FRUITORE, tipoSoggetto);
  1244.         }
  1245.        
  1246.         if(nomeSoggetto!=null && !"".equals(nomeSoggetto)){
  1247.             returnValue = returnValue.replace(Costanti.NOME_FRUITORE, nomeSoggetto);
  1248.         }
  1249.        
  1250.         return returnValue;
  1251.     }
  1252.    
  1253.     public static void replaceTemplatesNames(Archive archive, IRegistryReader registryReader) throws ProtocolException{
  1254.            
  1255.         // Soggetti
  1256.         for (int i = 0; i < archive.getSoggetti().size(); i++) {
  1257.             org.openspcoop2.core.registry.Soggetto soggetto = archive.getSoggetti().get(i).getSoggettoRegistro();
  1258.             if(soggetto!=null) {
  1259.                 if(soggetto.getConnettore()!=null){
  1260.                     if(soggetto.getConnettore().sizePropertyList()>0){
  1261.                         for (int j = 0; j < soggetto.getConnettore().sizePropertyList(); j++) {
  1262.                             org.openspcoop2.core.registry.Property p = soggetto.getConnettore().getProperty(j);
  1263.                             p.setNome(replaceSoggettoProprietarioOrDefault(registryReader,p.getNome(),
  1264.                                     soggetto.getTipo(),soggetto.getNome()));
  1265.                             p.setValore(replaceSoggettoProprietarioOrDefault(registryReader,p.getValore(),
  1266.                                     soggetto.getTipo(),soggetto.getNome()));
  1267.                         }
  1268.                     }
  1269.                 }
  1270.                 if(soggetto.getIdentificativoPorta()!=null) {
  1271.                     soggetto.setIdentificativoPorta(replaceSoggettoProprietarioOrDefault(registryReader,soggetto.getIdentificativoPorta(),
  1272.                                     soggetto.getTipo(),soggetto.getNome()));
  1273.                 }
  1274.                 if(soggetto.getPortaDominio()!=null) {
  1275.                     soggetto.setPortaDominio(replaceSoggettoProprietarioOrDefault(registryReader,soggetto.getPortaDominio(),
  1276.                             soggetto.getTipo(),soggetto.getNome()));
  1277.                 }
  1278.             }
  1279.         }
  1280.        
  1281.         // ServiziApplicativi
  1282.         for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  1283.             ServizioApplicativo sa = archive.getServiziApplicativi().get(i).getServizioApplicativo();          
  1284.             sa.setNome(replaceSoggettoProprietarioOrDefault(registryReader,sa.getNome(),
  1285.                     sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));          
  1286.             if(sa.getInvocazionePorta()!=null){
  1287.                 if(sa.getInvocazionePorta().sizeCredenzialiList()>0){
  1288.                     for (int j = 0; j < sa.getInvocazionePorta().sizeCredenzialiList(); j++) {
  1289.                         Credenziali c  = sa.getInvocazionePorta().getCredenziali(j);
  1290.                         c.setUser(replaceSoggettoProprietarioOrDefault(registryReader,c.getUser(),
  1291.                                 sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1292.                         c.setPassword(replaceSoggettoProprietarioOrDefault(registryReader,c.getPassword(),
  1293.                                 sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1294.                         c.setSubject(replaceSoggettoProprietarioOrDefault(registryReader,c.getSubject(),
  1295.                                 sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1296.                     }
  1297.                 }
  1298.             }
  1299.             if(sa.getInvocazioneServizio()!=null){
  1300.                 if(sa.getInvocazioneServizio().getCredenziali()!=null){
  1301.                     InvocazioneCredenziali c  = sa.getInvocazioneServizio().getCredenziali();
  1302.                     c.setUser(replaceSoggettoProprietarioOrDefault(registryReader,c.getUser(),
  1303.                             sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1304.                     c.setPassword(replaceSoggettoProprietarioOrDefault(registryReader,c.getPassword(),
  1305.                             sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1306.                 }
  1307.                 if(sa.getInvocazioneServizio().getConnettore()!=null){
  1308.                     if(sa.getInvocazioneServizio().getConnettore().sizePropertyList()>0){
  1309.                         for (int j = 0; j < sa.getInvocazioneServizio().getConnettore().sizePropertyList(); j++) {
  1310.                             org.openspcoop2.core.config.Property p = sa.getInvocazioneServizio().getConnettore().getProperty(j);
  1311.                             p.setNome(replaceSoggettoProprietarioOrDefault(registryReader,p.getNome(),
  1312.                                     sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1313.                             p.setValore(replaceSoggettoProprietarioOrDefault(registryReader,p.getValore(),
  1314.                                     sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1315.                         }
  1316.                     }
  1317.                 }
  1318.             }
  1319.             if(sa.getRispostaAsincrona()!=null){
  1320.                 if(sa.getRispostaAsincrona().getCredenziali()!=null){
  1321.                     InvocazioneCredenziali c  = sa.getRispostaAsincrona().getCredenziali();
  1322.                     c.setUser(replaceSoggettoProprietarioOrDefault(registryReader,c.getUser(),
  1323.                             sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1324.                     c.setPassword(replaceSoggettoProprietarioOrDefault(registryReader,c.getPassword(),
  1325.                             sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1326.                 }
  1327.                 if(sa.getRispostaAsincrona().getConnettore()!=null){
  1328.                     if(sa.getRispostaAsincrona().getConnettore().sizePropertyList()>0){
  1329.                         for (int j = 0; j < sa.getRispostaAsincrona().getConnettore().sizePropertyList(); j++) {
  1330.                             org.openspcoop2.core.config.Property p = sa.getRispostaAsincrona().getConnettore().getProperty(j);
  1331.                             p.setNome(replaceSoggettoProprietarioOrDefault(registryReader,p.getNome(),
  1332.                                     sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1333.                             p.setValore(replaceSoggettoProprietarioOrDefault(registryReader,p.getValore(),
  1334.                                     sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  1335.                         }
  1336.                     }
  1337.                 }
  1338.             }
  1339.         }
  1340.        
  1341.         // PorteDelegate
  1342.         for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
  1343.             PortaDelegata pd = archive.getPorteDelegate().get(i).getPortaDelegata();
  1344.                        
  1345.             pd.setNome(replaceSoggettoProprietarioOrDefault(registryReader,pd.getNome(),
  1346.                     pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario()));
  1347.             if(pd.getSoggettoErogatore()!=null &&
  1348.                     pd.getSoggettoErogatore().getNome()!=null &&
  1349.                     !"".equals(pd.getSoggettoErogatore().getNome()) ){
  1350.                 pd.setNome(replaceSoggettoErogatore(pd.getNome(),
  1351.                         pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome()));
  1352.             }
  1353.             if(pd.getServizio()!=null &&
  1354.                     pd.getServizio().getNome()!=null &&
  1355.                     !"".equals(pd.getServizio().getNome()) ){
  1356.                 pd.setNome(replaceServizio(pd.getNome(),
  1357.                         pd.getServizio().getTipo(), pd.getServizio().getNome()));
  1358.             }
  1359.             if(pd.getAzione()!=null &&
  1360.                     pd.getAzione().getNome()!=null &&
  1361.                     !"".equals(pd.getAzione().getNome()) ){
  1362.                 pd.setNome(replaceAzione(pd.getNome(),
  1363.                         pd.getAzione().getNome()));
  1364.             }
  1365.            
  1366.             if(pd.getDescrizione()!=null && !"".equals(pd.getDescrizione())){
  1367.                 pd.setDescrizione(replaceSoggettoProprietarioOrDefault(registryReader,pd.getDescrizione(),
  1368.                         pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario()));
  1369.                 if(pd.getSoggettoErogatore()!=null &&
  1370.                         pd.getSoggettoErogatore().getNome()!=null &&
  1371.                         !"".equals(pd.getSoggettoErogatore().getNome()) ){
  1372.                     pd.setDescrizione(replaceSoggettoErogatore(pd.getDescrizione(),
  1373.                             pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome()));
  1374.                 }
  1375.                 if(pd.getServizio()!=null &&
  1376.                         pd.getServizio().getNome()!=null &&
  1377.                         !"".equals(pd.getServizio().getNome()) ){
  1378.                     pd.setDescrizione(replaceServizio(pd.getDescrizione(),
  1379.                             pd.getServizio().getTipo(), pd.getServizio().getNome()));
  1380.                 }
  1381.                 if(pd.getAzione()!=null &&
  1382.                         pd.getAzione().getNome()!=null &&
  1383.                         !"".equals(pd.getAzione().getNome()) ){
  1384.                     pd.setDescrizione(replaceAzione(pd.getDescrizione(),
  1385.                             pd.getAzione().getNome()));
  1386.                 }
  1387.             }
  1388.            
  1389.             if(pd.getAzione()!=null){
  1390.                 if(pd.getAzione().getPattern()!=null &&
  1391.                         !"".equals(pd.getAzione().getPattern())){
  1392.                     pd.getAzione().setPattern(replaceSoggettoProprietarioOrDefault(registryReader,pd.getAzione().getPattern(),
  1393.                             pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario()));
  1394.                     if(pd.getSoggettoErogatore()!=null &&
  1395.                             pd.getSoggettoErogatore().getNome()!=null &&
  1396.                             !"".equals(pd.getSoggettoErogatore().getNome()) ){
  1397.                         pd.getAzione().setPattern(replaceSoggettoErogatore(pd.getAzione().getPattern(),
  1398.                                 pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome()));
  1399.                     }
  1400.                     if(pd.getServizio()!=null &&
  1401.                             pd.getServizio().getNome()!=null &&
  1402.                             !"".equals(pd.getServizio().getNome()) ){
  1403.                         pd.getAzione().setPattern(replaceServizio(pd.getAzione().getPattern(),
  1404.                                 pd.getServizio().getTipo(), pd.getServizio().getNome()));
  1405.                     }
  1406.                     // se ho il pattern configurato, non c'è il nome dell'azione
  1407. //                  pd.getAzione().setPattern(replaceAzione(pd.getAzione().getPattern(),
  1408. //                          pd.getAzione().getNome()));
  1409.                     // se ho il pattern configurato, non c'è il nome dell'azione
  1410.                 }
  1411.             }
  1412.            
  1413.             if(pd.getAzione()!=null) {
  1414.                 if(pd.getAzione().getNomePortaDelegante()!=null &&
  1415.                         !"".equals(pd.getAzione().getNomePortaDelegante())){
  1416.                     pd.getAzione().setNomePortaDelegante(replaceSoggettoProprietarioOrDefault(registryReader,pd.getAzione().getNomePortaDelegante(),
  1417.                             pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario()));
  1418.                 }
  1419.             }
  1420.            
  1421.             for (int j = 0; j < pd.sizeServizioApplicativoList(); j++) {
  1422.                 pd.getServizioApplicativo(j).setNome(replaceSoggettoProprietarioOrDefault(registryReader,pd.getServizioApplicativo(j).getNome(),
  1423.                     pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario()));
  1424.                 if(pd.getSoggettoErogatore()!=null &&
  1425.                         pd.getSoggettoErogatore().getNome()!=null &&
  1426.                         !"".equals(pd.getSoggettoErogatore().getNome()) ){
  1427.                     pd.getServizioApplicativo(j).setNome(replaceSoggettoErogatore(pd.getServizioApplicativo(j).getNome(),
  1428.                             pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome()));
  1429.                 }
  1430.                 if(pd.getServizio()!=null &&
  1431.                         pd.getServizio().getNome()!=null &&
  1432.                         !"".equals(pd.getServizio().getNome()) ){
  1433.                     pd.getServizioApplicativo(j).setNome(replaceServizio(pd.getServizioApplicativo(j).getNome(),
  1434.                             pd.getServizio().getTipo(), pd.getServizio().getNome()));
  1435.                 }
  1436.                 if(pd.getAzione()!=null &&
  1437.                         pd.getAzione().getNome()!=null &&
  1438.                         !"".equals(pd.getAzione().getNome()) ){
  1439.                     pd.getServizioApplicativo(j).setNome(replaceAzione(pd.getServizioApplicativo(j).getNome(),
  1440.                             pd.getAzione().getNome()));
  1441.                 }
  1442.             }
  1443.            
  1444.             if(pd.getCorrelazioneApplicativa()!=null && pd.getCorrelazioneApplicativa().sizeElementoList()>0) {
  1445.                 for (CorrelazioneApplicativaElemento elemento : pd.getCorrelazioneApplicativa().getElementoList()) {
  1446.                     if(elemento.getNome()!=null && !"".equals(elemento.getNome())){
  1447.                         elemento.setNome(replaceSoggettoProprietarioOrDefault(registryReader,elemento.getNome(),
  1448.                                 pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario()));
  1449.                         if(pd.getSoggettoErogatore()!=null &&
  1450.                                 pd.getSoggettoErogatore().getNome()!=null &&
  1451.                                 !"".equals(pd.getSoggettoErogatore().getNome()) ){
  1452.                             elemento.setNome(replaceSoggettoErogatore(elemento.getNome(),
  1453.                                     pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome()));
  1454.                         }
  1455.                         if(pd.getServizio()!=null &&
  1456.                                 pd.getServizio().getNome()!=null &&
  1457.                                 !"".equals(pd.getServizio().getNome()) ){
  1458.                             elemento.setNome(replaceServizio(elemento.getNome(),
  1459.                                     pd.getServizio().getTipo(), pd.getServizio().getNome()));
  1460.                         }
  1461.                         if(pd.getAzione()!=null &&
  1462.                                 pd.getAzione().getNome()!=null &&
  1463.                                 !"".equals(pd.getAzione().getNome()) ){
  1464.                             elemento.setNome(replaceAzione(elemento.getNome(),
  1465.                                     pd.getAzione().getNome()));
  1466.                         }
  1467.                     }
  1468.                     if(elemento.getPattern()!=null && !"".equals(elemento.getPattern())){
  1469.                         elemento.setPattern(replaceSoggettoProprietarioOrDefault(registryReader,elemento.getPattern(),
  1470.                                 pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario()));
  1471.                         if(pd.getSoggettoErogatore()!=null &&
  1472.                                 pd.getSoggettoErogatore().getNome()!=null &&
  1473.                                 !"".equals(pd.getSoggettoErogatore().getNome()) ){
  1474.                             elemento.setPattern(replaceSoggettoErogatore(elemento.getPattern(),
  1475.                                     pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome()));
  1476.                         }
  1477.                         if(pd.getServizio()!=null &&
  1478.                                 pd.getServizio().getNome()!=null &&
  1479.                                 !"".equals(pd.getServizio().getNome()) ){
  1480.                             elemento.setPattern(replaceServizio(elemento.getPattern(),
  1481.                                     pd.getServizio().getTipo(), pd.getServizio().getNome()));
  1482.                         }
  1483.                         if(pd.getAzione()!=null &&
  1484.                                 pd.getAzione().getNome()!=null &&
  1485.                                 !"".equals(pd.getAzione().getNome()) ){
  1486.                             elemento.setPattern(replaceAzione(elemento.getPattern(),
  1487.                                     pd.getAzione().getNome()));
  1488.                         }
  1489.                     }
  1490.                 }
  1491.             }
  1492.             if(pd.getCorrelazioneApplicativaRisposta()!=null && pd.getCorrelazioneApplicativaRisposta().sizeElementoList()>0) {
  1493.                 for (CorrelazioneApplicativaRispostaElemento elemento : pd.getCorrelazioneApplicativaRisposta().getElementoList()) {
  1494.                     if(elemento.getNome()!=null && !"".equals(elemento.getNome())){
  1495.                         elemento.setNome(replaceSoggettoProprietarioOrDefault(registryReader,elemento.getNome(),
  1496.                                 pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario()));
  1497.                         if(pd.getSoggettoErogatore()!=null &&
  1498.                                 pd.getSoggettoErogatore().getNome()!=null &&
  1499.                                 !"".equals(pd.getSoggettoErogatore().getNome()) ){
  1500.                             elemento.setNome(replaceSoggettoErogatore(elemento.getNome(),
  1501.                                     pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome()));
  1502.                         }
  1503.                         if(pd.getServizio()!=null &&
  1504.                                 pd.getServizio().getNome()!=null &&
  1505.                                 !"".equals(pd.getServizio().getNome()) ){
  1506.                             elemento.setNome(replaceServizio(elemento.getNome(),
  1507.                                     pd.getServizio().getTipo(), pd.getServizio().getNome()));
  1508.                         }
  1509.                         if(pd.getAzione()!=null &&
  1510.                                 pd.getAzione().getNome()!=null &&
  1511.                                 !"".equals(pd.getAzione().getNome()) ){
  1512.                             elemento.setNome(replaceAzione(elemento.getNome(),
  1513.                                     pd.getAzione().getNome()));
  1514.                         }
  1515.                     }
  1516.                     if(elemento.getPattern()!=null && !"".equals(elemento.getPattern())){
  1517.                         elemento.setPattern(replaceSoggettoProprietarioOrDefault(registryReader,elemento.getPattern(),
  1518.                                 pd.getTipoSoggettoProprietario(), pd.getNomeSoggettoProprietario()));
  1519.                         if(pd.getSoggettoErogatore()!=null &&
  1520.                                 pd.getSoggettoErogatore().getNome()!=null &&
  1521.                                 !"".equals(pd.getSoggettoErogatore().getNome()) ){
  1522.                             elemento.setPattern(replaceSoggettoErogatore(elemento.getPattern(),
  1523.                                     pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome()));
  1524.                         }
  1525.                         if(pd.getServizio()!=null &&
  1526.                                 pd.getServizio().getNome()!=null &&
  1527.                                 !"".equals(pd.getServizio().getNome()) ){
  1528.                             elemento.setPattern(replaceServizio(elemento.getPattern(),
  1529.                                     pd.getServizio().getTipo(), pd.getServizio().getNome()));
  1530.                         }
  1531.                         if(pd.getAzione()!=null &&
  1532.                                 pd.getAzione().getNome()!=null &&
  1533.                                 !"".equals(pd.getAzione().getNome()) ){
  1534.                             elemento.setPattern(replaceAzione(elemento.getPattern(),
  1535.                                     pd.getAzione().getNome()));
  1536.                         }
  1537.                     }
  1538.                 }
  1539.             }
  1540.            
  1541.         }
  1542.        
  1543.         // PorteApplicative
  1544.         for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  1545.             PortaApplicativa pa = archive.getPorteApplicative().get(i).getPortaApplicativa();
  1546.            
  1547.             if(pa.getDescrizione()!=null && !"".equals(pa.getDescrizione())){
  1548.                 pa.setDescrizione(replaceSoggettoProprietarioOrDefault(registryReader,pa.getDescrizione(),
  1549.                         pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
  1550.                 if(pa.getServizio()!=null &&
  1551.                         pa.getServizio().getNome()!=null &&
  1552.                         !"".equals(pa.getServizio().getNome()) ){
  1553.                     pa.setDescrizione(replaceServizio(pa.getDescrizione(),
  1554.                             pa.getServizio().getTipo(), pa.getServizio().getNome()));
  1555.                 }
  1556.                 if(pa.getAzione()!=null &&
  1557.                         pa.getAzione().getNome()!=null &&
  1558.                         !"".equals(pa.getAzione().getNome()) ){
  1559.                     pa.setDescrizione(replaceAzione(pa.getDescrizione(),
  1560.                             pa.getAzione().getNome()));
  1561.                 }
  1562.             }
  1563.            
  1564.             pa.setNome(replaceSoggettoProprietarioOrDefault(registryReader,pa.getNome(),
  1565.                     pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
  1566.             if(pa.getServizio()!=null &&
  1567.                     pa.getServizio().getNome()!=null &&
  1568.                     !"".equals(pa.getServizio().getNome()) ){
  1569.                 pa.setNome(replaceServizio(pa.getNome(),
  1570.                         pa.getServizio().getTipo(), pa.getServizio().getNome()));
  1571.             }
  1572.             if(pa.getAzione()!=null &&
  1573.                     pa.getAzione().getNome()!=null &&
  1574.                     !"".equals(pa.getAzione().getNome()) ){
  1575.                 pa.setNome(replaceAzione(pa.getNome(),
  1576.                         pa.getAzione().getNome()));
  1577.             }
  1578.            
  1579.             if(pa.getAzione()!=null) {
  1580.                 if(pa.getAzione().getNomePortaDelegante()!=null &&
  1581.                         !"".equals(pa.getAzione().getNomePortaDelegante())){
  1582.                     pa.getAzione().setNomePortaDelegante(replaceSoggettoProprietarioOrDefault(registryReader,pa.getAzione().getNomePortaDelegante(),
  1583.                             pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
  1584.                 }
  1585.             }
  1586.            
  1587.             for (int j = 0; j < pa.sizeServizioApplicativoList(); j++) {
  1588.                 pa.getServizioApplicativo(j).setNome(replaceSoggettoProprietarioOrDefault(registryReader,pa.getServizioApplicativo(j).getNome(),
  1589.                     pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
  1590.                 if(pa.getServizio()!=null &&
  1591.                         pa.getServizio().getNome()!=null &&
  1592.                         !"".equals(pa.getServizio().getNome()) ){
  1593.                     pa.getServizioApplicativo(j).setNome(replaceServizio(pa.getServizioApplicativo(j).getNome(),
  1594.                             pa.getServizio().getTipo(), pa.getServizio().getNome()));
  1595.                 }
  1596.                 if(pa.getAzione()!=null &&
  1597.                         pa.getAzione().getNome()!=null &&
  1598.                         !"".equals(pa.getAzione().getNome()) ){
  1599.                     pa.getServizioApplicativo(j).setNome(replaceAzione(pa.getServizioApplicativo(j).getNome(),
  1600.                             pa.getAzione().getNome()));
  1601.                 }
  1602.             }
  1603.            
  1604.             if(pa.getCorrelazioneApplicativa()!=null && pa.getCorrelazioneApplicativa().sizeElementoList()>0) {
  1605.                 for (CorrelazioneApplicativaElemento elemento : pa.getCorrelazioneApplicativa().getElementoList()) {
  1606.                     if(elemento.getNome()!=null && !"".equals(elemento.getNome())){
  1607.                         elemento.setNome(replaceSoggettoProprietarioOrDefault(registryReader,elemento.getNome(),
  1608.                                 pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
  1609.                         if(pa.getServizio()!=null &&
  1610.                                 pa.getServizio().getNome()!=null &&
  1611.                                 !"".equals(pa.getServizio().getNome()) ){
  1612.                             elemento.setNome(replaceServizio(elemento.getNome(),
  1613.                                     pa.getServizio().getTipo(), pa.getServizio().getNome()));
  1614.                         }
  1615.                         if(pa.getAzione()!=null &&
  1616.                                 pa.getAzione().getNome()!=null &&
  1617.                                 !"".equals(pa.getAzione().getNome()) ){
  1618.                             elemento.setNome(replaceAzione(elemento.getNome(),
  1619.                                     pa.getAzione().getNome()));
  1620.                         }
  1621.                     }
  1622.                     if(elemento.getPattern()!=null && !"".equals(elemento.getPattern())){
  1623.                         elemento.setPattern(replaceSoggettoProprietarioOrDefault(registryReader,elemento.getPattern(),
  1624.                                 pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
  1625.                         if(pa.getServizio()!=null &&
  1626.                                 pa.getServizio().getNome()!=null &&
  1627.                                 !"".equals(pa.getServizio().getNome()) ){
  1628.                             elemento.setPattern(replaceServizio(elemento.getPattern(),
  1629.                                     pa.getServizio().getTipo(), pa.getServizio().getNome()));
  1630.                         }
  1631.                         if(pa.getAzione()!=null &&
  1632.                                 pa.getAzione().getNome()!=null &&
  1633.                                 !"".equals(pa.getAzione().getNome()) ){
  1634.                             elemento.setPattern(replaceAzione(elemento.getPattern(),
  1635.                                     pa.getAzione().getNome()));
  1636.                         }
  1637.                     }
  1638.                 }
  1639.             }
  1640.             if(pa.getCorrelazioneApplicativaRisposta()!=null && pa.getCorrelazioneApplicativaRisposta().sizeElementoList()>0) {
  1641.                 for (CorrelazioneApplicativaRispostaElemento elemento : pa.getCorrelazioneApplicativaRisposta().getElementoList()) {
  1642.                     if(elemento.getNome()!=null && !"".equals(elemento.getNome())){
  1643.                         elemento.setNome(replaceSoggettoProprietarioOrDefault(registryReader,elemento.getNome(),
  1644.                                 pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
  1645.                         if(pa.getServizio()!=null &&
  1646.                                 pa.getServizio().getNome()!=null &&
  1647.                                 !"".equals(pa.getServizio().getNome()) ){
  1648.                             elemento.setNome(replaceServizio(elemento.getNome(),
  1649.                                     pa.getServizio().getTipo(), pa.getServizio().getNome()));
  1650.                         }
  1651.                         if(pa.getAzione()!=null &&
  1652.                                 pa.getAzione().getNome()!=null &&
  1653.                                 !"".equals(pa.getAzione().getNome()) ){
  1654.                             elemento.setNome(replaceAzione(elemento.getNome(),
  1655.                                     pa.getAzione().getNome()));
  1656.                         }
  1657.                     }
  1658.                     if(elemento.getPattern()!=null && !"".equals(elemento.getPattern())){
  1659.                         elemento.setPattern(replaceSoggettoProprietarioOrDefault(registryReader,elemento.getPattern(),
  1660.                                 pa.getTipoSoggettoProprietario(), pa.getNomeSoggettoProprietario()));
  1661.                         if(pa.getServizio()!=null &&
  1662.                                 pa.getServizio().getNome()!=null &&
  1663.                                 !"".equals(pa.getServizio().getNome()) ){
  1664.                             elemento.setPattern(replaceServizio(elemento.getPattern(),
  1665.                                     pa.getServizio().getTipo(), pa.getServizio().getNome()));
  1666.                         }
  1667.                         if(pa.getAzione()!=null &&
  1668.                                 pa.getAzione().getNome()!=null &&
  1669.                                 !"".equals(pa.getAzione().getNome()) ){
  1670.                             elemento.setPattern(replaceAzione(elemento.getPattern(),
  1671.                                     pa.getAzione().getNome()));
  1672.                         }
  1673.                     }
  1674.                 }
  1675.             }
  1676.         }
  1677.        
  1678.         // AccordoServizioParteSpecifica
  1679.         for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  1680.            
  1681.             ArchiveAccordoServizioParteSpecifica archiveAS = archive.getAccordiServizioParteSpecifica().get(i);
  1682.             AccordoServizioParteSpecifica as = archiveAS.getAccordoServizioParteSpecifica();
  1683.            
  1684.             if(as.getAccordoServizioParteComune()!=null) {
  1685.                 as.setAccordoServizioParteComune(replaceSoggettoProprietarioOrDefault(registryReader,as.getAccordoServizioParteComune(), as.getTipoSoggettoErogatore(),as.getNomeSoggettoErogatore()));
  1686.                 as.setAccordoServizioParteComune(replaceSoggettoErogatore(as.getAccordoServizioParteComune(), as.getTipoSoggettoErogatore(),as.getNomeSoggettoErogatore()));
  1687.             }
  1688.            
  1689.             if(as.getConfigurazioneServizio()!=null && as.getConfigurazioneServizio().getConnettore()!=null){
  1690.                 for (int j = 0; j < as.getConfigurazioneServizio().getConnettore().sizePropertyList(); j++) {
  1691.                     Property p = as.getConfigurazioneServizio().getConnettore().getProperty(j);
  1692.                     p.setNome(replaceSoggettoProprietarioOrDefault(registryReader,p.getNome(), as.getTipoSoggettoErogatore(),as.getNomeSoggettoErogatore()));
  1693.                     p.setValore(replaceSoggettoProprietarioOrDefault(registryReader,p.getValore(), as.getTipoSoggettoErogatore(),as.getNomeSoggettoErogatore()));
  1694.                 }
  1695.             }
  1696.             if(as.getConfigurazioneServizio()!=null && as.getConfigurazioneServizio().getConnettore()!=null){
  1697.                 for (int j = 0; j < as.getConfigurazioneServizio().getConnettore().sizePropertyList(); j++) {
  1698.                     Property p = as.getConfigurazioneServizio().getConnettore().getProperty(j);
  1699.                     p.setNome(replaceSoggettoErogatore(p.getNome(), as.getTipoSoggettoErogatore(),as.getNomeSoggettoErogatore()));
  1700.                     p.setValore(replaceSoggettoErogatore(p.getValore(), as.getTipoSoggettoErogatore(),as.getNomeSoggettoErogatore()));
  1701.                 }
  1702.             }
  1703.            
  1704.             if(as.sizeFruitoreList()==1){
  1705.                 if(as.getConfigurazioneServizio()!=null && as.getConfigurazioneServizio().getConnettore()!=null){
  1706.                     for (int j = 0; j < as.getConfigurazioneServizio().getConnettore().sizePropertyList(); j++) {
  1707.                         Property p = as.getConfigurazioneServizio().getConnettore().getProperty(j);
  1708.                         p.setNome(replaceFruitore(p.getNome(), as.getFruitore(0).getTipo(), as.getFruitore(0).getNome()));
  1709.                         p.setValore(replaceFruitore(p.getValore(), as.getFruitore(0).getTipo(), as.getFruitore(0).getNome()));
  1710.                     }
  1711.                 }
  1712.             }
  1713.             else{
  1714.                 if(as.sizeFruitoreList()==0){
  1715.                    
  1716.                     IDServizio idAccordoAttuale = null;
  1717.                     try{
  1718.                         idAccordoAttuale = IDServizioFactory.getInstance().getIDServizioFromAccordo(as);
  1719.                     }catch(Exception e){
  1720.                         throw new ProtocolException(e.getMessage(),e);
  1721.                     }
  1722.                    
  1723.                     // cerco fruitori di questo accordo
  1724.                     List<Fruitore> listFruitori = new ArrayList<Fruitore>();
  1725.                     for (int j = 0; j < archive.getAccordiFruitori().size(); j++) {
  1726.                         Fruitore fr = archive.getAccordiFruitori().get(j).getFruitore();
  1727.                         IDServizio idAccordo = archive.getAccordiFruitori().get(j).getIdAccordoServizioParteSpecifica();
  1728.                         if(idAccordo.equals(idAccordoAttuale)){
  1729.                             listFruitori.add(fr);
  1730.                         }
  1731.                     }
  1732.                     if(listFruitori.size()==1){
  1733.                         if(as.getConfigurazioneServizio()!=null && as.getConfigurazioneServizio().getConnettore()!=null){
  1734.                             for (int j = 0; j < as.getConfigurazioneServizio().getConnettore().sizePropertyList(); j++) {
  1735.                                 Property p = as.getConfigurazioneServizio().getConnettore().getProperty(j);
  1736.                                 p.setNome(replaceFruitore(p.getNome(), listFruitori.get(0).getTipo(), listFruitori.get(0).getNome()));
  1737.                                 p.setValore(replaceFruitore(p.getValore(), listFruitori.get(0).getTipo(), listFruitori.get(0).getNome()));
  1738.                             }
  1739.                         }
  1740.                     }
  1741.                 }
  1742.             }
  1743.            
  1744.             if(archiveAS.getMappingPorteApplicativeAssociate()!=null && !archiveAS.getMappingPorteApplicativeAssociate().isEmpty()) {
  1745.                 for (MappingErogazionePortaApplicativa mappingPA : archiveAS.getMappingPorteApplicativeAssociate()) {
  1746.                     if(mappingPA.getIdPortaApplicativa()!=null && mappingPA.getIdPortaApplicativa().getNome()!=null) {
  1747.                         mappingPA.getIdPortaApplicativa().setNome(replaceSoggettoProprietarioOrDefault(registryReader,mappingPA.getIdPortaApplicativa().getNome(),
  1748.                                 as.getTipoSoggettoErogatore(),as.getNomeSoggettoErogatore()));
  1749.                         mappingPA.getIdPortaApplicativa().setNome(replaceSoggettoErogatore(mappingPA.getIdPortaApplicativa().getNome(),
  1750.                                 as.getTipoSoggettoErogatore(),as.getNomeSoggettoErogatore()));
  1751.                         mappingPA.getIdPortaApplicativa().setNome(replaceServizio(mappingPA.getIdPortaApplicativa().getNome(),
  1752.                                 as.getTipo(),as.getNome()));
  1753.                     }
  1754.                     if(mappingPA.getIdServizio()!=null) {
  1755.                         replaceTemplatesNames(registryReader, mappingPA.getIdServizio(),
  1756.                                 as.getTipoSoggettoErogatore(),as.getNomeSoggettoErogatore(),
  1757.                                 as.getTipo(),as.getNome(),
  1758.                                 true);
  1759.                     }
  1760.                 }
  1761.             }
  1762.         }
  1763.        
  1764.         // Fruitori
  1765.         for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  1766.             ArchiveFruitore archiveFr = archive.getAccordiFruitori().get(i);
  1767.             Fruitore fr = archiveFr.getFruitore();
  1768.             IDServizio idAccordo = archive.getAccordiFruitori().get(i).getIdAccordoServizioParteSpecifica();
  1769.             String tipoSoggettoErogatore = null;
  1770.             String nomeSoggettoErogatore = null;
  1771.             String tipoServizio = null;
  1772.             String nomeServizio = null;
  1773.             if(idAccordo!=null && idAccordo.getSoggettoErogatore()!=null){
  1774.                 tipoSoggettoErogatore = idAccordo.getSoggettoErogatore().getTipo();
  1775.                 nomeSoggettoErogatore = idAccordo.getSoggettoErogatore().getNome();
  1776.             }
  1777.             if(idAccordo!=null) {
  1778.                 tipoServizio = idAccordo.getTipo();
  1779.                 nomeServizio = idAccordo.getNome();
  1780.             }
  1781.             if(fr.getConnettore()!=null){
  1782.                 for (int j = 0; j < fr.getConnettore().sizePropertyList(); j++) {
  1783.                     Property p = fr.getConnettore().getProperty(j);
  1784.                     p.setNome(replaceFruitore(p.getNome(), fr.getTipo(), fr.getNome()));
  1785.                     p.setValore(replaceFruitore(p.getValore(), fr.getTipo(), fr.getNome()));
  1786.                 }
  1787.                 for (int j = 0; j < fr.getConnettore().sizePropertyList(); j++) {
  1788.                     Property p = fr.getConnettore().getProperty(j);
  1789.                     p.setNome(replaceSoggettoProprietarioOrDefault(registryReader,p.getNome(), fr.getTipo(), fr.getNome()));
  1790.                     p.setValore(replaceSoggettoProprietarioOrDefault(registryReader,p.getValore(), fr.getTipo(), fr.getNome()));
  1791.                 }
  1792.                 if(tipoSoggettoErogatore!=null && nomeSoggettoErogatore!=null){
  1793.                     for (int j = 0; j < fr.getConnettore().sizePropertyList(); j++) {
  1794.                         Property p = fr.getConnettore().getProperty(j);
  1795.                         p.setNome(replaceSoggettoErogatore(p.getNome(), tipoSoggettoErogatore, nomeSoggettoErogatore));
  1796.                         p.setValore(replaceSoggettoErogatore(p.getValore(), tipoSoggettoErogatore, nomeSoggettoErogatore));
  1797.                     }  
  1798.                 }
  1799.             }
  1800.            
  1801.             if(archiveFr.getMappingPorteDelegateAssociate()!=null && !archiveFr.getMappingPorteDelegateAssociate().isEmpty()) {
  1802.                 for (MappingFruizionePortaDelegata mappingPD : archiveFr.getMappingPorteDelegateAssociate()) {
  1803.                     if(mappingPD.getIdPortaDelegata()!=null && mappingPD.getIdPortaDelegata().getNome()!=null) {
  1804.                         if(tipoSoggettoErogatore!=null && nomeSoggettoErogatore!=null){
  1805.                             mappingPD.getIdPortaDelegata().setNome(replaceSoggettoErogatore(mappingPD.getIdPortaDelegata().getNome(),
  1806.                                     tipoSoggettoErogatore,nomeSoggettoErogatore));
  1807.                         }
  1808.                         if(tipoServizio!=null && nomeServizio!=null){
  1809.                             mappingPD.getIdPortaDelegata().setNome(replaceServizio(mappingPD.getIdPortaDelegata().getNome(),
  1810.                                     tipoServizio,nomeServizio));
  1811.                         }
  1812.                         mappingPD.getIdPortaDelegata().setNome(replaceSoggettoProprietarioOrDefault(registryReader,mappingPD.getIdPortaDelegata().getNome(),
  1813.                                 fr.getTipo(), fr.getNome()));
  1814.                         mappingPD.getIdPortaDelegata().setNome(replaceFruitore(mappingPD.getIdPortaDelegata().getNome(),
  1815.                                 fr.getTipo(), fr.getNome()));
  1816.                     }
  1817.                     if(mappingPD.getIdServizio()!=null) {
  1818.                         if(tipoSoggettoErogatore!=null && nomeSoggettoErogatore!=null && tipoServizio!=null && nomeServizio!=null){
  1819.                             replaceTemplatesNames(registryReader,mappingPD.getIdServizio(),
  1820.                                     tipoSoggettoErogatore,nomeSoggettoErogatore,
  1821.                                     tipoServizio,nomeServizio,
  1822.                                     false);
  1823.                         }
  1824.                     }
  1825.                     if(mappingPD.getIdFruitore()!=null) {
  1826.                         if(mappingPD.getIdFruitore().getTipo()!=null) {
  1827.                             mappingPD.getIdFruitore().setTipo(replaceSoggettoProprietarioOrDefault(registryReader,mappingPD.getIdFruitore().getTipo(),
  1828.                                     fr.getTipo(), fr.getNome()));
  1829.                             mappingPD.getIdFruitore().setTipo(replaceFruitore(mappingPD.getIdFruitore().getTipo(),
  1830.                                     fr.getTipo(), fr.getNome()));
  1831.                         }
  1832.                         if(mappingPD.getIdFruitore().getNome()!=null) {
  1833.                             mappingPD.getIdFruitore().setNome(replaceSoggettoProprietarioOrDefault(registryReader,mappingPD.getIdFruitore().getNome(),
  1834.                                     fr.getTipo(), fr.getNome()));
  1835.                             mappingPD.getIdFruitore().setNome(replaceFruitore(mappingPD.getIdFruitore().getNome(),
  1836.                                     fr.getTipo(), fr.getNome()));
  1837.                         }
  1838.                     }
  1839.                 }
  1840.             }
  1841.         }
  1842.     }
  1843.    
  1844.     @SuppressWarnings("deprecation")
  1845.     private static void replaceTemplatesNames(IRegistryReader registryReader, IDServizio idServizio,
  1846.             String tipoSoggettoErogatore, String nomeSoggettoErogatore,
  1847.             String tipoServizio, String nomeServizio,
  1848.             boolean replaceProprietario) throws ProtocolException {
  1849.         if(idServizio.getSoggettoErogatore()!=null) {
  1850.             if(idServizio.getSoggettoErogatore().getTipo()!=null) {
  1851.                 if(replaceProprietario) {
  1852.                     idServizio.getSoggettoErogatore().setTipo(replaceSoggettoProprietarioOrDefault(registryReader,idServizio.getSoggettoErogatore().getTipo(),
  1853.                             tipoSoggettoErogatore,nomeSoggettoErogatore));
  1854.                 }
  1855.                 idServizio.getSoggettoErogatore().setTipo(replaceSoggettoErogatore(idServizio.getSoggettoErogatore().getTipo(),
  1856.                         tipoSoggettoErogatore,nomeSoggettoErogatore));
  1857.             }
  1858.             if(idServizio.getSoggettoErogatore().getNome()!=null) {
  1859.                 if(replaceProprietario) {
  1860.                     idServizio.getSoggettoErogatore().setNome(replaceSoggettoProprietarioOrDefault(registryReader,idServizio.getSoggettoErogatore().getNome(),
  1861.                             tipoSoggettoErogatore,nomeSoggettoErogatore));
  1862.                 }
  1863.                 idServizio.getSoggettoErogatore().setNome(replaceSoggettoErogatore(idServizio.getSoggettoErogatore().getNome(),
  1864.                         tipoSoggettoErogatore,nomeSoggettoErogatore));
  1865.             }
  1866.         }
  1867.         if(idServizio.getTipo()!=null) {
  1868.             idServizio.setTipo(replaceServizio(idServizio.getTipo(),
  1869.                     tipoServizio,nomeServizio));
  1870.         }
  1871.         if(idServizio.getNome()!=null) {
  1872.             idServizio.setNome(replaceServizio(idServizio.getNome(),
  1873.                     tipoServizio,nomeServizio));
  1874.         }
  1875.     }
  1876. }