DeleterArchiveUtils.java

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

  20. package org.openspcoop2.protocol.engine.archive;

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

  26. import org.openspcoop2.core.allarmi.Allarme;
  27. import org.openspcoop2.core.allarmi.constants.RuoloPorta;
  28. import org.openspcoop2.core.commons.ErrorsHandlerCostant;
  29. import org.openspcoop2.core.config.Configurazione;
  30. import org.openspcoop2.core.config.PortaApplicativa;
  31. import org.openspcoop2.core.config.PortaDelegata;
  32. import org.openspcoop2.core.controllo_traffico.AttivazionePolicy;
  33. import org.openspcoop2.core.controllo_traffico.constants.RuoloPolicy;
  34. import org.openspcoop2.core.id.IDAccordo;
  35. import org.openspcoop2.core.id.IDAccordoCooperazione;
  36. import org.openspcoop2.core.id.IDGenericProperties;
  37. import org.openspcoop2.core.id.IDGruppo;
  38. import org.openspcoop2.core.id.IDPortaApplicativa;
  39. import org.openspcoop2.core.id.IDPortaDelegata;
  40. import org.openspcoop2.core.id.IDRuolo;
  41. import org.openspcoop2.core.id.IDScope;
  42. import org.openspcoop2.core.id.IDServizio;
  43. import org.openspcoop2.core.id.IDServizioApplicativo;
  44. import org.openspcoop2.core.id.IDSoggetto;
  45. import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
  46. import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
  47. import org.openspcoop2.core.plugins.IdPlugin;
  48. import org.openspcoop2.core.registry.AccordoCooperazione;
  49. import org.openspcoop2.core.registry.AccordoServizioParteComune;
  50. import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
  51. import org.openspcoop2.core.registry.Fruitore;
  52. import org.openspcoop2.core.registry.Gruppo;
  53. import org.openspcoop2.core.registry.PortaDominio;
  54. import org.openspcoop2.core.registry.Ruolo;
  55. import org.openspcoop2.core.registry.Scope;
  56. import org.openspcoop2.core.registry.Soggetto;
  57. import org.openspcoop2.core.registry.constants.PddTipologia;
  58. import org.openspcoop2.core.registry.driver.IDServizioFactory;
  59. import org.openspcoop2.protocol.engine.ProtocolFactoryManager;
  60. import org.openspcoop2.protocol.engine.utils.DBOggettiInUsoUtils;
  61. import org.openspcoop2.protocol.sdk.IProtocolFactory;
  62. import org.openspcoop2.protocol.sdk.archive.AbstractArchiveGenericProperties;
  63. import org.openspcoop2.protocol.sdk.archive.Archive;
  64. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoCooperazione;
  65. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioComposto;
  66. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteComune;
  67. import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteSpecifica;
  68. import org.openspcoop2.protocol.sdk.archive.ArchiveActivePolicy;
  69. import org.openspcoop2.protocol.sdk.archive.ArchiveAllarme;
  70. import org.openspcoop2.protocol.sdk.archive.ArchiveAttributeAuthority;
  71. import org.openspcoop2.protocol.sdk.archive.ArchiveConfigurationPolicy;
  72. import org.openspcoop2.protocol.sdk.archive.ArchiveEsitoDelete;
  73. import org.openspcoop2.protocol.sdk.archive.ArchiveEsitoImportDetail;
  74. import org.openspcoop2.protocol.sdk.archive.ArchiveEsitoImportDetailConfigurazione;
  75. import org.openspcoop2.protocol.sdk.archive.ArchiveFruitore;
  76. import org.openspcoop2.protocol.sdk.archive.ArchiveGruppo;
  77. import org.openspcoop2.protocol.sdk.archive.ArchiveMappingErogazione;
  78. import org.openspcoop2.protocol.sdk.archive.ArchiveMappingFruizione;
  79. import org.openspcoop2.protocol.sdk.archive.ArchivePdd;
  80. import org.openspcoop2.protocol.sdk.archive.ArchivePluginArchivio;
  81. import org.openspcoop2.protocol.sdk.archive.ArchivePluginClasse;
  82. import org.openspcoop2.protocol.sdk.archive.ArchivePortaApplicativa;
  83. import org.openspcoop2.protocol.sdk.archive.ArchivePortaDelegata;
  84. import org.openspcoop2.protocol.sdk.archive.ArchiveRuolo;
  85. import org.openspcoop2.protocol.sdk.archive.ArchiveScope;
  86. import org.openspcoop2.protocol.sdk.archive.ArchiveServizioApplicativo;
  87. import org.openspcoop2.protocol.sdk.archive.ArchiveSoggetto;
  88. import org.openspcoop2.protocol.sdk.archive.ArchiveTokenPolicy;
  89. import org.openspcoop2.protocol.sdk.archive.ArchiveUrlInvocazioneRegola;
  90. import org.openspcoop2.protocol.sdk.constants.ArchiveStatoImport;
  91. import org.slf4j.Logger;

  92. /**
  93.  *  DeleterArchiveUtils
  94.  *
  95.  * @author Poli Andrea (apoli@link.it)
  96.  * @author $Author$
  97.  * @version $Rev$, $Date$
  98.  */
  99. public class DeleterArchiveUtils {

  100.     private AbstractArchiveEngine importerEngine;
  101.     private Logger log;
  102.     private String userLogin;
  103.     private boolean deletePolicyConfigurazione;
  104.     private boolean deletePluginConfigurazione;
  105.     private ProtocolFactoryManager protocolFactoryManager;
  106.    
  107.     public DeleterArchiveUtils(AbstractArchiveEngine importerEngine,Logger log,
  108.             String userLogin,
  109.             boolean deletePolicyConfigurazione,
  110.             boolean deletePluginConfigurazione) throws Exception{
  111.         this.importerEngine = importerEngine;
  112.         this.log = log;
  113.         this.userLogin = userLogin;
  114.         this.deletePolicyConfigurazione = deletePolicyConfigurazione;
  115.         this.deletePluginConfigurazione = deletePluginConfigurazione;
  116.         this.protocolFactoryManager = ProtocolFactoryManager.getInstance();
  117.     }
  118.    
  119.     private static String NEW_LINE = "\n\t\t";
  120.     private static boolean NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO = false;
  121.    
  122.    
  123.     public ArchiveEsitoDelete deleteArchive(Archive archive, String userLogin) throws Exception,ImportInformationMissingException{
  124.         try{
  125.            
  126.             ArchiveEsitoDelete esito = new ArchiveEsitoDelete();
  127.            
  128.             // Soggetto Default
  129.             Map<String, IDSoggetto> mapIdSoggettoDefault = new HashMap<>();
  130.             Map<String, Boolean> mapAPIconReferente = new HashMap<>();
  131.             if(this.protocolFactoryManager==null) {
  132.                 throw new Exception("ProtocolFactoryManager not initialized");
  133.             }
  134.             Enumeration<String> pEnum = this.protocolFactoryManager.getProtocolFactories().keys();
  135.             if(pEnum!=null) {
  136.                 while (pEnum.hasMoreElements()) {
  137.                     String protocollo = (String) pEnum.nextElement();
  138.                     IDSoggetto soggettoDefaultProtocollo = this.importerEngine.getSoggettoDefault( protocollo );
  139.                     if(soggettoDefaultProtocollo==null) {
  140.                         throw new Exception("IDSoggetto di default non trovato per il protocollo '"+protocollo+"'");
  141.                     }
  142.                     mapIdSoggettoDefault.put(protocollo, soggettoDefaultProtocollo);
  143.                                        
  144.                     IProtocolFactory<?> pf = this.protocolFactoryManager.getProtocolFactoryByName(protocollo);
  145.                     boolean supportoReferente = false;
  146.                     if(pf!=null) {
  147.                         supportoReferente = pf.createProtocolConfiguration().isSupportoSoggettoReferenteAccordiParteComune();
  148.                     }
  149.                     mapAPIconReferente.put(protocollo, supportoReferente);
  150.                 }
  151.             }
  152.            
  153.            
  154.            
  155.            
  156.            
  157.             // Preparo Liste di Mapping da creare una volta registrati sia gli accordi (servizi e fruitori) che le porte (delegate e applicative)
  158.             List<MappingErogazionePortaApplicativa> listMappingErogazionePA = new ArrayList<MappingErogazionePortaApplicativa>();
  159.             List<MappingFruizionePortaDelegata> listMappingFruizionePD = new ArrayList<MappingFruizionePortaDelegata>();
  160.            
  161.             // Servizi
  162.             for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  163.                 ArchiveAccordoServizioParteSpecifica archiveAccordoServizioParteSpecifica = archive.getAccordiServizioParteSpecifica().get(i);
  164.                 archiveAccordoServizioParteSpecifica.update();
  165.                
  166.                 // gestione portaApplicativaAssociata
  167.                 if(archiveAccordoServizioParteSpecifica.getMappingPorteApplicativeAssociate()!=null &&
  168.                         archiveAccordoServizioParteSpecifica.getMappingPorteApplicativeAssociate().size()>0){
  169.                     List<IDPortaApplicativa> idPACheck = null;
  170.                     boolean existsParteSpecifica = false;
  171.                     try {
  172.                         existsParteSpecifica = this.importerEngine.existsAccordoServizioParteSpecifica(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica());
  173.                     }catch(Exception e) {
  174.                         // ignore
  175.                     }
  176.                     boolean existsIDPorteApplicativeAssociateErogazione = false;
  177.                     try {
  178.                         existsIDPorteApplicativeAssociateErogazione = this.importerEngine.existsIDPorteApplicativeAssociateErogazione(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica());
  179.                     }catch(Exception e) {
  180.                         // ignore
  181.                     }
  182.                    
  183.                     if(existsParteSpecifica &&
  184.                             existsIDPorteApplicativeAssociateErogazione) {
  185.                         idPACheck = this.importerEngine.getIDPorteApplicativeAssociateErogazione(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica());
  186.                     }
  187.                     for (MappingErogazionePortaApplicativa mappingPorteApplicativeAssociata : archiveAccordoServizioParteSpecifica.getMappingPorteApplicativeAssociate()) {
  188.                         if(idPACheck!=null && idPACheck.size()>0 && idPACheck.contains(mappingPorteApplicativeAssociata.getIdPortaApplicativa())){
  189.                             listMappingErogazionePA.add(mappingPorteApplicativeAssociata);  
  190.                         }  
  191.                     }
  192.                 }
  193.             }
  194.            
  195.             // Fruitori
  196.             for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  197.                 ArchiveFruitore archiveFruitore = archive.getAccordiFruitori().get(i);
  198.                 archiveFruitore.update();
  199.            
  200.                 // gestione portaDelegataAssociata
  201.                 if(archiveFruitore.getMappingPorteDelegateAssociate()!=null &&
  202.                         archiveFruitore.getMappingPorteDelegateAssociate().size()>0){
  203.                     List<IDPortaDelegata> idPDCheck = null;
  204.                     boolean existsParteSpecifica = false;
  205.                     try {
  206.                         existsParteSpecifica = this.importerEngine.existsAccordoServizioParteSpecifica(archiveFruitore.getIdAccordoServizioParteSpecifica());
  207.                     }catch(Exception e) {
  208.                         // ignore
  209.                     }
  210.                     boolean existsIDPorteDelegateAssociateFruizione = false;
  211.                     try {
  212.                         existsIDPorteDelegateAssociateFruizione = this.importerEngine.existsIDPorteDelegateAssociateFruizione(archiveFruitore.getIdAccordoServizioParteSpecifica(), archiveFruitore.getIdSoggettoFruitore());
  213.                     }catch(Exception e) {
  214.                         // ignore
  215.                     }
  216.                     if(existsParteSpecifica &&
  217.                             existsIDPorteDelegateAssociateFruizione) {
  218.                         idPDCheck = this.importerEngine.getIDPorteDelegateAssociateFruizione(archiveFruitore.getIdAccordoServizioParteSpecifica(), archiveFruitore.getIdSoggettoFruitore());
  219.                     }
  220.                     for (MappingFruizionePortaDelegata mappingPorteDelegateAssociata : archiveFruitore.getMappingPorteDelegateAssociate()) {
  221.                         if(idPDCheck!=null && idPDCheck.size()>0 && idPDCheck.contains(mappingPorteDelegateAssociata.getIdPortaDelegata())){
  222.                             listMappingFruizionePD.add(mappingPorteDelegateAssociata);
  223.                         }
  224.                     }
  225.                 }
  226.             }
  227.            
  228.             // Mapping Erogazione - PA  (eventuali errori non provocano il fallimento del loader,
  229.             // cmq sia il mapping viene eliminato dopo quando si procede all'eliminazione puntuale degli oggetti)
  230.             if(listMappingErogazionePA.size()>0){
  231.                 for (int i = 0; i < listMappingErogazionePA.size(); i++) {
  232.                     MappingErogazionePortaApplicativa mapping = listMappingErogazionePA.get(i);
  233.                     ArchiveMappingErogazione archiveMappingErogazione = new ArchiveMappingErogazione(mapping);
  234.                     ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveMappingErogazione);
  235.                     try{
  236.                         if(this.importerEngine.existsMappingErogazione(mapping.getIdServizio(), mapping.getIdPortaApplicativa())) {
  237.                             this.importerEngine.deleteMappingErogazione(mapping.getIdServizio(), mapping.getIdPortaApplicativa());
  238.                             detail.setState(ArchiveStatoImport.DELETED);
  239.                         }
  240.                         else {
  241.                             detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  242.                         }
  243.                     }catch(Exception e){
  244.                         this.log.error("Errore durante l'eliminazione del mapping di erogazione del servizio ["+mapping.getIdServizio()+
  245.                                 "] verso la porta applicativa ["+mapping.getIdPortaApplicativa().getNome()+"]: "+e.getMessage(),e);
  246.                         detail.setState(ArchiveStatoImport.ERROR);
  247.                         detail.setException(e);
  248.                     }
  249.                     esito.getMappingErogazioni().add(detail);
  250.                 }
  251.             }
  252.            
  253.             // Mapping Fruizione - PD  (eventuali errori non provocano il fallimento del loader,
  254.             // cmq sia il mapping viene eliminato dopo quando si procede all'eliminazione puntuale degli oggetti)
  255.             if(listMappingFruizionePD.size()>0){
  256.                 for (int i = 0; i < listMappingFruizionePD.size(); i++) {
  257.                     MappingFruizionePortaDelegata mapping = listMappingFruizionePD.get(i);
  258.                     ArchiveMappingFruizione archiveMappingFruizione = new ArchiveMappingFruizione(mapping);
  259.                     ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveMappingFruizione);
  260.                     try{
  261.                         if(this.importerEngine.existsMappingFruizione(mapping.getIdServizio(), mapping.getIdFruitore(), mapping.getIdPortaDelegata())) {
  262.                             this.importerEngine.deleteMappingFruizione(mapping.getIdServizio(), mapping.getIdFruitore(), mapping.getIdPortaDelegata());
  263.                             detail.setState(ArchiveStatoImport.DELETED);
  264.                         }
  265.                         else {
  266.                             detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  267.                         }
  268.                     }catch(Exception e){
  269.                         this.log.error("Errore durante l'eliminazione del mapping di fruizione del servizio ["+mapping.getIdServizio()+
  270.                                 "] verso la porta delegata ["+mapping.getIdPortaDelegata().getNome()+"] da parte del soggetto ["+mapping.getIdFruitore()+"]: "+e.getMessage(),e);
  271.                         detail.setState(ArchiveStatoImport.ERROR);
  272.                         detail.setException(e);
  273.                     }
  274.                     esito.getMappingFruizioni().add(detail);
  275.                 }
  276.             }
  277.            

  278.            
  279.            
  280.             // PorteApplicative
  281.             for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
  282.                 ArchivePortaApplicativa archivePortaApplicativa = archive.getPorteApplicative().get(i);
  283.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePortaApplicativa);
  284.                 try{
  285.                     archivePortaApplicativa.update();
  286.                     if(archivePortaApplicativa.getIdServizio()!=null){
  287.                         try{
  288.                             if(this.importerEngine.existsMappingErogazione(archivePortaApplicativa.getIdServizio(), archivePortaApplicativa.getIdPortaApplicativa())){
  289.                                 this.importerEngine.deleteMappingErogazione(archivePortaApplicativa.getIdServizio(), archivePortaApplicativa.getIdPortaApplicativa());
  290.                             }
  291.                         }catch(Exception e){
  292.                             this.log.debug("Errore durante l'eliminazione del mapping di erogazione del servizio ["+archivePortaApplicativa.getIdServizio()+
  293.                                     "] verso la porta applicativa ["+archivePortaApplicativa.getIdPortaApplicativa()+"]: "+e.getMessage(),e);
  294.                         }
  295.                     }
  296.                     this.deletePortaApplicativa(archivePortaApplicativa, detail);
  297.                 }catch(Exception e){
  298.                     detail.setState(ArchiveStatoImport.ERROR);
  299.                     detail.setException(e);
  300.                 }
  301.                 esito.getPorteApplicative().add(detail);
  302.             }
  303.             // ControlloTraffico (AttivazionePolicy) porta applicativa
  304.             for (int i = 0; i < archive.getControlloTraffico_activePolicies().size(); i++) {
  305.                 ArchiveActivePolicy archivePolicy = archive.getControlloTraffico_activePolicies().get(i);
  306.                 if(!archivePolicy.isPolicyGlobale() && RuoloPolicy.APPLICATIVA.equals(archivePolicy.getRuoloPorta())) {
  307.                     ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePolicy);
  308.                     try{
  309.                         this.deleteActivePolicy(archivePolicy, detail);
  310.                     }catch(Exception e){
  311.                         detail.setState(ArchiveStatoImport.ERROR);
  312.                         detail.setException(e);
  313.                     }
  314.                     esito.getControlloTraffico_activePolicies().add(detail);
  315.                 }
  316.             }
  317.            
  318.            
  319.             // PorteDelegate
  320.             for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
  321.                 ArchivePortaDelegata archivePortaDelegata = archive.getPorteDelegate().get(i);
  322.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePortaDelegata);
  323.                 try{
  324.                     archivePortaDelegata.update();
  325.                     if(archivePortaDelegata.getIdSoggettoProprietario()!=null){
  326.                            
  327.                         PortaDelegata pd = archivePortaDelegata.getPortaDelegata();
  328.                         if(pd.getSoggettoErogatore()!=null && pd.getSoggettoErogatore().getNome()!=null &&
  329.                                 pd.getServizio()!=null && pd.getServizio().getNome()!=null){
  330.                             IDServizio idServizio = IDServizioFactory.getInstance().getIDServizioFromValues(pd.getServizio().getTipo(), pd.getServizio().getNome(),
  331.                                     new IDSoggetto(pd.getSoggettoErogatore().getTipo(), pd.getSoggettoErogatore().getNome()),
  332.                                     pd.getServizio().getVersione());
  333.                             try{
  334.                                 if(this.importerEngine.existsMappingFruizione(idServizio, archivePortaDelegata.getIdSoggettoProprietario(), archivePortaDelegata.getIdPortaDelegata())){
  335.                                     this.importerEngine.deleteMappingFruizione(idServizio, archivePortaDelegata.getIdSoggettoProprietario(), archivePortaDelegata.getIdPortaDelegata());
  336.                                 }
  337.                             }catch(Exception e){
  338.                                 this.log.debug("Errore durante l'eliminazione del mapping di fruizione del servizio ["+idServizio+
  339.                                         "] verso la porta delegata ["+archivePortaDelegata.getIdPortaDelegata()+"] da parte del soggetto ["+archivePortaDelegata.getIdSoggettoProprietario()+"]: "+e.getMessage(),e);
  340.                             }
  341.                         }
  342.                     }
  343.                     this.deletePortaDelegata(archivePortaDelegata, detail);
  344.                 }catch(Exception e){
  345.                     detail.setState(ArchiveStatoImport.ERROR);
  346.                     detail.setException(e);
  347.                 }
  348.                 esito.getPorteDelegate().add(detail);
  349.             }
  350.             // ControlloTraffico (AttivazionePolicy) porta delegata
  351.             for (int i = 0; i < archive.getControlloTraffico_activePolicies().size(); i++) {
  352.                 ArchiveActivePolicy archivePolicy = archive.getControlloTraffico_activePolicies().get(i);
  353.                 if(!archivePolicy.isPolicyGlobale() && RuoloPolicy.DELEGATA.equals(archivePolicy.getRuoloPorta())) {
  354.                     ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePolicy);
  355.                     try{
  356.                         this.deleteActivePolicy(archivePolicy, detail);
  357.                     }catch(Exception e){
  358.                         detail.setState(ArchiveStatoImport.ERROR);
  359.                         detail.setException(e);
  360.                     }
  361.                     esito.getControlloTraffico_activePolicies().add(detail);
  362.                 }
  363.             }
  364.            
  365.                    
  366.            
  367.             // Fruitori
  368.             for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
  369.                 ArchiveFruitore archiveFruitore = archive.getAccordiFruitori().get(i);
  370.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveFruitore);
  371.                 try{
  372.                     //archiveFruitore.update(); effettuato durante la preparazione del mapping Fruizione - PD
  373.                     if(archiveFruitore.getIdAccordoServizioParteSpecifica()!=null){
  374.                         if(this.importerEngine.existsIDPorteDelegateAssociateFruizione(archiveFruitore.getIdAccordoServizioParteSpecifica(), archiveFruitore.getIdSoggettoFruitore())){
  375.                             this.importerEngine.deleteMappingFruizione(archiveFruitore.getIdAccordoServizioParteSpecifica(), archiveFruitore.getIdSoggettoFruitore());
  376.                         }
  377.                     }
  378.                     this.deleteFruitore(archiveFruitore, detail);
  379.                 }catch(Exception e){
  380.                     detail.setState(ArchiveStatoImport.ERROR);
  381.                     detail.setException(e);
  382.                 }
  383.                 esito.getAccordiFruitori().add(detail);
  384.             }
  385.            
  386.            
  387.             // Divisione asps che implementano accordi di servizio parte comune,
  388.             // da asps che implementano servizi composti
  389.             List<ArchiveAccordoServizioParteSpecifica> listAccordiServizioParteSpecifica =
  390.                     new ArrayList<ArchiveAccordoServizioParteSpecifica>();
  391.             List<ArchiveAccordoServizioParteSpecifica> listAccordiServizioParteSpecifica_serviziComposti =
  392.                     new ArrayList<ArchiveAccordoServizioParteSpecifica>();
  393.             for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
  394.                 ArchiveAccordoServizioParteSpecifica archiveAccordoServizioParteSpecifica =
  395.                         archive.getAccordiServizioParteSpecifica().get(i);
  396.                 //archiveAccordoServizioParteSpecifica.update();  effettuato durante la preparazione del mapping Erogazione - PA
  397.                 IDAccordo idAccordo = archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteComune();
  398.                 if(this.importerEngine.existsAccordoServizioParteComune(idAccordo)){
  399.                     // verifico la tipologia
  400.                     AccordoServizioParteComune aspc = this.importerEngine.getAccordoServizioParteComune(idAccordo);
  401.                     if(aspc.getServizioComposto()!=null){
  402.                         listAccordiServizioParteSpecifica_serviziComposti.add(archiveAccordoServizioParteSpecifica);    
  403.                     }else{
  404.                         listAccordiServizioParteSpecifica.add(archiveAccordoServizioParteSpecifica);    
  405.                     }
  406.                 }
  407.                 else{
  408.                     // aggiungo alla lista di servizi composti, visto che l'accordo riferito dovrebbe essere definito nell'archivio che si sta importando
  409.                     // se cosi' non fosse, la gestione dell'accordo di servizio parte specifica per servizi composti comunque
  410.                     // segnalera' che l'accordo riferito non esiste
  411.                     listAccordiServizioParteSpecifica_serviziComposti.add(archiveAccordoServizioParteSpecifica);    
  412.                 }
  413.             }
  414.            
  415.            
  416.            
  417.             // Accordi di Servizio Parte Specifica (implementano accordi di servizio composto)
  418.             for (int i = 0; i < listAccordiServizioParteSpecifica_serviziComposti.size(); i++) {
  419.                 ArchiveAccordoServizioParteSpecifica archiveAccordoServizioParteSpecifica = listAccordiServizioParteSpecifica_serviziComposti.get(i);
  420.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveAccordoServizioParteSpecifica);
  421.                 try{
  422.                     //archiveAccordoServizioParteSpecifica.update(); eseguito durante la preparazione della lista listAccordiServizioParteSpecifica_serviziComposti
  423.                     if(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica()!=null){
  424.                         if(this.importerEngine.existsIDPorteApplicativeAssociateErogazione(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica())){
  425.                             this.importerEngine.deleteMappingErogazione(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica());
  426.                         }
  427.                     }
  428.                     this.deleteAccordoServizioParteSpecifica(archiveAccordoServizioParteSpecifica, true, detail);
  429.                 }catch(Exception e){
  430.                     detail.setState(ArchiveStatoImport.ERROR);
  431.                     detail.setException(e);
  432.                 }
  433.                 esito.getAccordiServizioParteSpecificaServiziComposti().add(detail);
  434.             }
  435.            
  436.            
  437.             // Accordi di Servizio Composto
  438.             for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
  439.                 ArchiveAccordoServizioComposto archiveAccordoServizioComposto = archive.getAccordiServizioComposto().get(i);
  440.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveAccordoServizioComposto);
  441.                 try{
  442.                     archiveAccordoServizioComposto.update();
  443.                     this.deleteAccordoServizioComposto(archiveAccordoServizioComposto, detail,
  444.                             mapIdSoggettoDefault, mapAPIconReferente);
  445.                 }catch(Exception e){
  446.                     detail.setState(ArchiveStatoImport.ERROR);
  447.                     detail.setException(e);
  448.                 }
  449.                 esito.getAccordiServizioComposto().add(detail);
  450.             }
  451.            
  452.             // Accordi di Servizio Parte Specifica (implementano accordi di servizio parte comune)
  453.             for (int i = 0; i < listAccordiServizioParteSpecifica.size(); i++) {
  454.                 ArchiveAccordoServizioParteSpecifica archiveAccordoServizioParteSpecifica = listAccordiServizioParteSpecifica.get(i);
  455.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveAccordoServizioParteSpecifica);
  456.                 try{
  457.                     //archiveAccordoServizioParteSpecifica.update(); eseguito durante la preparazione della lista listAccordiServizioParteSpecifica
  458.                     if(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica()!=null){
  459.                         if(this.importerEngine.existsIDPorteApplicativeAssociateErogazione(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica())){
  460.                             this.importerEngine.deleteMappingErogazione(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica());
  461.                         }
  462.                     }
  463.                     this.deleteAccordoServizioParteSpecifica(archiveAccordoServizioParteSpecifica, false, detail);
  464.                 }catch(Exception e){
  465.                     detail.setState(ArchiveStatoImport.ERROR);
  466.                     detail.setException(e);
  467.                 }
  468.                 esito.getAccordiServizioParteSpecifica().add(detail);
  469.             }
  470.            
  471.             // Accordi di Servizio Parte Comune
  472.             for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
  473.                 ArchiveAccordoServizioParteComune archiveAccordoServizioParteComune = archive.getAccordiServizioParteComune().get(i);
  474.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveAccordoServizioParteComune);
  475.                 try{
  476.                     archiveAccordoServizioParteComune.update();
  477.                     this.deleteAccordoServizioParteComune(archiveAccordoServizioParteComune, detail,
  478.                             mapIdSoggettoDefault, mapAPIconReferente);
  479.                 }catch(Exception e){
  480.                     detail.setState(ArchiveStatoImport.ERROR);
  481.                     detail.setException(e);
  482.                 }
  483.                 esito.getAccordiServizioParteComune().add(detail);
  484.             }
  485.            
  486.             // Accordi di Cooperazione
  487.             for (int i = 0; i < archive.getAccordiCooperazione().size(); i++) {
  488.                 ArchiveAccordoCooperazione archiveAccordoCooperazione = archive.getAccordiCooperazione().get(i);
  489.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveAccordoCooperazione);
  490.                 try{
  491.                     archiveAccordoCooperazione.update();
  492.                     this.deleteAccordoCooperazione(archiveAccordoCooperazione, detail);
  493.                 }catch(Exception e){
  494.                     detail.setState(ArchiveStatoImport.ERROR);
  495.                     detail.setException(e);
  496.                 }
  497.                 esito.getAccordiCooperazione().add(detail);
  498.             }
  499.            
  500.             // Servizi Applicativi
  501.             for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
  502.                 ArchiveServizioApplicativo archiveServizioApplicativo = archive.getServiziApplicativi().get(i);
  503.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveServizioApplicativo);
  504.                 try{
  505.                     archiveServizioApplicativo.update();
  506.                     this.deleteServizioApplicativo(archiveServizioApplicativo, detail);
  507.                 }catch(Exception e){
  508.                     detail.setState(ArchiveStatoImport.ERROR);
  509.                     detail.setException(e);
  510.                 }
  511.                 esito.getServiziApplicativi().add(detail);
  512.             }
  513.            
  514.             // Soggetti
  515.             for (int i = 0; i < archive.getSoggetti().size(); i++) {
  516.                 ArchiveSoggetto archiveSoggetto = archive.getSoggetti().get(i);
  517.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveSoggetto);
  518.                 try{
  519.                     this.deleteSoggetto(archiveSoggetto, detail);
  520.                 }catch(Exception e){
  521.                     detail.setState(ArchiveStatoImport.ERROR);
  522.                     detail.setException(e);
  523.                 }
  524.                 esito.getSoggetti().add(detail);
  525.             }
  526.            
  527.             // Gruppi
  528.             for (int i = 0; i < archive.getGruppi().size(); i++) {
  529.                 ArchiveGruppo archiveGruppo = archive.getGruppi().get(i);
  530.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveGruppo);
  531.                 try{
  532.                     this.deleteGruppo(archiveGruppo, detail);
  533.                 }catch(Exception e){
  534.                     detail.setState(ArchiveStatoImport.ERROR);
  535.                     detail.setException(e);
  536.                 }
  537.                 esito.getGruppi().add(detail);
  538.             }
  539.            
  540.             // Ruoli
  541.             for (int i = 0; i < archive.getRuoli().size(); i++) {
  542.                 ArchiveRuolo archiveRuolo = archive.getRuoli().get(i);
  543.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveRuolo);
  544.                 try{
  545.                     this.deleteRuolo(archiveRuolo, detail);
  546.                 }catch(Exception e){
  547.                     detail.setState(ArchiveStatoImport.ERROR);
  548.                     detail.setException(e);
  549.                 }
  550.                 esito.getRuoli().add(detail);
  551.             }
  552.            
  553.             // Scope
  554.             for (int i = 0; i < archive.getScope().size(); i++) {
  555.                 ArchiveScope archiveScope = archive.getScope().get(i);
  556.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveScope);
  557.                 try{
  558.                     this.deleteScope(archiveScope, detail);
  559.                 }catch(Exception e){
  560.                     detail.setState(ArchiveStatoImport.ERROR);
  561.                     detail.setException(e);
  562.                 }
  563.                 esito.getScope().add(detail);
  564.             }
  565.            
  566.             // Pdd
  567.             for (int i = 0; i < archive.getPdd().size(); i++) {
  568.                 ArchivePdd archivePdd = archive.getPdd().get(i);
  569.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePdd);
  570.                 try{
  571.                     this.deletePdd(archivePdd, detail);
  572.                 }catch(Exception e){
  573.                     detail.setState(ArchiveStatoImport.ERROR);
  574.                     detail.setException(e);
  575.                 }
  576.                 esito.getPdd().add(detail);
  577.             }
  578.            
  579.            
  580.             // Allarmi
  581.             for (int i = 0; i < archive.getAllarmi().size(); i++) {
  582.                 ArchiveAllarme archiveAllarme = archive.getAllarmi().get(i);
  583.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveAllarme);
  584.                 try{
  585.                     this.deleteAllarme(archiveAllarme, detail);
  586.                 }catch(Exception e){
  587.                     detail.setState(ArchiveStatoImport.ERROR);
  588.                     detail.setException(e);
  589.                 }
  590.                 esito.getAllarmi().add(detail);
  591.             }
  592.            
  593.            
  594.             // ControlloTraffico (AttivazionePolicy)
  595.             for (int i = 0; i < archive.getControlloTraffico_activePolicies().size(); i++) {
  596.                 ArchiveActivePolicy archivePolicy = archive.getControlloTraffico_activePolicies().get(i);
  597.                 // le elimino cmq tutte, al massimo non esistono piu' if(archivePolicy.isPolicyGlobale()) {
  598.                 // evito cmq di avere errore durante l'aggiunta del dettaglio perchè già esistente
  599.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePolicy);
  600.                 if(!esito.getControlloTraffico_activePolicies().containsKey(detail.key())) {
  601.                     try{
  602.                         this.deleteActivePolicy(archivePolicy, detail);
  603.                     }catch(Exception e){
  604.                         detail.setState(ArchiveStatoImport.ERROR);
  605.                         detail.setException(e);
  606.                     }
  607.                     esito.getControlloTraffico_activePolicies().add(detail);
  608.                 }
  609.             }
  610.            
  611.             // ControlloTraffico (ConfigurazionePolicy)
  612.             for (int i = 0; i < archive.getControlloTraffico_configurationPolicies().size(); i++) {
  613.                 ArchiveConfigurationPolicy archivePolicy = archive.getControlloTraffico_configurationPolicies().get(i);
  614.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePolicy);
  615.                 try{
  616.                     this.deleteConfigPolicy(archivePolicy, detail);
  617.                 }catch(Exception e){
  618.                     detail.setState(ArchiveStatoImport.ERROR);
  619.                     detail.setException(e);
  620.                 }
  621.                 esito.getControlloTraffico_configurationPolicies().add(detail);
  622.             }
  623.            
  624.            
  625.             // TokenPolicy (Validation)
  626.             for (int i = 0; i < archive.getToken_validation_policies().size(); i++) {
  627.                 ArchiveTokenPolicy archivePolicy = archive.getToken_validation_policies().get(i);
  628.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePolicy);
  629.                 try{
  630.                     this.deleteTokenPolicy(archivePolicy, detail);
  631.                 }catch(Exception e){
  632.                     detail.setState(ArchiveStatoImport.ERROR);
  633.                     detail.setException(e);
  634.                 }
  635.                 esito.getToken_validation_policies().add(detail);
  636.             }
  637.            
  638.             // TokenPolicy (Retrieve)
  639.             for (int i = 0; i < archive.getToken_retrieve_policies().size(); i++) {
  640.                 ArchiveTokenPolicy archivePolicy = archive.getToken_retrieve_policies().get(i);
  641.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePolicy);
  642.                 try{
  643.                     this.deleteTokenPolicy(archivePolicy, detail);
  644.                 }catch(Exception e){
  645.                     detail.setState(ArchiveStatoImport.ERROR);
  646.                     detail.setException(e);
  647.                 }
  648.                 esito.getToken_retrieve_policies().add(detail);
  649.             }
  650.            
  651.             // AttributeAuthority (Retrieve)
  652.             for (int i = 0; i < archive.getAttributeAuthorities().size(); i++) {
  653.                 ArchiveAttributeAuthority archiveAttributeAuthority = archive.getAttributeAuthorities().get(i);
  654.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveAttributeAuthority);
  655.                 try{
  656.                     this.deleteAttributeAuthority(archiveAttributeAuthority, detail);
  657.                 }catch(Exception e){
  658.                     detail.setState(ArchiveStatoImport.ERROR);
  659.                     detail.setException(e);
  660.                 }
  661.                 esito.getAttributeAuthorities().add(detail);
  662.             }
  663.            
  664.             // Plugin (Classi)
  665.             for (int i = 0; i < archive.getPlugin_classi().size(); i++) {
  666.                 ArchivePluginClasse archiveClasse = archive.getPlugin_classi().get(i);
  667.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveClasse);
  668.                 try{
  669.                     this.deletePluginClasse(archiveClasse, detail);
  670.                 }catch(Exception e){
  671.                     detail.setState(ArchiveStatoImport.ERROR);
  672.                     detail.setException(e);
  673.                 }
  674.                 esito.getPlugin_classi().add(detail);
  675.             }
  676.            
  677.             // Plugin (Archivi)
  678.             for (int i = 0; i < archive.getPlugin_archivi().size(); i++) {
  679.                 ArchivePluginArchivio archivePlugin = archive.getPlugin_archivi().get(i);
  680.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archivePlugin);
  681.                 try{
  682.                     this.deletePluginArchivio(archivePlugin, detail);
  683.                 }catch(Exception e){
  684.                     detail.setState(ArchiveStatoImport.ERROR);
  685.                     detail.setException(e);
  686.                 }
  687.                 esito.getPlugin_archivi().add(detail);
  688.             }
  689.            
  690.             // UrlInvocazione (Regole)
  691.             for (int i = 0; i < archive.getConfigurazionePdD_urlInvocazione_regole().size(); i++) {
  692.                 ArchiveUrlInvocazioneRegola archiveRegola = archive.getConfigurazionePdD_urlInvocazione_regole().get(i);
  693.                 ArchiveEsitoImportDetail detail = new ArchiveEsitoImportDetail(archiveRegola);
  694.                 try{
  695.                     this.deleteUrlInvocazioneRegola(archiveRegola, detail);
  696.                 }catch(Exception e){
  697.                     detail.setState(ArchiveStatoImport.ERROR);
  698.                     detail.setException(e);
  699.                 }
  700.                 esito.getConfigurazionePdD_urlInvocazione_regole().add(detail);
  701.             }
  702.            
  703.             // Configurazione (Gestisco solamente informazioni extended, in modo da chiamare il driver con la DELETE)
  704.             if(archive.getConfigurazionePdD()!=null && archive.getConfigurazionePdD().sizeExtendedInfoList()>0) {
  705.                 Configurazione newConfig = new Configurazione();
  706.                 newConfig.getExtendedInfoList().addAll(archive.getConfigurazionePdD().getExtendedInfoList());
  707.                 ArchiveEsitoImportDetailConfigurazione<Configurazione> detail = new ArchiveEsitoImportDetailConfigurazione<Configurazione>(newConfig);
  708.                 try{
  709.                     this.deleteConfigurazione(newConfig, detail);
  710.                 }catch(Exception e){
  711.                     detail.setState(ArchiveStatoImport.ERROR);
  712.                     detail.setException(e);
  713.                 }
  714.                 esito.setConfigurazionePdD(detail);
  715.             }
  716.            
  717.             this.importerEngine.finalizeDelete(archive);
  718.            
  719.             return esito;
  720.            
  721.         }catch(Exception e){
  722.             throw e;
  723.         }
  724.     }
  725.    
  726.    
  727.     public void deleteConfigurazione(Configurazione config, ArchiveEsitoImportDetailConfigurazione<Configurazione> detail){
  728.        
  729.         try{
  730.                        
  731.             // --- delete ---
  732.             this.importerEngine.deleteConfigurazione(config);
  733.             detail.setState(ArchiveStatoImport.DELETED);                

  734.                        
  735.         }          
  736.         catch(Exception e){
  737.             this.log.error("Errore durante l'eliminazione della configurazione: "+e.getMessage(),e);
  738.             detail.setState(ArchiveStatoImport.ERROR);
  739.             detail.setException(e);
  740.         }
  741.     }
  742.    
  743.    
  744.     public void deleteConfigPolicy(ArchiveConfigurationPolicy archivePolicy,ArchiveEsitoImportDetail detail){
  745.        
  746.         String nomePolicy = archivePolicy.getNomePolicy();
  747.         try{
  748.            
  749.             // --- check abilitazione ---
  750.             if(this.deletePolicyConfigurazione==false){
  751.                 detail.setState(ArchiveStatoImport.DELETED_POLICY_CONFIG_NOT_ENABLED);
  752.                 return;
  753.             }
  754.            
  755.            
  756.             // --- check esistenza ---
  757.             if(this.importerEngine.existsControlloTraffico_configurationPolicy(nomePolicy)==false){
  758.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  759.                 return;
  760.             }
  761.            
  762.            
  763.             // ---- visibilita' oggetto che si vuole eliminare ---
  764.            
  765.             // non esistenti
  766.            
  767.            
  768.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  769.            
  770.             List<String> whereIsInUso = new ArrayList<>();
  771.             if (this.importerEngine.isControlloTraffico_configurationPolicyInUso(nomePolicy, whereIsInUso)) {
  772.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(nomePolicy, whereIsInUso,false,NEW_LINE));
  773.             }
  774.            
  775.            
  776.             // --- delete ---
  777.             this.importerEngine.deleteControlloTraffico_configurationPolicy(archivePolicy.getPolicy());
  778.             detail.setState(ArchiveStatoImport.DELETED);                

  779.                        
  780.         }          
  781.         catch(Exception e){
  782.             this.log.error("Errore durante l'eliminazione della configurazione della policy ["+nomePolicy+"]: "+e.getMessage(),e);
  783.             detail.setState(ArchiveStatoImport.ERROR);
  784.             detail.setException(e);
  785.         }
  786.     }
  787.    
  788.    
  789.     public void deleteActivePolicy(ArchiveActivePolicy archivePolicy,ArchiveEsitoImportDetail detail){
  790.        
  791.         AttivazionePolicy attivazionePolicy = archivePolicy.getPolicy();
  792.         String aliasPolicy = archivePolicy.getAliasPolicy();
  793.         RuoloPolicy ruoloPorta = archivePolicy.getRuoloPorta();
  794.         String nomePorta = archivePolicy.getNomePorta();
  795.        
  796.         String tipoPolicy = "configurazione";
  797.         if(ruoloPorta!=null && nomePorta!=null) {
  798.             tipoPolicy = ruoloPorta.toString()+" "+nomePorta;
  799.         }
  800.        
  801.         try{
  802.            
  803.             boolean policyGlobale = archivePolicy.isPolicyGlobale();
  804.            
  805.             // --- check abilitazione ---
  806.             if(policyGlobale && this.deletePolicyConfigurazione==false){ // se non e' globale la policy di attivazione va eliminata sempre poiche' associata all'erogazione o alla fruizione
  807.                 detail.setState(ArchiveStatoImport.DELETED_POLICY_CONFIG_NOT_ENABLED);
  808.                 return;
  809.             }
  810.            
  811.            
  812.             // --- check esistenza ---
  813.             if(this.importerEngine.existsControlloTraffico_activePolicy(ruoloPorta, nomePorta, attivazionePolicy.getAlias())==false){
  814.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  815.                 return;
  816.             }
  817.            
  818.            
  819.             // ---- visibilita' oggetto che si vuole eliminare ---
  820.            
  821.             // non esistenti
  822.            
  823.            
  824.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  825.            
  826.             List<String> whereIsInUso = new ArrayList<>();
  827.             if (this.importerEngine.isControlloTraffico_activePolicyInUso(ruoloPorta, nomePorta, attivazionePolicy.getAlias(), whereIsInUso)) {
  828.                 // Il metodo inUso sopra ritorna sempre false.
  829.                 //throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(ruoloPorta, nomePorta, attivazionePolicy.getAlias(), whereIsInUso,false,NEW_LINE));
  830.             }
  831.            
  832.            
  833.             // --- delete ---
  834.             this.importerEngine.deleteControlloTraffico_activePolicy(archivePolicy.getPolicy());
  835.             detail.setState(ArchiveStatoImport.DELETED);                

  836.                        
  837.         }          
  838.         catch(Exception e){
  839.             this.log.error("Errore durante l'eliminazione dell'attivazione della policy ["+aliasPolicy+"] ("+tipoPolicy+"): "+e.getMessage(),e);
  840.             detail.setState(ArchiveStatoImport.ERROR);
  841.             detail.setException(e);
  842.         }
  843.     }
  844.    
  845.    
  846.     public void deleteAllarme(ArchiveAllarme archiveAllarme,ArchiveEsitoImportDetail detail){
  847.        
  848.         Allarme allarme = archiveAllarme.getAllarme();
  849.         String alias = archiveAllarme.getAlias();
  850.         RuoloPorta ruoloPorta = archiveAllarme.getRuoloPorta();
  851.         String nomePorta = archiveAllarme.getNomePorta();
  852.        
  853.         String tipoAllarme = "configurazione";
  854.         if(ruoloPorta!=null && nomePorta!=null) {
  855.             tipoAllarme = ruoloPorta.toString()+" "+nomePorta;
  856.         }
  857.        
  858.         try{
  859.            
  860.             boolean allarmeGlobale = archiveAllarme.isAllarmeGlobale();
  861.            
  862.             // --- check abilitazione ---
  863.             if(allarmeGlobale && this.deletePolicyConfigurazione==false){ // se non e' globale la policy di attivazione va eliminata sempre poiche' associata all'erogazione o alla fruizione
  864.                 detail.setState(ArchiveStatoImport.DELETED_POLICY_CONFIG_NOT_ENABLED);
  865.                 return;
  866.             }
  867.            
  868.            
  869.             // --- check esistenza ---
  870.             if(this.importerEngine.existsAllarme(ruoloPorta, nomePorta, allarme.getAlias())==false){
  871.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  872.                 return;
  873.             }
  874.            
  875.            
  876.             // ---- visibilita' oggetto che si vuole eliminare ---
  877.            
  878.             // non esistenti
  879.            
  880.            
  881.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  882.            
  883.             List<String> whereIsInUso = new ArrayList<>();
  884.             if (this.importerEngine.isAllarmeInUso(ruoloPorta, nomePorta, allarme.getAlias(), whereIsInUso)) {
  885.                 // Il metodo inUso sopra ritorna sempre false.
  886.                 //throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(ruoloPorta, nomePorta, attivazionePolicy.getAlias(), whereIsInUso,false,NEW_LINE));
  887.             }
  888.            
  889.            
  890.             // --- delete ---
  891.             this.importerEngine.deleteAllarme(archiveAllarme.getAllarme(), this.log);
  892.             detail.setState(ArchiveStatoImport.DELETED);                

  893.                        
  894.         }          
  895.         catch(Exception e){
  896.             this.log.error("Errore durante l'eliminazione dell'allarme ["+alias+"] ("+tipoAllarme+"): "+e.getMessage(),e);
  897.             detail.setState(ArchiveStatoImport.ERROR);
  898.             detail.setException(e);
  899.         }
  900.     }
  901.    
  902.     public void deleteTokenPolicy(ArchiveTokenPolicy archivePolicy,ArchiveEsitoImportDetail detail){
  903.         _deleteGenericProperties("Token Policy",archivePolicy, detail);
  904.     }
  905.     public void deleteAttributeAuthority(ArchiveAttributeAuthority archiveAA,ArchiveEsitoImportDetail detail){
  906.         _deleteGenericProperties("Attribute Authority", archiveAA, detail);
  907.     }
  908.     public void _deleteGenericProperties(String oggetto, AbstractArchiveGenericProperties archiveGenericProperties,ArchiveEsitoImportDetail detail){
  909.        
  910.         String nomePolicy = archiveGenericProperties.getNomePolicy();
  911.         String tipologiaPolicy = archiveGenericProperties.getTipologiaPolicy();
  912.         try{
  913.            
  914.             // --- check abilitazione ---
  915.             if(this.deletePolicyConfigurazione==false){
  916.                 detail.setState(ArchiveStatoImport.DELETED_POLICY_CONFIG_NOT_ENABLED);
  917.                 return;
  918.             }
  919.            
  920.            
  921.             // --- check esistenza ---
  922.             if(this.importerEngine.existsGenericProperties(tipologiaPolicy, nomePolicy)==false){
  923.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  924.                 return;
  925.             }
  926.            
  927.            
  928.             // ---- visibilita' oggetto che si vuole eliminare ---
  929.            
  930.             // non esistenti
  931.            
  932.            
  933.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  934.            
  935.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  936.             if (this.importerEngine.isGenericPropertiesInUso(tipologiaPolicy,  nomePolicy, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)) {
  937.                 IDGenericProperties idGP = new IDGenericProperties();
  938.                 idGP.setNome(nomePolicy);
  939.                 idGP.setTipologia(tipologiaPolicy);
  940.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idGP, whereIsInUso,false,NEW_LINE));
  941.             }
  942.            
  943.            
  944.             // --- delete ---
  945.             this.importerEngine.deleteGenericProperties(archiveGenericProperties.getPolicy());
  946.             detail.setState(ArchiveStatoImport.DELETED);                

  947.                        
  948.         }          
  949.         catch(Exception e){
  950.             this.log.error("Errore durante l'eliminazione della configurazione '"+oggetto+")' ["+nomePolicy+"] (tipo: '"+tipologiaPolicy+"'): "+e.getMessage(),e);
  951.             detail.setState(ArchiveStatoImport.ERROR);
  952.             detail.setException(e);
  953.         }
  954.     }
  955.    
  956.     public void deletePluginClasse(ArchivePluginClasse archivePluginClasse,ArchiveEsitoImportDetail detail){
  957.        
  958.         String tipoPlugin = archivePluginClasse.getTipoPlugin();
  959.         String tipo = archivePluginClasse.getTipo();
  960.         try{
  961.            
  962.             // --- check abilitazione ---
  963.             if(this.deletePluginConfigurazione==false){
  964.                 detail.setState(ArchiveStatoImport.DELETED_PLUGIN_CONFIG_NOT_ENABLED);
  965.                 return;
  966.             }
  967.            
  968.            
  969.             // --- check esistenza ---
  970.             if(this.importerEngine.existsPluginClasse(archivePluginClasse.getTipoPlugin(), archivePluginClasse.getTipo())==false){
  971.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  972.                 return;
  973.             }
  974.            
  975.            
  976.             // ---- visibilita' oggetto che si vuole eliminare ---
  977.            
  978.             // non esistenti
  979.            
  980.            
  981.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  982.            
  983.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  984.             IdPlugin idPlugin = new IdPlugin();
  985.             idPlugin.setTipoPlugin(archivePluginClasse.getTipoPlugin());
  986.             idPlugin.setTipo(archivePluginClasse.getTipo());
  987.             idPlugin.setLabel(archivePluginClasse.getPlugin().getLabel());
  988.             idPlugin.setClassName(archivePluginClasse.getPlugin().getClassName());
  989.             if (this.importerEngine.isPluginClasseInUso(idPlugin, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)) {
  990.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(archivePluginClasse.getPlugin().getClassName(), archivePluginClasse.getPlugin().getLabel(),
  991.                         archivePluginClasse.getTipoPlugin(), archivePluginClasse.getTipo(), whereIsInUso,false,NEW_LINE));
  992.             }
  993.            
  994.            
  995.             // --- delete ---
  996.             this.importerEngine.deletePluginClasse(archivePluginClasse.getPlugin());
  997.             detail.setState(ArchiveStatoImport.DELETED);                

  998.                        
  999.         }          
  1000.         catch(Exception e){
  1001.             this.log.error("Errore durante l'eliminazione del plugin ["+tipo+"] (tipo-plugin: '"+tipoPlugin+"'): "+e.getMessage(),e);
  1002.             detail.setState(ArchiveStatoImport.ERROR);
  1003.             detail.setException(e);
  1004.         }
  1005.     }
  1006.    
  1007.     public void deletePluginArchivio(ArchivePluginArchivio archivePluginArchivio,ArchiveEsitoImportDetail detail){
  1008.        
  1009.         String nome = archivePluginArchivio.getNome();
  1010.         try{
  1011.            
  1012.             // --- check abilitazione ---
  1013.             if(this.deletePluginConfigurazione==false){
  1014.                 detail.setState(ArchiveStatoImport.DELETED_PLUGIN_CONFIG_NOT_ENABLED);
  1015.                 return;
  1016.             }
  1017.            
  1018.            
  1019.             // --- check esistenza ---
  1020.             if(this.importerEngine.existsPluginArchivio(archivePluginArchivio.getNome())==false){
  1021.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1022.                 return;
  1023.             }
  1024.            
  1025.            
  1026.             // ---- visibilita' oggetto che si vuole eliminare ---
  1027.            
  1028.             // non esistenti
  1029.            
  1030.            
  1031.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1032.            
  1033.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1034.             if (this.importerEngine.isPluginArchivioInUso(archivePluginArchivio.getNome(), whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)) {
  1035.                 // Il metodo inUso sopra ritorna sempre false.
  1036.                 //throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(archivePluginArchivio.getNome(), archivePluginArchivio.getTipo(), whereIsInUso,false,NEW_LINE));
  1037.             }
  1038.            
  1039.            
  1040.             // --- delete ---
  1041.             this.importerEngine.deletePluginArchivio(archivePluginArchivio.getPlugin());
  1042.             detail.setState(ArchiveStatoImport.DELETED);                

  1043.                        
  1044.         }          
  1045.         catch(Exception e){
  1046.             this.log.error("Errore durante l'eliminazione dell'archivio dei plugin ["+nome+"]: "+e.getMessage(),e);
  1047.             detail.setState(ArchiveStatoImport.ERROR);
  1048.             detail.setException(e);
  1049.         }
  1050.     }
  1051.    
  1052.     public void deleteUrlInvocazioneRegola(ArchiveUrlInvocazioneRegola archiveUrlInvocazioneRegola,ArchiveEsitoImportDetail detail){
  1053.        
  1054.         String nome = archiveUrlInvocazioneRegola.getNome();
  1055.         try{
  1056.            
  1057.             // --- check abilitazione ---
  1058.             if(this.deletePolicyConfigurazione==false){
  1059.                 detail.setState(ArchiveStatoImport.DELETED_POLICY_CONFIG_NOT_ENABLED);
  1060.                 return;
  1061.             }
  1062.            
  1063.            
  1064.             // --- check esistenza ---
  1065.             if(this.importerEngine.existsUrlInvocazioneRegola(archiveUrlInvocazioneRegola.getNome())==false){
  1066.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1067.                 return;
  1068.             }
  1069.            
  1070.            
  1071.             // ---- visibilita' oggetto che si vuole eliminare ---
  1072.            
  1073.             // non esistenti
  1074.            
  1075.            
  1076.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1077.            
  1078.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1079.             if (this.importerEngine.isUrlInvocazioneRegolaInUso(archiveUrlInvocazioneRegola.getNome(), whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)) {
  1080.                 // Il metodo inUso sopra ritorna sempre false.
  1081.                 //throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(archivePluginArchivio.getNome(), archivePluginArchivio.getTipo(), whereIsInUso,false,NEW_LINE));
  1082.             }
  1083.            
  1084.            
  1085.             // --- delete ---
  1086.             this.importerEngine.deleteUrlInvocazioneRegola(archiveUrlInvocazioneRegola.getRegola());
  1087.             detail.setState(ArchiveStatoImport.DELETED);                

  1088.                        
  1089.         }          
  1090.         catch(Exception e){
  1091.             this.log.error("Errore durante l'eliminazione della regola di proxy pass ["+nome+"]: "+e.getMessage(),e);
  1092.             detail.setState(ArchiveStatoImport.ERROR);
  1093.             detail.setException(e);
  1094.         }
  1095.     }
  1096.    
  1097.     public void deletePdd(ArchivePdd archivePdd,ArchiveEsitoImportDetail detail){
  1098.        
  1099.         String nomePdd = archivePdd.getNomePdd();
  1100.         try{
  1101.            
  1102.             // --- check esistenza ---
  1103.             if(this.importerEngine.existsPortaDominio(nomePdd)==false){
  1104.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1105.                 return;
  1106.             }
  1107.            
  1108.            
  1109.             // ---- visibilita' oggetto che si vuole eliminare ---
  1110.            
  1111.             // porta di dominio
  1112.             PortaDominio pddReadFromDb = this.importerEngine.getPortaDominio(nomePdd);
  1113.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1114.                 if(this.userLogin.equals(pddReadFromDb.getSuperUser())==false){
  1115.                     throw new Exception("La Porta di Dominio ["+nomePdd+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1116.                 }
  1117.             }
  1118.            
  1119.            
  1120.             // ---- controllo non sia una pdd 'operativa' ---
  1121.            
  1122.             String tipoPdd = this.importerEngine.getTipoPortaDominio(nomePdd);
  1123.             if(!PddTipologia.ESTERNO.equals(tipoPdd)) {
  1124.                 throw new Exception("Porta di Dominio ["+nomePdd+"] non è eliminabile poichè di dominio interno");
  1125.             }
  1126.                        
  1127.            
  1128.             // ---- tipo di Pdd ---
  1129.             if(PddTipologia.OPERATIVO.toString().equals(this.importerEngine.getTipoPortaDominio(nomePdd))){
  1130.                 throw new Exception("La Porta di Dominio ["+nomePdd+"] non è eliminabile essendo di tipo '"+PddTipologia.OPERATIVO.toString()+"'");
  1131.             }
  1132.            
  1133.            
  1134.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1135.            
  1136.             List<String> whereIsInUso = new ArrayList<>();
  1137.             if (this.importerEngine.isPddInUso(nomePdd, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)) {
  1138.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(nomePdd, whereIsInUso,false,NEW_LINE));
  1139.             }
  1140.            
  1141.            
  1142.             // --- delete ---
  1143.             this.importerEngine.deletePortaDominio(archivePdd.getPortaDominio());
  1144.             detail.setState(ArchiveStatoImport.DELETED);                

  1145.                        
  1146.         }          
  1147.         catch(Exception e){
  1148.             this.log.error("Errore durante l'eliminazione della porta di dominio ["+nomePdd+"]: "+e.getMessage(),e);
  1149.             detail.setState(ArchiveStatoImport.ERROR);
  1150.             detail.setException(e);
  1151.         }
  1152.     }
  1153.    
  1154.    
  1155.    
  1156.     public void deleteGruppo(ArchiveGruppo archiveGruppo,ArchiveEsitoImportDetail detail){
  1157.        
  1158.         IDGruppo idGruppo = archiveGruppo.getIdGruppo();
  1159.         try{
  1160.            
  1161.             // --- check esistenza ---
  1162.             if(this.importerEngine.existsGruppo(idGruppo)==false){
  1163.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1164.                 return;
  1165.             }
  1166.            
  1167.            
  1168.             // ---- visibilita' oggetto che si vuole eliminare ---
  1169.            
  1170.             // gruppo
  1171.             Gruppo gruppoReadFromDb = this.importerEngine.getGruppo(idGruppo);
  1172.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1173.                 if(this.userLogin.equals(gruppoReadFromDb.getSuperUser())==false){
  1174.                     throw new Exception("Il Gruppo ["+idGruppo+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1175.                 }
  1176.             }
  1177.            
  1178.            
  1179.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1180.            
  1181.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1182.             if (this.importerEngine.isGruppoInUso(idGruppo, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)) {
  1183.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idGruppo, whereIsInUso,false,NEW_LINE));
  1184.             }
  1185.            
  1186.            
  1187.             // --- delete ---
  1188.             this.importerEngine.deleteGruppo(archiveGruppo.getGruppo());
  1189.             detail.setState(ArchiveStatoImport.DELETED);                

  1190.                        
  1191.         }          
  1192.         catch(Exception e){
  1193.             this.log.error("Errore durante l'eliminazione del gruppo ["+idGruppo+"]: "+e.getMessage(),e);
  1194.             detail.setState(ArchiveStatoImport.ERROR);
  1195.             detail.setException(e);
  1196.         }
  1197.     }
  1198.    
  1199.    
  1200.    
  1201.     public void deleteRuolo(ArchiveRuolo archiveRuolo,ArchiveEsitoImportDetail detail){
  1202.        
  1203.         IDRuolo idRuolo = archiveRuolo.getIdRuolo();
  1204.         try{
  1205.            
  1206.             // --- check esistenza ---
  1207.             if(this.importerEngine.existsRuolo(idRuolo)==false){
  1208.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1209.                 return;
  1210.             }
  1211.            
  1212.            
  1213.             // ---- visibilita' oggetto che si vuole eliminare ---
  1214.            
  1215.             // ruolo
  1216.             Ruolo ruoloReadFromDb = this.importerEngine.getRuolo(idRuolo);
  1217.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1218.                 if(this.userLogin.equals(ruoloReadFromDb.getSuperUser())==false){
  1219.                     throw new Exception("Il Ruolo ["+idRuolo+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1220.                 }
  1221.             }
  1222.            
  1223.            
  1224.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1225.            
  1226.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1227.             if (this.importerEngine.isRuoloInUso(idRuolo, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)) {
  1228.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idRuolo, whereIsInUso,false,NEW_LINE));
  1229.             }
  1230.            
  1231.            
  1232.             // --- delete ---
  1233.             this.importerEngine.deleteRuolo(archiveRuolo.getRuolo());
  1234.             detail.setState(ArchiveStatoImport.DELETED);                

  1235.                        
  1236.         }          
  1237.         catch(Exception e){
  1238.             this.log.error("Errore durante l'eliminazione del ruolo ["+idRuolo+"]: "+e.getMessage(),e);
  1239.             detail.setState(ArchiveStatoImport.ERROR);
  1240.             detail.setException(e);
  1241.         }
  1242.     }
  1243.    
  1244.    
  1245.    
  1246.     public void deleteScope(ArchiveScope archiveScope,ArchiveEsitoImportDetail detail){
  1247.        
  1248.         IDScope idScope = archiveScope.getIdScope();
  1249.         try{
  1250.            
  1251.             // --- check esistenza ---
  1252.             if(this.importerEngine.existsScope(idScope)==false){
  1253.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1254.                 return;
  1255.             }
  1256.            
  1257.            
  1258.             // ---- visibilita' oggetto che si vuole eliminare ---
  1259.            
  1260.             // scope
  1261.             Scope scopeReadFromDb = this.importerEngine.getScope(idScope);
  1262.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1263.                 if(this.userLogin.equals(scopeReadFromDb.getSuperUser())==false){
  1264.                     throw new Exception("Lo Scope ["+idScope+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1265.                 }
  1266.             }
  1267.            
  1268.            
  1269.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1270.            
  1271.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1272.             if (this.importerEngine.isScopeInUso(idScope, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)) {
  1273.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idScope, whereIsInUso,false,NEW_LINE));
  1274.             }
  1275.            
  1276.            
  1277.             // --- delete ---
  1278.             this.importerEngine.deleteScope(archiveScope.getScope());
  1279.             detail.setState(ArchiveStatoImport.DELETED);                

  1280.                        
  1281.         }          
  1282.         catch(Exception e){
  1283.             this.log.error("Errore durante l'eliminazione dello scope ["+idScope+"]: "+e.getMessage(),e);
  1284.             detail.setState(ArchiveStatoImport.ERROR);
  1285.             detail.setException(e);
  1286.         }
  1287.     }
  1288.    
  1289.    
  1290.    
  1291.     public void deleteSoggetto(ArchiveSoggetto archiveSoggetto,ArchiveEsitoImportDetail detail){
  1292.        
  1293.         IDSoggetto idSoggetto = archiveSoggetto.getIdSoggetto();
  1294.         try{
  1295.            
  1296.             boolean delete = false;
  1297.            
  1298.             if(archiveSoggetto.getSoggettoRegistro()!=null){
  1299.                                
  1300.                
  1301.                 // --- check esistenza ---
  1302.                 if(this.importerEngine.existsSoggettoRegistro(idSoggetto)){
  1303.                                    
  1304.                     // ---- visibilita' oggetto che si vuole eliminare ----
  1305.                     org.openspcoop2.core.registry.Soggetto old = this.importerEngine.getSoggettoRegistro(idSoggetto);
  1306.                     if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1307.                         if(this.userLogin.equals(old.getSuperUser())==false){
  1308.                             throw new Exception("Il soggetto non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1309.                         }
  1310.                     }
  1311.    
  1312.                     // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1313.                    
  1314.                     HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1315.                     boolean verificaRuoli = false;
  1316.                     if (this.importerEngine.isSoggettoRegistroInUso(idSoggetto, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO, verificaRuoli)){
  1317.                         throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idSoggetto, whereIsInUso,false,NEW_LINE, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO));
  1318.                     }
  1319.                    
  1320.                     // ---- controllo che il soggetto non sia un soggetto 'operativo' ---
  1321.                     if(old.getPortaDominio()!=null){
  1322.                         String tipoPdd = this.importerEngine.getTipoPortaDominio(old.getPortaDominio());
  1323.                         if(!PddTipologia.ESTERNO.equals(tipoPdd)) {
  1324.                             throw new Exception("Il soggetto non è eliminabile poichè di dominio interno");
  1325.                         }
  1326.                     }
  1327.                    
  1328.                     // --- delete ---
  1329.                     this.importerEngine.deleteSoggettoRegistro(archiveSoggetto.getSoggettoRegistro());
  1330.                     delete = true;
  1331.                                
  1332.                 }
  1333.                    
  1334.             }
  1335.            
  1336.             if(archiveSoggetto.getSoggettoConfigurazione()!=null){
  1337.            
  1338.                 // --- check esistenza ---
  1339.                 if(this.importerEngine.existsSoggettoConfigurazione(idSoggetto)){
  1340.                    
  1341.                     // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1342.                    
  1343.                     HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1344.                     boolean verificaRuoli = false;
  1345.                     if (this.importerEngine.isSoggettoConfigurazioneInUso(idSoggetto, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO, verificaRuoli)){
  1346.                         throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idSoggetto, whereIsInUso,false,NEW_LINE, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO));
  1347.                     }
  1348.                    
  1349.                     // --- delete ---
  1350.                     this.importerEngine.deleteSoggettoConfigurazione(archiveSoggetto.getSoggettoConfigurazione());
  1351.                     delete = true;
  1352.                 }
  1353.                
  1354.             }
  1355.            
  1356.            
  1357.             // --- upload ---
  1358.             if(delete){
  1359.                 detail.setState(ArchiveStatoImport.DELETED);
  1360.             }else{
  1361.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1362.             }
  1363.            
  1364.         }          
  1365.         catch(Exception e){
  1366.             this.log.error("Errore durante l'eliminazione del soggetto ["+idSoggetto+"]: "+e.getMessage(),e);
  1367.             detail.setState(ArchiveStatoImport.ERROR);
  1368.             detail.setException(e);
  1369.         }
  1370.     }
  1371.    
  1372.    
  1373.    
  1374.    
  1375.     public void deleteServizioApplicativo(ArchiveServizioApplicativo archiveServizioApplicativo,
  1376.             ArchiveEsitoImportDetail detail){
  1377.        
  1378.         IDServizioApplicativo idServizioApplicativo = archiveServizioApplicativo.getIdServizioApplicativo();
  1379.         IDSoggetto idSoggettoProprietario = archiveServizioApplicativo.getIdSoggettoProprietario();
  1380.         try{
  1381.            
  1382.             // --- check esistenza ---
  1383.             if(this.importerEngine.existsServizioApplicativo(idServizioApplicativo)==false){
  1384.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1385.                 return;
  1386.             }
  1387.            
  1388.            
  1389.             // ---- visibilita' oggetto che si vuole eliminare ----
  1390.            
  1391.             // Devo vedere che l'oggetto che voglio eliminare sia visibile dall'utente.
  1392.             // Il SA è visibile se è visibile il soggetto proprietario
  1393.            
  1394.             org.openspcoop2.core.config.Soggetto soggetto = this.importerEngine.getSoggettoConfigurazione(idSoggettoProprietario);
  1395.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1396.                 if(this.userLogin.equals(soggetto.getSuperUser())==false){
  1397.                     throw new Exception("Il soggetto proprietario ["+idSoggettoProprietario+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1398.                 }
  1399.             }
  1400.            
  1401.            
  1402.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1403.            
  1404.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1405.             boolean verificaRuoli = false;
  1406.             if (this.importerEngine.isServizioApplicativoInUso(idServizioApplicativo, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO, verificaRuoli)){
  1407.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idServizioApplicativo, whereIsInUso,false,NEW_LINE,NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO));
  1408.             }
  1409.            
  1410.        
  1411.             // --- delete ---
  1412.             this.importerEngine.deleteServizioApplicativo(archiveServizioApplicativo.getServizioApplicativo());
  1413.             detail.setState(ArchiveStatoImport.DELETED);
  1414.                        
  1415.         }          
  1416.         catch(Exception e){
  1417.             this.log.error("Errore durante l'eliminazione del servizio applicativo ["+idServizioApplicativo+"]: "+e.getMessage(),e);
  1418.             detail.setState(ArchiveStatoImport.ERROR);
  1419.             detail.setException(e);
  1420.         }
  1421.     }
  1422.    
  1423.    
  1424.    
  1425.    

  1426.     public void deleteAccordoCooperazione(ArchiveAccordoCooperazione archiveAccordoCooperazione,
  1427.             ArchiveEsitoImportDetail detail){
  1428.        
  1429.         IDAccordoCooperazione idAccordoCooperazione = archiveAccordoCooperazione.getIdAccordoCooperazione();
  1430.         try{
  1431.             // --- check esistenza ---
  1432.             if(this.importerEngine.existsAccordoCooperazione(idAccordoCooperazione)==false){
  1433.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1434.                 return;
  1435.             }
  1436.            
  1437.             // ---- visibilita' oggetto che si vuole eliminare ---
  1438.            
  1439.             // accordo di cooperazione
  1440.             AccordoCooperazione acReadFromDb = this.importerEngine.getAccordoCooperazione(idAccordoCooperazione);
  1441.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1442.                 if(this.userLogin.equals(acReadFromDb.getSuperUser())==false){
  1443.                     throw new Exception("L'accordo di cooperazione ["+idAccordoCooperazione+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1444.                 }
  1445.             }
  1446.            
  1447.            
  1448.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1449.            
  1450.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1451.             if (this.importerEngine.isAccordoCooperazioneInUso(idAccordoCooperazione, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)){
  1452.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idAccordoCooperazione, whereIsInUso,false,NEW_LINE,NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO));
  1453.             }
  1454.            
  1455.            
  1456.             // --- delete ---
  1457.             this.importerEngine.deleteAccordoCooperazione(archiveAccordoCooperazione.getAccordoCooperazione());
  1458.             detail.setState(ArchiveStatoImport.DELETED);                

  1459.         }          
  1460.         catch(Exception e){
  1461.             this.log.error("Errore durante l'eliminazione dell'accordo di cooperazione ["+idAccordoCooperazione+"]: "+e.getMessage(),e);
  1462.             detail.setState(ArchiveStatoImport.ERROR);
  1463.             detail.setException(e);
  1464.         }
  1465.     }
  1466.    

  1467.    
  1468.    
  1469.     public void deleteAccordoServizioParteComune(ArchiveAccordoServizioParteComune archiveAccordoServizioParteComune,
  1470.             ArchiveEsitoImportDetail detail,
  1471.             Map<String, IDSoggetto> mapIdSoggettoDefault, Map<String, Boolean> mapAPIconReferente){
  1472.        
  1473.         IDAccordo idAccordoServizioParteComune = archiveAccordoServizioParteComune.getIdAccordoServizioParteComune();
  1474.         try{
  1475.             // --- fix soggetto referente --
  1476.             IProtocolFactory<?> protocolFactory = this.protocolFactoryManager.getProtocolFactoryByOrganizationType(idAccordoServizioParteComune.getSoggettoReferente().getTipo());
  1477.             boolean APIconReferente = mapAPIconReferente.get(protocolFactory.getProtocol());
  1478.             if(!APIconReferente) {
  1479.                 IDSoggetto soggettoDefaultProtocollo = mapIdSoggettoDefault.get(protocolFactory.getProtocol());
  1480.                 if(!idAccordoServizioParteComune.getSoggettoReferente().equals(soggettoDefaultProtocollo)) {
  1481.                     archiveAccordoServizioParteComune.getAccordoServizioParteComune().getSoggettoReferente().setTipo(soggettoDefaultProtocollo.getTipo());
  1482.                     archiveAccordoServizioParteComune.getAccordoServizioParteComune().getSoggettoReferente().setNome(soggettoDefaultProtocollo.getNome());
  1483.                     idAccordoServizioParteComune.getSoggettoReferente().setTipo(soggettoDefaultProtocollo.getTipo());
  1484.                     idAccordoServizioParteComune.getSoggettoReferente().setNome(soggettoDefaultProtocollo.getNome());
  1485.                 }
  1486.             }
  1487.            
  1488.             // --- check esistenza ---
  1489.             if(this.importerEngine.existsAccordoServizioParteComune(idAccordoServizioParteComune)==false){
  1490.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1491.                 return;
  1492.             }
  1493.        
  1494.            
  1495.             // ---- visibilita' oggetto che si vuole eliminare ---
  1496.            
  1497.             // accordo di servizio parte comune
  1498.             AccordoServizioParteComune aspcReadFromDb = this.importerEngine.getAccordoServizioParteComune(idAccordoServizioParteComune);
  1499.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1500.                 if(this.userLogin.equals(aspcReadFromDb.getSuperUser())==false){
  1501.                     throw new Exception("L'accordo di servizio parte comune ["+idAccordoServizioParteComune+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1502.                 }
  1503.             }
  1504.            
  1505.            
  1506.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1507.            
  1508.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1509.             if (this.importerEngine.isAccordoServizioParteComuneInUso(idAccordoServizioParteComune, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)){
  1510.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idAccordoServizioParteComune, whereIsInUso,false,NEW_LINE,NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO));
  1511.             }
  1512.            
  1513.            
  1514.             // --- delete ---
  1515.             this.importerEngine.deleteAccordoServizioParteComune(archiveAccordoServizioParteComune.getAccordoServizioParteComune());
  1516.             detail.setState(ArchiveStatoImport.DELETED);
  1517.            
  1518.         }          
  1519.         catch(Exception e){
  1520.             this.log.error("Errore durante l'eliminazione dell'accordo di servizio parte comune ["+idAccordoServizioParteComune+"]: "+e.getMessage(),e);
  1521.             detail.setState(ArchiveStatoImport.ERROR);
  1522.             detail.setException(e);
  1523.         }
  1524.     }
  1525.    
  1526.    
  1527.     public void deleteAccordoServizioComposto(ArchiveAccordoServizioComposto archiveAccordoServizioComposto,
  1528.             ArchiveEsitoImportDetail detail,
  1529.             Map<String, IDSoggetto> mapIdSoggettoDefault, Map<String, Boolean> mapAPIconReferente){
  1530.        
  1531.         IDAccordo idAccordoServizioComposto = archiveAccordoServizioComposto.getIdAccordoServizioParteComune();
  1532.         try{
  1533.             // --- fix soggetto referente --
  1534.             IProtocolFactory<?> protocolFactory = this.protocolFactoryManager.getProtocolFactoryByOrganizationType(idAccordoServizioComposto.getSoggettoReferente().getTipo());
  1535.             boolean APIconReferente = mapAPIconReferente.get(protocolFactory.getProtocol());
  1536.             if(!APIconReferente) {
  1537.                 IDSoggetto soggettoDefaultProtocollo = mapIdSoggettoDefault.get(protocolFactory.getProtocol());
  1538.                 if(!idAccordoServizioComposto.getSoggettoReferente().equals(soggettoDefaultProtocollo)) {
  1539.                     archiveAccordoServizioComposto.getAccordoServizioParteComune().getSoggettoReferente().setTipo(soggettoDefaultProtocollo.getTipo());
  1540.                     archiveAccordoServizioComposto.getAccordoServizioParteComune().getSoggettoReferente().setNome(soggettoDefaultProtocollo.getNome());
  1541.                     idAccordoServizioComposto.getSoggettoReferente().setTipo(soggettoDefaultProtocollo.getTipo());
  1542.                     idAccordoServizioComposto.getSoggettoReferente().setNome(soggettoDefaultProtocollo.getNome());
  1543.                 }
  1544.             }
  1545.            
  1546.             // --- check esistenza ---
  1547.             if(this.importerEngine.existsAccordoServizioParteComune(idAccordoServizioComposto)==false){
  1548.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1549.                 return;
  1550.             }
  1551.                        
  1552.             // ---- visibilita' oggetto che si vuole eliminare ---
  1553.            
  1554.             // accordo di servizio composto
  1555.             AccordoServizioParteComune ascReadFromDb = this.importerEngine.getAccordoServizioParteComune(idAccordoServizioComposto);
  1556.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1557.                 if(this.userLogin.equals(ascReadFromDb.getSuperUser())==false){
  1558.                     throw new Exception("L'accordo di servizio composto ["+idAccordoServizioComposto+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1559.                 }
  1560.             }
  1561.            
  1562.            
  1563.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1564.            
  1565.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1566.             if (this.importerEngine.isAccordoServizioParteComuneInUso(idAccordoServizioComposto, whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)){
  1567.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(idAccordoServizioComposto, whereIsInUso,false,NEW_LINE,NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO));
  1568.             }
  1569.            
  1570.            
  1571.             // --- delete ---
  1572.             this.importerEngine.deleteAccordoServizioParteComune(archiveAccordoServizioComposto.getAccordoServizioParteComune());
  1573.             detail.setState(ArchiveStatoImport.DELETED);
  1574.            
  1575.         }          
  1576.         catch(Exception e){
  1577.             this.log.error("Errore durante l'eliminazione dell'accordo di servizio parte comune ["+idAccordoServizioComposto+"]: "+e.getMessage(),e);
  1578.             detail.setState(ArchiveStatoImport.ERROR);
  1579.             detail.setException(e);
  1580.         }
  1581.     }

  1582.    
  1583.     public void deleteAccordoServizioParteSpecifica(ArchiveAccordoServizioParteSpecifica archiveAccordoServizioParteSpecifica,
  1584.             boolean servizioComposto,
  1585.             ArchiveEsitoImportDetail detail){
  1586.        
  1587.         IDServizio idAccordoServizioParteSpecifica = archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica();
  1588.         try{
  1589.             // --- check esistenza ---
  1590.             if(this.importerEngine.existsAccordoServizioParteSpecifica(idAccordoServizioParteSpecifica)==false){
  1591.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1592.                 return;
  1593.             }
  1594.                        
  1595.                
  1596.             // ---- visibilita' oggetto che si vuole eliminare ---
  1597.            
  1598.             // accordo di servizio parte specifica
  1599.             AccordoServizioParteSpecifica aspsReadFromDb = this.importerEngine.getAccordoServizioParteSpecifica(idAccordoServizioParteSpecifica);
  1600.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1601.                 if(this.userLogin.equals(aspsReadFromDb.getSuperUser())==false){
  1602.                     throw new Exception("L'accordo di servizio parte specifica ["+idAccordoServizioParteSpecifica+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1603.                 }
  1604.             }
  1605.            
  1606.            
  1607.             // ---- controllo di utilizzo dell'oggetto tramite altri oggetti ---
  1608.            
  1609.             HashMap<ErrorsHandlerCostant, List<String>> whereIsInUso = new HashMap<ErrorsHandlerCostant, List<String>>();
  1610.             if (this.importerEngine.isAccordoServizioParteSpecificaInUso(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica(), whereIsInUso, NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO)){
  1611.                 throw new Exception(NEW_LINE+DBOggettiInUsoUtils.toString(archiveAccordoServizioParteSpecifica.getIdAccordoServizioParteSpecifica(), whereIsInUso,false,NEW_LINE,NORMALIZE_OBJECT_ID_MESSAGGIO_IN_USO,"Servizio"));
  1612.             }
  1613.            
  1614.            
  1615.             // --- delete ---
  1616.                        
  1617.             this.importerEngine.deleteAccordoServizioParteSpecifica(archiveAccordoServizioParteSpecifica.getAccordoServizioParteSpecifica());
  1618.             detail.setState(ArchiveStatoImport.DELETED);
  1619.                        
  1620.         }          
  1621.         catch(Exception e){
  1622.             this.log.error("Errore durante l'eliminazione dell'accordo di servizio parte specifica ["+idAccordoServizioParteSpecifica+"]: "+e.getMessage(),e);
  1623.             detail.setState(ArchiveStatoImport.ERROR);
  1624.             detail.setException(e);
  1625.         }
  1626.     }
  1627.    
  1628.    
  1629.    
  1630.    
  1631.     public void deleteFruitore(ArchiveFruitore archiveFruitore,
  1632.             ArchiveEsitoImportDetail detail){
  1633.        
  1634.         IDServizio idAccordoServizioParteSpecifica = archiveFruitore.getIdAccordoServizioParteSpecifica();
  1635.         IDSoggetto idSoggettoFruitore = archiveFruitore.getIdSoggettoFruitore();

  1636.         try{
  1637.             AccordoServizioParteSpecifica oldAccordo = null;
  1638.             Fruitore old = null;
  1639.             if(this.importerEngine.existsAccordoServizioParteSpecifica(idAccordoServizioParteSpecifica)){
  1640.                 oldAccordo = this.importerEngine.getAccordoServizioParteSpecifica(idAccordoServizioParteSpecifica);
  1641.                 for (int i = 0; i < oldAccordo.sizeFruitoreList(); i++) {
  1642.                     Fruitore check = oldAccordo.getFruitore(i);
  1643.                     if(check.getTipo().equals(idSoggettoFruitore.getTipo()) &&
  1644.                             check.getNome().equals(idSoggettoFruitore.getNome())){
  1645.                         old = oldAccordo.removeFruitore(i);
  1646.                         break;
  1647.                     }
  1648.                 }
  1649.             }          
  1650.            
  1651.             // --- check esistenza ---
  1652.             if(old==null){
  1653.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1654.                 return;
  1655.             }
  1656.            
  1657.                        
  1658.             // ---- visibilita' oggetto che si vuole eliminare ----
  1659.            
  1660.             // Devo vedere che l'oggetto che voglio eliminare sia visibile dall'utente.
  1661.             // Il Fruitore è visibile se è visibile l'accordo di servizio parte specifica
  1662.            
  1663.             // soggetto
  1664.             Soggetto soggetto = this.importerEngine.getSoggettoRegistro(idSoggettoFruitore);
  1665.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1666.                 if(this.userLogin.equals(soggetto.getSuperUser())==false){
  1667.                     throw new Exception("Il soggetto fruitore ["+idSoggettoFruitore+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1668.                 }
  1669.             }
  1670.             // accordo di servizio parte specifica
  1671.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1672.                 if(this.userLogin.equals(oldAccordo.getSuperUser())==false){
  1673.                     throw new Exception("L'accordo di servizio parte specifica ["+idAccordoServizioParteSpecifica+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1674.                 }
  1675.             }
  1676.            

  1677.             // --- delete ---
  1678.                        
  1679.             // prima ho rimosso il fruitore se gia' esisteva.
  1680.             // update
  1681.             IDServizio oldIDServizioForUpdate = IDServizioFactory.getInstance().getIDServizioFromValues(oldAccordo.getTipo(), oldAccordo.getNome(),
  1682.                     oldAccordo.getTipoSoggettoErogatore(),oldAccordo.getNomeSoggettoErogatore(),oldAccordo.getVersione());
  1683.             oldAccordo.setOldIDServizioForUpdate(oldIDServizioForUpdate);
  1684.             this.importerEngine.updateAccordoServizioParteSpecifica(oldAccordo);
  1685.            
  1686.             detail.setState(ArchiveStatoImport.DELETED);
  1687.                    
  1688.         }          
  1689.         catch(Exception e){
  1690.             this.log.error("Errore durante l'eliminazione del fruitore["+idSoggettoFruitore+"] dell'accordo di servizio parte specifica ["+idAccordoServizioParteSpecifica+"]: "+e.getMessage(),e);
  1691.             detail.setState(ArchiveStatoImport.ERROR);
  1692.             detail.setException(e);
  1693.         }
  1694.     }
  1695.    
  1696.    
  1697.    
  1698.    
  1699.     public void deletePortaDelegata(ArchivePortaDelegata archivePortaDelegata,
  1700.             ArchiveEsitoImportDetail detail){
  1701.        
  1702.         IDPortaDelegata idPortaDelegata = archivePortaDelegata.getIdPortaDelegata();
  1703.         IDSoggetto idSoggettoProprietario = archivePortaDelegata.getIdSoggettoProprietario();
  1704.         try{
  1705.             // --- check esistenza ---
  1706.             if(this.importerEngine.existsPortaDelegata(idPortaDelegata)==false){
  1707.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1708.                 return;
  1709.             }
  1710.            
  1711.            
  1712.             // ---- visibilita' oggetto che si vuole eliminare ----
  1713.            
  1714.             // Devo vedere che l'oggetto che voglio eliminare sia visibile dall'utente.
  1715.             // La PD è visibile se è visibile il soggetto proprietario
  1716.            
  1717.             org.openspcoop2.core.config.Soggetto soggetto = this.importerEngine.getSoggettoConfigurazione(idSoggettoProprietario);
  1718.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1719.                 if(this.userLogin.equals(soggetto.getSuperUser())==false){
  1720.                     throw new Exception("Il soggetto proprietario ["+idSoggettoProprietario+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1721.                 }
  1722.             }
  1723.            
  1724.            
  1725.             // --- delete ---
  1726.             PortaDelegata portaDelegata = archivePortaDelegata.getPortaDelegata();
  1727.             this.importerEngine.deletePortaDelegata(portaDelegata);
  1728.             detail.setState(ArchiveStatoImport.DELETED);
  1729.                        
  1730.         }          
  1731.         catch(Exception e){
  1732.             this.log.error("Errore durante l'eliminazione della porta delegata ["+idPortaDelegata+"]: "+e.getMessage(),e);
  1733.             detail.setState(ArchiveStatoImport.ERROR);
  1734.             detail.setException(e);
  1735.         }
  1736.     }
  1737.    
  1738.    
  1739.    
  1740.    
  1741.    
  1742.    
  1743.     public void deletePortaApplicativa(ArchivePortaApplicativa archivePortaApplicativa,
  1744.             ArchiveEsitoImportDetail detail){
  1745.        
  1746.         IDPortaApplicativa idPortaApplicativa = archivePortaApplicativa.getIdPortaApplicativa();
  1747.         IDSoggetto idSoggettoProprietario = archivePortaApplicativa.getIdSoggettoProprietario();
  1748.         try{
  1749.             // --- check esistenza ---
  1750.             if(this.importerEngine.existsPortaApplicativa(idPortaApplicativa)==false){
  1751.                 detail.setState(ArchiveStatoImport.DELETED_NOT_EXISTS);
  1752.                 return;
  1753.             }
  1754.            
  1755.                    
  1756.             // ---- visibilita' oggetto che si vuole eliminare ---
  1757.            
  1758.             // Devo vedere che l'oggetto che voglio eliminare sia visibile dall'utente.
  1759.             // La PA è visibile se è visibile il soggetto proprietario
  1760.            
  1761.             org.openspcoop2.core.config.Soggetto soggetto = this.importerEngine.getSoggettoConfigurazione(idSoggettoProprietario);
  1762.             if(this.importerEngine.isVisioneOggettiGlobale(this.userLogin)==false){
  1763.                 if(this.userLogin.equals(soggetto.getSuperUser())==false){
  1764.                     throw new Exception("Il soggetto proprietario ["+idSoggettoProprietario+"] non è visibile/eliminabile dall'utente collegato ("+this.userLogin+")");
  1765.                 }
  1766.             }

  1767.            
  1768.             // --- delete ---
  1769.             PortaApplicativa pa = archivePortaApplicativa.getPortaApplicativa();
  1770.             this.importerEngine.deletePortaApplicativa(pa);
  1771.             detail.setState(ArchiveStatoImport.DELETED);
  1772.            
  1773.         }          
  1774.         catch(Exception e){
  1775.             this.log.error("Errore durante l'eliminazione della porta applicativa ["+idPortaApplicativa+"]: "+e.getMessage(),e);
  1776.             detail.setState(ArchiveStatoImport.ERROR);
  1777.             detail.setException(e);
  1778.         }
  1779.     }
  1780.    
  1781.    

  1782. }