EsitoUtils.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;

  21. import java.util.ArrayList;
  22. import java.util.Collections;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;

  26. import org.openspcoop2.core.config.Configurazione;
  27. import org.openspcoop2.core.controllo_traffico.constants.RuoloPolicy;
  28. import org.openspcoop2.core.id.IDAccordo;
  29. import org.openspcoop2.core.id.IDAccordoCooperazione;
  30. import org.openspcoop2.core.id.IDPortaApplicativa;
  31. import org.openspcoop2.core.id.IDPortaDelegata;
  32. import org.openspcoop2.core.id.IDServizio;
  33. import org.openspcoop2.core.id.IDServizioApplicativo;
  34. import org.openspcoop2.core.id.IDSoggetto;
  35. import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
  36. import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
  37. import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
  38. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  39. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  40. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  41. import org.openspcoop2.protocol.sdk.ProtocolException;
  42. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoCooperazione;
  43. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioComposto;
  44. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteComune;
  45. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteSpecifica;
  46. import org.openspcoop2.protocol.sdk.archive.ArchiveActivePolicy;
  47. import org.openspcoop2.protocol.sdk.archive.ArchiveAllarme;
  48. import org.openspcoop2.protocol.sdk.archive.ArchiveAttributeAuthority;
  49. import org.openspcoop2.protocol.sdk.archive.ArchiveConfigurationPolicy;
  50. import org.openspcoop2.protocol.sdk.archive.ArchiveEsitoImport;
  51. import org.openspcoop2.protocol.sdk.archive.ArchiveEsitoImportDetail;
  52. import org.openspcoop2.protocol.sdk.archive.ArchiveEsitoImportDetailConfigurazione;
  53. import org.openspcoop2.protocol.sdk.archive.ArchiveFruitore;
  54. import org.openspcoop2.protocol.sdk.archive.ArchiveGruppo;
  55. import org.openspcoop2.protocol.sdk.archive.ArchiveIdCorrelazione;
  56. import org.openspcoop2.protocol.sdk.archive.ArchiveMappingErogazione;
  57. import org.openspcoop2.protocol.sdk.archive.ArchiveMappingFruizione;
  58. import org.openspcoop2.protocol.sdk.archive.ArchivePdd;
  59. import org.openspcoop2.protocol.sdk.archive.ArchivePluginArchivio;
  60. import org.openspcoop2.protocol.sdk.archive.ArchivePluginClasse;
  61. import org.openspcoop2.protocol.sdk.archive.ArchivePortaApplicativa;
  62. import org.openspcoop2.protocol.sdk.archive.ArchivePortaDelegata;
  63. import org.openspcoop2.protocol.sdk.archive.ArchiveRuolo;
  64. import org.openspcoop2.protocol.sdk.archive.ArchiveScope;
  65. import org.openspcoop2.protocol.sdk.archive.ArchiveServizioApplicativo;
  66. import org.openspcoop2.protocol.sdk.archive.ArchiveSoggetto;
  67. import org.openspcoop2.protocol.sdk.archive.ArchiveTokenPolicy;
  68. import org.openspcoop2.protocol.sdk.archive.ArchiveUrlInvocazioneRegola;
  69. import org.openspcoop2.protocol.sdk.constants.ArchiveStatoImport;

  70. /**
  71.  * EsitoUtils
  72.  *
  73.  * @author Poli Andrea (apoli@link.it)
  74.  * @author $Author$
  75.  * @version $Rev$, $Date$
  76.  */
  77. public class EsitoUtils {

  78.     protected IProtocolFactory<?> protocolFactory = null;
  79.     protected IDAccordoCooperazioneFactory idAccordoCooperazioneFactory;
  80.     protected IDAccordoFactory idAccordoFactory;
  81.     protected IDServizioFactory idServizioFactory;
  82.     public EsitoUtils(IProtocolFactory<?> protocolFactory){
  83.         this.protocolFactory = protocolFactory;
  84.         this.idAccordoCooperazioneFactory = IDAccordoCooperazioneFactory.getInstance();
  85.         this.idAccordoFactory = IDAccordoFactory.getInstance();
  86.         this.idServizioFactory = IDServizioFactory.getInstance();
  87.     }
  88.    
  89.     public String toString(ArchiveEsitoImport archive, boolean readIdCorrelazione, boolean importOperation) throws ProtocolException{
  90.        
  91.         if(!readIdCorrelazione){
  92.             return this._toString(archive,importOperation);
  93.         }
  94.        
  95.         Map<String, ArchiveEsitoImport> map = new HashMap<String, ArchiveEsitoImport>();
  96.         Map<String, ArchiveIdCorrelazione> mapIdCorrelazione = new HashMap<String, ArchiveIdCorrelazione>();
  97.         this.readIdCorrelazione(map, mapIdCorrelazione, archive);
  98.        
  99.         if(map.size()<1){
  100.             return "";
  101.         }
  102.        
  103.         if(map.size()==1){
  104.             // in caso di una unica correlazione non riporto comunque il raggruppamento se รจ quella di default
  105.             for (String idCorrelazione : map.keySet()) {
  106.                 if(ZIPUtils.ID_CORRELAZIONE_DEFAULT.equals(idCorrelazione)){
  107.                     return this._toString(archive,importOperation);
  108.                 }
  109.             }
  110.         }
  111.        
  112.         StringBuilder bfEsito = new StringBuilder();
  113.        
  114.         ArchiveEsitoImport defaultArchiveEsitoImport = null;
  115.         ArchiveIdCorrelazione defaultArchiveIdCorrelazione = null;
  116.        
  117.         List<String> idCorrelazioneOrdinato = new ArrayList<>();
  118.         for (String idCorrelazione : map.keySet()) {
  119.             idCorrelazioneOrdinato.add(idCorrelazione);
  120.         }
  121.         Collections.sort(idCorrelazioneOrdinato);
  122.        
  123.         for (String idCorrelazione : idCorrelazioneOrdinato) {
  124.             ArchiveIdCorrelazione archiveIdCorrelazione = mapIdCorrelazione.get(idCorrelazione);
  125.             ArchiveEsitoImport archiveCorrelazione = map.get(idCorrelazione);
  126.        
  127.             if(ZIPUtils.ID_CORRELAZIONE_DEFAULT.equals(idCorrelazione)){
  128.                 defaultArchiveEsitoImport = archiveCorrelazione;
  129.                 defaultArchiveIdCorrelazione = archiveIdCorrelazione;
  130.                 continue;
  131.             }
  132.            
  133.             this.append(bfEsito, archiveIdCorrelazione, archiveCorrelazione, importOperation);
  134.            
  135.         }
  136.        
  137.         if(defaultArchiveEsitoImport!=null){
  138.             ArchiveIdCorrelazione i = new ArchiveIdCorrelazione(defaultArchiveIdCorrelazione.getId());
  139.             i.setDescrizione("       Altro      ");
  140.             this.append(bfEsito, i, defaultArchiveEsitoImport, importOperation);
  141.         }
  142.        
  143.         return bfEsito.toString();
  144.        
  145.     }
  146.     private void append(StringBuilder bfEsito, ArchiveIdCorrelazione archiveIdCorrelazione, ArchiveEsitoImport archiveCorrelazione, boolean importOperation){
  147.        
  148.         String descrizione = archiveIdCorrelazione.getDescrizione();
  149.         if(descrizione==null){
  150.             descrizione = archiveIdCorrelazione.getId();
  151.         }
  152.        
  153.         for (int i = 0; i < descrizione.length(); i++) {
  154.             bfEsito.append("=");
  155.         }
  156.         bfEsito.append("\n");
  157.         bfEsito.append(descrizione);
  158.         bfEsito.append("\n");
  159.         for (int i = 0; i < descrizione.length(); i++) {
  160.             bfEsito.append("=");
  161.         }
  162.         bfEsito.append("\n");
  163.         bfEsito.append("\n");
  164.         bfEsito.append(this._toString(archiveCorrelazione,importOperation));
  165.         bfEsito.append("\n\n");
  166.        
  167.     }
  168.            
  169.     private String _toString(ArchiveEsitoImport archive, boolean importOperation){
  170.        
  171.         StringBuilder bfEsito = new StringBuilder();
  172.        
  173.         String labelNonErrore = "non importato";
  174.         if(!importOperation) {
  175.             labelNonErrore = "non eliminato";
  176.         }
  177.        
  178.         // Pdd
  179.         if(archive.getPdd().size()>0){
  180.             bfEsito.append("Gateway (").append(archive.getPdd().size()).append(")\n");
  181.         }
  182.         for (int i = 0; i < archive.getPdd().size(); i++) {
  183.             try{
  184.                 ArchiveEsitoImportDetail archivePdd = archive.getPdd().get(i);
  185.                 String nomePdd = ((ArchivePdd)archivePdd.getArchiveObject()).getNomePdd();
  186.                 bfEsito.append("\t- [").append(nomePdd).append("] ");
  187.                 serializeStato(archivePdd, bfEsito, importOperation);
  188.             }catch(Throwable e){
  189.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  190.             }
  191.             bfEsito.append("\n");
  192.         }
  193.         if(archive.getPdd().size()>0){
  194.             bfEsito.append("\n");  
  195.         }
  196.        
  197.        
  198.         // Tags
  199.         if(archive.getGruppi().size()>0){
  200.             bfEsito.append("Tags (").append(archive.getGruppi().size()).append(")\n");
  201.         }
  202.         for (int i = 0; i < archive.getGruppi().size(); i++) {
  203.             try{
  204.                 ArchiveEsitoImportDetail archiveGruppo = archive.getGruppi().get(i);
  205.                 String nomeGruppo = ((ArchiveGruppo)archiveGruppo.getArchiveObject()).getIdGruppo().getNome();
  206.                 bfEsito.append("\t- [").append(nomeGruppo).append("] ");
  207.                 serializeStato(archiveGruppo, bfEsito, importOperation);
  208.             }catch(Throwable e){
  209.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  210.             }
  211.             bfEsito.append("\n");
  212.         }
  213.         if(archive.getGruppi().size()>0){
  214.             bfEsito.append("\n");  
  215.         }
  216.        
  217.        
  218.         // Ruoli
  219.         if(archive.getRuoli().size()>0){
  220.             bfEsito.append("Ruoli (").append(archive.getRuoli().size()).append(")\n");
  221.         }
  222.         for (int i = 0; i < archive.getRuoli().size(); i++) {
  223.             try{
  224.                 ArchiveEsitoImportDetail archiveRuolo = archive.getRuoli().get(i);
  225.                 String nomeRuolo = ((ArchiveRuolo)archiveRuolo.getArchiveObject()).getIdRuolo().getNome();
  226.                 bfEsito.append("\t- [").append(nomeRuolo).append("] ");
  227.                 serializeStato(archiveRuolo, bfEsito, importOperation);
  228.             }catch(Throwable e){
  229.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  230.             }
  231.             bfEsito.append("\n");
  232.         }
  233.         if(archive.getRuoli().size()>0){
  234.             bfEsito.append("\n");  
  235.         }
  236.        
  237.        
  238.         // Scope
  239.         if(archive.getScope().size()>0){
  240.             bfEsito.append("Scope (").append(archive.getScope().size()).append(")\n");
  241.         }
  242.         for (int i = 0; i < archive.getScope().size(); i++) {
  243.             try{
  244.                 ArchiveEsitoImportDetail archiveScope = archive.getScope().get(i);
  245.                 String nomeScope = ((ArchiveScope)archiveScope.getArchiveObject()).getIdScope().getNome();
  246.                 bfEsito.append("\t- [").append(nomeScope).append("] ");
  247.                 serializeStato(archiveScope, bfEsito, importOperation);
  248.             }catch(Throwable e){
  249.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  250.             }
  251.             bfEsito.append("\n");
  252.         }
  253.         if(archive.getScope().size()>0){
  254.             bfEsito.append("\n");  
  255.         }
  256.        
  257.        
  258.         // Soggetti
  259.         if(archive.getSoggetti().size()>0){
  260.             bfEsito.append("Soggetti (").append(archive.getSoggetti().size()).append(")\n");
  261.         }
  262.         for (int i = 0; i < archive.getSoggetti().size(); i++) {
  263.             try{
  264.                 ArchiveEsitoImportDetail archiveSoggetto = archive.getSoggetti().get(i);
  265.                 IDSoggetto idSoggetto =((ArchiveSoggetto)archiveSoggetto.getArchiveObject()).getIdSoggetto();
  266.                 bfEsito.append("\t- [").append(idSoggetto.toString()).append("] ");
  267.                 serializeStato(archiveSoggetto, bfEsito, importOperation);
  268.             }catch(Exception e){
  269.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  270.             }
  271.             bfEsito.append("\n");
  272.         }
  273.         if(archive.getSoggetti().size()>0){
  274.             bfEsito.append("\n");  
  275.         }
  276.        
  277.        
  278.         // Servizi Applicativi
  279.         if(archive.getServiziApplicativi().size()>0){
  280.             bfEsito.append("Applicativi Fruitori/Erogatori (").append(archive.getServiziApplicativi().size()).append(")\n");
  281.         }
  282.         for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  283.             try{
  284.                 ArchiveEsitoImportDetail archiveServizioApplicativo = archive.getServiziApplicativi().get(i);
  285.                 IDServizioApplicativo idServizioApplicativo = ((ArchiveServizioApplicativo)archiveServizioApplicativo.getArchiveObject()).getIdServizioApplicativo();
  286.                 bfEsito.append("\t- [").append(idServizioApplicativo.getIdSoggettoProprietario().toString()).
  287.                         append("_").append(idServizioApplicativo.getNome()).append("] ");
  288.                 serializeStato(archiveServizioApplicativo, bfEsito, importOperation);
  289.             }catch(Exception e){
  290.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  291.             }
  292.             bfEsito.append("\n");
  293.         }
  294.         if(archive.getServiziApplicativi().size()>0){
  295.             bfEsito.append("\n");  
  296.         }
  297.        
  298.        
  299.         // Accordi di Cooperazione
  300.         if(archive.getAccordiCooperazione().size()>0){
  301.             bfEsito.append("Accordi di Cooperazione (").append(archive.getAccordiCooperazione().size()).append(")\n");
  302.         }
  303.         for (int i = 0; i < archive.getAccordiCooperazione().size(); i++) {
  304.             try{
  305.                 ArchiveEsitoImportDetail archiveAccordoCooperazione = archive.getAccordiCooperazione().get(i);
  306.                 IDAccordoCooperazione idAccordoCooperazione = ((ArchiveAccordoCooperazione)archiveAccordoCooperazione.getArchiveObject()).getIdAccordoCooperazione();
  307.                 String uriAccordo = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordoCooperazione);
  308.                 bfEsito.append("\t- [").append(uriAccordo).append("] ");
  309.                 serializeStato(archiveAccordoCooperazione, bfEsito, importOperation);
  310.             }catch(Exception e){
  311.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  312.             }
  313.             bfEsito.append("\n");
  314.         }
  315.         if(archive.getAccordiCooperazione().size()>0){
  316.             bfEsito.append("\n");  
  317.         }
  318.        
  319.        
  320.         // Accordi di Servizio Parte Comune
  321.         if(archive.getAccordiServizioParteComune().size()>0){
  322.             bfEsito.append("API (").append(archive.getAccordiServizioParteComune().size()).append(")\n");
  323.         }
  324.         for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
  325.             try{
  326.                 ArchiveEsitoImportDetail archiveAccordoServizioParteComune = archive.getAccordiServizioParteComune().get(i);
  327.                 IDAccordo idAccordo = ((ArchiveAccordoServizioParteComune)archiveAccordoServizioParteComune.getArchiveObject()).getIdAccordoServizioParteComune();
  328.                 String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
  329.                 bfEsito.append("\t- [").append(uriAccordo).append("] ");
  330.                 serializeStato(archiveAccordoServizioParteComune, bfEsito, importOperation);
  331.             }catch(Exception e){
  332.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  333.             }
  334.             bfEsito.append("\n");
  335.         }
  336.         if(archive.getAccordiServizioParteComune().size()>0){
  337.             bfEsito.append("\n");  
  338.         }
  339.        
  340.        
  341.         // Accordi di Servizio Parte Specifica (implementano accordi di servizio parte comune)
  342.         if(archive.getAccordiServizioParteSpecifica().size()>0){
  343.             bfEsito.append("Servizi (").append(archive.getAccordiServizioParteSpecifica().size()).append(")\n");
  344.         }
  345.         for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  346.             try{
  347.                 ArchiveEsitoImportDetail archiveAccordoServizioParteSpecifica = archive.getAccordiServizioParteSpecifica().get(i);
  348.                 IDServizio idServizio = ((ArchiveAccordoServizioParteSpecifica)archiveAccordoServizioParteSpecifica.getArchiveObject()).getIdAccordoServizioParteSpecifica();
  349.                 String uriAccordo = this.idServizioFactory.getUriFromIDServizio(idServizio);
  350.                 bfEsito.append("\t- [").append(uriAccordo).append("] ");
  351.                 serializeStato(archiveAccordoServizioParteSpecifica, bfEsito, importOperation);
  352.             }catch(Exception e){
  353.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  354.             }
  355.             bfEsito.append("\n");
  356.         }
  357.         if(archive.getAccordiServizioParteSpecifica().size()>0){
  358.             bfEsito.append("\n");  
  359.         }
  360.        
  361.        
  362.         // Accordi di Servizio Composto
  363.         if(archive.getAccordiServizioComposto().size()>0){
  364.             bfEsito.append("Accordi di Servizio Composto (").append(archive.getAccordiServizioComposto().size()).append(")\n");
  365.         }
  366.         for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
  367.             try{
  368.                 ArchiveEsitoImportDetail archiveAccordoServizioComposto = archive.getAccordiServizioComposto().get(i);
  369.                 IDAccordo idAccordo = ((ArchiveAccordoServizioComposto)archiveAccordoServizioComposto.getArchiveObject()).getIdAccordoServizioParteComune();
  370.                 String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
  371.                 bfEsito.append("\t- [").append(uriAccordo).append("] ");
  372.                 serializeStato(archiveAccordoServizioComposto, bfEsito, importOperation);
  373.             }catch(Exception e){
  374.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  375.             }
  376.             bfEsito.append("\n");
  377.         }
  378.         if(archive.getAccordiServizioComposto().size()>0){
  379.             bfEsito.append("\n");  
  380.         }
  381.        
  382.        
  383.         // Accordi di Servizio Parte Specifica (implementano accordi di servizio composto)
  384.         if(archive.getAccordiServizioParteSpecificaServiziComposti().size()>0){
  385.             bfEsito.append("Servizi (").
  386.                 append(archive.getAccordiServizioParteSpecificaServiziComposti().size()).append(") [accordi di servizio composto]\n");
  387.         }
  388.         for (int i = 0; i < archive.getAccordiServizioParteSpecificaServiziComposti().size(); i++) {
  389.             try{
  390.                 ArchiveEsitoImportDetail archiveAccordoServizioParteSpecifica = archive.getAccordiServizioParteSpecificaServiziComposti().get(i);
  391.                 IDServizio idServizio = ((ArchiveAccordoServizioParteSpecifica)archiveAccordoServizioParteSpecifica.getArchiveObject()).getIdAccordoServizioParteSpecifica();
  392.                 String uriAccordo = this.idServizioFactory.getUriFromIDServizio(idServizio);
  393.                 bfEsito.append("\t- [").append(uriAccordo).append("] ");
  394.                 serializeStato(archiveAccordoServizioParteSpecifica, bfEsito, importOperation);
  395.             }catch(Exception e){
  396.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  397.             }
  398.             bfEsito.append("\n");
  399.         }
  400.         if(archive.getAccordiServizioParteSpecificaServiziComposti().size()>0){
  401.             bfEsito.append("\n");  
  402.         }
  403.        
  404.        
  405.         // Fruitori
  406.         if(archive.getAccordiFruitori().size()>0){
  407.             bfEsito.append("Fruitori (").append(archive.getAccordiFruitori().size()).append(")\n");
  408.         }
  409.         for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  410.             try{
  411.                 ArchiveEsitoImportDetail archiveFruitore = archive.getAccordiFruitori().get(i);
  412.                 IDServizio idServizio = ((ArchiveFruitore)archiveFruitore.getArchiveObject()).getIdAccordoServizioParteSpecifica();
  413.                 String uriAccordo = this.idServizioFactory.getUriFromIDServizio(idServizio);
  414.                 IDSoggetto idFruitore = ((ArchiveFruitore)archiveFruitore.getArchiveObject()).getIdSoggettoFruitore();
  415.                 bfEsito.append("\t- ["+idFruitore+"] -> [").append(uriAccordo).append("] ");
  416.                 serializeStato(archiveFruitore, bfEsito, importOperation);
  417.             }catch(Exception e){
  418.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  419.             }
  420.             bfEsito.append("\n");
  421.         }
  422.         if(archive.getAccordiFruitori().size()>0){
  423.             bfEsito.append("\n");  
  424.         }
  425.        
  426.        
  427.         // PorteDelegate
  428.         if(archive.getPorteDelegate().size()>0){
  429.             bfEsito.append("Porte Outbound (").append(archive.getPorteDelegate().size()).append(")\n");
  430.         }
  431.         for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
  432.             try{
  433.                 ArchiveEsitoImportDetail archivePortaDelegata = archive.getPorteDelegate().get(i);
  434.                 IDPortaDelegata idPortaDelegata = ((ArchivePortaDelegata)archivePortaDelegata.getArchiveObject()).getIdPortaDelegata();
  435.                 IDSoggetto idProprietario = ((ArchivePortaDelegata)archivePortaDelegata.getArchiveObject()).getIdSoggettoProprietario();
  436.                 bfEsito.append("\t- ["+idProprietario+"]["+idPortaDelegata.getNome()+"] ");
  437.                 serializeStato(archivePortaDelegata, bfEsito, importOperation);
  438.             }catch(Exception e){
  439.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  440.             }
  441.             bfEsito.append("\n");
  442.            
  443.             // Si registrano solo gli errori per il check mapping (ci saranno solo in createUpdate)
  444.             if(importOperation) {
  445.                 try{
  446.                     ArchiveEsitoImportDetail archivePortaDelegata = archive.getPorteDelegate_initMapping().get(i);
  447.                     if(ArchiveStatoImport.ERROR.equals(archivePortaDelegata.getState())){
  448.                         IDPortaDelegata idPortaDelegata = ((ArchivePortaDelegata)archivePortaDelegata.getArchiveObject()).getIdPortaDelegata();
  449.                         IDSoggetto idProprietario = ((ArchivePortaDelegata)archivePortaDelegata.getArchiveObject()).getIdSoggettoProprietario();
  450.                         bfEsito.append("\t- Fruizione ["+idProprietario+"]["+idPortaDelegata.getNome()+"] ");
  451.                         serializeStato(archivePortaDelegata, bfEsito, importOperation);
  452.                         bfEsito.append("\n");
  453.                     }
  454.                 }catch(Exception e){
  455.                     bfEsito.append("\t- [").append((i+1)).append("] fruizione non creata: ").append(e.getMessage());
  456.                     bfEsito.append("\n");
  457.                 }
  458.             }
  459.         }
  460.         if(archive.getPorteDelegate().size()>0){
  461.             bfEsito.append("\n");  
  462.         }
  463.        
  464.        
  465.         // PorteApplicative
  466.         if(archive.getPorteApplicative().size()>0){
  467.             bfEsito.append("Porte Inbound (").append(archive.getPorteApplicative().size()).append(")\n");
  468.         }
  469.         for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  470.             try{
  471.                 ArchiveEsitoImportDetail archivePortaApplicativa = archive.getPorteApplicative().get(i);
  472.                 IDPortaApplicativa idPortaApplicativa = ((ArchivePortaApplicativa)archivePortaApplicativa.getArchiveObject()).getIdPortaApplicativa();
  473.                 IDSoggetto idProprietario = ((ArchivePortaApplicativa)archivePortaApplicativa.getArchiveObject()).getIdSoggettoProprietario();
  474.                 bfEsito.append("\t- ["+idProprietario+"]["+idPortaApplicativa.getNome()+"] ");
  475.                 serializeStato(archivePortaApplicativa, bfEsito, importOperation);
  476.             }catch(Exception e){
  477.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  478.             }
  479.             bfEsito.append("\n");
  480.            
  481.             // Si registrano solo gli errori per il check mapping (ci saranno solo in createUpdate)
  482.             if(importOperation) {
  483.                 try{
  484.                     ArchiveEsitoImportDetail archivePortaApplicativa = archive.getPorteApplicative_initMapping().get(i);
  485.                     if(ArchiveStatoImport.ERROR.equals(archivePortaApplicativa.getState())){
  486.                         IDPortaApplicativa idPortaApplicativa = ((ArchivePortaApplicativa)archivePortaApplicativa.getArchiveObject()).getIdPortaApplicativa();
  487.                         IDSoggetto idProprietario = ((ArchivePortaApplicativa)archivePortaApplicativa.getArchiveObject()).getIdSoggettoProprietario();
  488.                         bfEsito.append("\t- Erogazione ["+idProprietario+"]["+idPortaApplicativa.getNome()+"] ");
  489.                         serializeStato(archivePortaApplicativa, bfEsito, importOperation);
  490.                         bfEsito.append("\n");
  491.                     }
  492.                 }catch(Exception e){
  493.                     bfEsito.append("\t- [").append((i+1)).append("] erogazione non creata: ").append(e.getMessage());
  494.                     bfEsito.append("\n");
  495.                 }
  496.             }
  497.         }
  498.         if(archive.getPorteApplicative().size()>0){
  499.             bfEsito.append("\n");  
  500.         }
  501.        
  502.        
  503.        
  504.        
  505.         // Mapping Fruizioni
  506.         if(archive.getMappingFruizioni().size()>0){
  507.             bfEsito.append("Fruizioni (").append(archive.getMappingFruizioni().size()).append(")\n");
  508.         }
  509.         for (int i = 0; i < archive.getMappingFruizioni().size(); i++) {
  510.             try{
  511.                 ArchiveEsitoImportDetail archiveFruizione = archive.getMappingFruizioni().get(i);
  512.                 MappingFruizionePortaDelegata mapping = ((ArchiveMappingFruizione)archiveFruizione.getArchiveObject()).getMappingFruizionePortaDelegata();
  513.                 String nome = (mapping.getDescrizione()!=null && !"".equals(mapping.getDescrizione())) ? mapping.getDescrizione() : mapping.getNome();
  514.                 IDServizio idServizio = mapping.getIdServizio();
  515.                 IDSoggetto idFruitore = mapping.getIdFruitore();
  516.                 bfEsito.append("\t- (gruppo:"+nome+") ["+idFruitore+"] -> ["+idServizio+"] ");
  517.                 serializeStato(archiveFruizione, bfEsito, importOperation);
  518.             }catch(Exception e){
  519.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  520.             }
  521.             bfEsito.append("\n");
  522.         }
  523.         if(archive.getMappingFruizioni().size()>0){
  524.             bfEsito.append("\n");  
  525.         }
  526.        
  527.        
  528.        
  529.        
  530.        
  531.         // Mapping Erogazioni
  532.         if(archive.getMappingErogazioni().size()>0){
  533.             bfEsito.append("Erogazioni (").append(archive.getMappingErogazioni().size()).append(")\n");
  534.         }
  535.         for (int i = 0; i < archive.getMappingErogazioni().size(); i++) {
  536.             try{
  537.                 ArchiveEsitoImportDetail archiveErogazione = archive.getMappingErogazioni().get(i);
  538.                 MappingErogazionePortaApplicativa mapping = ((ArchiveMappingErogazione)archiveErogazione.getArchiveObject()).getMappingErogazionePortaApplicativa();
  539.                 String nome = (mapping.getDescrizione()!=null && !"".equals(mapping.getDescrizione())) ? mapping.getDescrizione() : mapping.getNome();
  540.                 IDServizio idServizio = mapping.getIdServizio();
  541.                 bfEsito.append("\t- (gruppo:"+nome+") ["+idServizio+"] ");
  542.                 serializeStato(archiveErogazione, bfEsito, importOperation);
  543.             }catch(Exception e){
  544.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  545.             }
  546.             bfEsito.append("\n");
  547.         }
  548.         if(archive.getMappingErogazioni().size()>0){
  549.             bfEsito.append("\n");  
  550.         }
  551.        
  552.        
  553.        
  554.        
  555.                
  556.        
  557.         // Controllo Traffico (Configurazione)
  558.         if(archive.getControlloTraffico_configurazione()!=null){
  559.             bfEsito.append("Controllo del Traffico - Configurazione\n");
  560.             try{
  561.                 ArchiveEsitoImportDetailConfigurazione<org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale> configurazione =
  562.                         archive.getControlloTraffico_configurazione();
  563.                 bfEsito.append("\t- ");
  564.                 serializeStato(configurazione, bfEsito);
  565.             }catch(Exception e){
  566.                 bfEsito.append("\t- non importata: ").append(e.getMessage());
  567.             }
  568.             bfEsito.append("\n");
  569.             bfEsito.append("\n");
  570.         }
  571.        
  572.         // Controllo Traffico (ConfigurazionePolicies)
  573.         if(archive.getControlloTraffico_configurationPolicies().size()>0){
  574.             bfEsito.append("Controllo del Traffico - Registro Policy (").append(archive.getControlloTraffico_configurationPolicies().size()).append(")\n");
  575.         }
  576.         for (int i = 0; i < archive.getControlloTraffico_configurationPolicies().size(); i++) {
  577.             try{
  578.                 ArchiveEsitoImportDetail archiveCCPolicy = archive.getControlloTraffico_configurationPolicies().get(i);
  579.                 String nomePolicy = ((ArchiveConfigurationPolicy)archiveCCPolicy.getArchiveObject()).getNomePolicy();
  580.                 bfEsito.append("\t- [").append(nomePolicy).append("] ");
  581.                 serializeStato(archiveCCPolicy, bfEsito, importOperation);
  582.             }catch(Throwable e){
  583.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  584.             }
  585.             bfEsito.append("\n");
  586.         }
  587.         if(archive.getControlloTraffico_configurationPolicies().size()>0){
  588.             bfEsito.append("\n");  
  589.         }
  590.        
  591.         // Controllo Traffico (AttivazionePolicies)
  592.         if(archive.getControlloTraffico_activePolicies().size()>0){
  593.             bfEsito.append("Controllo del Traffico - Policy (").append(archive.getControlloTraffico_activePolicies().size()).append(")\n");
  594.         }
  595.         for (int i = 0; i < archive.getControlloTraffico_activePolicies().size(); i++) {
  596.             try{
  597.                 ArchiveEsitoImportDetail archiveCCPolicy = archive.getControlloTraffico_activePolicies().get(i);
  598.                 ArchiveActivePolicy activePolicy = ((ArchiveActivePolicy)archiveCCPolicy.getArchiveObject());
  599.                 String nomePolicy = activePolicy.getAliasPolicy();
  600.                 if(activePolicy.getRuoloPorta()!=null && activePolicy.getNomePorta()!=null) {
  601.                     if(RuoloPolicy.APPLICATIVA.equals(activePolicy.getRuoloPorta())) {
  602.                         nomePolicy = nomePolicy + " (inbound:"+activePolicy.getNomePorta()+")";
  603.                     }
  604.                     else {
  605.                         nomePolicy = nomePolicy + " (outbound:"+activePolicy.getNomePorta()+")";
  606.                     }
  607.                 }
  608.                 bfEsito.append("\t- [").append(nomePolicy).append("] ");
  609.                 serializeStato(archiveCCPolicy, bfEsito, importOperation);
  610.             }catch(Throwable e){
  611.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  612.             }
  613.             bfEsito.append("\n");
  614.         }
  615.         if(archive.getControlloTraffico_activePolicies().size()>0){
  616.             bfEsito.append("\n");  
  617.         }
  618.        
  619.         // Allarmi
  620.         if(archive.getAllarmi().size()>0){
  621.             bfEsito.append("Allarmi (").append(archive.getAllarmi().size()).append(")\n");
  622.         }
  623.         for (int i = 0; i < archive.getAllarmi().size(); i++) {
  624.             try{
  625.                 ArchiveEsitoImportDetail archiveAllarme = archive.getAllarmi().get(i);
  626.                 ArchiveAllarme allarme = ((ArchiveAllarme)archiveAllarme.getArchiveObject());
  627.                 String aliasAllarme = allarme.getAlias();
  628.                 if(allarme.getRuoloPorta()!=null && allarme.getNomePorta()!=null) {
  629.                     if(org.openspcoop2.core.allarmi.constants.RuoloPorta.APPLICATIVA.equals(allarme.getRuoloPorta())) {
  630.                         aliasAllarme = aliasAllarme + " (inbound:"+allarme.getNomePorta()+")";
  631.                     }
  632.                     else {
  633.                         aliasAllarme = aliasAllarme + " (outbound:"+allarme.getNomePorta()+")";
  634.                     }
  635.                 }
  636.                 bfEsito.append("\t- [").append(aliasAllarme).append("] ");
  637.                 serializeStato(archiveAllarme, bfEsito, importOperation);
  638.             }catch(Throwable e){
  639.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  640.             }
  641.             bfEsito.append("\n");
  642.         }
  643.         if(archive.getAllarmi().size()>0){
  644.             bfEsito.append("\n");  
  645.         }
  646.        
  647.         // Token Policy (Validation)
  648.         if(archive.getToken_validation_policies().size()>0){
  649.             bfEsito.append("Token Policy - Validation (").append(archive.getToken_validation_policies().size()).append(")\n");
  650.         }
  651.         for (int i = 0; i < archive.getToken_validation_policies().size(); i++) {
  652.             try{
  653.                 ArchiveEsitoImportDetail archiveTokenPolicy = archive.getToken_validation_policies().get(i);
  654.                 String nomePolicy = ((ArchiveTokenPolicy)archiveTokenPolicy.getArchiveObject()).getNomePolicy();
  655.                 bfEsito.append("\t- [").append(nomePolicy).append("] ");
  656.                 serializeStato(archiveTokenPolicy, bfEsito, importOperation);
  657.             }catch(Throwable e){
  658.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  659.             }
  660.             bfEsito.append("\n");
  661.         }
  662.         if(archive.getToken_validation_policies().size()>0){
  663.             bfEsito.append("\n");  
  664.         }
  665.        
  666.         // Token Policy (Retrieve)
  667.         if(archive.getToken_retrieve_policies().size()>0){
  668.             bfEsito.append("Token Policy - Retrieve (").append(archive.getToken_retrieve_policies().size()).append(")\n");
  669.         }
  670.         for (int i = 0; i < archive.getToken_retrieve_policies().size(); i++) {
  671.             try{
  672.                 ArchiveEsitoImportDetail archiveTokenPolicy = archive.getToken_retrieve_policies().get(i);
  673.                 String nomePolicy = ((ArchiveTokenPolicy)archiveTokenPolicy.getArchiveObject()).getNomePolicy();
  674.                 bfEsito.append("\t- [").append(nomePolicy).append("] ");
  675.                 serializeStato(archiveTokenPolicy, bfEsito, importOperation);
  676.             }catch(Throwable e){
  677.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  678.             }
  679.             bfEsito.append("\n");
  680.         }
  681.         if(archive.getToken_retrieve_policies().size()>0){
  682.             bfEsito.append("\n");  
  683.         }
  684.        
  685.         // Attribute Authority
  686.         if(archive.getAttributeAuthorities().size()>0){
  687.             bfEsito.append("Attribute Authority (").append(archive.getAttributeAuthorities().size()).append(")\n");
  688.         }
  689.         for (int i = 0; i < archive.getAttributeAuthorities().size(); i++) {
  690.             try{
  691.                 ArchiveEsitoImportDetail archiveAttributeAuthority = archive.getAttributeAuthorities().get(i);
  692.                 String nomeAA = ((ArchiveAttributeAuthority)archiveAttributeAuthority.getArchiveObject()).getNomePolicy();
  693.                 bfEsito.append("\t- [").append(nomeAA).append("] ");
  694.                 serializeStato(archiveAttributeAuthority, bfEsito, importOperation);
  695.             }catch(Throwable e){
  696.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  697.             }
  698.             bfEsito.append("\n");
  699.         }
  700.         if(archive.getAttributeAuthorities().size()>0){
  701.             bfEsito.append("\n");  
  702.         }
  703.        
  704.         // Plugin Classi
  705.         if(archive.getPlugin_classi().size()>0){
  706.             bfEsito.append("Plugin - Classi (").append(archive.getPlugin_classi().size()).append(")\n");
  707.         }
  708.         for (int i = 0; i < archive.getPlugin_classi().size(); i++) {
  709.             try{
  710.                 ArchiveEsitoImportDetail archivePluginClasse = archive.getPlugin_classi().get(i);
  711.                 String tipoPlugin = ((ArchivePluginClasse)archivePluginClasse.getArchiveObject()).getTipoPlugin();
  712.                 String tipo = ((ArchivePluginClasse)archivePluginClasse.getArchiveObject()).getTipo();
  713.                 bfEsito.append("\t- [").append(tipoPlugin).append(" "+tipo+"] ");
  714.                 serializeStato(archivePluginClasse, bfEsito, importOperation);
  715.             }catch(Throwable e){
  716.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  717.             }
  718.             bfEsito.append("\n");
  719.         }
  720.         if(archive.getPlugin_classi().size()>0){
  721.             bfEsito.append("\n");  
  722.         }
  723.        
  724.         // Plugin Archivi
  725.         if(archive.getPlugin_archivi().size()>0){
  726.             bfEsito.append("Plugin - Archivi (").append(archive.getPlugin_archivi().size()).append(")\n");
  727.         }
  728.         for (int i = 0; i < archive.getPlugin_archivi().size(); i++) {
  729.             try{
  730.                 ArchiveEsitoImportDetail archivePluginArchivio = archive.getPlugin_archivi().get(i);
  731.                 String nomeArchivio = ((ArchivePluginArchivio)archivePluginArchivio.getArchiveObject()).getNome();
  732.                 bfEsito.append("\t- [").append(nomeArchivio).append("] ");
  733.                 serializeStato(archivePluginArchivio, bfEsito, importOperation);
  734.             }catch(Throwable e){
  735.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  736.             }
  737.             bfEsito.append("\n");
  738.         }
  739.         if(archive.getPlugin_archivi().size()>0){
  740.             bfEsito.append("\n");  
  741.         }
  742.        
  743.         // Configurazione - UrlInvocazione - Regole
  744.         if(archive.getConfigurazionePdD_urlInvocazione_regole().size()>0){
  745.             bfEsito.append("Configurazione - Regole ProxyPass (").append(archive.getConfigurazionePdD_urlInvocazione_regole().size()).append(")\n");
  746.         }
  747.         for (int i = 0; i < archive.getConfigurazionePdD_urlInvocazione_regole().size(); i++) {
  748.             try{
  749.                 ArchiveEsitoImportDetail archiveRegola = archive.getConfigurazionePdD_urlInvocazione_regole().get(i);
  750.                 String nomeRegola = ((ArchiveUrlInvocazioneRegola)archiveRegola.getArchiveObject()).getNome();
  751.                 bfEsito.append("\t- [").append(nomeRegola).append("] ");
  752.                 serializeStato(archiveRegola, bfEsito, importOperation);
  753.             }catch(Throwable e){
  754.                 bfEsito.append("\t- [").append((i+1)).append("] "+labelNonErrore+": ").append(e.getMessage());
  755.             }
  756.             bfEsito.append("\n");
  757.         }
  758.         if(archive.getConfigurazionePdD_urlInvocazione_regole().size()>0){
  759.             bfEsito.append("\n");  
  760.         }
  761.        
  762.         // Configurazione (UrlInvocazione)
  763.         if(archive.getConfigurazionePdD_urlInvocazione()!=null){
  764.             bfEsito.append("Configurazione - UrlInvocazione\n");
  765.             try{
  766.                 ArchiveEsitoImportDetailConfigurazione<org.openspcoop2.core.config.ConfigurazioneUrlInvocazione> configurazione =
  767.                         archive.getConfigurazionePdD_urlInvocazione();
  768.                 bfEsito.append("\t- ");
  769.                 serializeStato(configurazione, bfEsito);
  770.             }catch(Exception e){
  771.                 bfEsito.append("\t- non importata: ").append(e.getMessage());
  772.             }
  773.             bfEsito.append("\n");
  774.             bfEsito.append("\n");
  775.         }
  776.        
  777.         // Configurazione
  778.         if(archive.getConfigurazionePdD()!=null){
  779.             bfEsito.append("Configurazione\n");
  780.             try{
  781.                 ArchiveEsitoImportDetailConfigurazione<Configurazione> configurazione = archive.getConfigurazionePdD();
  782.                 bfEsito.append("\t- ");
  783.                 serializeStato(configurazione, bfEsito);
  784.             }catch(Exception e){
  785.                 bfEsito.append("\t- non importata: ").append(e.getMessage());
  786.             }
  787.             bfEsito.append("\n");
  788.             bfEsito.append("\n");
  789.         }
  790.        
  791.        
  792.         return bfEsito.toString();
  793.     }
  794.     public static final String LABEL_IMPORT_POLICY = "Policy di Configurazione";
  795.     public static final String LABEL_DELETE_POLICY =  LABEL_IMPORT_POLICY;
  796.     public static final String LABEL_IMPORT_PLUGIN = "Plugins";
  797.     public static final String LABEL_DELETE_PLUGIN =  LABEL_IMPORT_PLUGIN;
  798.     public static final String LABEL_IMPORT_CONFIGURAZIONE = "Configurazione di GovWay";
  799.     public void serializeStato(ArchiveEsitoImportDetail detail,StringBuilder bfEsito, boolean importOperation){
  800.         String stateDetail = "";
  801.         if(detail.getStateDetail()!=null){
  802.             stateDetail = detail.getStateDetail();
  803.         }
  804.         switch (detail.getState()) {
  805.         case UPDATE_NOT_ENABLED:
  806.             bfEsito.append("non importato: giร  presente (aggiornamento non abilitato)").append(stateDetail);
  807.             break;
  808.         case NOT_UPDATABLE:
  809.             bfEsito.append("giร  presente (aggiornamento non necessario)").append(stateDetail);
  810.             break;
  811.         case IMPORT_POLICY_CONFIG_NOT_ENABLED:
  812.             bfEsito.append("non importato: opzione '"+LABEL_IMPORT_POLICY+"' non abilitata").append(stateDetail);
  813.             break;
  814.         case IMPORT_PLUGIN_CONFIG_NOT_ENABLED:
  815.             bfEsito.append("non importato: opzione '"+LABEL_IMPORT_PLUGIN+"' non abilitata").append(stateDetail);
  816.             break;
  817.         case IMPORT_CONFIG_NOT_ENABLED:
  818.             bfEsito.append("non importato: opzione '"+LABEL_IMPORT_CONFIGURAZIONE+"' non abilitata").append(stateDetail);
  819.             break;
  820.         case ERROR:
  821.             if(detail.getStateDetail()!=null){
  822.                 stateDetail = " ["+detail.getStateDetail()+"]";
  823.             }
  824.             if(importOperation)
  825.                 bfEsito.append("non importato"+stateDetail+": ").append(detail.getException().getMessage());
  826.             else
  827.                 bfEsito.append("non eliminato"+stateDetail+": ").append(detail.getException().getMessage());
  828.             break;
  829.         case CREATED:
  830.             bfEsito.append("importato correttamente").append(stateDetail);
  831.             break;
  832.         case UPDATED:
  833.             bfEsito.append("giร  presente, aggiornato correttamente").append(stateDetail);
  834.             break;
  835.         case DELETED_POLICY_CONFIG_NOT_ENABLED:
  836.             bfEsito.append("non eliminato: opzione '"+LABEL_DELETE_POLICY+"' non abilitata").append(stateDetail);
  837.             break;
  838.         case DELETED_PLUGIN_CONFIG_NOT_ENABLED:
  839.             bfEsito.append("non eliminato: opzione '"+LABEL_DELETE_PLUGIN+"' non abilitata").append(stateDetail);
  840.             break;
  841.         case DELETED_NOT_EXISTS:
  842.             bfEsito.append("non esistente").append(stateDetail);
  843.             break;
  844.         case DELETED:
  845.             bfEsito.append("eliminato correttamente").append(stateDetail);
  846.             break;
  847.         }
  848.     }
  849.     public void serializeStato(ArchiveEsitoImportDetailConfigurazione<?> detail,StringBuilder bfEsito){
  850.         String stateDetail = "";
  851.         if(detail.getStateDetail()!=null){
  852.             stateDetail = detail.getStateDetail();
  853.         }
  854.         switch (detail.getState()) {
  855.         case UPDATE_NOT_ENABLED:
  856.             // Stato mai usato per questo oggetto
  857.             break;
  858.         case NOT_UPDATABLE:
  859.             // Stato mai usato per questo oggetto
  860.             break;
  861.         case IMPORT_POLICY_CONFIG_NOT_ENABLED:
  862.             bfEsito.append("non importato: opzione '"+LABEL_IMPORT_POLICY+"' non abilitata").append(stateDetail);
  863.             break;
  864.         case IMPORT_PLUGIN_CONFIG_NOT_ENABLED:
  865.             bfEsito.append("non importato: opzione '"+LABEL_IMPORT_PLUGIN+"' non abilitata").append(stateDetail);
  866.             break;
  867.         case IMPORT_CONFIG_NOT_ENABLED:
  868.             bfEsito.append("non importato: opzione '"+LABEL_IMPORT_CONFIGURAZIONE+"' non abilitata").append(stateDetail);
  869.             break;
  870.         case ERROR:
  871.             if(detail.getStateDetail()!=null){
  872.                 stateDetail = " ["+detail.getStateDetail()+"]";
  873.             }
  874.             bfEsito.append("non importata"+stateDetail+": ").append(detail.getException().getMessage());
  875.             break;
  876.         case CREATED:
  877.             // Stato mai usato per questo oggetto
  878.             break;
  879.         case UPDATED:
  880.             bfEsito.append("aggiornata correttamente").append(stateDetail);
  881.             break;
  882.         case DELETED_POLICY_CONFIG_NOT_ENABLED:
  883.             bfEsito.append("non eliminato: opzione '"+LABEL_DELETE_POLICY+"' non abilitata").append(stateDetail);
  884.             break;
  885.         case DELETED_PLUGIN_CONFIG_NOT_ENABLED:
  886.             bfEsito.append("non eliminato: opzione '"+LABEL_DELETE_PLUGIN+"' non abilitata").append(stateDetail);
  887.             break;
  888.         case DELETED_NOT_EXISTS:
  889.             // Stato mai usato per questo oggetto
  890.             break;
  891.         case DELETED:
  892.             // Stato utilizzato solamente per le extended info
  893.             bfEsito.append("eliminazione effettuata correttamente").append(stateDetail);
  894.             break;
  895.         }
  896.     }

  897.    
  898.    
  899.     private ArchiveEsitoImport getArchiveEsitoImport(ArchiveIdCorrelazione idCorrelazioneParam,
  900.             Map<String, ArchiveEsitoImport> map,
  901.             Map<String, ArchiveIdCorrelazione> mapIdCorrelazione){
  902.         if(idCorrelazioneParam==null) {
  903.             throw new RuntimeException("Param idCorrelazioneParam is null");
  904.         }
  905.         if(map==null) {
  906.             throw new RuntimeException("Param map is null");
  907.         }
  908.         if(mapIdCorrelazione==null) {
  909.             throw new RuntimeException("Param mapIdCorrelazione is null");
  910.         }
  911.         String idCorrelazione = idCorrelazioneParam.getId();
  912.         if(idCorrelazione==null){
  913.             idCorrelazione = ZIPUtils.ID_CORRELAZIONE_DEFAULT;  
  914.         }
  915.         ArchiveEsitoImport tmp = null;
  916.         if(map.containsKey(idCorrelazione)){
  917.             tmp = map.get(idCorrelazione);
  918.         }
  919.         else{
  920.             tmp = new ArchiveEsitoImport();
  921.             map.put(idCorrelazione, tmp);
  922.             mapIdCorrelazione.put(idCorrelazione, idCorrelazioneParam);
  923.         }
  924.         return tmp;
  925.     }
  926.    
  927.     public void readIdCorrelazione(Map<String, ArchiveEsitoImport> map,
  928.             Map<String, ArchiveIdCorrelazione> mapIdCorrelazione,
  929.             ArchiveEsitoImport archive) throws ProtocolException{
  930.        
  931.         // Pdd
  932.         for (int i = 0; i < archive.getPdd().size(); i++) {
  933.             ArchiveEsitoImportDetail archivePdd = archive.getPdd().get(i);
  934.             ArchiveIdCorrelazione idCorrelazione = ((ArchivePdd)archivePdd.getArchiveObject()).getIdCorrelazione();
  935.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getPdd().add(archivePdd);
  936.         }
  937.        
  938.         // Gruppi
  939.         for (int i = 0; i < archive.getGruppi().size(); i++) {
  940.             ArchiveEsitoImportDetail archiveGruppo = archive.getGruppi().get(i);
  941.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveGruppo)archiveGruppo.getArchiveObject()).getIdCorrelazione();
  942.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getGruppi().add(archiveGruppo);
  943.         }
  944.        
  945.         // Ruoli
  946.         for (int i = 0; i < archive.getRuoli().size(); i++) {
  947.             ArchiveEsitoImportDetail archiveRuolo = archive.getRuoli().get(i);
  948.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveRuolo)archiveRuolo.getArchiveObject()).getIdCorrelazione();
  949.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getRuoli().add(archiveRuolo);
  950.         }
  951.        
  952.         // Scope
  953.         for (int i = 0; i < archive.getScope().size(); i++) {
  954.             ArchiveEsitoImportDetail archiveScope = archive.getScope().get(i);
  955.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveScope)archiveScope.getArchiveObject()).getIdCorrelazione();
  956.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getScope().add(archiveScope);
  957.         }
  958.        
  959.         // Soggetti
  960.         for (int i = 0; i < archive.getSoggetti().size(); i++) {
  961.             ArchiveEsitoImportDetail archiveSoggetto = archive.getSoggetti().get(i);
  962.             ArchiveIdCorrelazione idCorrelazione =((ArchiveSoggetto)archiveSoggetto.getArchiveObject()).getIdCorrelazione();
  963.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getSoggetti().add(archiveSoggetto);
  964.         }

  965.         // Servizi Applicativi
  966.         for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  967.             ArchiveEsitoImportDetail archiveServizioApplicativo = archive.getServiziApplicativi().get(i);
  968.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveServizioApplicativo)archiveServizioApplicativo.getArchiveObject()).getIdCorrelazione();
  969.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getServiziApplicativi().add(archiveServizioApplicativo);
  970.         }
  971.            
  972.         // Accordi di Cooperazione
  973.         for (int i = 0; i < archive.getAccordiCooperazione().size(); i++) {
  974.             ArchiveEsitoImportDetail archiveAccordoCooperazione = archive.getAccordiCooperazione().get(i);
  975.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveAccordoCooperazione)archiveAccordoCooperazione.getArchiveObject()).getIdCorrelazione();
  976.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getAccordiCooperazione().add(archiveAccordoCooperazione);
  977.         }
  978.            
  979.         // Accordi di Servizio Parte Comune
  980.         for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
  981.             ArchiveEsitoImportDetail archiveAccordoServizioParteComune = archive.getAccordiServizioParteComune().get(i);
  982.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveAccordoServizioParteComune)archiveAccordoServizioParteComune.getArchiveObject()).getIdCorrelazione();
  983.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getAccordiServizioParteComune().add(archiveAccordoServizioParteComune);
  984.         }
  985.            
  986.         // Accordi di Servizio Parte Specifica (implementano accordi di servizio parte comune)
  987.         for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  988.             ArchiveEsitoImportDetail archiveAccordoServizioParteSpecifica = archive.getAccordiServizioParteSpecifica().get(i);
  989.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveAccordoServizioParteSpecifica)archiveAccordoServizioParteSpecifica.getArchiveObject()).getIdCorrelazione();
  990.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getAccordiServizioParteSpecifica().add(archiveAccordoServizioParteSpecifica);
  991.         }
  992.            
  993.         // Accordi di Servizio Composto
  994.         for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
  995.             ArchiveEsitoImportDetail archiveAccordoServizioComposto = archive.getAccordiServizioComposto().get(i);
  996.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveAccordoServizioComposto)archiveAccordoServizioComposto.getArchiveObject()).getIdCorrelazione();
  997.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getAccordiServizioComposto().add(archiveAccordoServizioComposto);
  998.         }
  999.        
  1000.         // Accordi di Servizio Parte Specifica (implementano accordi di servizio composto)
  1001.         for (int i = 0; i < archive.getAccordiServizioParteSpecificaServiziComposti().size(); i++) {
  1002.             ArchiveEsitoImportDetail archiveAccordoServizioParteSpecifica = archive.getAccordiServizioParteSpecificaServiziComposti().get(i);
  1003.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveAccordoServizioParteSpecifica)archiveAccordoServizioParteSpecifica.getArchiveObject()).getIdCorrelazione();
  1004.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getAccordiServizioParteSpecificaServiziComposti().add(archiveAccordoServizioParteSpecifica);
  1005.         }
  1006.        
  1007.         // Fruitori
  1008.         for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  1009.             ArchiveEsitoImportDetail archiveFruitore = archive.getAccordiFruitori().get(i);
  1010.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveFruitore)archiveFruitore.getArchiveObject()).getIdCorrelazione();
  1011.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getAccordiFruitori().add(archiveFruitore);
  1012.         }
  1013.        
  1014.         // PorteDelegate
  1015.         for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
  1016.             ArchiveEsitoImportDetail archivePortaDelegata = archive.getPorteDelegate().get(i);
  1017.             ArchiveIdCorrelazione idCorrelazione = ((ArchivePortaDelegata)archivePortaDelegata.getArchiveObject()).getIdCorrelazione();
  1018.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getPorteDelegate().add(archivePortaDelegata);
  1019.         }
  1020.        
  1021.         // PorteApplicative
  1022.         for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  1023.             ArchiveEsitoImportDetail archivePortaApplicativa = archive.getPorteApplicative().get(i);
  1024.             ArchiveIdCorrelazione idCorrelazione = ((ArchivePortaApplicativa)archivePortaApplicativa.getArchiveObject()).getIdCorrelazione();
  1025.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getPorteApplicative().add(archivePortaApplicativa);
  1026.         }
  1027.        
  1028.         // ControlloTraffico (Configurazione)
  1029.         if(archive.getControlloTraffico_configurazione()!=null){
  1030.             ArchiveEsitoImportDetailConfigurazione<org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale> configurazione =
  1031.                     archive.getControlloTraffico_configurazione();
  1032.             if(mapIdCorrelazione.size()>1){
  1033.                 throw new ProtocolException("Configurazione permessa solo con una unica correlazione tra oggetti");
  1034.             }
  1035.             ArchiveIdCorrelazione idCorrelazione = null;
  1036.             if(mapIdCorrelazione.size()==1){
  1037.                 idCorrelazione = mapIdCorrelazione.values().iterator().next();
  1038.             }
  1039.             else if(mapIdCorrelazione.size()==0){
  1040.                 // l'archivio non contiene altri oggetti se non la configurazione
  1041.                 idCorrelazione = new ArchiveIdCorrelazione(ZIPUtils.ID_CORRELAZIONE_DEFAULT);
  1042.             }
  1043.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).setControlloTraffico_configurazione(configurazione);
  1044.         }
  1045.        
  1046.         // ControlloTraffico (ConfigurazionePolicy)
  1047.         for (int i = 0; i < archive.getControlloTraffico_configurationPolicies().size(); i++) {
  1048.             ArchiveEsitoImportDetail archiveCCPolicy = archive.getControlloTraffico_configurationPolicies().get(i);
  1049.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveConfigurationPolicy)archiveCCPolicy.getArchiveObject()).getIdCorrelazione();
  1050.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getControlloTraffico_configurationPolicies().add(archiveCCPolicy);
  1051.         }
  1052.        
  1053.         // ControlloTraffico (AttivazionePolicy)
  1054.         for (int i = 0; i < archive.getControlloTraffico_activePolicies().size(); i++) {
  1055.             ArchiveEsitoImportDetail archiveCCPolicy = archive.getControlloTraffico_activePolicies().get(i);
  1056.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveActivePolicy)archiveCCPolicy.getArchiveObject()).getIdCorrelazione();
  1057.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getControlloTraffico_activePolicies().add(archiveCCPolicy);
  1058.         }
  1059.        
  1060.         // Allarmi
  1061.         for (int i = 0; i < archive.getAllarmi().size(); i++) {
  1062.             ArchiveEsitoImportDetail archiveAllarme = archive.getAllarmi().get(i);
  1063.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveAllarme)archiveAllarme.getArchiveObject()).getIdCorrelazione();
  1064.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getAllarmi().add(archiveAllarme);
  1065.         }
  1066.        
  1067.         // Token Policy (Validation)
  1068.         for (int i = 0; i < archive.getToken_validation_policies().size(); i++) {
  1069.             ArchiveEsitoImportDetail archiveTokenPolicy = archive.getToken_validation_policies().get(i);
  1070.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveTokenPolicy)archiveTokenPolicy.getArchiveObject()).getIdCorrelazione();
  1071.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getToken_validation_policies().add(archiveTokenPolicy);
  1072.         }
  1073.        
  1074.         // Token Policy (Retrieve)
  1075.         for (int i = 0; i < archive.getToken_retrieve_policies().size(); i++) {
  1076.             ArchiveEsitoImportDetail archiveTokenPolicy = archive.getToken_retrieve_policies().get(i);
  1077.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveTokenPolicy)archiveTokenPolicy.getArchiveObject()).getIdCorrelazione();
  1078.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getToken_retrieve_policies().add(archiveTokenPolicy);
  1079.         }
  1080.        
  1081.         // Attribute Authority
  1082.         for (int i = 0; i < archive.getAttributeAuthorities().size(); i++) {
  1083.             ArchiveEsitoImportDetail archiveAttributeAuthority = archive.getAttributeAuthorities().get(i);
  1084.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveAttributeAuthority)archiveAttributeAuthority.getArchiveObject()).getIdCorrelazione();
  1085.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getAttributeAuthorities().add(archiveAttributeAuthority);
  1086.         }
  1087.        
  1088.         // Plugin Classi
  1089.         for (int i = 0; i < archive.getPlugin_classi().size(); i++) {
  1090.             ArchiveEsitoImportDetail archivePluginClasse = archive.getPlugin_classi().get(i);
  1091.             ArchiveIdCorrelazione idCorrelazione = ((ArchivePluginClasse)archivePluginClasse.getArchiveObject()).getIdCorrelazione();
  1092.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getPlugin_classi().add(archivePluginClasse);
  1093.         }
  1094.        
  1095.         // Plugin Archivi
  1096.         for (int i = 0; i < archive.getPlugin_archivi().size(); i++) {
  1097.             ArchiveEsitoImportDetail archivePluginArchivio = archive.getPlugin_archivi().get(i);
  1098.             ArchiveIdCorrelazione idCorrelazione = ((ArchivePluginArchivio)archivePluginArchivio.getArchiveObject()).getIdCorrelazione();
  1099.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getPlugin_archivi().add(archivePluginArchivio);
  1100.         }
  1101.        
  1102.         // Configurazione - UrlInvocazione - Regole
  1103.         for (int i = 0; i < archive.getConfigurazionePdD_urlInvocazione_regole().size(); i++) {
  1104.             ArchiveEsitoImportDetail archiveRegola = archive.getConfigurazionePdD_urlInvocazione_regole().get(i);
  1105.             ArchiveIdCorrelazione idCorrelazione = ((ArchiveUrlInvocazioneRegola)archiveRegola.getArchiveObject()).getIdCorrelazione();
  1106.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).getConfigurazionePdD_urlInvocazione_regole().add(archiveRegola);
  1107.         }
  1108.        
  1109.         // Configurazione (UrlInvocazione)
  1110.         if(archive.getConfigurazionePdD_urlInvocazione()!=null){
  1111.             ArchiveEsitoImportDetailConfigurazione<org.openspcoop2.core.config.ConfigurazioneUrlInvocazione> configurazione =
  1112.                     archive.getConfigurazionePdD_urlInvocazione();
  1113.             if(mapIdCorrelazione.size()>1){
  1114.                 throw new ProtocolException("Configurazione permessa solo con una unica correlazione tra oggetti");
  1115.             }
  1116.             ArchiveIdCorrelazione idCorrelazione = null;
  1117.             if(mapIdCorrelazione.size()==1){
  1118.                 idCorrelazione = mapIdCorrelazione.values().iterator().next();
  1119.             }
  1120.             else if(mapIdCorrelazione.size()==0){
  1121.                 // l'archivio non contiene altri oggetti se non la configurazione
  1122.                 idCorrelazione = new ArchiveIdCorrelazione(ZIPUtils.ID_CORRELAZIONE_DEFAULT);
  1123.             }
  1124.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).setConfigurazionePdD_urlInvocazione(configurazione);
  1125.         }
  1126.        
  1127.         // Configurazione
  1128.         if(archive.getConfigurazionePdD()!=null){
  1129.             ArchiveEsitoImportDetailConfigurazione<Configurazione> configurazione = archive.getConfigurazionePdD();
  1130.             if(mapIdCorrelazione.size()>1){
  1131.                 throw new ProtocolException("Configurazione permessa solo con una unica correlazione tra oggetti");
  1132.             }
  1133.             ArchiveIdCorrelazione idCorrelazione = null;
  1134.             if(mapIdCorrelazione.size()==1){
  1135.                 idCorrelazione = mapIdCorrelazione.values().iterator().next();
  1136.             }
  1137.             else if(mapIdCorrelazione.size()==0){
  1138.                 // l'archivio non contiene altri oggetti se non la configurazione
  1139.                 idCorrelazione = new ArchiveIdCorrelazione(ZIPUtils.ID_CORRELAZIONE_DEFAULT);
  1140.             }
  1141.             this.getArchiveEsitoImport(idCorrelazione, map, mapIdCorrelazione).setConfigurazionePdD(configurazione);
  1142.         }
  1143.        
  1144.     }
  1145. }