Exporter.java

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


  20. package org.openspcoop2.web.ctrlstat.servlet.archivi;

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

  23. import javax.servlet.http.HttpServletRequest;
  24. import javax.servlet.http.HttpServletResponse;
  25. import javax.servlet.http.HttpSession;

  26. import org.apache.struts.action.Action;
  27. import org.apache.struts.action.ActionForm;
  28. import org.apache.struts.action.ActionForward;
  29. import org.apache.struts.action.ActionMapping;
  30. import org.openspcoop2.core.id.IDAccordo;
  31. import org.openspcoop2.core.id.IDAccordoCooperazione;
  32. import org.openspcoop2.core.id.IDFruizione;
  33. import org.openspcoop2.core.id.IDServizio;
  34. import org.openspcoop2.core.id.IDServizioApplicativo;
  35. import org.openspcoop2.core.id.IDSoggetto;
  36. import org.openspcoop2.protocol.sdk.archive.ArchiveCascadeConfiguration;
  37. import org.openspcoop2.protocol.sdk.archive.ExportMode;
  38. import org.openspcoop2.protocol.sdk.constants.ArchiveType;
  39. import org.openspcoop2.web.ctrlstat.core.ControlStationCore;
  40. import org.openspcoop2.web.ctrlstat.servlet.GeneralHelper;
  41. import org.openspcoop2.web.ctrlstat.servlet.ac.AccordiCooperazioneCostanti;
  42. import org.openspcoop2.web.ctrlstat.servlet.apc.AccordiServizioParteComuneCostanti;
  43. import org.openspcoop2.web.ctrlstat.servlet.apc.api.ApiCostanti;
  44. import org.openspcoop2.web.ctrlstat.servlet.aps.AccordiServizioParteSpecificaCostanti;
  45. import org.openspcoop2.web.ctrlstat.servlet.aps.erogazioni.ErogazioniCostanti;
  46. import org.openspcoop2.web.ctrlstat.servlet.config.ConfigurazioneCostanti;
  47. import org.openspcoop2.web.ctrlstat.servlet.gruppi.GruppiCostanti;
  48. import org.openspcoop2.web.ctrlstat.servlet.ruoli.RuoliCostanti;
  49. import org.openspcoop2.web.ctrlstat.servlet.sa.ServiziApplicativiCostanti;
  50. import org.openspcoop2.web.ctrlstat.servlet.scope.ScopeCostanti;
  51. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCore;
  52. import org.openspcoop2.web.ctrlstat.servlet.soggetti.SoggettiCostanti;
  53. import org.openspcoop2.web.lib.mvc.Costanti;
  54. import org.openspcoop2.web.lib.mvc.DataElement;
  55. import org.openspcoop2.web.lib.mvc.GeneralData;
  56. import org.openspcoop2.web.lib.mvc.PageData;
  57. import org.openspcoop2.web.lib.mvc.Parameter;
  58. import org.openspcoop2.web.lib.mvc.ServletUtils;

  59. /**
  60.  * Exporter
  61.  *
  62.  * @author Andrea Poli (apoli@link.it)
  63.  * @author $Author$
  64.  * @version $Rev$, $Date$
  65.  *
  66.  */
  67. public final class Exporter extends Action {

  68.     @Override
  69.     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

  70.         HttpSession session = request.getSession(true);

  71.         // Inizializzo PageData
  72.         PageData pd = new PageData();

  73.         GeneralHelper generalHelper = new GeneralHelper(session);

  74.         // Inizializzo GeneralData
  75.         GeneralData gd = generalHelper.initGeneralData(request);

  76.         try {
  77.            
  78.             //String userLogin = ServletUtils.getUserLoginFromSession(session);
  79.            
  80.             ArchiviHelper archiviHelper = new ArchiviHelper(request, pd, session);
  81.             ArchiviCore archiviCore = new ArchiviCore();
  82.             SoggettiCore soggettiCore = new SoggettiCore(archiviCore);
  83.        
  84.             ExporterUtils exporterUtils = new ExporterUtils(archiviCore);
  85.            
  86.            
  87.             // Sorgente su cui e' stato invocato l'export
  88.             String servletSourceExport = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_TIPO);
  89.             ArchiveType archiveType = ArchiveType.valueOf(servletSourceExport);
  90.            
  91.            
  92.             // Elementi selezionati per l'export
  93.             String objToExport = archiviHelper.getParameter(Costanti.PARAMETER_NAME_OBJECTS_FOR_REMOVE);
  94.            
  95.            
  96.             // Cascade
  97.             String cascadePolicyConfig = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_POLICY_CONFIG);
  98.             String cascadePluginConfig = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_PLUGIN_CONFIG);
  99.             String cascade = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE);
  100.            
  101.             String cascadePdd = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_PDD);
  102.             String cascadeRuoli = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_RUOLI);
  103.             String cascadeScope = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_SCOPE);
  104.             String cascadeSoggetti = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_SOGGETTI);
  105.             String cascadeServiziApplicativi = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_SERVIZI_APPLICATIVI);
  106.             String cascadePorteDelegate = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_PORTE_DELEGATE);
  107.             String cascadePorteApplicative = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_PORTE_APPLICATIVE);
  108.             String cascadeAccordiCooperazione = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_ACCORDI_COOPERAZIONE);
  109.             String cascadeAccordiServizioComposto = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_ACCORDI_SERVIZIO_COMPOSTO);
  110.             String cascadeAccordiServizioParteComune = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_ACCORDI_SERVIZIO_PARTE_COMUNE);
  111.             String cascadeAccordiServizioParteSpecifica = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_ACCORDI_SERVIZIO_PARTE_SPECIFICA);
  112.             String cascadeFruizioni = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_FRUIZIONI);
  113.                    
  114.             // TipoConfigurazione
  115.             String tipoConfigurazione = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_TIPO_DUMP);
  116.            
  117.            
  118.             // Recuperi eventuali identificativi logici degli oggetti
  119.             Parameter provenienza = null;
  120.             String urlTitle = null;
  121.             List<?> identificativi = null;
  122.             List<String> protocolli = new ArrayList<>();
  123.             switch (archiveType) {
  124.             case SOGGETTO:
  125.                 provenienza = new Parameter(SoggettiCostanti.LABEL_SOGGETTI, SoggettiCostanti.SERVLET_NAME_SOGGETTI_LIST);
  126.                 identificativi = exporterUtils.getIdsSoggetti(objToExport);
  127.                 for (Object id : identificativi) {
  128.                     IDSoggetto idSoggetto = (IDSoggetto) id;
  129.                     String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(idSoggetto.getTipo());
  130.                     if(protocolli.contains(protocollo)==false){
  131.                         protocolli.add(protocollo);
  132.                     }
  133.                 }
  134.                 break;
  135.             case ACCORDO_SERVIZIO_PARTE_COMUNE:
  136.                 String servletApi = AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_LIST;
  137.                 if(!archiviHelper.isModalitaCompleta()) {
  138.                     servletApi = ApiCostanti.SERVLET_NAME_APC_API_LIST;
  139.                 }
  140.                 provenienza = new Parameter(AccordiServizioParteComuneCostanti.LABEL_APC, servletApi,
  141.                         new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_TIPO_ACCORDO, AccordiServizioParteComuneCostanti.PARAMETRO_VALORE_APC_TIPO_ACCORDO_PARTE_COMUNE));
  142.                 identificativi = exporterUtils.getIdsAccordiServizioParteComune(objToExport);
  143.                 for (Object id : identificativi) {
  144.                     IDAccordo idAccordo = (IDAccordo) id;
  145.                     String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(idAccordo.getSoggettoReferente().getTipo());
  146.                     if(protocolli.contains(protocollo)==false){
  147.                         protocolli.add(protocollo);
  148.                     }
  149.                 }
  150.                 break;
  151.             case ACCORDO_SERVIZIO_COMPOSTO:
  152.                 provenienza = new Parameter(AccordiServizioParteComuneCostanti.LABEL_ASC, AccordiServizioParteComuneCostanti.SERVLET_NAME_APC_LIST,
  153.                         new Parameter(AccordiServizioParteComuneCostanti.PARAMETRO_APC_TIPO_ACCORDO, AccordiServizioParteComuneCostanti.PARAMETRO_VALORE_APC_TIPO_ACCORDO_SERVIZIO_COMPOSTO));
  154.                 identificativi = exporterUtils.getIdsAccordiServizioComposti(objToExport);
  155.                 for (Object id : identificativi) {
  156.                     IDAccordo idAccordo = (IDAccordo) id;
  157.                     String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(idAccordo.getSoggettoReferente().getTipo());
  158.                     if(protocolli.contains(protocollo)==false){
  159.                         protocolli.add(protocollo);
  160.                     }
  161.                 }
  162.                 break;
  163.             case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
  164.             case EROGAZIONE:
  165.             case FRUIZIONE:
  166.                
  167.                 String tipologia = ServletUtils.getObjectFromSession(request, session, String.class, AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE);
  168.                 boolean gestioneFruitori = false;
  169.                 if(tipologia!=null) {
  170.                     if(AccordiServizioParteSpecificaCostanti.PARAMETRO_APS_TIPO_EROGAZIONE_VALUE_FRUIZIONE.equals(tipologia)) {
  171.                         gestioneFruitori = true;
  172.                     }
  173.                 }
  174.                
  175.                 Boolean vistaErogazioni = ServletUtils.getBooleanAttributeFromSession(ErogazioniCostanti.ASPS_EROGAZIONI_ATTRIBUTO_VISTA_EROGAZIONI, session, request).getValue();
  176.                 if(vistaErogazioni != null && vistaErogazioni.booleanValue()) {
  177.                     if(gestioneFruitori) {
  178.                         provenienza = new Parameter(ErogazioniCostanti.LABEL_ASPS_FRUIZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST);
  179.                     }
  180.                     else {
  181.                         provenienza = new Parameter(ErogazioniCostanti.LABEL_ASPS_EROGAZIONI, ErogazioniCostanti.SERVLET_NAME_ASPS_EROGAZIONI_LIST);
  182.                     }
  183.                 }
  184.                 else {
  185.                     if(gestioneFruitori) {
  186.                         provenienza = new Parameter(AccordiServizioParteSpecificaCostanti.LABEL_APS_FRUITORI, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_LIST);
  187.                     }
  188.                     else {
  189.                         provenienza = new Parameter(AccordiServizioParteSpecificaCostanti.LABEL_APS, AccordiServizioParteSpecificaCostanti.SERVLET_NAME_APS_LIST);
  190.                     }
  191.                 }
  192.                 identificativi = exporterUtils.getIdsAccordiServizioParteSpecifica(objToExport, gestioneFruitori);
  193.                 for (Object id : identificativi) {
  194.                     IDServizio idServizio = null;
  195.                     if(gestioneFruitori) {
  196.                         idServizio = ((IDFruizione) id).getIdServizio();
  197.                     }
  198.                     else {
  199.                         idServizio = (IDServizio) id;
  200.                     }
  201.                     String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(idServizio.getSoggettoErogatore().getTipo());
  202.                     if(protocolli.contains(protocollo)==false){
  203.                         protocolli.add(protocollo);
  204.                     }
  205.                 }
  206.                 break;
  207.             case ACCORDO_COOPERAZIONE:
  208.                 provenienza = new Parameter(AccordiCooperazioneCostanti.LABEL_ACCORDI_COOPERAZIONE, AccordiCooperazioneCostanti.SERVLET_NAME_ACCORDI_COOPERAZIONE_LIST);
  209.                 identificativi = exporterUtils.getIdsAccordiCooperazione(objToExport);
  210.                 for (Object id : identificativi) {
  211.                     IDAccordoCooperazione idAccordo = (IDAccordoCooperazione) id;
  212.                     String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(idAccordo.getSoggettoReferente().getTipo());
  213.                     if(protocolli.contains(protocollo)==false){
  214.                         protocolli.add(protocollo);
  215.                     }
  216.                 }
  217.                 break;
  218.             case SERVIZIO_APPLICATIVO:
  219.                 provenienza = new Parameter(ServiziApplicativiCostanti.LABEL_APPLICATIVI, ServiziApplicativiCostanti.SERVLET_NAME_SERVIZI_APPLICATIVI_LIST);
  220.                 identificativi = exporterUtils.getIdsServiziApplicativi(objToExport);
  221.                 for (Object id : identificativi) {
  222.                     IDServizioApplicativo idServizioApplicativo = (IDServizioApplicativo) id;
  223.                     String protocollo = soggettiCore.getProtocolloAssociatoTipoSoggetto(idServizioApplicativo.getIdSoggettoProprietario().getTipo());
  224.                     if(protocolli.contains(protocollo)==false){
  225.                         protocolli.add(protocollo);
  226.                     }
  227.                 }
  228.                 break;
  229.             case GRUPPO:
  230.                 provenienza = new Parameter(GruppiCostanti.LABEL_GRUPPI, GruppiCostanti.SERVLET_NAME_GRUPPI_LIST);
  231.                 identificativi = exporterUtils.getIdsGruppi(objToExport);
  232.                 protocolli = archiviCore.getProtocolli(request, session);
  233.                 break;
  234.             case RUOLO:
  235.                 provenienza = new Parameter(RuoliCostanti.LABEL_RUOLI, RuoliCostanti.SERVLET_NAME_RUOLI_LIST);
  236.                 identificativi = exporterUtils.getIdsRuoli(objToExport);
  237.                 protocolli = archiviCore.getProtocolli(request, session);
  238.                 break;
  239.             case SCOPE:
  240.                 provenienza = new Parameter(ScopeCostanti.LABEL_SCOPE, ScopeCostanti.SERVLET_NAME_SCOPE_LIST);
  241.                 identificativi = exporterUtils.getIdsScope(objToExport);
  242.                 protocolli = archiviCore.getProtocolli(request, session);
  243.                 break;
  244.             case CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIG_POLICY:
  245.                 provenienza = new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_REGISTRO_POLICY,
  246.                         ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_POLICY_LIST);
  247.                 identificativi = exporterUtils.getIdsControlloTrafficoConfigPolicy(objToExport);
  248.                 protocolli = archiviCore.getProtocolli(request, session);
  249.                 break;
  250.             case CONFIGURAZIONE_CONTROLLO_TRAFFICO_ACTIVE_POLICY:
  251.                 provenienza = new Parameter(ConfigurazioneCostanti.LABEL_PARAMETRO_CONFIGURAZIONE_CONTROLLO_TRAFFICO_RATE_LIMITING_POLICY_GLOBALI_LINK,
  252.                         ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_CONTROLLO_TRAFFICO_ATTIVAZIONE_POLICY_LIST);
  253.                 identificativi = exporterUtils.getIdsControlloTrafficoActivePolicy(objToExport);
  254.                 protocolli = archiviCore.getProtocolli(request, session);
  255.                 break;
  256.             case ALLARME:
  257.                 provenienza = new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_ALLARMI,
  258.                         ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_ALLARMI_LIST);
  259.                 identificativi = exporterUtils.getIdsAllarmi(objToExport);
  260.                 protocolli = archiviCore.getProtocolli(request, session);
  261.                 break;
  262.             case CONFIGURAZIONE_TOKEN_POLICY:
  263.                 provenienza = new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN,
  264.                         ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_LIST+"?"+
  265.                                 ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE+"="+ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE_VALORE_TOKEN);
  266.                 identificativi = exporterUtils.getIdsTokenPolicy(objToExport);
  267.                 protocolli = archiviCore.getProtocolli(request, session);
  268.                 break;
  269.             case CONFIGURAZIONE_ATTRIBUTE_AUTHORITY:
  270.                 provenienza = new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_ATTRIBUTE_AUTHORITY,
  271.                         ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_POLICY_GESTIONE_TOKEN_LIST+"?"+
  272.                                 ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE+"="+ConfigurazioneCostanti.PARAMETRO_TOKEN_POLICY_TIPOLOGIA_INFORMAZIONE_VALORE_ATTRIBUTE_AUTHORITY);
  273.                 identificativi = exporterUtils.getIdsTokenPolicy(objToExport);
  274.                 protocolli = archiviCore.getProtocolli(request, session);
  275.                 break;
  276.             case CONFIGURAZIONE_PLUGIN_CLASSE:
  277.                 provenienza = new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_REGISTRO_CLASSI,
  278.                         ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_PLUGINS_CLASSI_LIST);
  279.                 identificativi = exporterUtils.getIdsPluginClassi(objToExport);
  280.                 protocolli = archiviCore.getProtocolli(request, session);
  281.                 break;
  282.             case CONFIGURAZIONE_PLUGIN_ARCHVIO:
  283.                 provenienza = new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_PLUGINS_REGISTRO_ARCHIVI,
  284.                         ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_PLUGINS_ARCHIVI_LIST);
  285.                 identificativi = exporterUtils.getIdsPluginArchivi(objToExport);
  286.                 protocolli = archiviCore.getProtocolli(request, session);
  287.                 break;
  288.             case CONFIGURAZIONE_URL_INVOCAZIONE_REGOLA:
  289.                 provenienza = new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE_PROXY_PASS_REGOLE,
  290.                         ConfigurazioneCostanti.SERVLET_NAME_CONFIGURAZIONE_PROXY_PASS_REGOLA_LIST);
  291.                 identificativi = exporterUtils.getIdsUrlInvocazioneRegole(objToExport);
  292.                 protocolli = archiviCore.getProtocolli(request, session);
  293.                 break;
  294.             case CONFIGURAZIONE:
  295.                 //provenienza = new Parameter(ConfigurazioneCostanti.LABEL_CONFIGURAZIONE, null); e' al primo livello
  296.                 protocolli = archiviCore.getProtocolli(request, session);
  297.                 if(tipoConfigurazione==null){
  298.                     tipoConfigurazione = ArchiveType.ALL.toString();
  299.                 }
  300.                 // al primo livello il link non ci vuole
  301.                 //urlTitle = ArchiviCostanti.SERVLET_NAME_ARCHIVI_EXPORT+"?"+ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_TIPO+"="+ArchiveType.CONFIGURAZIONE.name();
  302.                 break;
  303.             default:
  304.                 throw new Exception("Archive type ["+servletSourceExport+"] non supportato");
  305.             }
  306.            
  307.            
  308.            
  309.             // Eventuale PostBack element name che ha scaturito l'evento
  310.             String postBackElementName = archiviHelper.getPostBackElementName();
  311.            

  312.                    
  313.             // protocolli disponibili compatibili con la sorgente degli oggetti selezionati
  314. //          if(protocolli.size()>1){
  315. //              protocolli = new ArrayList<>();
  316. //              protocolli.add(ArchiviCostanti.PARAMETRO_ARCHIVI_PROTOCOLLO_UNDEFINDED);
  317. //              protocolli.addAll(archiviCore.getProtocolli());
  318. //          }
  319. //          this.protocollo = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_PROTOCOLLO);
  320. //          if("".equals(this.protocollo) || ArchiviCostanti.PARAMETRO_ARCHIVI_PROTOCOLLO_UNDEFINDED.equals(this.protocollo)){
  321. //              this.protocollo = null;
  322. //          }
  323.             // Volutamente per default si vogliono tutti!
  324. //          if(this.protocollo==null){
  325. //              this.protocollo = archiviCore.getProtocolloDefault();
  326. //          }
  327.             String protocollo = protocolli.get(0); // tanto poi selezionero' un export modes compatibile con tutti i protocolli presenti.
  328.            
  329.            
  330.             // export modes (compatibile con tutti i protocolli degli oggetti selezionati)
  331.             List<ExportMode> exportModes = exporterUtils.getExportModesCompatibleWithAllProtocol(protocolli, archiveType);
  332.             boolean errore = false;
  333.             String motivoErrore = null;
  334.             if(exportModes.size()<1){
  335.                 errore = true;
  336.                 if(protocolli.size() > 1)
  337.                     motivoErrore = "&Egrave; stata richiesta una export di oggetti appartenenti a protocolli ("+protocolli.toString()+") che non prevedono il medesimo formato di esportazione";
  338.                 else
  339.                     motivoErrore = "&Egrave; stata richiesta una export di oggetti appartenenti a protocolli ("+protocolli.toString()+") che non prevedono un formato di esportazione";
  340.             }
  341.             String exportMode = archiviHelper.getParameter(ArchiviCostanti.PARAMETRO_ARCHIVI_TIPOLOGIA_ARCHIVIO);
  342.             if(exportMode!=null){
  343.                 // verifico che esista nei modes disponibili per i protocolli selezionati
  344.                 if(exportModes.contains(new ExportMode(exportMode))==false){
  345.                     exportMode = null;
  346.                 }
  347.             }
  348.             if(exportMode==null && !errore){
  349.                 if(exportModes.contains(org.openspcoop2.protocol.basic.Costanti.OPENSPCOOP_EXPORT_ARCHIVE_MODE)){
  350.                     exportMode = org.openspcoop2.protocol.basic.Costanti.OPENSPCOOP_EXPORT_ARCHIVE_MODE.toString();
  351.                 }else{
  352.                     exportMode = exportModes.get(0).toString();
  353.                 }
  354.             }
  355.            
  356.            
  357.        

  358.            
  359.            
  360.            
  361.             // Controllo se ho terminato di impostare le proprieta' e devo procedere con l'esportazione.
  362.             boolean fineSceltaOpzioniEsportazione = !archiviHelper.isEditModeInProgress()  &&
  363.                     (postBackElementName==null || "".equals(postBackElementName));
  364.             boolean configurationEnabled = ArchiveType.CONFIGURAZIONE.equals(archiveType) && !archiviCore.isExportArchive_configurazione_soloDumpCompleto();
  365.             boolean cascadeEnabled = !ArchiveType.CONFIGURAZIONE.equals(archiveType) && archiviCore.isCascadeEnabled(exportModes, exportMode);
  366.             boolean nonSonoPresentiScelteEsportazione = (exportModes.size()==1) && !cascadeEnabled && !configurationEnabled;
  367.             if( !errore &&
  368.                     ( fineSceltaOpzioniEsportazione ||  nonSonoPresentiScelteEsportazione )
  369.                 ) {
  370.                
  371.                 String send = ArchiviCostanti.SERVLET_NAME_PACKAGE_EXPORT+"?"+
  372.                         ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_TIPO+"="+servletSourceExport;
  373.                 // Identificativo TAB
  374.                 send = send + "&" + Costanti.PARAMETER_TAB_KEY +"=" + archiviHelper.getParameter(Costanti.PARAMETER_PREV_TAB_KEY);
  375.                 if(objToExport!=null && !"".equals(objToExport)){
  376.                     send = send + "&" + Costanti.PARAMETER_NAME_OBJECTS_FOR_REMOVE+"="+ objToExport;
  377.                 }
  378.                 if(protocollo!=null && !"".equals(protocollo)){
  379.                     send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_PROTOCOLLO+"="+ protocollo;
  380.                 }
  381.                 if(exportMode!=null && !"".equals(exportMode)){
  382.                     send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_TIPOLOGIA_ARCHIVIO+"="+ exportMode;
  383.                 }
  384.                 if(tipoConfigurazione!=null && !"".equals(tipoConfigurazione)){
  385.                     send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_TIPO_DUMP+"="+ tipoConfigurazione;
  386.                 }
  387.                 if(cascadeEnabled){
  388.                     send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_POLICY_CONFIG+"="+ (ServletUtils.isCheckBoxEnabled(cascadePolicyConfig)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  389.                     send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_PLUGIN_CONFIG+"="+ (ServletUtils.isCheckBoxEnabled(cascadePluginConfig)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  390.                     send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE+"="+ (ServletUtils.isCheckBoxEnabled(cascade)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  391.                     ArchiveCascadeConfiguration cascadeConfig = archiviCore.getCascadeConfig(exportModes, exportMode);
  392.                     if(cascadeConfig.isCascadePdd()){
  393.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_PDD+"="+ (ServletUtils.isCheckBoxEnabled(cascadePdd)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  394.                     }
  395.                     if(cascadeConfig.isCascadeRuoli()){
  396.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_RUOLI+"="+ (ServletUtils.isCheckBoxEnabled(cascadeRuoli)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  397.                     }
  398.                     if(cascadeConfig.isCascadeScope()){
  399.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_SCOPE+"="+ (ServletUtils.isCheckBoxEnabled(cascadeScope)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  400.                     }
  401.                     if(cascadeConfig.isCascadeSoggetti()){
  402.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_SOGGETTI+"="+ (ServletUtils.isCheckBoxEnabled(cascadeSoggetti)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  403.                     }
  404.                     if(cascadeConfig.isCascadeServiziApplicativi()){
  405.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_SERVIZI_APPLICATIVI+"="+ (ServletUtils.isCheckBoxEnabled(cascadeServiziApplicativi)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  406.                     }
  407.                     if(cascadeConfig.isCascadePorteDelegate()){
  408.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_PORTE_DELEGATE+"="+ (ServletUtils.isCheckBoxEnabled(cascadePorteDelegate)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  409.                     }
  410.                     if(cascadeConfig.isCascadePorteApplicative()){
  411.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_PORTE_APPLICATIVE+"="+ (ServletUtils.isCheckBoxEnabled(cascadePorteApplicative)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  412.                     }
  413.                     if(cascadeConfig.isCascadeAccordoCooperazione()){
  414.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_ACCORDI_COOPERAZIONE+"="+ (ServletUtils.isCheckBoxEnabled(cascadeAccordiCooperazione)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  415.                     }
  416.                     if(cascadeConfig.isCascadeAccordoServizioParteComune()){
  417.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_ACCORDI_SERVIZIO_PARTE_COMUNE+"="+ (ServletUtils.isCheckBoxEnabled(cascadeAccordiServizioParteComune)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  418.                     }
  419.                     if(cascadeConfig.isCascadeAccordoServizioComposto()){
  420.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_ACCORDI_SERVIZIO_COMPOSTO+"="+ (ServletUtils.isCheckBoxEnabled(cascadeAccordiServizioComposto)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  421.                     }
  422.                     if(cascadeConfig.isCascadeAccordoServizioParteSpecifica()){
  423.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_ACCORDI_SERVIZIO_PARTE_SPECIFICA+"="+ (ServletUtils.isCheckBoxEnabled(cascadeAccordiServizioParteSpecifica)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  424.                     }
  425.                     if(cascadeConfig.isCascadeFruizioni()){
  426.                         send = send + "&" + ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE_FRUIZIONI+"="+ (ServletUtils.isCheckBoxEnabled(cascadeFruizioni)?Costanti.CHECK_BOX_ENABLED:Costanti.CHECK_BOX_DISABLED);
  427.                     }
  428.                 }
  429.                 //System.out.println("invoke EXPORT ["+send+"]....");
  430.                 response.sendRedirect(send);
  431.                
  432.             }
  433.            
  434.            
  435.            
  436.             // Visualizzo form delle opzioni    
  437.                
  438.             archiviHelper.makeMenu();
  439.            
  440.            
  441.             // setto la barra del titolo    
  442.             if(provenienza!=null) {
  443.                 ServletUtils.setPageDataTitle(pd,
  444.                         provenienza,
  445.                         new Parameter(ArchiviCostanti.LABEL_ARCHIVI_EXPORT,urlTitle));
  446.             }
  447.             else {
  448.                 ServletUtils.setPageDataTitle(pd,
  449.                         new Parameter(ArchiviCostanti.LABEL_ARCHIVI_EXPORT,urlTitle));
  450.             }
  451.        
  452.             List<DataElement> dati = new ArrayList<>();
  453.            
  454.             // imposto grafica
  455.             dati.add(ServletUtils.getDataElementForEditModeFinished());

  456.             // init cascade
  457.             if(ServletUtils.isCheckBoxEnabled(cascade)
  458.                     &&
  459.                     (ArchiviCostanti.PARAMETRO_ARCHIVI_EXPORT_CASCADE.equals(postBackElementName) || ArchiviCostanti.PARAMETRO_ARCHIVI_TIPOLOGIA_ARCHIVIO.equals(postBackElementName)) ){
  460.                 cascadePdd = Costanti.CHECK_BOX_ENABLED;
  461.                 cascadeRuoli = Costanti.CHECK_BOX_ENABLED;
  462.                 cascadeScope = Costanti.CHECK_BOX_ENABLED;
  463.                 cascadeSoggetti = Costanti.CHECK_BOX_ENABLED;
  464.                 cascadeServiziApplicativi = Costanti.CHECK_BOX_ENABLED;
  465.                 cascadePorteDelegate = Costanti.CHECK_BOX_ENABLED;
  466.                 cascadePorteApplicative = Costanti.CHECK_BOX_ENABLED;
  467.                 cascadeAccordiCooperazione = Costanti.CHECK_BOX_ENABLED;
  468.                 cascadeAccordiServizioComposto = Costanti.CHECK_BOX_ENABLED;
  469.                 cascadeAccordiServizioParteComune = Costanti.CHECK_BOX_ENABLED;
  470.                 cascadeAccordiServizioParteSpecifica = Costanti.CHECK_BOX_ENABLED;
  471.                 cascadeFruizioni = Costanti.CHECK_BOX_ENABLED;
  472.             }
  473.            
  474.             archiviHelper.addExportToDati(dati, protocolli, protocollo,
  475.                     exportModes, exportMode,
  476.                     archiveType, objToExport,
  477.                     cascadePolicyConfig, cascadePluginConfig, cascade,tipoConfigurazione,
  478.                     cascadePdd,cascadeRuoli,cascadeScope,cascadeSoggetti,
  479.                     cascadeServiziApplicativi, cascadePorteDelegate, cascadePorteApplicative,
  480.                     cascadeAccordiCooperazione, cascadeAccordiServizioParteComune,
  481.                     cascadeAccordiServizioComposto,
  482.                     cascadeAccordiServizioParteSpecifica, cascadeFruizioni);
  483.                            
  484.            
  485.             pd.setDati(dati);

  486.             pd.setLabelBottoneInvia(ArchiviCostanti.LABEL_ARCHIVI_EXPORT);
  487.             pd.setDisabilitaAjaxStatusBottoneInvia();
  488.            
  489.             if(errore){
  490.                 pd.setMessage(motivoErrore);
  491.                
  492.                 pd.setMode(Costanti.DATA_ELEMENT_EDIT_MODE_DISABLE_NAME);
  493.                
  494.             }
  495.            
  496.             ServletUtils.setGeneralAndPageDataIntoSession(request, session, gd, pd);
  497.        
  498.             return ServletUtils.getStrutsForwardEditModeFinished(mapping, ArchiviCostanti.OBJECT_NAME_ARCHIVI_EXPORT,
  499.                     ArchiviCostanti.TIPO_OPERAZIONE_EXPORT);
  500.            
  501.         } catch (Exception e) {
  502.             return ServletUtils.getStrutsForwardError(ControlStationCore.getLog(), e, pd, request, session, gd, mapping,
  503.                     ArchiviCostanti.OBJECT_NAME_ARCHIVI_EXPORT,
  504.                     ArchiviCostanti.TIPO_OPERAZIONE_EXPORT);
  505.         }
  506.     }
  507.        

  508. }