ErogazioneConverter.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.basic.archive.abstraction;

  21. import java.io.ByteArrayInputStream;
  22. import java.util.ArrayList;
  23. import java.util.HashMap;
  24. import java.util.Map;

  25. import org.openspcoop2.core.config.constants.PortaApplicativaAzioneIdentificazione;
  26. import org.openspcoop2.core.id.IDAccordo;
  27. import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
  28. import org.openspcoop2.protocol.abstraction.Erogazione;
  29. import org.openspcoop2.protocol.abstraction.Soggetto;
  30. import org.openspcoop2.protocol.abstraction.constants.CostantiAbstraction;
  31. import org.openspcoop2.protocol.abstraction.constants.Tipologia;
  32. import org.openspcoop2.protocol.abstraction.template.DatiServizio;
  33. import org.openspcoop2.protocol.abstraction.template.DatiServizioApplicativoErogatore;
  34. import org.openspcoop2.protocol.abstraction.template.DatiSoggetto;
  35. import org.openspcoop2.protocol.abstraction.template.IdSoggetto;
  36. import org.openspcoop2.protocol.abstraction.template.TemplateErogazione;
  37. import org.openspcoop2.protocol.basic.archive.ZIPReadUtils;
  38. import org.openspcoop2.protocol.sdk.ProtocolException;
  39. import org.openspcoop2.protocol.sdk.archive.Archive;
  40. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteSpecifica;
  41. import org.openspcoop2.protocol.sdk.archive.ArchiveIdCorrelazione;
  42. import org.openspcoop2.protocol.sdk.archive.ArchivePortaApplicativa;
  43. import org.openspcoop2.protocol.sdk.constants.ArchiveVersion;
  44. import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
  45. import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
  46. import org.openspcoop2.protocol.utils.ManagerUtils;
  47. import org.openspcoop2.utils.Utilities;
  48. import org.openspcoop2.utils.resources.TemplateUtils;
  49. import org.slf4j.Logger;

  50. /**    
  51.  * ErogazioneConverter
  52.  *
  53.  * @author Poli Andrea (poli@link.it)
  54.  * @author $Author$
  55.  * @version $Rev$, $Date$
  56.  */
  57. public class ErogazioneConverter extends AbstractConverter {

  58.     // ----- Static method -----
  59.    
  60.     public static synchronized ArchiveIdCorrelazione generateIdCorrelazione(String tipoSoggettoErogatore,String nomeSoggettoErogatore,
  61.             String tipoServizio, String nomeServizio,
  62.             String descrizione) throws ProtocolException{
  63.        
  64.         // Identificativo Unico di Correlazione
  65.         String uuid = "Erogazione_"+tipoSoggettoErogatore+"/"+nomeSoggettoErogatore+"_"+tipoServizio+"/"+nomeServizio+"_"+System.currentTimeMillis();
  66.        
  67.         Utilities.sleep(1); // per rendere univco il prossimo uuid
  68.        
  69.         ArchiveIdCorrelazione idCorrelazione = new ArchiveIdCorrelazione(uuid);
  70.        
  71.         String d = null;
  72.         if(descrizione!=null && !"".equals(descrizione)){
  73.             d = descrizione;
  74.         }
  75.         else{
  76.             d = "Erogazione servizio:"+tipoServizio+"/"+nomeServizio+" erogatore:"+tipoSoggettoErogatore+"/"+nomeSoggettoErogatore;
  77.         }
  78.         idCorrelazione.setDescrizione(d);

  79.         return idCorrelazione;
  80.     }
  81.    
  82.    
  83.    
  84.    
  85.     // ----- Instance method -----

  86.     public ErogazioneConverter(Logger log,ZIPReadUtils zipReader) throws ProtocolException{
  87.         super(log, zipReader);
  88.     }
  89.    
  90.     // ritorna l'identificativo di correlazione.
  91.     public ArchiveIdCorrelazione fillArchive(Archive archive, Erogazione erogazione, TemplateErogazione templateErogazione,
  92.             IRegistryReader registryReader, IConfigIntegrationReader configIntegrationReader, boolean validationDocuments) throws ProtocolException{
  93.        
  94.         try{
  95.            
  96.             // Cerco identificare accordo di servizio parte comune
  97.             IDAccordo idAccordoServizioParteComune = null;
  98.             if(erogazione.getAccordoServizioParteComune().getUri()!=null){
  99.                 idAccordoServizioParteComune = this.idAccordoFactory.getIDAccordoFromUri(erogazione.getAccordoServizioParteComune().getUri());
  100.                 if(this.existsAccordoServizioParteComune(archive, registryReader, idAccordoServizioParteComune)==false){
  101.                     throw new ProtocolException("Accordo di Servizio Parte Comune ["+idAccordoServizioParteComune.toString()+"] non esistente");
  102.                 }
  103.             }
  104.             else {
  105.                 if(erogazione.getAccordoServizioParteComune().getIdAccordo().getSoggetto()!=null &&
  106.                         erogazione.getAccordoServizioParteComune().getIdAccordo().getVersione()!=null){
  107.                     idAccordoServizioParteComune =
  108.                             this.idAccordoFactory.getIDAccordoFromValues(
  109.                                     erogazione.getAccordoServizioParteComune().getIdAccordo().getNome(),
  110.                                     erogazione.getAccordoServizioParteComune().getIdAccordo().getSoggetto().getTipo(),
  111.                                     erogazione.getAccordoServizioParteComune().getIdAccordo().getSoggetto().getNome(),
  112.                                     erogazione.getAccordoServizioParteComune().getIdAccordo().getVersione());
  113.                     if(this.existsAccordoServizioParteComune(archive, registryReader, idAccordoServizioParteComune)==false){
  114.                         throw new ProtocolException("Accordo di Servizio Parte Comune ["+idAccordoServizioParteComune.toString()+"] non esistente");
  115.                     }
  116.                 }
  117.                 else{
  118.                     idAccordoServizioParteComune = this.findIdAccordoServizioParteComune(archive, registryReader,
  119.                             erogazione.getAccordoServizioParteComune().getIdAccordo().getNome(),
  120.                             erogazione.getAccordoServizioParteComune().getIdAccordo().getSoggetto(),
  121.                             erogazione.getAccordoServizioParteComune().getIdAccordo().getVersione());
  122.                 }
  123.             }
  124.            
  125.             // IdSoggetto
  126.             IdSoggetto soggettoErogatore = new IdSoggetto();
  127.             soggettoErogatore.setTipo(erogazione.getSoggettoErogatore().getIdSoggetto().getTipo());
  128.             soggettoErogatore.setNome(erogazione.getSoggettoErogatore().getIdSoggetto().getNome());
  129.            
  130.             // Protocollo
  131.             String protocollo = ManagerUtils.getProtocolByOrganizationType(soggettoErogatore.getTipo());
  132.            
  133.             // Nome Servizio
  134.             String nomeServizio = null;
  135.             if(erogazione.getServizio()!=null && erogazione.getServizio().getNome()!=null){
  136.                 nomeServizio = erogazione.getServizio().getNome();
  137.             }
  138.             else if(erogazione.getAccordoServizioParteComune().getServizio()!=null){
  139.                 nomeServizio = erogazione.getAccordoServizioParteComune().getServizio();
  140.             }
  141.             else {
  142.                 nomeServizio = idAccordoServizioParteComune.getNome();
  143.             }
  144.            
  145.             // TipoServizio
  146.             String tipoServizio = null;
  147.             if(erogazione.getServizio()!=null && erogazione.getServizio().getTipo()!=null){
  148.                 tipoServizio = erogazione.getServizio().getTipo();
  149.             }
  150.             else{
  151.                 tipoServizio = ManagerUtils.getDefaultServiceType(protocollo);
  152.             }
  153.            
  154.             // Dati Servizio
  155.             DatiServizio datiServizio = new DatiServizio();
  156.             datiServizio.setUriAccordoServizioParteComune(this.idAccordoFactory.getUriFromIDAccordo(idAccordoServizioParteComune));
  157.             datiServizio.setPortType(erogazione.getAccordoServizioParteComune().getServizio());
  158.             datiServizio.setTipo(tipoServizio);
  159.             datiServizio.setNome(nomeServizio);
  160.             if(erogazione.getServizio()!=null){
  161.                 datiServizio.setEndpoint(erogazione.getServizio().getEndpoint());
  162.                 if(erogazione.getServizio().getTipologiaServizio()!=null){
  163.                     datiServizio.setTipologiaServizio(erogazione.getServizio().getTipologiaServizio().getValue());
  164.                 }
  165.             }
  166.             datiServizio.setErogatore(soggettoErogatore);

  167.             // Dati Applicativo Erogatore
  168.             boolean createApplicativoErogatore = false;
  169.             boolean createPortaApplicativa = false;
  170.             DatiServizioApplicativoErogatore datiApplicativiErogatore = null;
  171.             if(Tipologia.INTERNA.equals(erogazione.getTipologia())){
  172.                
  173.                 createPortaApplicativa = true;
  174.                
  175.                 if(erogazione.getServizioApplicativo()==null){
  176.                     throw new ProtocolException("Servizio Applicativo (Nome o DatiApplicativi) non indicati. Questi dati sono obbligatori per una erogazione di tipologia 'interna'");
  177.                 }
  178.                
  179.                 datiApplicativiErogatore = new DatiServizioApplicativoErogatore();
  180.                 datiApplicativiErogatore.setNome(erogazione.getServizioApplicativo().getNome());
  181.                 datiApplicativiErogatore.setNomePortaApplicativa(erogazione.getServizioApplicativo().getNomePortaApplicativa());
  182.                                
  183.                 if(datiApplicativiErogatore.getNome()!=null){
  184.                     boolean existsSA = this.existsServizioApplicativo(archive, configIntegrationReader, erogazione.getSoggettoErogatore().getIdSoggetto(), datiApplicativiErogatore.getNome());
  185.                     if(!existsSA){
  186.                         if(erogazione.getServizioApplicativo().getDatiApplicativi()==null){
  187.                             throw new ProtocolException("Servizio Applicativo (DatiApplicativi) non indicati. Questi dati sono obbligatori per una erogazione di tipologia 'interna', quando viene indicato un servizio applicativo non esistente");
  188.                         }
  189.                         if(erogazione.getServizioApplicativo().getDatiApplicativi().getEndpoint()==null){
  190.                             throw new ProtocolException("Servizio Applicativo (Endpoint) non indicato. Questo dato è obbligatorio per una erogazione di tipologia 'interna', quando viene indicato un servizio applicativo non esistente");
  191.                         }
  192.                         createApplicativoErogatore = true;
  193.                     }
  194.                     else{
  195.                         // Se cmq ho indicato dei dati applicativi, allora magari desidero fare un update
  196.                         if(erogazione.getServizioApplicativo().getDatiApplicativi()!=null &&
  197.                                 erogazione.getServizioApplicativo().getDatiApplicativi().getEndpoint()!=null){
  198.                             createApplicativoErogatore = true;
  199.                         }
  200.                     }
  201.                 }
  202.                 else{
  203.                     if(erogazione.getServizioApplicativo().getDatiApplicativi()==null){
  204.                         throw new ProtocolException("Servizio Applicativo (Nome o DatiApplicativi) non indicati. Questi dati sono obbligatori per una erogazione di tipologia 'interna'");
  205.                     }
  206.                     if(erogazione.getServizioApplicativo().getDatiApplicativi().getEndpoint()==null){
  207.                         throw new ProtocolException("Servizio Applicativo (Endpoint) non indicato. Questo dato è obbligatorio per una erogazione di tipologia 'interna', quando non viene indicato un servizio applicativo");
  208.                     }
  209.                     createApplicativoErogatore = true;
  210.                 }
  211.                    
  212.                 if(createApplicativoErogatore){
  213.                     datiApplicativiErogatore.setEndpoint(erogazione.getServizioApplicativo().getDatiApplicativi().getEndpoint());
  214.                     if(erogazione.getServizioApplicativo().getDatiApplicativi().getCredenzialiBasic()!=null){
  215.                         datiApplicativiErogatore.setUsername(erogazione.getServizioApplicativo().getDatiApplicativi().getCredenzialiBasic().getUsername());
  216.                         datiApplicativiErogatore.setPassword(erogazione.getServizioApplicativo().getDatiApplicativi().getCredenzialiBasic().getPassword());
  217.                     }
  218.                 }
  219.                
  220.             }
  221.             else{
  222.                 if(erogazione.getServizioApplicativo()!=null){
  223.                     throw new ProtocolException("Servizio Applicativo (Nomi o DatiApplicativi) indicati in una erogazione di tipologia 'esterna'. Tale tipologia non prevede la configurazione di una PA e di un ServizioApplicativo");
  224.                 }
  225.             }
  226.            
  227.             // Dati Soggetto
  228.             boolean createSoggetto = false;
  229.             boolean createPdd = false;
  230.             DatiSoggetto datiSoggetto = new DatiSoggetto();
  231.             datiSoggetto.setId(soggettoErogatore);
  232.             if(this.existsSoggetto(archive, registryReader, erogazione.getSoggettoErogatore().getIdSoggetto()) == false){
  233.                 if(erogazione.getSoggettoErogatore().getNotExistsBehaviour()==null || erogazione.getSoggettoErogatore().getNotExistsBehaviour().isCreate()==false){
  234.                     throw new ProtocolException("Soggetto Erogatore ["+soggettoErogatore.getTipo()+"/"+soggettoErogatore.getNome()+"] non esistente");
  235.                 }
  236.                 else{
  237.                    
  238.                     createSoggetto = true;
  239.                    
  240.                     datiSoggetto.setEndpoint(erogazione.getSoggettoErogatore().getNotExistsBehaviour().getEndpoint());
  241.                     datiSoggetto.setPortaDominio(erogazione.getSoggettoErogatore().getNotExistsBehaviour().getPortaDominio());
  242.                    
  243.                     if(datiSoggetto.getPortaDominio()!=null){
  244.                         if(this.existsPdd(archive, registryReader, datiSoggetto.getPortaDominio())){
  245.                             if(Tipologia.INTERNA.equals(erogazione.getTipologia())){
  246.                                 if(this.isPddOperativa(archive, registryReader, datiSoggetto.getPortaDominio())==false){
  247.                                     throw new ProtocolException("La pdd ["+datiSoggetto.getPortaDominio()+
  248.                                             "] indicata per il Soggetto Erogatore ["+soggettoErogatore.getTipo()+"/"+soggettoErogatore.getNome()+"] "
  249.                                                     + "possiede un tipo 'esterno' non compatibile con una erogazione di tipologia 'interna'. Deve essere associata una pdd di tipo 'operativo'");
  250.                                 }
  251.                             }
  252.                             else{
  253.                                 if(this.isPddOperativa(archive, registryReader, datiSoggetto.getPortaDominio())){
  254.                                     throw new ProtocolException("La pdd ["+datiSoggetto.getPortaDominio()+
  255.                                             "] indicata per il Soggetto Erogatore ["+soggettoErogatore.getTipo()+"/"+soggettoErogatore.getNome()+"] "
  256.                                                     + "possiede un tipo 'operativo' non compatibile con una erogazione di tipologia 'esterna'. Deve essere associata una pdd di tipo 'esterno'");
  257.                                 }
  258.                             }
  259.                         }
  260.                         else{
  261.                             if(Tipologia.INTERNA.equals(erogazione.getTipologia())){
  262.                                 throw new ProtocolException("PdD ["+datiSoggetto.getPortaDominio()+"] non esistente (E' obbligatorio fornire una PdD esistente di tipo 'operativo' se la tipologia di erogazione è 'interna')");
  263.                             }
  264.                             createPdd = true;
  265.                         }
  266.                     }
  267.                     else{
  268.                         if(Tipologia.INTERNA.equals(erogazione.getTipologia())){
  269.                             datiSoggetto.setPortaDominio(this.getPddOperativa(registryReader));
  270.                         }else{
  271.                             createPdd = true; // creo pdd esterna.
  272.                         }
  273.                     }
  274.                    
  275.                 }
  276.             }
  277.                    
  278.            
  279.             // Identificativo Unico di Correlazione
  280.             ArchiveIdCorrelazione idCorrelazione = generateIdCorrelazione(soggettoErogatore.getTipo(), soggettoErogatore.getNome(),
  281.                     datiServizio.getTipo(), datiServizio.getNome(),
  282.                     erogazione.getDescrizione());
  283.            
  284.             // Creazione mappa per FreeMarker
  285.             Map<String, Object> data = new HashMap<>();
  286.             data.put(CostantiAbstraction.EROGAZIONE_MAP_KEY_SERVIZIO, datiServizio);
  287.             data.put(CostantiAbstraction.EROGAZIONE_MAP_KEY_SOGGETTO, datiSoggetto);
  288.             if(datiApplicativiErogatore!=null){
  289.                 data.put(CostantiAbstraction.EROGAZIONE_MAP_KEY_APPLICATIVO_EROGATORE, datiApplicativiErogatore);
  290.             }
  291.            
  292.            
  293.             // Creazione Pdd e Soggetti
  294.             if(createPdd){
  295.                 byte[]xml = TemplateUtils.toByteArray(templateErogazione.getTemplatePdd(), data);
  296.                 try{
  297.                     this.filler.readPortaDominio(archive, new ByteArrayInputStream(xml), xml, "pdd", validationDocuments, idCorrelazione);
  298.                 }catch(Exception e){
  299.                     throw new Exception("XmlTemplate["+new String(xml)+"]\n"+e.getMessage(),e);
  300.                 }
  301.             }
  302.             if(createSoggetto){
  303.                 byte[]xml = TemplateUtils.toByteArray(templateErogazione.getTemplateSoggetto(), data);
  304.                 try{
  305.                     this.filler.readSoggetto(archive,new ByteArrayInputStream(xml), xml, "soggetto",
  306.                             soggettoErogatore.getTipo(), soggettoErogatore.getNome(), validationDocuments, idCorrelazione);
  307.                 }catch(Exception e){
  308.                     throw new Exception("XmlTemplate["+new String(xml)+"]\n"+e.getMessage(),e);
  309.                 }
  310.             }
  311.            
  312.             // Creazione Accordi di Servizio Parte Specifica
  313.             for (int i = 0; i < templateErogazione.getTemplateAccordiParteSpecifica().size(); i++) {
  314.                 byte[]xml = TemplateUtils.toByteArray(templateErogazione.getTemplateAccordiParteSpecifica().get(i), data);
  315.                 try{
  316.                     //String fileSystemName = this.filler.convertCharNonPermessiQualsiasiSistemaOperativo(datiServizio.getNome(),false);
  317.                     String tipo = datiServizio.getTipo();
  318.                     String nome = datiServizio.getNome();
  319.                     this.filler.readAccordoServizioParteSpecifica(archive, new ByteArrayInputStream(xml), xml,
  320.                         "asps_"+i, soggettoErogatore.getTipo(), soggettoErogatore.getNome(), "asps_"+i,
  321.                         tipo, nome, ZIPReadUtils.USE_VERSION_XML_BEAN, validationDocuments, idCorrelazione,
  322.                         ArchiveVersion.V_1,null,null,null);
  323.                 }catch(Exception e){
  324.                     throw new Exception("XmlTemplate["+new String(xml)+"]\n"+e.getMessage(),e);
  325.                 }
  326.             }
  327.            
  328.             // Creazione Fruitori
  329.             if(erogazione.getServizio()!=null &&
  330.                     erogazione.getServizio().getFruitori()!=null &&
  331.                     erogazione.getServizio().getFruitori().sizeFruitoreList()>0){
  332.                 for (int i = 0; i < erogazione.getServizio().getFruitori().sizeFruitoreList(); i++) {
  333.                     Soggetto fruitore = erogazione.getServizio().getFruitori().getFruitore(i);
  334.                     IdSoggetto s = new IdSoggetto();
  335.                     s.setTipo(fruitore.getTipo());
  336.                     s.setNome(fruitore.getNome());
  337.                     data.remove(CostantiAbstraction.EROGAZIONE_MAP_KEY_FRUITORE);
  338.                     data.put(CostantiAbstraction.EROGAZIONE_MAP_KEY_FRUITORE, s);
  339.                    
  340.                     byte[]xml = TemplateUtils.toByteArray(templateErogazione.getTemplateFruitore(), data);
  341.                     try{
  342.                         this.filler.readAccordoServizioParteSpecifica_Fruitore(archive, new ByteArrayInputStream(xml), xml,
  343.                                 "fruitore_"+i, "asps_"+i, soggettoErogatore.getTipo(), soggettoErogatore.getNome(),
  344.                                 tipoServizio,nomeServizio, ZIPReadUtils.USE_VERSION_XML_BEAN, validationDocuments, idCorrelazione,
  345.                                 ArchiveVersion.V_1,null,null);
  346.                     }catch(Exception e){
  347.                         throw new Exception("XmlTemplate["+new String(xml)+"]\n"+e.getMessage(),e);
  348.                     }
  349.                 }
  350.             }
  351.             data.remove(CostantiAbstraction.EROGAZIONE_MAP_KEY_FRUITORE);
  352.            
  353.             // Creazione SA
  354.             if(createApplicativoErogatore){
  355.                 for (int i = 0; i < templateErogazione.getTemplateServiziApplicativi().size(); i++) {
  356.                     byte[]xml = TemplateUtils.toByteArray(templateErogazione.getTemplateServiziApplicativi().get(i), data);
  357.                     try{
  358.                         this.filler.readServizioApplicativo(archive, new ByteArrayInputStream(xml), xml,
  359.                             "sa_"+i, soggettoErogatore.getTipo(), soggettoErogatore.getNome(), validationDocuments, idCorrelazione);
  360.                     }catch(Exception e){
  361.                         throw new Exception("XmlTemplate["+new String(xml)+"]\n"+e.getMessage(),e);
  362.                     }
  363.                 }
  364.             }
  365.            
  366.             // Creazione PortaApplicativa
  367.             if(createPortaApplicativa){
  368.                 for (int i = 0; i < templateErogazione.getTemplatePorteApplicative().size(); i++) {
  369.                     byte[]xml = TemplateUtils.toByteArray(templateErogazione.getTemplatePorteApplicative().get(i), data);
  370.                     try{
  371.                         this.filler.readPortaApplicativa(archive, new ByteArrayInputStream(xml), xml,
  372.                             "pa_"+i, soggettoErogatore.getTipo(), soggettoErogatore.getNome(), validationDocuments, idCorrelazione);
  373.                     }catch(Exception e){
  374.                         throw new Exception("XmlTemplate["+new String(xml)+"]\n"+e.getMessage(),e);
  375.                     }
  376.                 }
  377.             }
  378.            
  379.             // Creazione Mapping Erogazione
  380.             for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  381.                 ArchivePortaApplicativa aPA = archive.getPorteApplicative().get(i);
  382.                 if(idCorrelazione.equals(aPA.getIdCorrelazione())){
  383.                     // Devo aggiungerlo in tutte le erogazioni la porta applicativa
  384.                     for (int j = 0; j < archive.getAccordiServizioParteSpecifica().size(); j++) {
  385.                         ArchiveAccordoServizioParteSpecifica aASPS = archive.getAccordiServizioParteSpecifica().get(j);
  386.                         if(idCorrelazione.equals(aASPS.getIdCorrelazione())){
  387.                                
  388.                             MappingErogazionePortaApplicativa mapping = new MappingErogazionePortaApplicativa();
  389.                             mapping.setNome("regola_"+i+"_"+aPA.getIdPortaApplicativa().getNome());
  390.                             mapping.setIdServizio(aASPS.getIdAccordoServizioParteSpecifica());
  391.                             mapping.setIdPortaApplicativa(aPA.getIdPortaApplicativa());
  392.                             mapping.setDefault(aPA.getPortaApplicativa().getAzione()==null ||
  393.                                     !PortaApplicativaAzioneIdentificazione.DELEGATED_BY.equals(aPA.getPortaApplicativa().getAzione().getIdentificazione()));
  394.                            
  395.                             if(aASPS.getMappingPorteApplicativeAssociate()==null) {
  396.                                 aASPS.setMappingPorteApplicativeAssociate(new ArrayList<>());
  397.                             }
  398.                             aASPS.getMappingPorteApplicativeAssociate().add(mapping);
  399.                         }
  400.                     }
  401.                 }
  402.             }
  403.            
  404.             return idCorrelazione;
  405.            
  406.         }catch(Exception e){
  407.             throw new ProtocolException(e.getMessage(),e);
  408.         }
  409.        
  410.        
  411.     }
  412.    

  413.    
  414. }