ZIPWriteUtils.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.protocol.basic.archive;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipOutputStream;
- import org.openspcoop2.core.config.Configurazione;
- import org.openspcoop2.core.config.PortaApplicativa;
- import org.openspcoop2.core.config.PortaDelegata;
- import org.openspcoop2.core.config.ServizioApplicativo;
- import org.openspcoop2.core.config.driver.ExtendedInfoManager;
- import org.openspcoop2.core.constants.ProprietariProtocolProperty;
- import org.openspcoop2.core.id.IDAccordo;
- import org.openspcoop2.core.id.IDAccordoCooperazione;
- import org.openspcoop2.core.id.IDServizio;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.mapping.MappingErogazionePortaApplicativa;
- import org.openspcoop2.core.mapping.MappingFruizionePortaDelegata;
- import org.openspcoop2.core.registry.AccordoCooperazione;
- import org.openspcoop2.core.registry.AccordoServizioParteComune;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.registry.Azione;
- import org.openspcoop2.core.registry.Documento;
- import org.openspcoop2.core.registry.Fruitore;
- import org.openspcoop2.core.registry.Gruppo;
- import org.openspcoop2.core.registry.Operation;
- import org.openspcoop2.core.registry.PortType;
- import org.openspcoop2.core.registry.PortaDominio;
- import org.openspcoop2.core.registry.ProtocolProperty;
- import org.openspcoop2.core.registry.Resource;
- import org.openspcoop2.core.registry.Ruolo;
- import org.openspcoop2.core.registry.Scope;
- import org.openspcoop2.generic_project.exception.SerializerException;
- import org.openspcoop2.protocol.basic.Costanti;
- import org.openspcoop2.protocol.sdk.ProtocolException;
- import org.openspcoop2.protocol.sdk.archive.Archive;
- import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoCooperazione;
- import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioComposto;
- import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteComune;
- import org.openspcoop2.protocol.sdk.archive.ArchiveAccordoServizioParteSpecifica;
- import org.openspcoop2.protocol.sdk.archive.ArchiveActivePolicy;
- import org.openspcoop2.protocol.sdk.archive.ArchiveAllarme;
- import org.openspcoop2.protocol.sdk.archive.ArchiveAttributeAuthority;
- import org.openspcoop2.protocol.sdk.archive.ArchiveConfigurationPolicy;
- import org.openspcoop2.protocol.sdk.archive.ArchiveFruitore;
- import org.openspcoop2.protocol.sdk.archive.ArchiveGruppo;
- import org.openspcoop2.protocol.sdk.archive.ArchivePdd;
- import org.openspcoop2.protocol.sdk.archive.ArchivePluginArchivio;
- import org.openspcoop2.protocol.sdk.archive.ArchivePluginClasse;
- import org.openspcoop2.protocol.sdk.archive.ArchivePortaApplicativa;
- import org.openspcoop2.protocol.sdk.archive.ArchivePortaDelegata;
- import org.openspcoop2.protocol.sdk.archive.ArchiveRuolo;
- import org.openspcoop2.protocol.sdk.archive.ArchiveScope;
- import org.openspcoop2.protocol.sdk.archive.ArchiveServizioApplicativo;
- import org.openspcoop2.protocol.sdk.archive.ArchiveSoggetto;
- import org.openspcoop2.protocol.sdk.archive.ArchiveTokenPolicy;
- import org.openspcoop2.protocol.sdk.archive.ArchiveUrlInvocazioneRegola;
- import org.openspcoop2.protocol.sdk.constants.ArchiveVersion;
- import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
- import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
- import org.slf4j.Logger;
- /**
- * ZIPWriteUtils
- *
- * @author Poli Andrea (poli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class ZIPWriteUtils {
- protected Logger log = null;
-
- protected IRegistryReader registryReader;
- protected IConfigIntegrationReader configIntegrationReader;
- private org.openspcoop2.core.registry.utils.serializer.JaxbSerializer jaxbRegistrySerializer = null;
- private org.openspcoop2.core.config.utils.serializer.JaxbSerializer jaxbConfigSerializer = null;
- private org.openspcoop2.core.plugins.utils.serializer.JaxbSerializer jaxbPluginSerializer = null;
- private org.openspcoop2.core.controllo_traffico.utils.serializer.JaxbSerializer jaxbControlloTrafficoSerializer = null;
- private org.openspcoop2.core.allarmi.utils.serializer.JaxbSerializer jaxbAllarmeSerializer = null;
- private org.openspcoop2.core.registry.utils.CleanerOpenSPCoop2Extensions cleanerOpenSPCoop2ExtensionsRegistry = null;
- private org.openspcoop2.core.config.utils.CleanerOpenSPCoop2Extensions cleanerOpenSPCoop2ExtensionsConfig = null;
- private org.openspcoop2.core.plugins.utils.CleanerOpenSPCoop2Extensions cleanerOpenSPCoop2ExtensionsPlugin = null;
- private org.openspcoop2.core.controllo_traffico.utils.CleanerOpenSPCoop2Extensions cleanerOpenSPCoop2ExtensionsControlloTraffico = null;
- private org.openspcoop2.core.allarmi.utils.CleanerOpenSPCoop2Extensions cleanerOpenSPCoop2ExtensionsAllarme = null;
-
-
- public ZIPWriteUtils(Logger log,IRegistryReader registryReader,IConfigIntegrationReader configIntegrationReader) throws ProtocolException{
- this.log = log;
-
- this.registryReader = registryReader;
- this.configIntegrationReader = configIntegrationReader;
-
- this.jaxbRegistrySerializer = new org.openspcoop2.core.registry.utils.serializer.JaxbSerializer();
- this.jaxbConfigSerializer = new org.openspcoop2.core.config.utils.serializer.JaxbSerializer();
- this.jaxbPluginSerializer = new org.openspcoop2.core.plugins.utils.serializer.JaxbSerializer();
- this.jaxbControlloTrafficoSerializer = new org.openspcoop2.core.controllo_traffico.utils.serializer.JaxbSerializer();
- this.jaxbAllarmeSerializer = new org.openspcoop2.core.allarmi.utils.serializer.JaxbSerializer();
- this.cleanerOpenSPCoop2ExtensionsRegistry = new org.openspcoop2.core.registry.utils.CleanerOpenSPCoop2Extensions();
- this.cleanerOpenSPCoop2ExtensionsConfig = new org.openspcoop2.core.config.utils.CleanerOpenSPCoop2Extensions();
- this.cleanerOpenSPCoop2ExtensionsPlugin = new org.openspcoop2.core.plugins.utils.CleanerOpenSPCoop2Extensions();
- this.cleanerOpenSPCoop2ExtensionsControlloTraffico = new org.openspcoop2.core.controllo_traffico.utils.CleanerOpenSPCoop2Extensions();
- this.cleanerOpenSPCoop2ExtensionsAllarme = new org.openspcoop2.core.allarmi.utils.CleanerOpenSPCoop2Extensions();
-
- }
-
-
-
-
-
-
- // ---------- Marshall ----------------
-
- public void generateArchive(Archive archive,File file) throws ProtocolException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(file);
- generateArchive(archive,fout);
- fout.flush();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public void generateArchive(Archive archive,String fileName) throws ProtocolException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(fileName);
- generateArchive(archive,fout);
- fout.flush();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public byte[] generateArchive(Archive archive) throws ProtocolException{
- try{
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- generateArchive(archive,bout);
- bout.flush();
- bout.close();
- return bout.toByteArray();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }
- }
-
- private void write(ZipOutputStream zipOut,String elemento,Object idElemento,SerializationType serializationType,Object object) throws ProtocolException{
- try{
- Method method = null;
- byte[]bytes = null;
- switch (serializationType) {
- case REGISTRY:
- method = this.jaxbRegistrySerializer.getClass().getMethod("toByteArray", object.getClass());
- bytes = (byte[]) method.invoke(this.jaxbRegistrySerializer, object);
- break;
- case CONFIG:
- method = this.jaxbConfigSerializer.getClass().getMethod("toByteArray", object.getClass());
- bytes = (byte[]) method.invoke(this.jaxbConfigSerializer, object);
- break;
- case PLUGIN:
- method = this.jaxbPluginSerializer.getClass().getMethod("toByteArray", object.getClass());
- bytes = (byte[]) method.invoke(this.jaxbPluginSerializer, object);
- break;
- case CONTROLLO_TRAFFICO:
- method = this.jaxbControlloTrafficoSerializer.getClass().getMethod("toByteArray", object.getClass());
- bytes = (byte[]) method.invoke(this.jaxbControlloTrafficoSerializer, object);
- break;
- case ALLARME:
- method = this.jaxbAllarmeSerializer.getClass().getMethod("toByteArray", object.getClass());
- bytes = (byte[]) method.invoke(this.jaxbAllarmeSerializer, object);
- break;
- }
- if(bytes!=null) {
- zipOut.write(bytes);
- }
- }catch(Exception e){
- String xml = null;
- try{
- Method method = object.getClass().getMethod("toXml_Jaxb");
- xml = (String) method.invoke(object);
- }catch(Exception eDebug){
- this.log.error("Errore durante il recupero della struttura xml: "+eDebug,eDebug);
- throw new ProtocolException("["+elemento+"]["+idElemento+"]: "+e.getMessage(),e);
- }
- throw new ProtocolException("["+elemento+"]["+idElemento+"] ("+xml+"): "+e.getMessage(),e);
- }
- }
-
- public void generateArchive(Archive archive,OutputStream out) throws ProtocolException{
-
- ZipOutputStream zipOut = null;
- try{
- zipOut = new ZipOutputStream(out);
- String rootPackageDir = "";
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- rootPackageDir = Costanti.OPENSPCOOP2_ARCHIVE_ROOT_DIR+File.separatorChar;
-
- // ExtendedInfoManager
- ExtendedInfoManager extendedInfoManager = ExtendedInfoManager.getInstance();
-
- // version
- String nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_VERSION_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- zipOut.write(ArchiveVersion.getContentFileVersion(org.openspcoop2.utils.Costanti.OPENSPCOOP2_PRODUCT_VERSION).getBytes());
-
- // configurazione
- if(archive.getConfigurazionePdD()!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_CONFIGURAZIONE_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_CONFIGURAZIONE_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- Configurazione configurazionePdD = archive.getConfigurazionePdD();
- while(configurazionePdD.sizeGenericPropertiesList()>0) {
- configurazionePdD.removeGenericProperties(0); // le generic properties non sono tutte da esportare. Ad es. le informazioni sulla installazione no. Le altre sono gestite sotto come token policy
- }
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(configurazionePdD);
- write(zipOut, "ConfigurazionePdD", "", SerializationType.CONFIG, configurazionePdD);
- }
-
- // configurazione - url di invocazione
- if(archive.getConfigurazionePdD_urlInvocazione()!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_URL_INVOCAZIONE_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_URL_INVOCAZIONE_CONFIG_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.config.ConfigurazioneUrlInvocazione configurazioneUrlInvocazione = archive.getConfigurazionePdD_urlInvocazione();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(configurazioneUrlInvocazione);
- write(zipOut, "ConfigurazionePdD_UrlInvocazione", "", SerializationType.CONFIG, configurazioneUrlInvocazione);
- }
-
- // configurazione - url di invocazione - regole
- if(archive.getConfigurazionePdD_urlInvocazione_regole()!=null && archive.getConfigurazionePdD_urlInvocazione_regole().size()>0){
- for (int i = 0; i < archive.getConfigurazionePdD_urlInvocazione_regole().size(); i++) {
- ArchiveUrlInvocazioneRegola archiveUrlRegola = archive.getConfigurazionePdD_urlInvocazione_regole().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_URL_INVOCAZIONE_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_URL_INVOCAZIONE_REGOLE_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveUrlRegola.getNome())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.config.ConfigurazioneUrlInvocazioneRegola regola = archiveUrlRegola.getRegola();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(regola);
- write(zipOut, "ConfigurazionePdD_UrlInvocazione_regola", archiveUrlRegola.getNome(), SerializationType.CONFIG, regola);
- }
- }
-
- // extendedConfigurazione
- if(archive.getConfigurazionePdD()!=null && archive.getConfigurazionePdD().sizeExtendedInfoList()>0){
- String prefix = Costanti.OPENSPCOOP2_ARCHIVE_CONFIGURAZIONE_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_EXTENDED_DIR+File.separatorChar;
- for (int i = 0; i < archive.getConfigurazionePdD().sizeExtendedInfoList(); i++) {
- nomeFile = prefix+Costanti.OPENSPCOOP2_ARCHIVE_EXTENDED_FILE_NAME+(i+1)+Costanti.OPENSPCOOP2_ARCHIVE_EXTENDED_FILE_EXT;
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- String className = null;
- try{
- Object o = archive.getConfigurazionePdD().getExtendedInfo(i);
- className = o.getClass().getName();
- zipOut.write(extendedInfoManager.newInstanceExtendedInfoConfigurazione().serialize(this.log,archive.getConfigurazionePdD(),o));
- }catch(Exception e){
- throw new ProtocolException("[ConfigurazionePdDExt][Posizione-"+i+"] ("+className+"): "+e.getMessage(),e);
- }
- }
- }
-
- // controlloTraffico
- if(archive.getControlloTraffico_configurazione()!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_CONTROLLO_TRAFFICO_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_CONTROLLO_TRAFFICO_CONFIGURAZIONE_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.controllo_traffico.ConfigurazioneGenerale configurazioneCC = archive.getControlloTraffico_configurazione();
- this.cleanerOpenSPCoop2ExtensionsControlloTraffico.clean(configurazioneCC);
- write(zipOut, "ControlloTraffico_Configurazione", "", SerializationType.CONTROLLO_TRAFFICO, configurazioneCC);
- }
-
- // controlloTraffico (configurationPolicy)
- if(archive.getControlloTraffico_configurationPolicies()!=null && archive.getControlloTraffico_configurationPolicies().size()>0){
- for (int i = 0; i < archive.getControlloTraffico_configurationPolicies().size(); i++) {
- ArchiveConfigurationPolicy archiveCC = archive.getControlloTraffico_configurationPolicies().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_CONTROLLO_TRAFFICO_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_CONTROLLO_TRAFFICO_CONFIG_POLICY_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveCC.getNomePolicy())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.controllo_traffico.ConfigurazionePolicy policy = archiveCC.getPolicy();
- this.cleanerOpenSPCoop2ExtensionsControlloTraffico.clean(policy);
- write(zipOut, "ControlloTraffico_ConfigurazionePolicy", archiveCC.getNomePolicy(), SerializationType.CONTROLLO_TRAFFICO, policy);
- }
- }
-
- // controlloTraffico (activePolicy)
- if(archive.getControlloTraffico_activePolicies()!=null && archive.getControlloTraffico_activePolicies().size()>0){
- for (int i = 0; i < archive.getControlloTraffico_activePolicies().size(); i++) {
- ArchiveActivePolicy archiveCC = archive.getControlloTraffico_activePolicies().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_CONTROLLO_TRAFFICO_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_CONTROLLO_TRAFFICO_ACTIVE_POLICY_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveCC.getPolicy().getIdActivePolicy())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.controllo_traffico.AttivazionePolicy policy = archiveCC.getPolicy();
- this.cleanerOpenSPCoop2ExtensionsControlloTraffico.clean(policy);
- write(zipOut, "ControlloTraffico_AttivazionePolicy", archiveCC.getPolicy().getIdActivePolicy(), SerializationType.CONTROLLO_TRAFFICO, policy);
- }
- }
-
- // allarmi
- if(archive.getAllarmi()!=null && archive.getAllarmi().size()>0){
- for (int i = 0; i < archive.getAllarmi().size(); i++) {
- ArchiveAllarme archiveAllarme = archive.getAllarmi().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ALLARMI_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveAllarme.getAllarme().getNome())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.allarmi.Allarme allarme = archiveAllarme.getAllarme();
- this.cleanerOpenSPCoop2ExtensionsAllarme.clean(allarme);
- write(zipOut, "Allarme", archiveAllarme.getAllarme().getNome(), SerializationType.ALLARME, allarme);
- }
- }
-
- // tokenPolicy (validation)
- if(archive.getToken_validation_policies()!=null && archive.getToken_validation_policies().size()>0){
- for (int i = 0; i < archive.getToken_validation_policies().size(); i++) {
- ArchiveTokenPolicy archiveTP = archive.getToken_validation_policies().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_TOKEN_POLICIES_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_TOKEN_POLICIES_VALIDATION_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveTP.getNomePolicy())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.config.GenericProperties policy = archiveTP.getPolicy();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(policy);
- write(zipOut, "TokenPolicy_Validation", archiveTP.getNomePolicy(), SerializationType.CONFIG, policy);
- }
- }
-
- // tokenPolicy (retrieve)
- if(archive.getToken_retrieve_policies()!=null && archive.getToken_retrieve_policies().size()>0){
- for (int i = 0; i < archive.getToken_retrieve_policies().size(); i++) {
- ArchiveTokenPolicy archiveTP = archive.getToken_retrieve_policies().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_TOKEN_POLICIES_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_TOKEN_POLICIES_RETRIEVE_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveTP.getNomePolicy())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.config.GenericProperties policy = archiveTP.getPolicy();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(policy);
- write(zipOut, "TokenPolicy_Retrieve", archiveTP.getNomePolicy(), SerializationType.CONFIG, policy);
- }
- }
-
- // attribute authority
- if(archive.getAttributeAuthorities()!=null && archive.getAttributeAuthorities().size()>0){
- for (int i = 0; i < archive.getAttributeAuthorities().size(); i++) {
- ArchiveAttributeAuthority archiveAA = archive.getAttributeAuthorities().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ATTRIBUTE_AUTHORITY_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ATTRIBUTE_AUTHORITY_RETRIEVE_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveAA.getNomePolicy())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.config.GenericProperties policy = archiveAA.getPolicy();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(policy);
- write(zipOut, "AttributeAuthority_Retrieve", archiveAA.getNomePolicy(), SerializationType.CONFIG, policy);
- }
- }
-
- // plugins (classi)
- if(archive.getPlugin_classi()!=null && archive.getPlugin_classi().size()>0){
- for (int i = 0; i < archive.getPlugin_classi().size(); i++) {
- ArchivePluginClasse archivePC = archive.getPlugin_classi().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_PLUGINS_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_PLUGINS_CLASSI_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archivePC.getTipoPlugin())+"_"+ZIPUtils.convertNameToSistemaOperativoCompatible(archivePC.getTipo())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.plugins.Plugin plugin = archivePC.getPlugin();
- this.cleanerOpenSPCoop2ExtensionsPlugin.clean(plugin);
- write(zipOut, "Plugin_Classe", archivePC.getTipoPlugin()+"_"+archivePC.getTipo(), SerializationType.PLUGIN, plugin);
- }
- }
-
- // plugins (archivi)
- if(archive.getPlugin_archivi()!=null && archive.getPlugin_archivi().size()>0){
- for (int i = 0; i < archive.getPlugin_archivi().size(); i++) {
- ArchivePluginArchivio archivePA = archive.getPlugin_archivi().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_PLUGINS_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_PLUGINS_ARCHIVI_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archivePA.getNome())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- org.openspcoop2.core.config.RegistroPlugin plugin = archivePA.getPlugin();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(plugin);
- write(zipOut, "Plugin_Archivio", archivePA.getNome(), SerializationType.CONFIG, plugin);
- }
- }
-
- // porteDominio
- if(archive.getPdd()!=null && archive.getPdd().size()>0){
- for (int i = 0; i < archive.getPdd().size(); i++) {
- ArchivePdd archivePdd = archive.getPdd().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_PORTE_DOMINIO_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archivePdd.getNomePdd())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- PortaDominio pdd = archivePdd.getPortaDominio();
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(pdd);
- write(zipOut, "PortaDominio", archivePdd.getNomePdd(), SerializationType.REGISTRY, pdd);
- }
- }
- // gruppi
- if(archive.getGruppi()!=null && archive.getGruppi().size()>0){
- for (int i = 0; i < archive.getGruppi().size(); i++) {
- ArchiveGruppo archiveGruppo = archive.getGruppi().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_GRUPPI_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveGruppo.getIdGruppo().getNome())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- Gruppo gruppo = archiveGruppo.getGruppo();
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(gruppo);
- write(zipOut, "Gruppo", archiveGruppo.getIdGruppo().getNome(), SerializationType.REGISTRY, gruppo);
- }
- }
-
- // ruoli
- if(archive.getRuoli()!=null && archive.getRuoli().size()>0){
- for (int i = 0; i < archive.getRuoli().size(); i++) {
- ArchiveRuolo archiveRuolo = archive.getRuoli().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_RUOLI_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveRuolo.getIdRuolo().getNome())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- Ruolo ruolo = archiveRuolo.getRuolo();
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(ruolo);
- write(zipOut, "Ruolo", archiveRuolo.getIdRuolo().getNome(), SerializationType.REGISTRY, ruolo);
- }
- }
-
- // scope
- if(archive.getScope()!=null && archive.getScope().size()>0){
- for (int i = 0; i < archive.getScope().size(); i++) {
- ArchiveScope archiveScope = archive.getScope().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_SCOPE_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveScope.getIdScope().getNome())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootPackageDir+nomeFile));
- Scope scope = archiveScope.getScope();
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(scope);
- write(zipOut, "Scope", archiveScope.getIdScope().getNome(), SerializationType.REGISTRY, scope);
- }
- }
-
- // soggetti
- Map<String, Archive> archiveMapIntoSoggetti = archiveMapIntoSoggetti(archive);
- List<String> listaSoggetti = new ArrayList<>();
- listaSoggetti.addAll(archiveMapIntoSoggetti.keySet());
- java.util.Collections.sort(listaSoggetti);
- for (String idSoggettoAsString : listaSoggetti) {
-
- IDSoggetto idSoggetto = new IDSoggetto(idSoggettoAsString.split("/")[0], idSoggettoAsString.split("/")[1]);
-
- Archive archiveListaOggettiSoggetto = archiveMapIntoSoggetti.get(idSoggettoAsString);
-
- // il converName sui soggetti serve a poco, visto che devono essere simpleName (solo caratteri e numeri)
- String rootDir = rootPackageDir + Costanti.OPENSPCOOP2_ARCHIVE_SOGGETTI_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(idSoggetto.getTipo())+"_"+
- ZIPUtils.convertNameToSistemaOperativoCompatible(idSoggetto.getNome())+File.separatorChar;
-
- // Dati Identificativi
- String datiIdentificativiSoggetto = idSoggetto.toFormatString();
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_SOGGETTI_FILE_NAME_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(datiIdentificativiSoggetto.getBytes());
-
- // definizione soggetto
- if(archiveListaOggettiSoggetto.getSoggetti()!=null && archiveListaOggettiSoggetto.getSoggetti().size()>0){
-
- // puo' esistere al massimo una definizione del soggetto, avendo fatto una group by logica.
- ArchiveSoggetto archiveSoggetto = archiveListaOggettiSoggetto.getSoggetti().get(0);
-
- if(archiveSoggetto.getSoggettoRegistro()!=null){
-
- // protocolProperties
- Map<String, byte[]> protocolPropertiesList = new HashMap<>();
- for (ProtocolProperty pp : archiveSoggetto.getSoggettoRegistro().getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.SOGGETTO;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
-
- // Soggetto
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_SOGGETTI_FILE_NAME_REGISTRO;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- org.openspcoop2.core.registry.Soggetto soggettoRegistro = archiveSoggetto.getSoggettoRegistro();
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(soggettoRegistro);
- write(zipOut, "SoggettoRegistro", archiveSoggetto.getIdSoggetto(), SerializationType.REGISTRY, soggettoRegistro);
-
- // protocolProperties
- if(protocolPropertiesList.size()>0){
- int indexPP = 1;
- for (String id : protocolPropertiesList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(protocolPropertiesList.get(id));
-
- indexPP++;
- }
- }
- }
- if(archiveSoggetto.getSoggettoConfigurazione()!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_SOGGETTI_FILE_NAME_CONFIG;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- org.openspcoop2.core.config.Soggetto soggettoConfigurazione = archiveSoggetto.getSoggettoConfigurazione();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(soggettoConfigurazione);
- write(zipOut, "SoggettoConfigurazione", archiveSoggetto.getIdSoggetto(), SerializationType.CONFIG, soggettoConfigurazione);
- }
- }
-
- // serviziApplicativi
- if(archiveListaOggettiSoggetto.getServiziApplicativi()!=null && archiveListaOggettiSoggetto.getServiziApplicativi().size()>0){
- for (int i = 0; i < archiveListaOggettiSoggetto.getServiziApplicativi().size(); i++) {
- ArchiveServizioApplicativo archiveServizioApplicativo = archiveListaOggettiSoggetto.getServiziApplicativi().get(i);
-
- // protocolProperties
- Map<String, byte[]> protocolPropertiesList = new HashMap<>();
- for (org.openspcoop2.core.config.ProtocolProperty pp : archiveServizioApplicativo.getServizioApplicativo().getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.SERVIZIO_APPLICATIVO;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
-
- // Applicativo
- String nomeFileSA = Costanti.OPENSPCOOP2_ARCHIVE_SERVIZI_APPLICATIVI_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveServizioApplicativo.getIdServizioApplicativo().getNome());
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFileSA+".xml"));
- ServizioApplicativo servizioApplicativo = archiveServizioApplicativo.getServizioApplicativo();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(servizioApplicativo);
- write(zipOut, "ServizioApplicativo", archiveServizioApplicativo.getIdServizioApplicativo(), SerializationType.CONFIG, servizioApplicativo);
-
- // protocolProperties
- if(protocolPropertiesList.size()>0){
- int indexPP = 1;
- for (String id : protocolPropertiesList.keySet()) {
-
- String nomeFilePP = nomeFileSA+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFilePP));
- zipOut.write(id.getBytes());
-
- nomeFilePP = nomeFileSA+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFilePP));
- zipOut.write(protocolPropertiesList.get(id));
-
- indexPP++;
- }
- }
- }
- }
-
- // porteDelegate
- if(archiveListaOggettiSoggetto.getPorteDelegate()!=null && archiveListaOggettiSoggetto.getPorteDelegate().size()>0){
- for (int i = 0; i < archiveListaOggettiSoggetto.getPorteDelegate().size(); i++) {
-
- // portaDelegata
- ArchivePortaDelegata archivePortaDelegata = archiveListaOggettiSoggetto.getPorteDelegate().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_PORTE_DELEGATE_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archivePortaDelegata.getIdPortaDelegata().getNome())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- PortaDelegata portaDelegata = archivePortaDelegata.getPortaDelegata();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(portaDelegata);
- write(zipOut, "PortaDelegata", archivePortaDelegata.getIdPortaDelegata(), SerializationType.CONFIG, portaDelegata);
-
- // extended porteDelegata
- if(archivePortaDelegata.getPortaDelegata()!=null && archivePortaDelegata.getPortaDelegata().sizeExtendedInfoList()>0){
- String prefix = Costanti.OPENSPCOOP2_ARCHIVE_PORTE_DELEGATE_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_EXTENDED_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archivePortaDelegata.getIdPortaDelegata().getNome())+
- File.separatorChar;
- for (int k = 0; k < archivePortaDelegata.getPortaDelegata().sizeExtendedInfoList(); k++) {
- nomeFile = prefix+Costanti.OPENSPCOOP2_ARCHIVE_EXTENDED_FILE_NAME+(k+1)+Costanti.OPENSPCOOP2_ARCHIVE_EXTENDED_FILE_EXT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- String className = null;
- try{
- Object o = archivePortaDelegata.getPortaDelegata().getExtendedInfo(k);
- className = o.getClass().getName();
- zipOut.write(extendedInfoManager.newInstanceExtendedInfoPortaDelegata().serialize(this.log,archivePortaDelegata.getPortaDelegata(),o));
- }catch(Exception e){
- throw new ProtocolException("[PortaDelegataExt]["+archivePortaDelegata.getIdPortaDelegata()+"][Posizione-"+i+"] ("+className+"): "+e.getMessage(),e);
- }
- }
- }
- }
- }
-
- // porteApplicative
- if(archiveListaOggettiSoggetto.getPorteApplicative()!=null && archiveListaOggettiSoggetto.getPorteApplicative().size()>0){
- for (int i = 0; i < archiveListaOggettiSoggetto.getPorteApplicative().size(); i++) {
-
- // portaApplicativa
- ArchivePortaApplicativa archivePortaApplicativa = archiveListaOggettiSoggetto.getPorteApplicative().get(i);
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_PORTE_APPLICATIVE_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archivePortaApplicativa.getIdPortaApplicativa().getNome())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- PortaApplicativa portaApplicativa = archivePortaApplicativa.getPortaApplicativa();
- this.cleanerOpenSPCoop2ExtensionsConfig.clean(portaApplicativa);
- write(zipOut, "PortaApplicativa", archivePortaApplicativa.getIdPortaApplicativa(), SerializationType.CONFIG, portaApplicativa);
-
- // extended portaApplicativa
- if(archivePortaApplicativa.getPortaApplicativa()!=null && archivePortaApplicativa.getPortaApplicativa().sizeExtendedInfoList()>0){
- String prefix = Costanti.OPENSPCOOP2_ARCHIVE_PORTE_APPLICATIVE_DIR+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_EXTENDED_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archivePortaApplicativa.getIdPortaApplicativa().getNome())+
- File.separatorChar;
- for (int k = 0; k < archivePortaApplicativa.getPortaApplicativa().sizeExtendedInfoList(); k++) {
- nomeFile = prefix+Costanti.OPENSPCOOP2_ARCHIVE_EXTENDED_FILE_NAME+(k+1)+Costanti.OPENSPCOOP2_ARCHIVE_EXTENDED_FILE_EXT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- String className = null;
- try{
- Object o = archivePortaApplicativa.getPortaApplicativa().getExtendedInfo(k);
- className = o.getClass().getName();
- zipOut.write(extendedInfoManager.newInstanceExtendedInfoPortaApplicativa().serialize(this.log,archivePortaApplicativa.getPortaApplicativa(),o));
- }catch(Exception e){
- throw new ProtocolException("[PortaApplicativaExt]["+archivePortaApplicativa.getIdPortaApplicativa()+"][Posizione-"+i+"] ("+className+"): "+e.getMessage(),e);
- }
- }
- }
- }
- }
-
- // accordiServizioParteComune
- if(archiveListaOggettiSoggetto.getAccordiServizioParteComune()!=null && archiveListaOggettiSoggetto.getAccordiServizioParteComune().size()>0){
- for (int i = 0; i < archiveListaOggettiSoggetto.getAccordiServizioParteComune().size(); i++) {
- ArchiveAccordoServizioParteComune archiveAccordo = archiveListaOggettiSoggetto.getAccordiServizioParteComune().get(i);
- AccordoServizioParteComune accordo = archiveAccordo.getAccordoServizioParteComune();
- IDAccordo idAccordo = archiveAccordo.getIdAccordoServizioParteComune();
- this.saveAccordo(accordo, idAccordo, false, rootDir, zipOut);
- }
- }
-
- // accordiServizioParteSpecifica
- Map<String, String> map_IdApsScritti_nomeFileSystem = new HashMap<>();
- if(archiveListaOggettiSoggetto.getAccordiServizioParteSpecifica()!=null && archiveListaOggettiSoggetto.getAccordiServizioParteSpecifica().size()>0){
- for (int i = 0; i < archiveListaOggettiSoggetto.getAccordiServizioParteSpecifica().size(); i++) {
- ArchiveAccordoServizioParteSpecifica archiveAccordo = archiveListaOggettiSoggetto.getAccordiServizioParteSpecifica().get(i);
- AccordoServizioParteSpecifica accordo = archiveAccordo.getAccordoServizioParteSpecifica();
- IDServizio idAccordo = archiveAccordo.getIdAccordoServizioParteSpecifica();
- this.saveAccordo(accordo, idAccordo, archiveAccordo.getMappingPorteApplicativeAssociate(), rootDir, zipOut, map_IdApsScritti_nomeFileSystem);
- }
- }
-
- // accordiCooperazione
- if(archiveListaOggettiSoggetto.getAccordiCooperazione()!=null && archiveListaOggettiSoggetto.getAccordiCooperazione().size()>0){
- for (int i = 0; i < archiveListaOggettiSoggetto.getAccordiCooperazione().size(); i++) {
- ArchiveAccordoCooperazione archiveAccordo = archiveListaOggettiSoggetto.getAccordiCooperazione().get(i);
- AccordoCooperazione accordo = archiveAccordo.getAccordoCooperazione();
- IDAccordoCooperazione idAccordo = archiveAccordo.getIdAccordoCooperazione();
- this.saveAccordo(accordo, idAccordo, rootDir, zipOut);
- }
- }
-
- // accordiServizioComposto
- if(archiveListaOggettiSoggetto.getAccordiServizioComposto()!=null && archiveListaOggettiSoggetto.getAccordiServizioComposto().size()>0){
- for (int i = 0; i < archiveListaOggettiSoggetto.getAccordiServizioComposto().size(); i++) {
- ArchiveAccordoServizioParteComune archiveAccordo = archiveListaOggettiSoggetto.getAccordiServizioComposto().get(i);
- AccordoServizioParteComune accordo = archiveAccordo.getAccordoServizioParteComune();
- IDAccordo idAccordo = archiveAccordo.getIdAccordoServizioParteComune();
- this.saveAccordo(accordo, idAccordo, true, rootDir, zipOut);
- }
- }
- // accordiFruitori
- if(archiveListaOggettiSoggetto.getAccordiFruitori()!=null && archiveListaOggettiSoggetto.getAccordiFruitori().size()>0){
- for (int i = 0; i < archiveListaOggettiSoggetto.getAccordiFruitori().size(); i++) {
- ArchiveFruitore archiveFruitore = archiveListaOggettiSoggetto.getAccordiFruitori().get(i);
-
- String dirAsps = null;
-
- String idAps = archiveFruitore.getIdAccordoServizioParteSpecifica().getNome()+" "+archiveFruitore.getIdAccordoServizioParteSpecifica().getVersione();
- if(map_IdApsScritti_nomeFileSystem.containsKey(idAps)==false){
-
- dirAsps=Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_SERVIZIO_PARTE_SPECIFICA_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveFruitore.getIdAccordoServizioParteSpecifica().getNome())+"_"+
- archiveFruitore.getIdAccordoServizioParteSpecifica().getVersione()+
- File.separatorChar;
-
- // serializzo identificativo accordo servizio parte specifica (servira' per il fruitore)
- nomeFile = dirAsps + Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- String identificativo = idAps;
- zipOut.write(identificativo.getBytes());
-
- map_IdApsScritti_nomeFileSystem.put(idAps,dirAsps);
- }
- else{
- dirAsps = map_IdApsScritti_nomeFileSystem.get(idAps);
- }
-
- Fruitore fruitore = archiveFruitore.getFruitore();
-
- // protocolProperties (devo rimuovere campo bytes)
- Map<String, byte[]> protocolPropertiesList = new HashMap<>();
- if(fruitore.sizeProtocolPropertyList()>0) {
- for (ProtocolProperty pp : fruitore.getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.FRUITORE;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
- }
-
- // il converName sui soggetti serve a poco, visto che devono essere simpleName (solo caratteri e numeri)
- // Fruitore
- String nomeFruitore = dirAsps +
- Costanti.OPENSPCOOP2_ARCHIVE_FRUITORE_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveFruitore.getIdSoggettoFruitore().getTipo())+"_"+
- ZIPUtils.convertNameToSistemaOperativoCompatible(archiveFruitore.getIdSoggettoFruitore().getNome());
-
- // Dati Identificativi fruitore
- String datiIdentificativiFruitore = archiveFruitore.getIdSoggettoFruitore().toFormatString();
- nomeFile = nomeFruitore+".id";
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(datiIdentificativiFruitore.getBytes());
-
- // fruitore.xml
- nomeFile = nomeFruitore+".xml";
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(fruitore);
- write(zipOut, "Fruitore", archiveFruitore.getIdSoggettoFruitore().toString()+" di "+
- archiveFruitore.getIdAccordoServizioParteSpecifica().toString(), SerializationType.REGISTRY, fruitore);
-
- // protocolProperties
- if(protocolPropertiesList.size()>0){
- int indexPP = 1;
- for (String id : protocolPropertiesList.keySet()) {
-
- nomeFile = nomeFruitore+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = nomeFruitore+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(protocolPropertiesList.get(id));
-
- indexPP++;
- }
- }
-
- // PortaDelegata Associata
- if(archiveFruitore.getMappingPorteDelegateAssociate()!=null){
- for (int j = 0; j < archiveFruitore.getMappingPorteDelegateAssociate().size(); j++) {
- String nomeFilePDAssociata = nomeFruitore+File.separatorChar+
- (j+1)+
- Costanti.OPENSPCOOP2_ARCHIVE_FRUITORE_MAPPING_PD_SUFFIX;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFilePDAssociata));
- MappingFruizionePortaDelegata mappingPortaDelegataAssociata = archiveFruitore.getMappingPorteDelegateAssociate().get(j);
- // Non serializzo l'ìd del servizio e l'id del fruiotre, poiche' sono gia' dentro la fruizione del servizio
- String id = mappingPortaDelegataAssociata.getNome() + " " +
- mappingPortaDelegataAssociata.getIdPortaDelegata().getNome() + " " +
- mappingPortaDelegataAssociata.isDefault()+ " " +
- mappingPortaDelegataAssociata.getDescrizione();
- zipOut.write(id.getBytes());
- }
- }
- }
- }
-
- }
-
- zipOut.flush();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }finally{
- try{
- if(zipOut!=null)
- zipOut.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- private Map<String, Archive> archiveMapIntoSoggetti(Archive archive) throws ProtocolException{
-
- Map<String, Archive> archiveMapIntoSoggetti = new HashMap<String, Archive>();
-
- // raccolgo soggetti
- if(archive.getSoggetti()!=null && archive.getSoggetti().size()>0){
- for (int i = 0; i < archive.getSoggetti().size(); i++) {
- ArchiveSoggetto archiveSoggetto = archive.getSoggetti().get(i);
- IDSoggetto idSoggetto = archiveSoggetto.getIdSoggetto();
- Archive archiveListaOggettiSoggetti = null;
- if(archiveMapIntoSoggetti.containsKey(idSoggetto.toString())){
- archiveListaOggettiSoggetti = archiveMapIntoSoggetti.remove(idSoggetto.toString());
- }
- else{
- archiveListaOggettiSoggetti = new Archive();
- }
- archiveListaOggettiSoggetti.getSoggetti().add(archiveSoggetto);
- archiveMapIntoSoggetti.put(idSoggetto.toString(), archiveListaOggettiSoggetti);
- }
- }
-
- // raccolgo serviziApplicativi
- if(archive.getServiziApplicativi()!=null && archive.getServiziApplicativi().size()>0){
- for (int i = 0; i < archive.getServiziApplicativi().size(); i++) {
- ArchiveServizioApplicativo archiveServizioApplicativo = archive.getServiziApplicativi().get(i);
- IDSoggetto idSoggetto = archiveServizioApplicativo.getIdSoggettoProprietario();
- Archive archiveListaOggettiSoggetti = null;
- if(archiveMapIntoSoggetti.containsKey(idSoggetto.toString())){
- archiveListaOggettiSoggetti = archiveMapIntoSoggetti.remove(idSoggetto.toString());
- }
- else{
- archiveListaOggettiSoggetti = new Archive();
- }
- archiveListaOggettiSoggetti.getServiziApplicativi().add(archiveServizioApplicativo);
- archiveMapIntoSoggetti.put(idSoggetto.toString(), archiveListaOggettiSoggetti);
- }
- }
-
- // raccolgo porteDelegate
- if(archive.getPorteDelegate()!=null && archive.getPorteDelegate().size()>0){
- for (int i = 0; i < archive.getPorteDelegate().size(); i++) {
- ArchivePortaDelegata archivePortaDelegata = archive.getPorteDelegate().get(i);
- IDSoggetto idSoggetto = archivePortaDelegata.getIdSoggettoProprietario();
- Archive archiveListaOggettiSoggetti = null;
- if(archiveMapIntoSoggetti.containsKey(idSoggetto.toString())){
- archiveListaOggettiSoggetti = archiveMapIntoSoggetti.remove(idSoggetto.toString());
- }
- else{
- archiveListaOggettiSoggetti = new Archive();
- }
- archiveListaOggettiSoggetti.getPorteDelegate().add(archivePortaDelegata);
- archiveMapIntoSoggetti.put(idSoggetto.toString(), archiveListaOggettiSoggetti);
- }
- }
-
- // raccolgo porteApplicative
- if(archive.getPorteApplicative()!=null && archive.getPorteApplicative().size()>0){
- for (int i = 0; i < archive.getPorteApplicative().size(); i++) {
- ArchivePortaApplicativa archivePortaApplicativa = archive.getPorteApplicative().get(i);
- IDSoggetto idSoggetto = archivePortaApplicativa.getIdSoggettoProprietario();
- Archive archiveListaOggettiSoggetti = null;
- if(archiveMapIntoSoggetti.containsKey(idSoggetto.toString())){
- archiveListaOggettiSoggetti = archiveMapIntoSoggetti.remove(idSoggetto.toString());
- }
- else{
- archiveListaOggettiSoggetti = new Archive();
- }
- archiveListaOggettiSoggetti.getPorteApplicative().add(archivePortaApplicativa);
- archiveMapIntoSoggetti.put(idSoggetto.toString(), archiveListaOggettiSoggetti);
- }
- }
-
- // raccolgo accordiServizioParteComune
- if(archive.getAccordiServizioParteComune()!=null && archive.getAccordiServizioParteComune().size()>0){
- for (int i = 0; i < archive.getAccordiServizioParteComune().size(); i++) {
- ArchiveAccordoServizioParteComune archiveAccordo = archive.getAccordiServizioParteComune().get(i);
- IDSoggetto idSoggetto = archiveAccordo.getIdSoggettoReferente();
- Archive archiveListaOggettiSoggetti = null;
- if(archiveMapIntoSoggetti.containsKey(idSoggetto.toString())){
- archiveListaOggettiSoggetti = archiveMapIntoSoggetti.remove(idSoggetto.toString());
- }
- else{
- archiveListaOggettiSoggetti = new Archive();
- }
- archiveListaOggettiSoggetti.getAccordiServizioParteComune().add(archiveAccordo);
- archiveMapIntoSoggetti.put(idSoggetto.toString(), archiveListaOggettiSoggetti);
- }
- }
-
- // raccolgo accordiServizioComposto
- if(archive.getAccordiServizioComposto()!=null && archive.getAccordiServizioComposto().size()>0){
- for (int i = 0; i < archive.getAccordiServizioComposto().size(); i++) {
- ArchiveAccordoServizioComposto archiveAccordo = archive.getAccordiServizioComposto().get(i);
- IDSoggetto idSoggetto = archiveAccordo.getIdSoggettoReferente();
- Archive archiveListaOggettiSoggetti = null;
- if(archiveMapIntoSoggetti.containsKey(idSoggetto.toString())){
- archiveListaOggettiSoggetti = archiveMapIntoSoggetti.remove(idSoggetto.toString());
- }
- else{
- archiveListaOggettiSoggetti = new Archive();
- }
- archiveListaOggettiSoggetti.getAccordiServizioComposto().add(archiveAccordo);
- archiveMapIntoSoggetti.put(idSoggetto.toString(), archiveListaOggettiSoggetti);
- }
- }
-
- // raccolgo accordiServizioParteSpecifica
- if(archive.getAccordiServizioParteSpecifica()!=null && archive.getAccordiServizioParteSpecifica().size()>0){
- for (int i = 0; i < archive.getAccordiServizioParteSpecifica().size(); i++) {
- ArchiveAccordoServizioParteSpecifica archiveAccordo = archive.getAccordiServizioParteSpecifica().get(i);
- IDSoggetto idSoggetto = archiveAccordo.getIdSoggettoErogatore();
- Archive archiveListaOggettiSoggetti = null;
- if(archiveMapIntoSoggetti.containsKey(idSoggetto.toString())){
- archiveListaOggettiSoggetti = archiveMapIntoSoggetti.remove(idSoggetto.toString());
- }
- else{
- archiveListaOggettiSoggetti = new Archive();
- }
- archiveListaOggettiSoggetti.getAccordiServizioParteSpecifica().add(archiveAccordo);
- archiveMapIntoSoggetti.put(idSoggetto.toString(), archiveListaOggettiSoggetti);
- }
- }
-
- // raccolgo accordiCooperazione
- if(archive.getAccordiCooperazione()!=null && archive.getAccordiCooperazione().size()>0){
- for (int i = 0; i < archive.getAccordiCooperazione().size(); i++) {
- ArchiveAccordoCooperazione archiveAccordo = archive.getAccordiCooperazione().get(i);
- IDSoggetto idSoggetto = archiveAccordo.getIdSoggettoReferente();
- Archive archiveListaOggettiSoggetti = null;
- if(archiveMapIntoSoggetti.containsKey(idSoggetto.toString())){
- archiveListaOggettiSoggetti = archiveMapIntoSoggetti.remove(idSoggetto.toString());
- }
- else{
- archiveListaOggettiSoggetti = new Archive();
- }
- archiveListaOggettiSoggetti.getAccordiCooperazione().add(archiveAccordo);
- archiveMapIntoSoggetti.put(idSoggetto.toString(), archiveListaOggettiSoggetti);
- }
- }
-
- // raccolgo fruizioni
- if(archive.getAccordiFruitori()!=null && archive.getAccordiFruitori().size()>0){
- for (int i = 0; i < archive.getAccordiFruitori().size(); i++) {
- ArchiveFruitore archiveFruitore = archive.getAccordiFruitori().get(i);
- IDSoggetto idSoggetto = archiveFruitore.getIdAccordoServizioParteSpecifica().getSoggettoErogatore();
- Archive archiveListaOggettiSoggetti = null;
- if(archiveMapIntoSoggetti.containsKey(idSoggetto.toString())){
- archiveListaOggettiSoggetti = archiveMapIntoSoggetti.remove(idSoggetto.toString());
- }
- else{
- archiveListaOggettiSoggetti = new Archive();
- }
- archiveListaOggettiSoggetti.getAccordiFruitori().add(archiveFruitore);
- archiveMapIntoSoggetti.put(idSoggetto.toString(), archiveListaOggettiSoggetti);
- }
- }
-
- return archiveMapIntoSoggetti;
- }
-
- private void saveAccordo(AccordoServizioParteComune accordo, IDAccordo idAccordo, boolean servizioComposto, String parentDir, ZipOutputStream zipOut) throws IOException, SerializerException, ProtocolException{
-
- String nomeAccordo = null;
- try{
- String nomeDefinizione = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_SERVIZIO_PARTE_COMUNE_FILE_NAME;
- nomeAccordo = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_SERVIZIO_PARTE_COMUNE_DIR;
- if(servizioComposto){
- nomeDefinizione = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_SERVIZIO_COMPOSTO_FILE_NAME;
- nomeAccordo = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_SERVIZIO_COMPOSTO_DIR;
- }
-
- String rootDir = parentDir + nomeAccordo+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(idAccordo.getNome())+"_"+
- idAccordo.getVersione()+File.separatorChar;
-
- // raccolta elementi
-
- byte[]wsdlInterfacciaDefinitoria = accordo.getByteWsdlDefinitorio();
- accordo.setByteWsdlDefinitorio(null);
- byte[]wsdlInterfacciaConcettuale = accordo.getByteWsdlConcettuale();
- accordo.setByteWsdlConcettuale(null);
- byte[]wsdlInterfacciaLogicaErogatore = accordo.getByteWsdlLogicoErogatore();
- accordo.setByteWsdlLogicoErogatore(null);
- byte[]wsdlInterfacciaLogicaFruitore = accordo.getByteWsdlLogicoFruitore();
- accordo.setByteWsdlLogicoFruitore(null);
-
- byte[]specificaConversazioneConcettuale = accordo.getByteSpecificaConversazioneConcettuale();
- accordo.setSpecificaConversazioneConcettuale(null);
- byte[]specificaConversazioneLogicaErogatore = accordo.getByteSpecificaConversazioneErogatore();
- accordo.setSpecificaConversazioneErogatore(null);
- byte[]specificaConversazioneLogicaFruitore = accordo.getByteSpecificaConversazioneFruitore();
- accordo.setSpecificaConversazioneFruitore(null);
-
- Map<String, byte[]> allegatiList = new HashMap<>();
- for (Documento documento : accordo.getAllegatoList()) {
- if(documento.getFile()==null){
- throw new ProtocolException("Allegato senza nome file");
- }
- if(documento.getByteContenuto()==null){
- throw new ProtocolException("Allegato["+documento.getFile()+"] senza contenuto");
- }
- if(documento.getTipo()==null){
- throw new ProtocolException("Allegato["+documento.getFile()+"] senza tipo");
- }
- String id = documento.getTipo()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+documento.getFile();
- allegatiList.put(id, documento.getByteContenuto());
- documento.setByteContenuto(null);
- }
-
- Map<String, byte[]> specificaSemiformaleList = new HashMap<>();
- for (Documento documento : accordo.getSpecificaSemiformaleList()) {
- if(documento.getFile()==null){
- throw new ProtocolException("SpecificaSemiformale senza nome file");
- }
- if(documento.getByteContenuto()==null){
- throw new ProtocolException("SpecificaSemiformale["+documento.getFile()+"] senza contenuto");
- }
- if(documento.getTipo()==null){
- throw new ProtocolException("SpecificaSemiformale["+documento.getFile()+"] senza tipo");
- }
- String id = documento.getTipo()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+documento.getFile();
- specificaSemiformaleList.put(id, documento.getByteContenuto());
- documento.setByteContenuto(null);
- }
-
- Map<String, byte[]> specificaCoordinamentoList = new HashMap<>();
- if(servizioComposto){
- for (Documento documento : accordo.getServizioComposto().getSpecificaCoordinamentoList()) {
- if(documento.getFile()==null){
- throw new ProtocolException("SpecificaCoordinamento senza nome file");
- }
- if(documento.getByteContenuto()==null){
- throw new ProtocolException("SpecificaCoordinamento["+documento.getFile()+"] senza contenuto");
- }
- if(documento.getTipo()==null){
- throw new ProtocolException("SpecificaCoordinamento["+documento.getFile()+"] senza tipo");
- }
- String id = documento.getTipo()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+documento.getFile();
- specificaCoordinamentoList.put(id, documento.getByteContenuto());
- documento.setByteContenuto(null);
- }
- }
-
- Map<String, byte[]> protocolPropertiesList = new HashMap<>();
- for (ProtocolProperty pp : accordo.getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.ACCORDO_SERVIZIO_PARTE_COMUNE;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
- if(accordo.sizeAzioneList()>0) {
- for (Azione az : accordo.getAzioneList()) {
- for (ProtocolProperty pp : az.getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties (azione:"+az.getNome()+") ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.AZIONE_ACCORDO;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+
- az.getNome()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+ // uso il nome dell'azione che e' univoco
- pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
- }
- }
- if(accordo.sizePortTypeList()>0) {
- for (PortType pt : accordo.getPortTypeList()) {
- for (ProtocolProperty pp : pt.getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties (pt:"+pt.getNome()+") ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.PORT_TYPE;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+
- pt.getNome()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+ // uso il nome del port type che e' univoco
- pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
- if(pt.sizeAzioneList()>0) {
- for (Operation op : pt.getAzioneList()) {
- for (ProtocolProperty pp : op.getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties (op:"+op.getNome()+") ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.OPERATION;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+
- op.getNome()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+ // uso il nome dell'operation che e' univoco
- pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
- }
- }
- }
- }
- if(accordo.sizeResourceList()>0) {
- for (Resource resource : accordo.getResourceList()) {
- for (ProtocolProperty pp : resource.getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties (resource:"+resource.getNome()+") ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.RESOURCE;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+
- resource.getNome()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+ // uso il nome della risorsa che e' univoco
- pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
- }
- }
-
- // id
- String nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- String identificativo = accordo.getNome()+" "+accordo.getVersione();
- zipOut.write(identificativo.getBytes());
-
- // definizione
- nomeFile = nomeDefinizione;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- // write(zipOut, nomeDefinizione, idAccordo, true, accordo); viene effettuato il catch di tutto il metodo saveAccordo
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(accordo); // NOTA: vengono eliminati anche tutti i campi contenenti bytes. Comunque li ho letti prima
- zipOut.write(this.jaxbRegistrySerializer.toByteArray(accordo));
-
- // wsdl
- if(wsdlInterfacciaDefinitoria!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_WSDL+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_WSDL_INTERFACCIA_DEFINITORIA;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(wsdlInterfacciaDefinitoria);
- }
- if(wsdlInterfacciaConcettuale!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_WSDL+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_WSDL_CONCETTUALE_WSDL;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(wsdlInterfacciaConcettuale);
- }
- if(wsdlInterfacciaLogicaErogatore!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_WSDL+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_WSDL_LOGICO_EROGATORE_WSDL;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(wsdlInterfacciaLogicaErogatore);
- }
- if(wsdlInterfacciaLogicaFruitore!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_WSDL+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_WSDL_LOGICO_FRUITORE_WSDL;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(wsdlInterfacciaLogicaFruitore);
- }
-
- // specificaConversazione
- if(specificaConversazioneConcettuale!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_CONVERSAZIONI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_SPECIFICA_CONVERSIONE_CONCETTUALE;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(specificaConversazioneConcettuale);
- }
- if(specificaConversazioneLogicaErogatore!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_CONVERSAZIONI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_SPECIFICA_CONVERSIONE_LOGICA_EROGATORE;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(specificaConversazioneLogicaErogatore);
- }
- if(specificaConversazioneLogicaFruitore!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_CONVERSAZIONI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_SPECIFICA_CONVERSIONE_LOGICA_FRUITORE;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(specificaConversazioneLogicaFruitore);
- }
-
- // Permit '.'
- List<Character> listCharacterPermit = new ArrayList<Character>();
- listCharacterPermit.add('.');
-
- // allegati
- if(allegatiList.size()>0){
- int index = 1;
- for (String id : allegatiList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_ALLEGATI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_ALLEGATI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(allegatiList.get(id));
-
- index++;
- }
- }
-
- // specificaSemiformale
- if(specificaSemiformaleList.size()>0){
- int index = 1;
- for (String id : specificaSemiformaleList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_SEMIFORMALI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_SEMIFORMALI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(specificaSemiformaleList.get(id));
-
- index++;
- }
- }
-
- // specificaCoordinamento
- if(servizioComposto){
- if(specificaCoordinamentoList.size()>0){
- int index = 1;
- for (String id : specificaCoordinamentoList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_COORDINAMENTO+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_COORDINAMENTO+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(specificaCoordinamentoList.get(id));
-
- index++;
- }
- }
- }
-
- // protocolProperties
- if(protocolPropertiesList.size()>0){
- int indexPP = 1;
- for (String id : protocolPropertiesList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(protocolPropertiesList.get(id));
-
- indexPP++;
- }
- }
-
- }catch(Exception e){
- String xml = null;
- try{
- xml = accordo.toXml();
- }catch(Exception eDebug){
- this.log.error("Errore durante il recupero della struttura xml: "+eDebug,eDebug);
- throw new ProtocolException("["+nomeAccordo+"]["+idAccordo+"]: "+e.getMessage(),e);
- }
- throw new ProtocolException("["+nomeAccordo+"]["+idAccordo+"] ("+xml+"): "+e.getMessage(),e);
- }
- }
-
- private void saveAccordo(AccordoServizioParteSpecifica accordo, IDServizio idServizio, List<MappingErogazionePortaApplicativa> mappingPorteApplicativeAssociate,
- String parentDir, ZipOutputStream zipOut,
- Map<String, String> map_IdApsScritti_nomeFileSystem) throws IOException, SerializerException, ProtocolException{
-
- try{
- String aspsDir = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_SERVIZIO_PARTE_SPECIFICA_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(idServizio.getTipo())+"_"+
- ZIPUtils.convertNameToSistemaOperativoCompatible(idServizio.getNome())+"_"+
- idServizio.getVersione()+File.separatorChar;
- String rootDir = parentDir + aspsDir;
-
- String keyMap = accordo.getNome()+" "+accordo.getVersione();
- map_IdApsScritti_nomeFileSystem.put(keyMap, aspsDir);
-
- // raccolta elementi
-
- byte[]wsdlInterfacciaImplementativaErogatore = accordo.getByteWsdlImplementativoErogatore();
- accordo.setByteWsdlImplementativoErogatore(null);
- byte[]wsdlInterfacciaImplementativaFruitore = accordo.getByteWsdlImplementativoFruitore();
- accordo.setByteWsdlImplementativoFruitore(null);
-
- Map<String, byte[]> allegatiList = new HashMap<>();
- for (Documento documento : accordo.getAllegatoList()) {
- if(documento.getFile()==null){
- throw new ProtocolException("Allegato senza nome file");
- }
- if(documento.getByteContenuto()==null){
- throw new ProtocolException("Allegato["+documento.getFile()+"] senza contenuto");
- }
- if(documento.getTipo()==null){
- throw new ProtocolException("Allegato["+documento.getFile()+"] senza tipo");
- }
- String id = documento.getTipo()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+documento.getFile();
- allegatiList.put(id, documento.getByteContenuto());
- documento.setByteContenuto(null);
- }
-
- Map<String, byte[]> specificaSemiformaleList = new HashMap<>();
- for (Documento documento : accordo.getSpecificaSemiformaleList()) {
- if(documento.getFile()==null){
- throw new ProtocolException("SpecificaSemiformale senza nome file");
- }
- if(documento.getByteContenuto()==null){
- throw new ProtocolException("SpecificaSemiformale["+documento.getFile()+"] senza contenuto");
- }
- if(documento.getTipo()==null){
- throw new ProtocolException("SpecificaSemiformale["+documento.getFile()+"] senza tipo");
- }
- String id = documento.getTipo()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+documento.getFile();
- specificaSemiformaleList.put(id, documento.getByteContenuto());
- documento.setByteContenuto(null);
- }
-
- Map<String, byte[]> specificaLivelloServizioList = new HashMap<>();
- for (Documento documento : accordo.getSpecificaLivelloServizioList()) {
- if(documento.getFile()==null){
- throw new ProtocolException("SpecificaLivelloServizio senza nome file");
- }
- if(documento.getByteContenuto()==null){
- throw new ProtocolException("SpecificaLivelloServizio["+documento.getFile()+"] senza contenuto");
- }
- if(documento.getTipo()==null){
- throw new ProtocolException("SpecificaLivelloServizio["+documento.getFile()+"] senza tipo");
- }
- String id = documento.getTipo()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+documento.getFile();
- specificaLivelloServizioList.put(id, documento.getByteContenuto());
- documento.setByteContenuto(null);
- }
-
- Map<String, byte[]> specificaSicurezzaList = new HashMap<>();
- for (Documento documento : accordo.getSpecificaSicurezzaList()) {
- if(documento.getFile()==null){
- throw new ProtocolException("SpecificaSicurezza senza nome file");
- }
- if(documento.getByteContenuto()==null){
- throw new ProtocolException("SpecificaSicurezza["+documento.getFile()+"] senza contenuto");
- }
- if(documento.getTipo()==null){
- throw new ProtocolException("SpecificaSicurezza["+documento.getFile()+"] senza tipo");
- }
- String id = documento.getTipo()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+documento.getFile();
- specificaSicurezzaList.put(id, documento.getByteContenuto());
- documento.setByteContenuto(null);
- }
-
- Map<String, byte[]> protocolPropertiesList = new HashMap<>();
- for (ProtocolProperty pp : accordo.getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.ACCORDO_SERVIZIO_PARTE_SPECIFICA;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
-
- List<Fruitore> listFruitore = new ArrayList<Fruitore>();
- while(accordo.sizeFruitoreList()>0){
- listFruitore.add(accordo.removeFruitore(0));
- }
-
- // id
- String nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- String identificativo = accordo.getTipo()+" "+accordo.getNome()+" "+accordo.getVersione();
- zipOut.write(identificativo.getBytes());
-
- // definizione
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_SERVIZIO_PARTE_SPECIFICA_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- //write(zipOut, "accordoServizioParteSpecifica", idAccordo, true, accordo); viene effettuato il catch di tutto il metodo saveAccordo
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(accordo); // NOTA: vengono eliminati anche tutti i campi contenenti bytes. Comunque li ho letti prima
- zipOut.write(this.jaxbRegistrySerializer.toByteArray(accordo));
-
- // wsdl
- if(wsdlInterfacciaImplementativaErogatore!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_WSDL+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_WSDL_IMPLEMENTATIVO_EROGATORE_WSDL;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(wsdlInterfacciaImplementativaErogatore);
- }
- if(wsdlInterfacciaImplementativaFruitore!=null){
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_WSDL+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_WSDL_IMPLEMENTATIVO_FRUITORE_WSDL;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(wsdlInterfacciaImplementativaFruitore);
- }
-
- // Permit '.'
- List<Character> listCharacterPermit = new ArrayList<Character>();
- listCharacterPermit.add('.');
-
- // allegati
- if(allegatiList.size()>0){
- int index = 1;
- for (String id : allegatiList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_ALLEGATI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_ALLEGATI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(allegatiList.get(id));
-
- index++;
- }
- }
-
- // specificaSemiformale
- if(specificaSemiformaleList.size()>0){
- int index = 1;
- for (String id : specificaSemiformaleList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_SEMIFORMALI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_SEMIFORMALI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(specificaSemiformaleList.get(id));
-
- index++;
- }
- }
-
- // specificaLivelloServizio
- if(specificaLivelloServizioList.size()>0){
- int index = 1;
- for (String id : specificaLivelloServizioList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_LIVELLI_SERVIZIO+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_LIVELLI_SERVIZIO+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(specificaLivelloServizioList.get(id));
-
- index++;
- }
- }
-
- // specificaSicurezza
- if(specificaSicurezzaList.size()>0){
- int index = 1;
- for (String id : specificaSicurezzaList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_SICUREZZA+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_SICUREZZA+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(specificaSicurezzaList.get(id));
-
- index++;
- }
- }
-
- // protocolProperties
- if(protocolPropertiesList.size()>0){
- int indexPP = 1;
- for (String id : protocolPropertiesList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(protocolPropertiesList.get(id));
-
- indexPP++;
- }
- }
-
- // fruitori (questo caso non dovrebbe essere presente, ci dovrebbe invece essere l'archiveFruitore)
- if(listFruitore.size()>0){
- for (Fruitore fruitore : listFruitore) {
- // il converName sui soggetti serve a poco, visto che devono essere simpleName (solo caratteri e numeri)
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_FRUITORE_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(fruitore.getTipo())+"_"+
- ZIPUtils.convertNameToSistemaOperativoCompatible(fruitore.getNome())+".xml";
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(fruitore);
- zipOut.write(this.jaxbRegistrySerializer.toByteArray(fruitore));
- }
- }
-
- // PortaApplicativa Associata
- if(mappingPorteApplicativeAssociate!=null){
- for (int i = 0; i < mappingPorteApplicativeAssociate.size(); i++) {
- String nomeFilePAAssociata = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_MAPPING+File.separatorChar+
- (i+1)+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_SERVIZIO_PARTE_SPECIFICA_MAPPING_PA_SUFFIX;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFilePAAssociata));
- MappingErogazionePortaApplicativa mappingPortaApplicativaAssociata = mappingPorteApplicativeAssociate.get(i);
- // Non serializzo l'ìd del servizio, poiche' sono gia' dentro il servizio
- String id = mappingPortaApplicativaAssociata.getNome() + " " +
- mappingPortaApplicativaAssociata.getIdPortaApplicativa().getNome() + " " +
- mappingPortaApplicativaAssociata.isDefault() + " " +
- mappingPortaApplicativaAssociata.getDescrizione();
- zipOut.write(id.getBytes());
- }
- }
-
- }catch(Exception e){
- String xml = null;
- try{
- xml = accordo.toXml();
- }catch(Exception eDebug){
- this.log.error("Errore durante il recupero della struttura xml: "+eDebug,eDebug);
- throw new ProtocolException("[AccordoServizioParteSpecifica]["+idServizio+"]: "+e.getMessage(),e);
- }
- throw new ProtocolException("[AccordoServizioParteSpecifica]["+idServizio+"] ("+xml+"): "+e.getMessage(),e);
- }
- }
-
- private void saveAccordo(AccordoCooperazione accordo, IDAccordoCooperazione idAccordo, String parentDir, ZipOutputStream zipOut) throws IOException, SerializerException, ProtocolException{
-
- try{
-
- String rootDir = parentDir + Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_COOPERAZIONE_DIR+File.separatorChar+
- ZIPUtils.convertNameToSistemaOperativoCompatible(idAccordo.getNome())+"_"+
- idAccordo.getVersione()+File.separatorChar;
-
- // raccolta elementi
-
- Map<String, byte[]> allegatiList = new HashMap<>();
- for (Documento documento : accordo.getAllegatoList()) {
- if(documento.getFile()==null){
- throw new ProtocolException("Allegato senza nome file");
- }
- if(documento.getByteContenuto()==null){
- throw new ProtocolException("Allegato["+documento.getFile()+"] senza contenuto");
- }
- if(documento.getTipo()==null){
- throw new ProtocolException("Allegato["+documento.getFile()+"] senza tipo");
- }
- String id = documento.getTipo()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+documento.getFile();
- allegatiList.put(id, documento.getByteContenuto());
- documento.setByteContenuto(null);
- }
-
- Map<String, byte[]> specificaSemiformaleList = new HashMap<>();
- for (Documento documento : accordo.getSpecificaSemiformaleList()) {
- if(documento.getFile()==null){
- throw new ProtocolException("SpecificaSemiformale senza nome file");
- }
- if(documento.getByteContenuto()==null){
- throw new ProtocolException("SpecificaSemiformale["+documento.getFile()+"] senza contenuto");
- }
- if(documento.getTipo()==null){
- throw new ProtocolException("SpecificaSemiformale["+documento.getFile()+"] senza tipo");
- }
- String id = documento.getTipo()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+documento.getFile();
- specificaSemiformaleList.put(id, documento.getByteContenuto());
- documento.setByteContenuto(null);
- }
-
- Map<String, byte[]> protocolPropertiesList = new HashMap<>();
- for (ProtocolProperty pp : accordo.getProtocolPropertyList()) {
- if(pp.getByteFile()==null) {
- continue;
- }
- if(pp.getFile()==null){
- throw new ProtocolException("ProtocolProperties ["+pp.getName()+"] senza nome file");
- }
- ProprietariProtocolProperty tipologiaProprietarioProtocolProperty = ProprietariProtocolProperty.ACCORDO_COOPERAZIONE;
- String id = tipologiaProprietarioProtocolProperty.name()+Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME_INTERNAL_SEPARATOR+pp.getName(); // uso la property name che è univoca
- protocolPropertiesList.put(id, pp.getByteFile());
- pp.setByteFile(null);
- }
-
- // id
- String nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_ID_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- String identificativo = accordo.getNome()+" "+accordo.getVersione();
- zipOut.write(identificativo.getBytes());
-
- // definizione
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_COOPERAZIONE_FILE_NAME;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- //write(zipOut, "accordoCooperazione", idAccordo, true, accordo); viene effettuato il catch di tutto il metodo saveAccordo
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(accordo); // NOTA: vengono eliminati anche tutti i campi contenenti bytes. Comunque li ho letti prima
- zipOut.write(this.jaxbRegistrySerializer.toByteArray(accordo));
-
- // Permit '.'
- List<Character> listCharacterPermit = new ArrayList<Character>();
- listCharacterPermit.add('.');
-
- // allegati
- if(allegatiList.size()>0){
- int index = 1;
- for (String id : allegatiList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_ALLEGATI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_ALLEGATI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(allegatiList.get(id));
-
- index++;
- }
- }
-
- // specificaSemiformale
- if(specificaSemiformaleList.size()>0){
- int index = 1;
- for (String id : specificaSemiformaleList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_SEMIFORMALI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_SPECIFICHE_SEMIFORMALI+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+index+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(specificaSemiformaleList.get(id));
-
- index++;
- }
- }
-
- // protocolProperties
- if(protocolPropertiesList.size()>0){
- int indexPP = 1;
- for (String id : protocolPropertiesList.keySet()) {
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_ID;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(id.getBytes());
-
- nomeFile = Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_DIR_PROTOCOL_PROPERTIES+File.separatorChar+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_PREFIX+indexPP+
- Costanti.OPENSPCOOP2_ARCHIVE_ACCORDI_FILE_ATTACHMENT_SUFFIX_CONTENT;
- zipOut.putNextEntry(new ZipEntry(rootDir+nomeFile));
- zipOut.write(protocolPropertiesList.get(id));
-
- indexPP++;
- }
- }
-
- }catch(Exception e){
- String xml = null;
- try{
- xml = accordo.toXml();
- }catch(Exception eDebug){
- this.log.error("Errore durante il recupero della struttura xml: "+eDebug,eDebug);
- throw new ProtocolException("[AccordoCooperazione]["+idAccordo+"]: "+e.getMessage(),e);
- }
- throw new ProtocolException("[AccordoCooperazione]["+idAccordo+"] ("+xml+"): "+e.getMessage(),e);
- }
- }
- }
- enum SerializationType {
-
- CONFIG, REGISTRY, PLUGIN, CONTROLLO_TRAFFICO, ALLARME
-
- }