ExporterUtils.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.web.ctrlstat.servlet.archivi;

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

  25. import javax.servlet.http.HttpServletRequest;
  26. import javax.servlet.http.HttpSession;

  27. import org.openspcoop2.core.allarmi.Allarme;
  28. import org.openspcoop2.core.allarmi.IdAllarme;
  29. import org.openspcoop2.core.config.CanaleConfigurazione;
  30. import org.openspcoop2.core.config.ConfigurazioneUrlInvocazione;
  31. import org.openspcoop2.core.config.ConfigurazioneUrlInvocazioneRegola;
  32. import org.openspcoop2.core.config.GenericProperties;
  33. import org.openspcoop2.core.config.PortaApplicativa;
  34. import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneServizioApplicativo;
  35. import org.openspcoop2.core.config.PortaApplicativaAutorizzazioneSoggetto;
  36. import org.openspcoop2.core.config.ServizioApplicativo;
  37. import org.openspcoop2.core.config.driver.DriverConfigurazioneException;
  38. import org.openspcoop2.core.config.driver.DriverConfigurazioneNotFound;
  39. import org.openspcoop2.core.controllo_traffico.AttivazionePolicy;
  40. import org.openspcoop2.core.controllo_traffico.ConfigurazionePolicy;
  41. import org.openspcoop2.core.controllo_traffico.IdActivePolicy;
  42. import org.openspcoop2.core.controllo_traffico.IdPolicy;
  43. import org.openspcoop2.core.id.IDAccordo;
  44. import org.openspcoop2.core.id.IDAccordoCooperazione;
  45. import org.openspcoop2.core.id.IDFruizione;
  46. import org.openspcoop2.core.id.IDGenericProperties;
  47. import org.openspcoop2.core.id.IDGruppo;
  48. import org.openspcoop2.core.id.IDPortType;
  49. import org.openspcoop2.core.id.IDPortTypeAzione;
  50. import org.openspcoop2.core.id.IDResource;
  51. import org.openspcoop2.core.id.IDRuolo;
  52. import org.openspcoop2.core.id.IDScope;
  53. import org.openspcoop2.core.id.IDServizio;
  54. import org.openspcoop2.core.id.IDServizioApplicativo;
  55. import org.openspcoop2.core.id.IDSoggetto;
  56. import org.openspcoop2.core.plugins.IdPlugin;
  57. import org.openspcoop2.core.plugins.Plugin;
  58. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  59. import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioCompostoServizioComponente;
  60. import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
  61. import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
  62. import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
  63. import org.openspcoop2.core.registry.driver.IDAccordoFactory;
  64. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  65. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  66. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  67. import org.openspcoop2.protocol.sdk.ProtocolException;
  68. import org.openspcoop2.protocol.sdk.archive.Archive;
  69. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoCooperazione;
  70. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioComposto;
  71. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteComune;
  72. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteSpecifica;
  73. import org.openspcoop2.protocol.sdk.archive.ArchiveActivePolicy;
  74. import org.openspcoop2.protocol.sdk.archive.ArchiveAllarme;
  75. import org.openspcoop2.protocol.sdk.archive.ArchiveFruitore;
  76. import org.openspcoop2.protocol.sdk.archive.ArchivePortaApplicativa;
  77. import org.openspcoop2.protocol.sdk.archive.ArchivePortaDelegata;
  78. import org.openspcoop2.protocol.sdk.archive.ArchiveServizioApplicativo;
  79. import org.openspcoop2.protocol.sdk.archive.ArchiveSoggetto;
  80. import org.openspcoop2.protocol.sdk.archive.ExportMode;
  81. import org.openspcoop2.protocol.sdk.archive.IArchive;
  82. import org.openspcoop2.protocol.sdk.constants.ArchiveType;
  83. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  84. import org.openspcoop2.web.ctrlstat.core.Utilities;
  85. import org.openspcoop2.web.ctrlstat.driver.DriverControlStationException;
  86. import org.openspcoop2.web.ctrlstat.driver.DriverControlStationNotFound;
  87. import org.openspcoop2.web.ctrlstat.servlet.ac.AccordiCooperazioneCore;
  88. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCore;
  89. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCore;
  90. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCore;
  91. import org.openspcoop2.web.ctrlstat.servlet.ruoli.RuoliCore;
  92. import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCore;
  93. import org.openspcoop2.web.ctrlstat.servlet.scope.ScopeCore;
  94. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;

  95. /**
  96.  * ExporterUtils
  97.  *
  98.  * @author Poli Andrea (apoli@link.it)
  99.  * @author $Author$
  100.  * @version $Rev$, $Date$
  101.  */
  102. public class ExporterUtils {

  103.     private ArchiviCore archiviCore;
  104.     private SoggettiCore soggettiCore;
  105.     private AccordiServizioParteComuneCore aspcCore;
  106.     @SuppressWarnings("unused")
  107.     private AccordiServizioParteSpecificaCore aspsCore;
  108.     private AccordiCooperazioneCore acCore;
  109.     private ServiziApplicativiCore saCore;
  110.     @SuppressWarnings("unused")
  111.     private RuoliCore ruoliCore;
  112.     @SuppressWarnings("unused")
  113.     private ScopeCore scopeCore;
  114.     private ConfigurazioneCore confCore;
  115.    
  116.     private static final String FORMATO_DIVERSO_ATTESO = "Formato diverso da quello atteso";
  117.    
  118.     public ExporterUtils(ArchiviCore archiviCore) throws Exception{
  119.         this.archiviCore = archiviCore;
  120.         this.soggettiCore = new SoggettiCore(archiviCore);
  121.         this.aspcCore = new AccordiServizioParteComuneCore(archiviCore);
  122.         this.aspsCore = new AccordiServizioParteSpecificaCore(archiviCore);
  123.         this.acCore = new AccordiCooperazioneCore(archiviCore);
  124.         this.saCore = new ServiziApplicativiCore(archiviCore);
  125.         this.ruoliCore = new RuoliCore(archiviCore);
  126.         this.scopeCore = new ScopeCore(archiviCore);
  127.         this.confCore = new ConfigurazioneCore(archiviCore);
  128.     }

  129.     public List<ExportMode> getExportModesCompatibleWithAllProtocol(List<String> protocolli,ArchiveType archiveType) throws ProtocolException{
  130.        
  131.         List<ExportMode> exportModes = new ArrayList<>();
  132.        
  133.         for (int i = 0; i < protocolli.size(); i++) {
  134.             String protocolName = protocolli.get(i);
  135.             IProtocolFactory<?> pf = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(protocolName);
  136.             IArchive archiveEngine = pf.createArchive();
  137.             List<ExportMode> exportModesByProtocol = archiveEngine.getExportModes(archiveType);
  138.             for (ExportMode exportMode : exportModesByProtocol) {
  139.                
  140.                 boolean found = true;
  141.                
  142.                 for (int j = 0; j < protocolli.size(); j++) {
  143.                     if(j==i)
  144.                         continue;
  145.                     String protocolCheck = protocolli.get(j);
  146.                     IProtocolFactory<?> pfCheck = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(protocolCheck);
  147.                     IArchive archiveEngineCheck = pfCheck.createArchive();
  148.                     List<ExportMode> exportModesByProtocolCheck = archiveEngineCheck.getExportModes(archiveType);
  149.                     if(!exportModesByProtocolCheck.contains(exportMode)){
  150.                         found = false;
  151.                         break;
  152.                     }
  153.                 }
  154.                
  155.                 if(found &&
  156.                     !exportModes.contains(exportMode)) {
  157.                     exportModes.add(exportMode);
  158.                 }
  159.                
  160.             }
  161.         }
  162.        
  163.         return exportModes;
  164.     }
  165.    
  166.     public Map<ExportMode,String> getExportModesWithProtocol(List<String> protocolli,ArchiveType archiveType) throws ProtocolException{

  167.         Map<ExportMode,String> exportModes = new HashMap<>();
  168.         for (int i = 0; i < protocolli.size(); i++) {
  169.             String protocolName = protocolli.get(i);
  170.             if(!ArchiviCostanti.PARAMETRO_ARCHIVI_PROTOCOLLO_UNDEFINDED.equals(protocolName)){
  171.                 IProtocolFactory<?> pf = ProtocolFactoryManager.getInstance().getProtocolFactoryByName(protocolName);
  172.                 IArchive archiveEngine = pf.createArchive();
  173.                 List<ExportMode> exportModesByProtocol = archiveEngine.getExportModes(archiveType);
  174.                 for (ExportMode exp : exportModesByProtocol) {
  175.                     if(!exportModes.containsKey(exp)){
  176.                         exportModes.put(exp,protocolName);
  177.                     }
  178.                 }
  179.             }
  180.         }

  181.         return exportModes;
  182.     }

  183.    
  184.     public boolean existsAtLeastOneExportMode(ArchiveType archiveType, HttpServletRequest request, HttpSession session) throws ProtocolException, DriverRegistroServiziException{
  185.         List<String> protocolli = this.archiviCore.getProtocolli(request, session);
  186.         return this.getExportModesWithProtocol(protocolli, archiveType).size()>0;
  187.     }

  188.     public List<IDSoggetto> getIdsSoggetti(String ids) throws DriverRegistroServiziNotFound, DriverRegistroServiziException{
  189.         List<IDSoggetto> idsSoggetti = new ArrayList<>();
  190.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  191.         for (String id : idsToExport) {
  192.             long idLong = Long.parseLong(id);
  193.             idsSoggetti.add(this.soggettiCore.getIdSoggettoRegistro(idLong));
  194.         }
  195.         return idsSoggetti;
  196.     }
  197.    
  198.     public List<IDServizioApplicativo> getIdsServiziApplicativi(String ids) throws DriverConfigurazioneNotFound, DriverConfigurazioneException{
  199.         List<IDServizioApplicativo> idsSA = new ArrayList<>();
  200.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  201.         for (String id : idsToExport) {
  202.             long idLong = Long.parseLong(id);
  203.             ServizioApplicativo sa = this.saCore.getServizioApplicativo(idLong);
  204.             IDServizioApplicativo idSA = new IDServizioApplicativo();
  205.             idSA.setIdSoggettoProprietario(new IDSoggetto(sa.getTipoSoggettoProprietario(), sa.getNomeSoggettoProprietario()));
  206.             idSA.setNome(sa.getNome());
  207.             idsSA.add(idSA);
  208.         }
  209.         return idsSA;
  210.     }
  211.    
  212.     public List<IDAccordo> getIdsAccordiServizioComposti(String ids) throws DriverRegistroServiziNotFound, DriverRegistroServiziException{
  213.         return this.getIdsAccordiServizioParteComune(ids);
  214.     }
  215.     public List<IDAccordo> getIdsAccordiServizioParteComune(String ids) throws DriverRegistroServiziNotFound, DriverRegistroServiziException{
  216.         List<IDAccordo> idsAccordi = new ArrayList<>();
  217.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  218.         for (String id : idsToExport) {
  219.             long idLong = Long.parseLong(id);
  220.             idsAccordi.add(this.aspcCore.getIdAccordoServizio(idLong));
  221.         }
  222.         return idsAccordi;
  223.     }
  224.    
  225.     public List<IDResource> getIdsAccordiServizioParteComuneRisorsa(String ids) throws DriverRegistroServiziException{
  226.         List<IDResource> idsAccordi = new ArrayList<>();
  227.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  228.         for (String id : idsToExport) {
  229.             if(!id.contains("@")) {
  230.                 throw new DriverRegistroServiziException(FORMATO_DIVERSO_ATTESO);
  231.             }
  232.             String [] tmp = id.split("@");
  233.             if(tmp==null || tmp.length!=2) {
  234.                 throw new DriverRegistroServiziException(FORMATO_DIVERSO_ATTESO);
  235.             }
  236.             IDResource idR = new IDResource();
  237.             idR.setNome(tmp[0]);
  238.             idR.setIdAccordo(IDAccordoFactory.getInstance().getIDAccordoFromUri(tmp[1]));
  239.             idsAccordi.add(idR);
  240.         }
  241.         return idsAccordi;
  242.     }
  243.    
  244.     public List<IDPortType> getIdsAccordiServizioParteComunePortType(String ids) throws DriverRegistroServiziException{
  245.         List<IDPortType> idsAccordi = new ArrayList<>();
  246.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  247.         for (String id : idsToExport) {
  248.             if(!id.contains("@")) {
  249.                 throw new DriverRegistroServiziException(FORMATO_DIVERSO_ATTESO);
  250.             }
  251.             String [] tmp = id.split("@");
  252.             if(tmp==null || tmp.length!=2) {
  253.                 throw new DriverRegistroServiziException(FORMATO_DIVERSO_ATTESO);
  254.             }
  255.             IDPortType idPT = new IDPortType();
  256.             idPT.setNome(tmp[0]);
  257.             idPT.setIdAccordo(IDAccordoFactory.getInstance().getIDAccordoFromUri(tmp[1]));
  258.             idsAccordi.add(idPT);
  259.         }
  260.         return idsAccordi;
  261.     }
  262.    
  263.     public List<IDPortTypeAzione> getIdsAccordiServizioParteComuneOperazione(String ids) throws DriverRegistroServiziException{
  264.         List<IDPortTypeAzione> idsAccordi = new ArrayList<>();
  265.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  266.         for (String id : idsToExport) {
  267.             if(!id.contains("@")) {
  268.                 throw new DriverRegistroServiziException(FORMATO_DIVERSO_ATTESO);
  269.             }
  270.             String [] tmp = id.split("@");
  271.             if(tmp==null || tmp.length!=3) {
  272.                 throw new DriverRegistroServiziException(FORMATO_DIVERSO_ATTESO);
  273.             }
  274.             IDPortTypeAzione idOperazione = new IDPortTypeAzione();
  275.             idOperazione.setNome(tmp[0]);
  276.             IDPortType idPT = new IDPortType();
  277.             idPT.setNome(tmp[1]);
  278.             idPT.setIdAccordo(IDAccordoFactory.getInstance().getIDAccordoFromUri(tmp[2]));
  279.             idOperazione.setIdPortType(idPT);
  280.             idsAccordi.add(idOperazione);
  281.         }
  282.         return idsAccordi;
  283.     }
  284.    
  285.     public List<?> getIdsAccordiServizioParteSpecifica(String ids, boolean isFruizione) throws DriverRegistroServiziException{
  286.         List<IDServizio> idsAccordi = new ArrayList<>();
  287.         List<IDFruizione> fruizioni = new ArrayList<>();
  288.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  289.         for (String id : idsToExport) {
  290.             try {
  291.                 if(isFruizione) {
  292.                     if(!id.contains("@")) {
  293.                         throw new DriverRegistroServiziException("atteso @");
  294.                     }
  295.                     String idServ = id.split("@")[0];
  296.                     IDServizio idS = IDServizioFactory.getInstance().getIDServizioFromUri(idServ);
  297.                     String idFruitore = id.split("@")[1];
  298.                     IDSoggetto fruitore = new IDSoggetto(idFruitore.split("/")[0], idFruitore.split("/")[1]);
  299.                     IDFruizione idFruizione = new IDFruizione();
  300.                     idFruizione.setIdFruitore(fruitore);
  301.                     idFruizione.setIdServizio(idS);
  302.                     fruizioni.add(idFruizione);
  303.                 }
  304.                 else {
  305.                     if(id.contains("@")) {
  306.                         // fruizioni
  307.                         id = id.split("@")[0];
  308.                     }
  309.                     IDServizio idS = IDServizioFactory.getInstance().getIDServizioFromUri(id);
  310.                     idsAccordi.add(idS);
  311.                 }
  312.             }catch (Exception e) {
  313.                 throw new DriverRegistroServiziException("Formato id '"+id+"' non valido: "+e.getMessage(),e);
  314.             }
  315.         }
  316.         if(isFruizione) {
  317.             return fruizioni;
  318.         }
  319.         else {
  320.             return idsAccordi;
  321.         }
  322.     }
  323.    
  324.     public List<IDAccordoCooperazione> getIdsAccordiCooperazione(String ids) throws DriverRegistroServiziNotFound, DriverRegistroServiziException{
  325.         List<IDAccordoCooperazione> idsAccordi = new ArrayList<>();
  326.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  327.         for (String id : idsToExport) {
  328.             long idLong = Long.parseLong(id);
  329.             idsAccordi.add(this.acCore.getIdAccordoCooperazione(idLong));
  330.         }
  331.         return idsAccordi;
  332.     }
  333.    
  334.     public List<IDGruppo> getIdsGruppi(String ids) {
  335.         List<IDGruppo> idsGruppi = new ArrayList<>();
  336.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  337.         for (String id : idsToExport) {
  338.             IDGruppo idGruppo = new IDGruppo(id);
  339.             idsGruppi.add(idGruppo);
  340.         }
  341.         return idsGruppi;
  342.     }
  343.        
  344.     public List<IDRuolo> getIdsRuoli(String ids) {
  345.         List<IDRuolo> idsRuoli = new ArrayList<>();
  346.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  347.         for (String id : idsToExport) {
  348.             IDRuolo idRuolo = new IDRuolo(id);
  349.             idsRuoli.add(idRuolo);
  350.         }
  351.         return idsRuoli;
  352.     }
  353.    
  354.     public List<IDScope> getIdsScope(String ids) {
  355.         List<IDScope> idsScope = new ArrayList<>();
  356.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  357.         for (String id : idsToExport) {
  358.             IDScope idScope = new IDScope(id);
  359.             idsScope.add(idScope);
  360.         }
  361.         return idsScope;
  362.     }
  363.    
  364.     public List<CanaleConfigurazione> getIdsCanali(String ids) {
  365.         List<CanaleConfigurazione> idsCanali = new ArrayList<>();
  366.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  367.         for (String id : idsToExport) {
  368.             CanaleConfigurazione canale = new CanaleConfigurazione();
  369.             canale.setNome(id);
  370.             idsCanali.add(canale);
  371.         }
  372.         return idsCanali;
  373.     }
  374.    
  375.     public List<IDGenericProperties> getIdsAttributeAuthority(String ids) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  376.         return getIdsTokenPolicy(ids); // è uguale
  377.     }
  378.     public List<IDGenericProperties> getIdsTokenPolicy(String ids) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  379.         List<IDGenericProperties> idsTokenPolicy = new ArrayList<>();
  380.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  381.         for (String id : idsToExport) {
  382.             long idGenericProperties = Long.parseLong(id);
  383.             GenericProperties policy = this.confCore.getGenericProperties(idGenericProperties);
  384.            
  385.             IDGenericProperties idGP = new IDGenericProperties();
  386.             idGP.setNome(policy.getNome());
  387.             idGP.setTipologia(policy.getTipologia());
  388.             idsTokenPolicy.add(idGP);
  389.         }
  390.         return idsTokenPolicy;
  391.     }
  392.    
  393.     public List<IdPolicy> getIdsControlloTrafficoConfigPolicy(String ids) throws DriverControlStationNotFound, DriverControlStationException{
  394.         List<IdPolicy> idsRateLimitingPolicy = new ArrayList<>();
  395.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  396.         for (String id : idsToExport) {
  397.             long idPolicy = Long.parseLong(id);
  398.             ConfigurazionePolicy policy = this.confCore.getConfigurazionePolicy(idPolicy);
  399.            
  400.             IdPolicy idGP = new IdPolicy();
  401.             idGP.setNome(policy.getIdPolicy());
  402.             idsRateLimitingPolicy.add(idGP);
  403.         }
  404.         return idsRateLimitingPolicy;
  405.     }
  406.    
  407.     public List<IdActivePolicy> getIdsControlloTrafficoActivePolicy(String ids) throws DriverControlStationNotFound, DriverControlStationException{
  408.         List<IdActivePolicy> idsRateLimitingPolicy = new ArrayList<>();
  409.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  410.         for (String id : idsToExport) {
  411.             long idPolicy = Long.parseLong(id);
  412.             AttivazionePolicy attivazionePolicy =  this.confCore.getAttivazionePolicy(idPolicy);
  413.            
  414.             IdActivePolicy idAttivazionePolicy = new IdActivePolicy();
  415.             idAttivazionePolicy.setNome(attivazionePolicy.getIdActivePolicy());
  416.             idAttivazionePolicy.setIdPolicy(attivazionePolicy.getIdPolicy());
  417.             idAttivazionePolicy.setAlias(attivazionePolicy.getAlias());
  418.             idAttivazionePolicy.setEnabled(attivazionePolicy.isEnabled());
  419.             idAttivazionePolicy.setUpdateTime(attivazionePolicy.getUpdateTime());
  420.             idAttivazionePolicy.setPosizione(attivazionePolicy.getPosizione());
  421.             idAttivazionePolicy.setContinuaValutazione(attivazionePolicy.isContinuaValutazione());
  422.             if(attivazionePolicy.getFiltro()!=null) {
  423.                 idAttivazionePolicy.setFiltroRuoloPorta(attivazionePolicy.getFiltro().getRuoloPorta());
  424.                 idAttivazionePolicy.setFiltroNomePorta(attivazionePolicy.getFiltro().getNomePorta());
  425.             }
  426.             idsRateLimitingPolicy.add(idAttivazionePolicy);
  427.         }
  428.         return idsRateLimitingPolicy;
  429.     }
  430.    
  431.     public List<IdAllarme> getIdsAllarmi(String ids) throws DriverControlStationException{
  432.         List<IdAllarme> idsAllarmi = new ArrayList<>();
  433.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  434.         for (String id : idsToExport) {
  435.             long idAllarmeLong = Long.parseLong(id);
  436.             Allarme allarme = this.confCore.getAllarmeSenzaPlugin(idAllarmeLong);
  437.            
  438.             IdAllarme idAllarme = new IdAllarme();
  439.             idAllarme.setNome(allarme.getNome());
  440.             idAllarme.setTipo(allarme.getTipo());
  441.             idAllarme.setEnabled(allarme.getEnabled());
  442.             idAllarme.setAlias(allarme.getAlias());
  443.             if(allarme.getFiltro()!=null) {
  444.                 idAllarme.setFiltroRuoloPorta(allarme.getFiltro().getRuoloPorta());
  445.                 idAllarme.setFiltroNomePorta(allarme.getFiltro().getNomePorta());
  446.             }
  447.             idsAllarmi.add(idAllarme);
  448.         }
  449.         return idsAllarmi;
  450.     }
  451.    
  452.     public List<IdPlugin> getIdsPluginClassi(String ids) throws DriverConfigurazioneException{
  453.         List<IdPlugin> idsPlugins = new ArrayList<>();
  454.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  455.         for (String id : idsToExport) {
  456.             long idPluginLong = Long.parseLong(id);
  457.             Plugin plugin = this.confCore.getPlugin(idPluginLong);
  458.            
  459.             IdPlugin idPlugin = new IdPlugin();
  460.             idPlugin.setClassName(plugin.getClassName());
  461.             idPlugin.setLabel(plugin.getLabel());
  462.             idPlugin.setTipo(plugin.getTipo());
  463.             idPlugin.setTipoPlugin(plugin.getTipoPlugin());
  464.             idsPlugins.add(idPlugin);
  465.         }
  466.         return idsPlugins;
  467.     }
  468.    
  469.     public List<String> getIdsPluginArchivi(String ids) {
  470.         List<String> idsPlugins = new ArrayList<>();
  471.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  472.         for (String id : idsToExport) {
  473.             idsPlugins.add(id);
  474.         }
  475.         return idsPlugins;
  476.     }
  477.    
  478.     public List<String> getIdsUrlInvocazioneRegole(String ids) throws DriverConfigurazioneException, DriverConfigurazioneNotFound{
  479.        
  480.         ConfigurazioneUrlInvocazione urlInvocazione = this.confCore.getConfigurazioneGenerale().getUrlInvocazione();
  481.        
  482.         List<String> idsRegole = new ArrayList<>();
  483.         ArrayList<String> idsToExport = Utilities.parseIdsToRemove(ids);
  484.         for (String id : idsToExport) {
  485.             long idRegolaLong = Long.parseLong(id);
  486.            
  487.             for (int j = 0; j < urlInvocazione.sizeRegolaList(); j++) {
  488.                 ConfigurazioneUrlInvocazioneRegola regola = urlInvocazione.getRegola(j);
  489.                 if (regola.getId().longValue() == idRegolaLong) {
  490.                     idsRegole.add(regola.getNome());
  491.                     break;
  492.                 }
  493.             }
  494.         }
  495.         return idsRegole;
  496.     }
  497.    
  498.     public void filterByProtocol(List<String> tipiSoggetti,List<String> tipiServizi,Archive archive) throws ProtocolException {
  499.        
  500.         // soggetti
  501.         if(archive.getSoggetti()!=null && archive.getSoggetti().size()>0) {
  502.             List<ArchiveSoggetto> listFiltrata = new ArrayList<>();
  503.             for (int i = 0; i < archive.getSoggetti().size(); i++) {
  504.                 if(archive.getSoggetti().get(i).getIdSoggetto()!=null &&
  505.                         tipiSoggetti.contains(archive.getSoggetti().get(i).getIdSoggetto().getTipo())) {
  506.                     listFiltrata.add(archive.getSoggetti().get(i));
  507.                 }
  508.             }
  509.             while(archive.getSoggetti().size()>0) {
  510.                 archive.getSoggetti().remove(0);
  511.             }
  512.             if(!listFiltrata.isEmpty()) {
  513.                 for (ArchiveSoggetto archiveFiltrato : listFiltrata) {
  514.                     archive.getSoggetti().add(archiveFiltrato);    
  515.                 }
  516.             }
  517.         }
  518.        
  519.         // servizio applicativo
  520.         if(archive.getServiziApplicativi()!=null && archive.getServiziApplicativi().size()>0) {
  521.             List<ArchiveServizioApplicativo> listFiltrata = new ArrayList<>();
  522.             for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  523.                 if(archive.getServiziApplicativi().get(i).getIdSoggettoProprietario()!=null &&
  524.                         tipiSoggetti.contains(archive.getServiziApplicativi().get(i).getIdSoggettoProprietario().getTipo())) {
  525.                     listFiltrata.add(archive.getServiziApplicativi().get(i));
  526.                 }
  527.             }
  528.             while(archive.getServiziApplicativi().size()>0) {
  529.                 archive.getServiziApplicativi().remove(0);
  530.             }
  531.             if(!listFiltrata.isEmpty()) {
  532.                 for (ArchiveServizioApplicativo archiveFiltrato : listFiltrata) {
  533.                     archive.getServiziApplicativi().add(archiveFiltrato);      
  534.                 }
  535.             }
  536.         }
  537.        
  538.         // porta delegata
  539.         if(archive.getPorteDelegate()!=null && archive.getPorteDelegate().size()>0) {
  540.             List<ArchivePortaDelegata> listFiltrata = new ArrayList<>();
  541.             for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
  542.                 if(archive.getPorteDelegate().get(i).getIdSoggettoProprietario()!=null &&
  543.                         tipiSoggetti.contains(archive.getPorteDelegate().get(i).getIdSoggettoProprietario().getTipo())) {
  544.                     listFiltrata.add(archive.getPorteDelegate().get(i));
  545.                 }
  546.             }
  547.             while(archive.getPorteDelegate().size()>0) {
  548.                 archive.getPorteDelegate().remove(0);
  549.             }
  550.             if(!listFiltrata.isEmpty()) {
  551.                 for (ArchivePortaDelegata archiveFiltrato : listFiltrata) {
  552.                     archive.getPorteDelegate().add(archiveFiltrato);        
  553.                 }
  554.             }
  555.         }
  556.        
  557.         // porta applicativa
  558.         if(archive.getPorteApplicative()!=null && archive.getPorteApplicative().size()>0) {
  559.             List<ArchivePortaApplicativa> listFiltrata = new ArrayList<>();
  560.             for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  561.                 if(archive.getPorteApplicative().get(i).getIdSoggettoProprietario()!=null &&
  562.                         tipiSoggetti.contains(archive.getPorteApplicative().get(i).getIdSoggettoProprietario().getTipo())) {
  563.                     listFiltrata.add(archive.getPorteApplicative().get(i));
  564.                 }
  565.             }
  566.             while(archive.getPorteApplicative().size()>0) {
  567.                 archive.getPorteApplicative().remove(0);
  568.             }
  569.             if(!listFiltrata.isEmpty()) {
  570.                 for (ArchivePortaApplicativa archiveFiltrato : listFiltrata) {
  571.                     archive.getPorteApplicative().add(archiveFiltrato);    
  572.                 }
  573.             }
  574.         }
  575.        
  576.         // accordi cooperazione
  577.         if(archive.getAccordiCooperazione()!=null && archive.getAccordiCooperazione().size()>0) {
  578.             List<ArchiveAccordoCooperazione> listFiltrata = new ArrayList<>();
  579.             for (int i = 0; i < archive.getAccordiCooperazione().size(); i++) {
  580.                 if(archive.getAccordiCooperazione().get(i).getIdSoggettoReferente()!=null &&
  581.                         tipiSoggetti.contains(archive.getAccordiCooperazione().get(i).getIdSoggettoReferente().getTipo())) {
  582.                     listFiltrata.add(archive.getAccordiCooperazione().get(i));
  583.                 }
  584.             }
  585.             while(archive.getAccordiCooperazione().size()>0) {
  586.                 archive.getAccordiCooperazione().remove(0);
  587.             }
  588.             if(!listFiltrata.isEmpty()) {
  589.                 for (ArchiveAccordoCooperazione archiveFiltrato : listFiltrata) {
  590.                     archive.getAccordiCooperazione().add(archiveFiltrato);      
  591.                 }
  592.             }
  593.         }
  594.        
  595.         // accordi parte comune
  596.         if(archive.getAccordiServizioParteComune()!=null && archive.getAccordiServizioParteComune().size()>0) {
  597.             List<ArchiveAccordoServizioParteComune> listFiltrata = new ArrayList<>();
  598.             for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
  599.                 if(archive.getAccordiServizioParteComune().get(i).getIdSoggettoReferente()!=null &&
  600.                         tipiSoggetti.contains(archive.getAccordiServizioParteComune().get(i).getIdSoggettoReferente().getTipo())) {
  601.                     listFiltrata.add(archive.getAccordiServizioParteComune().get(i));
  602.                 }
  603.             }
  604.             while(archive.getAccordiServizioParteComune().size()>0) {
  605.                 archive.getAccordiServizioParteComune().remove(0);
  606.             }
  607.             if(!listFiltrata.isEmpty()) {
  608.                 for (ArchiveAccordoServizioParteComune archiveFiltrato : listFiltrata) {
  609.                     archive.getAccordiServizioParteComune().add(archiveFiltrato);      
  610.                 }
  611.             }
  612.         }
  613.        
  614.         // accordi composto
  615.         if(archive.getAccordiServizioComposto()!=null && archive.getAccordiServizioComposto().size()>0) {
  616.             List<ArchiveAccordoServizioComposto> listFiltrata = new ArrayList<>();
  617.             for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
  618.                 if(archive.getAccordiServizioComposto().get(i).getIdSoggettoReferente()!=null &&
  619.                         tipiSoggetti.contains(archive.getAccordiServizioComposto().get(i).getIdSoggettoReferente().getTipo())) {
  620.                     listFiltrata.add(archive.getAccordiServizioComposto().get(i));
  621.                 }
  622.             }
  623.             while(archive.getAccordiServizioComposto().size()>0) {
  624.                 archive.getAccordiServizioComposto().remove(0);
  625.             }
  626.             if(!listFiltrata.isEmpty()) {
  627.                 for (ArchiveAccordoServizioComposto archiveFiltrato : listFiltrata) {
  628.                     archive.getAccordiServizioComposto().add(archiveFiltrato);      
  629.                 }
  630.             }
  631.         }
  632.        
  633.         // accordi parte specifica
  634.         if(archive.getAccordiServizioParteSpecifica()!=null && archive.getAccordiServizioParteSpecifica().size()>0) {
  635.             List<ArchiveAccordoServizioParteSpecifica> listFiltrata = new ArrayList<>();
  636.             for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  637.                 if(archive.getAccordiServizioParteSpecifica().get(i).getIdSoggettoErogatore()!=null &&
  638.                         tipiSoggetti.contains(archive.getAccordiServizioParteSpecifica().get(i).getIdSoggettoErogatore().getTipo())) {
  639.                     listFiltrata.add(archive.getAccordiServizioParteSpecifica().get(i));
  640.                 }
  641.             }
  642.             while(archive.getAccordiServizioParteSpecifica().size()>0) {
  643.                 archive.getAccordiServizioParteSpecifica().remove(0);
  644.             }
  645.             if(!listFiltrata.isEmpty()) {
  646.                 for (ArchiveAccordoServizioParteSpecifica archiveFiltrato : listFiltrata) {
  647.                     archive.getAccordiServizioParteSpecifica().add(archiveFiltrato);        
  648.                 }
  649.             }
  650.         }
  651.        
  652.         // fruitori
  653.         if(archive.getAccordiFruitori()!=null && archive.getAccordiFruitori().size()>0) {
  654.             List<ArchiveFruitore> listFiltrata = new ArrayList<>();
  655.             for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  656.                 if(archive.getAccordiFruitori().get(i).getIdSoggettoFruitore()!=null &&
  657.                         tipiSoggetti.contains(archive.getAccordiFruitori().get(i).getIdSoggettoFruitore().getTipo())) {
  658.                     listFiltrata.add(archive.getAccordiFruitori().get(i));
  659.                 }
  660.             }
  661.             while(archive.getAccordiFruitori().size()>0) {
  662.                 archive.getAccordiFruitori().remove(0);
  663.             }
  664.             if(!listFiltrata.isEmpty()) {
  665.                 for (ArchiveFruitore archiveFiltrato : listFiltrata) {
  666.                     archive.getAccordiFruitori().add(archiveFiltrato);      
  667.                 }
  668.             }
  669.         }
  670.        
  671.         // controllo del traffico
  672.         if(archive.getControlloTraffico_activePolicies()!=null && archive.getControlloTraffico_activePolicies().size()>0) {
  673.             List<ArchiveActivePolicy> listFiltrata = new ArrayList<>();
  674.             for (int i = 0; i < archive.getControlloTraffico_activePolicies().size(); i++) {
  675.                 ArchiveActivePolicy archivePolicy = archive.getControlloTraffico_activePolicies().get(i);
  676.                 boolean filtra = false;
  677.                 if(archivePolicy.getPolicy().getFiltro()!=null) {
  678.                     if(archivePolicy.getPolicy().getFiltro().getTipoErogatore()!=null &&
  679.                         !tipiSoggetti.contains(archivePolicy.getPolicy().getFiltro().getTipoErogatore())) {
  680.                         filtra = true;
  681.                     }
  682.                     if(archivePolicy.getPolicy().getFiltro().getTipoFruitore()!=null &&
  683.                         !tipiSoggetti.contains(archivePolicy.getPolicy().getFiltro().getTipoFruitore())) {
  684.                         filtra = true;
  685.                     }
  686.                     if(archivePolicy.getPolicy().getFiltro().getTipoServizio()!=null &&
  687.                         !tipiServizi.contains(archivePolicy.getPolicy().getFiltro().getTipoServizio())) {
  688.                         filtra = true;
  689.                     }
  690.                 }
  691.                 if(!filtra) {
  692.                     listFiltrata.add(archivePolicy);
  693.                 }
  694.             }
  695.             while(archive.getControlloTraffico_activePolicies().size()>0) {
  696.                 archive.getControlloTraffico_activePolicies().remove(0);
  697.             }
  698.             if(!listFiltrata.isEmpty()) {
  699.                 for (ArchiveActivePolicy archiveFiltrato : listFiltrata) {
  700.                     archive.getControlloTraffico_activePolicies().add(archiveFiltrato);    
  701.                 }
  702.             }
  703.         }
  704.        
  705.         // allarmi
  706.         if(archive.getAllarmi()!=null && archive.getAllarmi().size()>0) {
  707.             List<ArchiveAllarme> listFiltrata = new ArrayList<>();
  708.             for (int i = 0; i < archive.getAllarmi().size(); i++) {
  709.                 ArchiveAllarme archiveAllarme = archive.getAllarmi().get(i);
  710.                 boolean filtra = false;
  711.                 if(archiveAllarme.getAllarme().getFiltro()!=null) {
  712.                     if(archiveAllarme.getAllarme().getFiltro().getTipoErogatore()!=null &&
  713.                         !tipiSoggetti.contains(archiveAllarme.getAllarme().getFiltro().getTipoErogatore())) {
  714.                         filtra = true;
  715.                     }
  716.                     if(archiveAllarme.getAllarme().getFiltro().getTipoFruitore()!=null &&
  717.                         !tipiSoggetti.contains(archiveAllarme.getAllarme().getFiltro().getTipoFruitore())) {
  718.                         filtra = true;
  719.                     }
  720.                     if(archiveAllarme.getAllarme().getFiltro().getTipoServizio()!=null &&
  721.                         !tipiServizi.contains(archiveAllarme.getAllarme().getFiltro().getTipoServizio())) {
  722.                         filtra = true;
  723.                     }
  724.                 }
  725.                 if(!filtra) {
  726.                     listFiltrata.add(archiveAllarme);
  727.                 }
  728.             }
  729.             while(archive.getAllarmi().size()>0) {
  730.                 archive.getAllarmi().remove(0);
  731.             }
  732.             if(!listFiltrata.isEmpty()) {
  733.                 for (ArchiveAllarme archiveFiltrato : listFiltrata) {
  734.                     archive.getAllarmi().add(archiveFiltrato);      
  735.                 }
  736.             }
  737.         }
  738.        
  739.     }
  740.    
  741.     public void filterBySoggettoSelezionato(IDSoggetto idSoggettoSelezionato,Archive archive) throws ProtocolException {
  742.        
  743.         List<IDSoggetto> idSoggettiCoinvolti = new ArrayList<>();
  744.         idSoggettiCoinvolti.add(idSoggettoSelezionato);
  745.        
  746.         List<IDServizio> idServiziCoinvolti = new ArrayList<>();
  747.         List<IDServizioApplicativo> idServiziApplicativiCoinvolti = new ArrayList<>();
  748.         List<IDAccordo> idAccordiCoinvolti = new ArrayList<>();
  749.         List<IDAccordoCooperazione> idAccordiCooperazioneCoinvolti = new ArrayList<>();
  750.            
  751.    
  752.         /* --  Raccolgo elementi riferiti dal soggetto selezionato  -- */
  753.        
  754.         // servizio applicativo
  755.         if(archive.getServiziApplicativi()!=null && archive.getServiziApplicativi().size()>0) {
  756.             for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  757.                 if(archive.getServiziApplicativi().get(i).getIdSoggettoProprietario()!=null &&
  758.                         idSoggettoSelezionato.equals(archive.getServiziApplicativi().get(i).getIdSoggettoProprietario())) {
  759.                    
  760.                     IDServizioApplicativo idSA = archive.getServiziApplicativi().get(i).getIdServizioApplicativo();
  761.                     if(!idServiziApplicativiCoinvolti.contains(idSA)) {
  762.                         idServiziApplicativiCoinvolti.add(idSA);
  763.                     }
  764.                 }
  765.             }
  766.         }
  767.        
  768.         // porta delegata
  769.         if(archive.getPorteDelegate()!=null && archive.getPorteDelegate().size()>0) {
  770.             for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
  771.                 if(archive.getPorteDelegate().get(i).getIdSoggettoProprietario()!=null &&
  772.                         idSoggettoSelezionato.equals(archive.getPorteDelegate().get(i).getIdSoggettoProprietario())) {
  773.                    
  774.                     IDServizio idServizio = archive.getPorteDelegate().get(i).getIdPortaDelegata().getIdentificativiFruizione().getIdServizio();
  775.                     IDSoggetto idSoggettoErogatore = idServizio.getSoggettoErogatore();
  776.                     if(!idSoggettiCoinvolti.contains(idSoggettoErogatore)) {
  777.                         idSoggettiCoinvolti.add(idSoggettoErogatore);
  778.                     }
  779.                     if(!idServiziCoinvolti.contains(idServizio)) {
  780.                         idServiziCoinvolti.add(idServizio);
  781.                     }
  782.                 }
  783.             }
  784.         }
  785.        
  786.         // porta applicativa
  787.         if(archive.getPorteApplicative()!=null && archive.getPorteApplicative().size()>0) {
  788.             for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  789.                 if(archive.getPorteApplicative().get(i).getIdSoggettoProprietario()!=null &&
  790.                         idSoggettoSelezionato.equals(archive.getPorteApplicative().get(i).getIdSoggettoProprietario())) {
  791.                    
  792.                     PortaApplicativa pa = archive.getPorteApplicative().get(i).getPortaApplicativa();
  793.                     if(pa.getSoggetti()!=null && pa.getSoggetti().sizeSoggettoList()>0) {
  794.                         for (int j = 0; j < pa.getSoggetti().sizeSoggettoList(); j++) {
  795.                             PortaApplicativaAutorizzazioneSoggetto authSoggetto = pa.getSoggetti().getSoggetto(j);
  796.                             IDSoggetto idSoggettoAutorizzato = new IDSoggetto(authSoggetto.getTipo(), authSoggetto.getNome());
  797.                             if(!idSoggettiCoinvolti.contains(idSoggettoAutorizzato)) {
  798.                                 idSoggettiCoinvolti.add(idSoggettoAutorizzato);
  799.                             }
  800.                         }
  801.                     }
  802.                     if(pa.getServiziApplicativiAutorizzati()!=null && pa.getServiziApplicativiAutorizzati().sizeServizioApplicativoList()>0) {
  803.                         for (int j = 0; j < pa.getServiziApplicativiAutorizzati().sizeServizioApplicativoList(); j++) {
  804.                             PortaApplicativaAutorizzazioneServizioApplicativo authSA = pa.getServiziApplicativiAutorizzati().getServizioApplicativo(j);
  805.                             IDSoggetto idSoggettoProprietarioSAAutorizzato = new IDSoggetto(authSA.getTipoSoggettoProprietario(), authSA.getNomeSoggettoProprietario());
  806.                             if(!idSoggettiCoinvolti.contains(idSoggettoProprietarioSAAutorizzato)) {
  807.                                 idSoggettiCoinvolti.add(idSoggettoProprietarioSAAutorizzato);
  808.                             }
  809.                             IDServizioApplicativo idSAAutorizzato = new IDServizioApplicativo();
  810.                             idSAAutorizzato.setIdSoggettoProprietario(idSoggettoProprietarioSAAutorizzato);
  811.                             idSAAutorizzato.setNome(authSA.getNome());
  812.                             if(!idServiziApplicativiCoinvolti.contains(idSAAutorizzato)) {
  813.                                 idServiziApplicativiCoinvolti.add(idSAAutorizzato);
  814.                             }
  815.                         }
  816.                     }
  817.                 }
  818.             }
  819.         }
  820.        
  821.         // accordi cooperazione
  822.         if(archive.getAccordiCooperazione()!=null && archive.getAccordiCooperazione().size()>0) {
  823.             for (int i = 0; i < archive.getAccordiCooperazione().size(); i++) {
  824.                 if(archive.getAccordiCooperazione().get(i).getIdSoggettoReferente()!=null &&
  825.                         idSoggettoSelezionato.equals(archive.getAccordiCooperazione().get(i).getIdSoggettoReferente())) {
  826.                    
  827.                     IDAccordoCooperazione idAC = archive.getAccordiCooperazione().get(i).getIdAccordoCooperazione();
  828.                     if(!idAccordiCooperazioneCoinvolti.contains(idAC)) {
  829.                         idAccordiCooperazioneCoinvolti.add(idAC);
  830.                     }
  831.                    
  832.                     IDSoggetto idSoggettoReferente = archive.getAccordiCooperazione().get(i).getIdSoggettoReferente();
  833.                     if(!idSoggettiCoinvolti.contains(idSoggettoReferente)) {
  834.                         idSoggettiCoinvolti.add(idSoggettoReferente);
  835.                     }
  836.                 }
  837.             }
  838.         }
  839.        
  840.         // accordi parte comune (raccolgo solo elementi riferiti, l'eliminazione la faccio dopo)
  841.         if(archive.getAccordiServizioParteComune()!=null && archive.getAccordiServizioParteComune().size()>0) {
  842.             for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
  843.                
  844.                 // filtro solo se il protocollo supporta il soggetto referente.
  845.                 if(archive.getAccordiServizioParteComune().get(i).getIdSoggettoReferente()!=null) {
  846.                     try {
  847.                         String protocollo = this.soggettiCore.getProtocolloAssociatoTipoSoggetto(archive.getAccordiServizioParteComune().get(i).getIdSoggettoReferente().getTipo());
  848.                         boolean soggettoReferenteSupportato = this.aspcCore.isSupportatoSoggettoReferente(protocollo);
  849.                        
  850.                         if( !soggettoReferenteSupportato ||
  851.                                 idSoggettoSelezionato.equals(archive.getAccordiServizioParteComune().get(i).getIdSoggettoReferente())) {
  852.                            
  853.                             IDAccordo idAccordo = archive.getAccordiServizioParteComune().get(i).getIdAccordoServizioParteComune();
  854.                             if(!idAccordiCoinvolti.contains(idAccordo)) {
  855.                                 idAccordiCoinvolti.add(idAccordo);
  856.                             }
  857.                            
  858.                             IDSoggetto idSoggettoReferente = archive.getAccordiServizioParteComune().get(i).getIdSoggettoReferente();
  859.                             if(!idSoggettiCoinvolti.contains(idSoggettoReferente)) {
  860.                                 idSoggettiCoinvolti.add(idSoggettoReferente);
  861.                             }
  862.                         }
  863.                     }catch(Exception e) {
  864.                         throw new ProtocolException(e.getMessage(), e);
  865.                     }
  866.                 }
  867.             }
  868.         }
  869.        
  870.         // accordi composto  (raccolgo solo elementi riferiti, l'eliminazione la faccio dopo)
  871.         if(archive.getAccordiServizioComposto()!=null && archive.getAccordiServizioComposto().size()>0) {
  872.             for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
  873.                 if(archive.getAccordiServizioComposto().get(i).getIdSoggettoReferente()!=null &&
  874.                         idSoggettoSelezionato.equals(archive.getAccordiServizioComposto().get(i).getIdSoggettoReferente())) {
  875.                    
  876.                     IDAccordo idAccordo = archive.getAccordiServizioComposto().get(i).getIdAccordoServizioParteComune();
  877.                     if(!idAccordiCoinvolti.contains(idAccordo)) {
  878.                         idAccordiCoinvolti.add(idAccordo);
  879.                     }
  880.                    
  881.                     IDSoggetto idSoggettoReferente = archive.getAccordiServizioComposto().get(i).getIdSoggettoReferente();
  882.                     if(!idSoggettiCoinvolti.contains(idSoggettoReferente)) {
  883.                         idSoggettiCoinvolti.add(idSoggettoReferente);
  884.                     }
  885.                    
  886.                     AccordoServizioParteComune apc = archive.getAccordiServizioComposto().get(i).getAccordoServizioParteComune();
  887.                     if(apc.getServizioComposto()!=null) {
  888.                         if(apc.getServizioComposto().sizeServizioComponenteList()>0) {
  889.                             for (int j = 0; j < apc.getServizioComposto().sizeServizioComponenteList(); j++) {
  890.                                 AccordoServizioParteComuneServizioCompostoServizioComponente componente = apc.getServizioComposto().getServizioComponente(j);
  891.                                 try {
  892.                                     IDServizio idServizioComponente = IDServizioFactory.getInstance().getIDServizioFromValues(componente.getTipo(), componente.getNome(),
  893.                                             componente.getTipoSoggetto(), componente.getNomeSoggetto(), componente.getVersione());
  894.                                     if(!idServiziCoinvolti.contains(idServizioComponente)) {
  895.                                         idServiziCoinvolti.add(idServizioComponente);
  896.                                     }
  897.                                 }catch(Exception e) {
  898.                                     ControlStationCore.logError("AccordoServizioComposto ["+idAccordo+"]: "+e.getMessage(), e);
  899.                                 }
  900.                             }
  901.                         }
  902.                         if(apc.getServizioComposto().getAccordoCooperazione()!=null) {
  903.                             String uriAC = apc.getServizioComposto().getAccordoCooperazione();
  904.                             try {
  905.                                 IDAccordoCooperazione idAC = IDAccordoCooperazioneFactory.getInstance().getIDAccordoFromUri(uriAC);
  906.                                 if(!idAccordiCooperazioneCoinvolti.contains(idAC)) {
  907.                                     idAccordiCooperazioneCoinvolti.add(idAC);
  908.                                 }
  909.                             }catch(Exception e) {
  910.                                 ControlStationCore.logError("AccordoServizioComposto ["+idAccordo+"]: "+e.getMessage(), e);
  911.                             }
  912.                         }
  913.                     }
  914.                 }
  915.             }
  916.         }
  917.            
  918.         // accordi parte specifica (raccolgo solo elementi riferiti, l'eliminazione la faccio dopo)
  919.         if(archive.getAccordiServizioParteSpecifica()!=null && archive.getAccordiServizioParteSpecifica().size()>0) {
  920.             for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  921.                 if(archive.getAccordiServizioParteSpecifica().get(i).getIdSoggettoErogatore()!=null &&
  922.                         idSoggettoSelezionato.equals(archive.getAccordiServizioParteSpecifica().get(i).getIdSoggettoErogatore())) {
  923.                    
  924.                     IDServizio idServizio =  archive.getAccordiServizioParteSpecifica().get(i).getIdAccordoServizioParteSpecifica();
  925.                     if(!idServiziCoinvolti.contains(idServizio)) {
  926.                         idServiziCoinvolti.add(idServizio);
  927.                     }
  928.                    
  929.                     String uriAccordoServizioParteComune = archive.getAccordiServizioParteSpecifica().get(i).getAccordoServizioParteSpecifica().getAccordoServizioParteComune();
  930.                     try {
  931.                         IDAccordo idApc = IDAccordoFactory.getInstance().getIDAccordoFromUri(uriAccordoServizioParteComune);
  932.                         if(!idAccordiCoinvolti.contains(idApc)) {
  933.                             idAccordiCoinvolti.add(idApc);
  934.                         }
  935.                     }catch(Exception e) {
  936.                         ControlStationCore.logError("AccordoServizioParteSpecifica ["+idServizio+"]: "+e.getMessage(), e);
  937.                     }
  938.                 }
  939.             }
  940.         }
  941.        
  942.         // fruitori
  943.         if(archive.getAccordiFruitori()!=null && archive.getAccordiFruitori().size()>0) {
  944.             for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  945.                 if(archive.getAccordiFruitori().get(i).getIdSoggettoFruitore()!=null &&
  946.                         idSoggettoSelezionato.equals(archive.getAccordiFruitori().get(i).getIdSoggettoFruitore())) {
  947.                    
  948.                     IDServizio idServizio =  archive.getAccordiFruitori().get(i).getIdAccordoServizioParteSpecifica();
  949.                     IDSoggetto idSoggettoErogatore = idServizio.getSoggettoErogatore();
  950.                     if(!idSoggettiCoinvolti.contains(idSoggettoErogatore)) {
  951.                         idSoggettiCoinvolti.add(idSoggettoErogatore);
  952.                     }
  953.                     if(!idServiziCoinvolti.contains(idServizio)) {
  954.                         idServiziCoinvolti.add(idServizio);
  955.                     }
  956.                    
  957.                     // verifico accordi coinvolti dalla fruizione
  958.                     if(archive.getAccordiServizioParteSpecifica()!=null && archive.getAccordiServizioParteSpecifica().size()>0) {
  959.                         for (int j = 0; j < archive.getAccordiServizioParteSpecifica().size(); j++) {
  960.                             IDServizio idServizioCheck =  archive.getAccordiServizioParteSpecifica().get(j).getIdAccordoServizioParteSpecifica();
  961.                             if(idServizio.equals(idServizioCheck)) {
  962.                                
  963.                                 String uriAccordoServizioParteComune = archive.getAccordiServizioParteSpecifica().get(j).getAccordoServizioParteSpecifica().getAccordoServizioParteComune();
  964.                                 try {
  965.                                     IDAccordo idApc = IDAccordoFactory.getInstance().getIDAccordoFromUri(uriAccordoServizioParteComune);
  966.                                     if(!idAccordiCoinvolti.contains(idApc)) {
  967.                                         idAccordiCoinvolti.add(idApc);
  968.                                     }
  969.                                 }catch(Exception e) {
  970.                                     ControlStationCore.logError("Fruitore["+idSoggettoSelezionato+"] AccordoServizioParteSpecifica ["+idServizio+"]: "+e.getMessage(), e);
  971.                                 }
  972.                                
  973.                                 break;
  974.                             }
  975.                         }
  976.                     }
  977.                 }
  978.             }
  979.         }
  980.        
  981.        
  982.        
  983.        
  984.        
  985.        
  986.         /* Filtro elementi */
  987.        
  988.         // soggetti
  989.         if(archive.getSoggetti()!=null && archive.getSoggetti().size()>0) {
  990.             List<ArchiveSoggetto> listFiltrata = new ArrayList<>();
  991.             for (int i = 0; i < archive.getSoggetti().size(); i++) {
  992.                 if(archive.getSoggetti().get(i).getIdSoggetto()!=null &&
  993.                         idSoggettiCoinvolti.contains(archive.getSoggetti().get(i).getIdSoggetto())) {
  994.                     listFiltrata.add(archive.getSoggetti().get(i));
  995.                 }
  996.             }
  997.             while(archive.getSoggetti().size()>0) {
  998.                 archive.getSoggetti().remove(0);
  999.             }
  1000.             if(!listFiltrata.isEmpty()) {
  1001.                 for (ArchiveSoggetto archiveFiltrato : listFiltrata) {
  1002.                     archive.getSoggetti().add(archiveFiltrato);    
  1003.                 }
  1004.             }
  1005.         }
  1006.        
  1007.         // servizio applicativo
  1008.         if(archive.getServiziApplicativi()!=null && archive.getServiziApplicativi().size()>0) {
  1009.             List<ArchiveServizioApplicativo> listFiltrata = new ArrayList<>();
  1010.             for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  1011.                 if(archive.getServiziApplicativi().get(i).getIdSoggettoProprietario()!=null &&
  1012.                         idServiziApplicativiCoinvolti.contains(archive.getServiziApplicativi().get(i).getIdServizioApplicativo())) {
  1013.                     listFiltrata.add(archive.getServiziApplicativi().get(i));
  1014.                 }
  1015.             }
  1016.             while(archive.getServiziApplicativi().size()>0) {
  1017.                 archive.getServiziApplicativi().remove(0);
  1018.             }
  1019.             if(!listFiltrata.isEmpty()) {
  1020.                 for (ArchiveServizioApplicativo archiveFiltrato : listFiltrata) {
  1021.                     archive.getServiziApplicativi().add(archiveFiltrato);      
  1022.                 }
  1023.             }
  1024.         }
  1025.        
  1026.         // porta delegata
  1027.         if(archive.getPorteDelegate()!=null && archive.getPorteDelegate().size()>0) {
  1028.             List<ArchivePortaDelegata> listFiltrata = new ArrayList<>();
  1029.             for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
  1030.                 if(archive.getPorteDelegate().get(i).getIdSoggettoProprietario()!=null &&
  1031.                         idSoggettoSelezionato.equals(archive.getPorteDelegate().get(i).getIdSoggettoProprietario())) {
  1032.                     listFiltrata.add(archive.getPorteDelegate().get(i));
  1033.                 }
  1034.             }
  1035.             while(archive.getPorteDelegate().size()>0) {
  1036.                 archive.getPorteDelegate().remove(0);
  1037.             }
  1038.             if(!listFiltrata.isEmpty()) {
  1039.                 for (ArchivePortaDelegata archiveFiltrato : listFiltrata) {
  1040.                     archive.getPorteDelegate().add(archiveFiltrato);        
  1041.                 }
  1042.             }
  1043.         }
  1044.        
  1045.         // porta applicativa
  1046.         if(archive.getPorteApplicative()!=null && archive.getPorteApplicative().size()>0) {
  1047.             List<ArchivePortaApplicativa> listFiltrata = new ArrayList<>();
  1048.             for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  1049.                 if(archive.getPorteApplicative().get(i).getIdSoggettoProprietario()!=null &&
  1050.                         idSoggettoSelezionato.equals(archive.getPorteApplicative().get(i).getIdSoggettoProprietario())) {
  1051.                     listFiltrata.add(archive.getPorteApplicative().get(i));
  1052.                 }
  1053.             }
  1054.             while(archive.getPorteApplicative().size()>0) {
  1055.                 archive.getPorteApplicative().remove(0);
  1056.             }
  1057.             if(!listFiltrata.isEmpty()) {
  1058.                 for (ArchivePortaApplicativa archiveFiltrato : listFiltrata) {
  1059.                     archive.getPorteApplicative().add(archiveFiltrato);    
  1060.                 }
  1061.             }
  1062.         }
  1063.        
  1064.         // accordi cooperazione
  1065.         if(archive.getAccordiCooperazione()!=null && archive.getAccordiCooperazione().size()>0) {
  1066.             List<ArchiveAccordoCooperazione> listFiltrata = new ArrayList<>();
  1067.             for (int i = 0; i < archive.getAccordiCooperazione().size(); i++) {
  1068.                 if(archive.getAccordiCooperazione().get(i).getIdSoggettoReferente()!=null &&
  1069.                         idAccordiCooperazioneCoinvolti.contains(archive.getAccordiCooperazione().get(i).getIdAccordoCooperazione())) {
  1070.                     listFiltrata.add(archive.getAccordiCooperazione().get(i));
  1071.                 }
  1072.             }
  1073.             while(archive.getAccordiCooperazione().size()>0) {
  1074.                 archive.getAccordiCooperazione().remove(0);
  1075.             }
  1076.             if(!listFiltrata.isEmpty()) {
  1077.                 for (ArchiveAccordoCooperazione archiveFiltrato : listFiltrata) {
  1078.                     archive.getAccordiCooperazione().add(archiveFiltrato);      
  1079.                 }
  1080.             }
  1081.         }
  1082.        
  1083.         // accordi parte comune
  1084.         if(archive.getAccordiServizioParteComune()!=null && archive.getAccordiServizioParteComune().size()>0) {
  1085.             List<ArchiveAccordoServizioParteComune> listFiltrata = new ArrayList<>();
  1086.             for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
  1087.                 if(archive.getAccordiServizioParteComune().get(i).getIdSoggettoReferente()!=null &&
  1088.                         idAccordiCoinvolti.contains(archive.getAccordiServizioParteComune().get(i).getIdAccordoServizioParteComune())) {
  1089.                     listFiltrata.add(archive.getAccordiServizioParteComune().get(i));
  1090.                 }
  1091.             }
  1092.             while(archive.getAccordiServizioParteComune().size()>0) {
  1093.                 archive.getAccordiServizioParteComune().remove(0);
  1094.             }
  1095.             if(!listFiltrata.isEmpty()) {
  1096.                 for (ArchiveAccordoServizioParteComune archiveFiltrato : listFiltrata) {
  1097.                     archive.getAccordiServizioParteComune().add(archiveFiltrato);      
  1098.                 }
  1099.             }
  1100.         }
  1101.        
  1102.         // accordi composto
  1103.         if(archive.getAccordiServizioComposto()!=null && archive.getAccordiServizioComposto().size()>0) {
  1104.             List<ArchiveAccordoServizioComposto> listFiltrata = new ArrayList<>();
  1105.             for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
  1106.                 if(archive.getAccordiServizioComposto().get(i).getIdSoggettoReferente()!=null &&
  1107.                         idAccordiCoinvolti.contains(archive.getAccordiServizioComposto().get(i).getIdAccordoServizioParteComune())) {
  1108.                     listFiltrata.add(archive.getAccordiServizioComposto().get(i));
  1109.                 }
  1110.             }
  1111.             while(archive.getAccordiServizioComposto().size()>0) {
  1112.                 archive.getAccordiServizioComposto().remove(0);
  1113.             }
  1114.             if(!listFiltrata.isEmpty()) {
  1115.                 for (ArchiveAccordoServizioComposto archiveFiltrato : listFiltrata) {
  1116.                     archive.getAccordiServizioComposto().add(archiveFiltrato);      
  1117.                 }
  1118.             }
  1119.         }
  1120.        
  1121.         // accordi parte specifica
  1122.         if(archive.getAccordiServizioParteSpecifica()!=null && archive.getAccordiServizioParteSpecifica().size()>0) {
  1123.             List<ArchiveAccordoServizioParteSpecifica> listFiltrata = new ArrayList<>();
  1124.             for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  1125.                 if(archive.getAccordiServizioParteSpecifica().get(i).getIdSoggettoErogatore()!=null &&
  1126.                         idServiziCoinvolti.contains(archive.getAccordiServizioParteSpecifica().get(i).getIdAccordoServizioParteSpecifica())) {
  1127.                     listFiltrata.add(archive.getAccordiServizioParteSpecifica().get(i));
  1128.                 }
  1129.             }
  1130.             while(archive.getAccordiServizioParteSpecifica().size()>0) {
  1131.                 archive.getAccordiServizioParteSpecifica().remove(0);
  1132.             }
  1133.             if(!listFiltrata.isEmpty()) {
  1134.                 for (ArchiveAccordoServizioParteSpecifica archiveFiltrato : listFiltrata) {
  1135.                     archive.getAccordiServizioParteSpecifica().add(archiveFiltrato);        
  1136.                 }
  1137.             }
  1138.         }
  1139.        

  1140.         // fruitori
  1141.         if(archive.getAccordiFruitori()!=null && archive.getAccordiFruitori().size()>0) {
  1142.             List<ArchiveFruitore> listFiltrata = new ArrayList<>();
  1143.             for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  1144.                 if(archive.getAccordiFruitori().get(i).getIdSoggettoFruitore()!=null &&
  1145.                         idSoggettoSelezionato.equals(archive.getAccordiFruitori().get(i).getIdSoggettoFruitore())) {
  1146.                     listFiltrata.add(archive.getAccordiFruitori().get(i));
  1147.                 }
  1148.             }
  1149.             while(archive.getAccordiFruitori().size()>0) {
  1150.                 archive.getAccordiFruitori().remove(0);
  1151.             }
  1152.             if(!listFiltrata.isEmpty()) {
  1153.                 for (ArchiveFruitore archiveFiltrato : listFiltrata) {
  1154.                     archive.getAccordiFruitori().add(archiveFiltrato);      
  1155.                 }
  1156.             }
  1157.         }

  1158.        
  1159.         // controllo del traffico
  1160.         if(archive.getControlloTraffico_activePolicies()!=null && archive.getControlloTraffico_activePolicies().size()>0) {
  1161.             List<ArchiveActivePolicy> listFiltrata = new ArrayList<>();
  1162.             for (int i = 0; i < archive.getControlloTraffico_activePolicies().size(); i++) {
  1163.                 ArchiveActivePolicy archivePolicy = archive.getControlloTraffico_activePolicies().get(i);
  1164.                 boolean filtra = false;
  1165.                 if(archivePolicy.getPolicy().getFiltro()!=null) {
  1166.                     IDSoggetto idSoggettoErogatore = null;
  1167.                     if(archivePolicy.getPolicy().getFiltro().getTipoErogatore()!=null && archivePolicy.getPolicy().getFiltro().getNomeErogatore()!=null) {
  1168.                         idSoggettoErogatore = new IDSoggetto(archivePolicy.getPolicy().getFiltro().getTipoErogatore(), archivePolicy.getPolicy().getFiltro().getNomeErogatore());
  1169.                         if(!idSoggettiCoinvolti.contains(idSoggettoErogatore)) {
  1170.                             filtra = true;
  1171.                         }
  1172.                     }
  1173.                     if(archivePolicy.getPolicy().getFiltro().getTipoFruitore()!=null && archivePolicy.getPolicy().getFiltro().getNomeFruitore()!=null) {
  1174.                         IDSoggetto idSoggettoFruitore = new IDSoggetto(archivePolicy.getPolicy().getFiltro().getTipoFruitore(), archivePolicy.getPolicy().getFiltro().getNomeFruitore());
  1175.                         if(!idSoggettiCoinvolti.contains(idSoggettoFruitore)) {
  1176.                             filtra = true;
  1177.                         }
  1178.                     }
  1179.                     if(idSoggettoErogatore!=null &&
  1180.                             archivePolicy.getPolicy().getFiltro().getTipoServizio()!=null &&
  1181.                             archivePolicy.getPolicy().getFiltro().getNomeServizio()!=null &&
  1182.                             archivePolicy.getPolicy().getFiltro().getVersioneServizio()!=null) {
  1183.                         try {
  1184.                             IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(archivePolicy.getPolicy().getFiltro().getTipoServizio(),
  1185.                                     archivePolicy.getPolicy().getFiltro().getNomeServizio(),
  1186.                                     idSoggettoErogatore,
  1187.                                     archivePolicy.getPolicy().getFiltro().getVersioneServizio());
  1188.                             if(!idServiziCoinvolti.contains(idServizio)) {
  1189.                                 filtra = true;
  1190.                             }
  1191.                         }catch(Exception e) {
  1192.                             ControlStationCore.logError("ControlloTraffico activePolicies ["+archivePolicy.getPolicy().getIdActivePolicy()+"]: "+e.getMessage(), e);
  1193.                         }
  1194.                     }
  1195.                 }
  1196.                 if(!filtra) {
  1197.                     listFiltrata.add(archivePolicy);
  1198.                 }
  1199.             }
  1200.             while(archive.getControlloTraffico_activePolicies().size()>0) {
  1201.                 archive.getControlloTraffico_activePolicies().remove(0);
  1202.             }
  1203.             if(!listFiltrata.isEmpty()) {
  1204.                 for (ArchiveActivePolicy archiveFiltrato : listFiltrata) {
  1205.                     archive.getControlloTraffico_activePolicies().add(archiveFiltrato);    
  1206.                 }
  1207.             }
  1208.         }
  1209.        
  1210.        
  1211.         // allarmi
  1212.         if(archive.getAllarmi()!=null && archive.getAllarmi().size()>0) {
  1213.             List<ArchiveAllarme> listFiltrata = new ArrayList<>();
  1214.             for (int i = 0; i < archive.getAllarmi().size(); i++) {
  1215.                 ArchiveAllarme archiveAllarme = archive.getAllarmi().get(i);
  1216.                 boolean filtra = false;
  1217.                 if(archiveAllarme.getAllarme().getFiltro()!=null) {
  1218.                     IDSoggetto idSoggettoErogatore = null;
  1219.                     if(archiveAllarme.getAllarme().getFiltro().getTipoErogatore()!=null && archiveAllarme.getAllarme().getFiltro().getNomeErogatore()!=null) {
  1220.                         idSoggettoErogatore = new IDSoggetto(archiveAllarme.getAllarme().getFiltro().getTipoErogatore(), archiveAllarme.getAllarme().getFiltro().getNomeErogatore());
  1221.                         if(!idSoggettiCoinvolti.contains(idSoggettoErogatore)) {
  1222.                             filtra = true;
  1223.                         }
  1224.                     }
  1225.                     if(archiveAllarme.getAllarme().getFiltro().getTipoFruitore()!=null && archiveAllarme.getAllarme().getFiltro().getNomeFruitore()!=null) {
  1226.                         IDSoggetto idSoggettoFruitore = new IDSoggetto(archiveAllarme.getAllarme().getFiltro().getTipoFruitore(), archiveAllarme.getAllarme().getFiltro().getNomeFruitore());
  1227.                         if(!idSoggettiCoinvolti.contains(idSoggettoFruitore)) {
  1228.                             filtra = true;
  1229.                         }
  1230.                     }
  1231.                     if(idSoggettoErogatore!=null &&
  1232.                             archiveAllarme.getAllarme().getFiltro().getTipoServizio()!=null &&
  1233.                             archiveAllarme.getAllarme().getFiltro().getNomeServizio()!=null &&
  1234.                             archiveAllarme.getAllarme().getFiltro().getVersioneServizio()!=null) {
  1235.                         try {
  1236.                             IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(archiveAllarme.getAllarme().getFiltro().getTipoServizio(),
  1237.                                     archiveAllarme.getAllarme().getFiltro().getNomeServizio(),
  1238.                                     idSoggettoErogatore,
  1239.                                     archiveAllarme.getAllarme().getFiltro().getVersioneServizio());
  1240.                             if(!idServiziCoinvolti.contains(idServizio)) {
  1241.                                 filtra = true;
  1242.                             }
  1243.                         }catch(Exception e) {
  1244.                             ControlStationCore.logError("Allarmi ["+archiveAllarme.getAllarme().getNome()+"]: "+e.getMessage(), e);
  1245.                         }
  1246.                     }
  1247.                 }
  1248.                 if(!filtra) {
  1249.                     listFiltrata.add(archiveAllarme);
  1250.                 }
  1251.             }
  1252.             while(archive.getAllarmi().size()>0) {
  1253.                 archive.getAllarmi().remove(0);
  1254.             }
  1255.             if(!listFiltrata.isEmpty()) {
  1256.                 for (ArchiveAllarme archiveFiltrato : listFiltrata) {
  1257.                     archive.getAllarmi().add(archiveFiltrato);      
  1258.                 }
  1259.             }
  1260.         }
  1261.        
  1262.     }
  1263. }