SPCoopArchiveImport.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 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.spcoop.archive;
import it.gov.spcoop.sica.dao.driver.XMLUtils;
import org.slf4j.Logger;
import java.util.ArrayList;
import java.util.List;
import org.openspcoop2.core.config.Connettore;
import org.openspcoop2.core.config.InvocazioneServizio;
import org.openspcoop2.core.config.PortaApplicativa;
import org.openspcoop2.core.config.PortaApplicativaServizioApplicativo;
import org.openspcoop2.core.config.PortaDelegata;
import org.openspcoop2.core.config.RispostaAsincrona;
import org.openspcoop2.core.config.ServizioApplicativo;
import org.openspcoop2.core.config.constants.CostantiConfigurazione;
import org.openspcoop2.core.config.constants.InvocazioneServizioTipoAutenticazione;
import org.openspcoop2.core.config.constants.StatoFunzionalita;
import org.openspcoop2.core.config.constants.TipoAutenticazione;
import org.openspcoop2.core.config.constants.TipoAutorizzazione;
import org.openspcoop2.core.config.constants.TipologiaErogazione;
import org.openspcoop2.core.config.constants.TipologiaFruizione;
import org.openspcoop2.core.constants.CostantiDB;
import org.openspcoop2.core.constants.TipiConnettore;
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.Fruitore;
import org.openspcoop2.core.registry.Soggetto;
import org.openspcoop2.core.registry.constants.StatiAccordo;
import org.openspcoop2.message.constants.ServiceBinding;
import org.openspcoop2.protocol.sdk.IProtocolFactory;
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.ArchiveFruitore;
import org.openspcoop2.protocol.sdk.archive.ArchiveIdCorrelazione;
import org.openspcoop2.protocol.sdk.archive.ArchivePortaApplicativa;
import org.openspcoop2.protocol.sdk.archive.ArchivePortaDelegata;
import org.openspcoop2.protocol.sdk.archive.ArchiveServizioApplicativo;
import org.openspcoop2.protocol.sdk.config.ProtocolImplementation;
import org.openspcoop2.protocol.sdk.config.ProtocolSubscription;
import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaSoggetti;
import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
import org.openspcoop2.protocol.sdk.registry.RegistryNotFound;
import org.openspcoop2.protocol.spcoop.sica.SICAtoOpenSPCoopContext;
import org.openspcoop2.protocol.spcoop.sica.SICAtoOpenSPCoopUtilities;
/**
* SPCoopArchiveImport
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class SPCoopArchiveImport {
private IProtocolFactory<?> protocolFactory = null;
private Logger logger = null;
public SPCoopArchiveImport(IProtocolFactory<?> protocolFactory){
this.protocolFactory = protocolFactory;
this.logger = this.protocolFactory.getLogger();
}
public Archive buildAccordoServizioParteComune(byte[]archive,
IRegistryReader registryReader,boolean validationDocuments) throws ProtocolException, SPCoopConvertToPackageCNIPAException{
try{
SICAtoOpenSPCoopContext sicaContext = new SICAtoOpenSPCoopContext();
// *** Trasformazione in package CNIPA ***
XMLUtils daoUtilities = new XMLUtils(sicaContext,this.logger);
it.gov.spcoop.sica.dao.AccordoServizioParteComune aspcSICA = null;
try{
aspcSICA = daoUtilities.getAccordoServizioParteComune(archive);
}catch(Exception e){
throw new SPCoopConvertToPackageCNIPAException("Conversione dell'archivio in package CNIPA non riuscita: "+e.getMessage(),e);
}
// *** Verifica informazioni presenti nel package ***
if(aspcSICA.getManifesto().getNome()==null){
throw new ProtocolException("Riscontrato un archivio che possiede un manifesto senza nome");
}
// soggetto referente
String soggettoReferente = null;
if(aspcSICA.getManifesto().getParteComune().getPubblicatore()!=null) {
soggettoReferente = aspcSICA.getManifesto().getParteComune().getPubblicatore().toString();
}
if(soggettoReferente!=null){
String codiceIPA = SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(soggettoReferente);
if(registryReader.existsSoggettoByCodiceIPA(codiceIPA)==false){
throw new ProtocolException("Il soggetto referente con Codice IPA ["+codiceIPA+"] non esiste.");
}
}
// *** Verifica documenti wsdl/wsbl presenti all'interno del package ***
if(validationDocuments){
SPCoopArchiveImportUtils.validazioneContenuti(aspcSICA);
}
// *** impostazione mapping soggetto con codice IPA ***
SPCoopArchiveImportUtils.setIDSoggettoFromCodiceIPA(aspcSICA, sicaContext, registryReader);
// *** Trasformazione in oggetto OpenSPCoop2 ***
AccordoServizioParteComune aspcOpenSPCoop2 = null;
try{
aspcOpenSPCoop2 = SICAtoOpenSPCoopUtilities.accordoServizioParteComune_sicaToOpenspcoop(registryReader, aspcSICA, sicaContext, this.logger);
Archive archiveObject = new Archive();
ArchiveIdCorrelazione idCorrelazione = new ArchiveIdCorrelazione("CnipaPackageASPC");
ArchiveAccordoServizioParteComune archiveASPC = new ArchiveAccordoServizioParteComune(aspcOpenSPCoop2,idCorrelazione,true);
archiveObject.getAccordiServizioParteComune().add(archiveASPC);
return archiveObject;
}catch(Exception e){
throw new ProtocolException("Conversione dell'archivio, da formato CNIPA a formato OpenSPCoop2, non riuscita: "+e.getMessage(),e);
}
}catch(SPCoopConvertToPackageCNIPAException convert){
throw convert;
}catch(Exception e){
throw new ProtocolException("Conversione archivio non riuscita: "+e.getMessage(),e);
}
}
public Archive buildAccordoServizioComposto(byte[]archive,
IRegistryReader registryReader, boolean validationDocuments) throws ProtocolException, SPCoopConvertToPackageCNIPAException{
try{
SICAtoOpenSPCoopContext sicaContext = new SICAtoOpenSPCoopContext();
// *** Trasformazione in package CNIPA ***
XMLUtils daoUtilities = new XMLUtils(sicaContext,this.logger);
it.gov.spcoop.sica.dao.AccordoServizioComposto asCompostoSICA = null;
try{
asCompostoSICA = daoUtilities.getAccordoServizioComposto(archive);
}catch(Exception e){
throw new SPCoopConvertToPackageCNIPAException("Conversione dell'archivio in package CNIPA non riuscita: "+e.getMessage(),e);
}
// *** Verifica informazioni presenti nel package ***
if(asCompostoSICA.getManifesto().getNome()==null){
throw new ProtocolException("Riscontrato un archivio che possiede un manifesto senza nome");
}
// soggetto referente
String soggettoReferente = null;
if(asCompostoSICA.getManifesto().getPubblicatore()!=null) {
soggettoReferente = asCompostoSICA.getManifesto().getPubblicatore().toString();
}
if(soggettoReferente!=null){
String codiceIPA = SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(soggettoReferente);
if(registryReader.existsSoggettoByCodiceIPA(codiceIPA)==false){
throw new ProtocolException("Il soggetto referente con Codice IPA ["+codiceIPA+"] non esiste.");
}
}
// *** Verifica documenti wsdl/wsbl presenti all'interno del package ***
if(validationDocuments){
SPCoopArchiveImportUtils.validazioneContenuti(asCompostoSICA);
}
// *** impostazione mapping soggetto con codice IPA ***
SPCoopArchiveImportUtils.setIDSoggettoFromCodiceIPA(asCompostoSICA, sicaContext, registryReader);
SPCoopArchiveImportUtils.setIDServizioFromURI_APS(asCompostoSICA, sicaContext, registryReader);
// *** Trasformazione in oggetto OpenSPCoop2 ***
AccordoServizioParteComune asCompostoOpenSPCoop2 = null;
try{
asCompostoOpenSPCoop2 = SICAtoOpenSPCoopUtilities.accordoServizioComposto_sicaToOpenspcoop(registryReader, asCompostoSICA, sicaContext, this.logger);
Archive archiveObject = new Archive();
ArchiveIdCorrelazione idCorrelazione = new ArchiveIdCorrelazione("CnipaPackageASC");
ArchiveAccordoServizioComposto archiveASC = new ArchiveAccordoServizioComposto(asCompostoOpenSPCoop2,idCorrelazione,true);
archiveObject.getAccordiServizioComposto().add(archiveASC);
return archiveObject;
}catch(Exception e){
throw new ProtocolException("Conversione dell'archivio, da formato CNIPA a formato OpenSPCoop2, non riuscita: "+e.getMessage(),e);
}
}catch(SPCoopConvertToPackageCNIPAException convert){
throw convert;
}catch(Exception e){
throw new ProtocolException("Conversione archivio non riuscita: "+e.getMessage(),e);
}
}
public Archive buildAccordoServizioParteSpecifica(byte[]archive,
IRegistryReader registryReader, boolean validationDocuments) throws ProtocolException, SPCoopConvertToPackageCNIPAException{
try{
SICAtoOpenSPCoopContext sicaContext = new SICAtoOpenSPCoopContext();
// *** Trasformazione in package CNIPA ***
XMLUtils daoUtilities = new XMLUtils(sicaContext,this.logger);
it.gov.spcoop.sica.dao.AccordoServizioParteSpecifica aspsSICA = null;
try{
aspsSICA = daoUtilities.getAccordoServizioParteSpecifica(archive);
}catch(Exception e){
throw new SPCoopConvertToPackageCNIPAException("Conversione dell'archivio in package CNIPA non riuscita: "+e.getMessage(),e);
}
// *** Verifica informazioni presenti nel package ***
if(aspsSICA.getManifesto().getNome()==null){
throw new ProtocolException("Riscontrato un archivio che possiede un manifesto senza nome");
}
// soggetto erogatore
String soggettoErogatore = null;
if(aspsSICA.getManifesto().getParteSpecifica().getErogatore()!=null) {
soggettoErogatore = aspsSICA.getManifesto().getParteSpecifica().getErogatore().toString();
}
if(soggettoErogatore!=null){
String codiceIPA = SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(soggettoErogatore);
if(registryReader.existsSoggettoByCodiceIPA(codiceIPA)==false){
throw new ProtocolException("Il soggetto referente con Codice IPA ["+codiceIPA+"] non esiste.");
}
}
// *** Verifica documenti presenti all'interno del package ***
if(validationDocuments){
SPCoopArchiveImportUtils.validazioneContenuti(aspsSICA);
}
// *** impostazione mapping soggetto con codice IPA ***
SPCoopArchiveImportUtils.setIDSoggettoFromCodiceIPA(aspsSICA, sicaContext, registryReader);
// *** Trasformazione in oggetto OpenSPCoop2 ***
try{
AccordoServizioParteSpecifica aspsOpenSPCoop2 = SICAtoOpenSPCoopUtilities.accordoServizioParteSpecifica_sicaToOpenspcoop(registryReader, aspsSICA, sicaContext, this.logger);
Archive archiveObject = new Archive();
ArchiveIdCorrelazione idCorrelazione = new ArchiveIdCorrelazione("CnipaPackageASPS");
ArchiveAccordoServizioParteSpecifica archiveASPS = new ArchiveAccordoServizioParteSpecifica(aspsOpenSPCoop2,idCorrelazione, true);
archiveObject.getAccordiServizioParteSpecifica().add(archiveASPS);
return archiveObject;
}catch(Exception e){
throw new ProtocolException("Conversione dell'archivio, da formato CNIPA a formato OpenSPCoop2, non riuscita: "+e.getMessage(),e);
}
}catch(SPCoopConvertToPackageCNIPAException convert){
throw convert;
}catch(Exception e){
throw new ProtocolException("Conversione archivio non riuscita: "+e.getMessage(),e);
}
}
public void finalizeAccordoServizioParteSpecifica(Archive archiveObject,
IRegistryReader registryReader, boolean validationDocuments) throws ProtocolException, SPCoopConvertToPackageCNIPAException{
try{
AccordoServizioParteSpecifica aspsOpenSPCoop2 = null;
ArchiveIdCorrelazione idCorrelazione = null;
if(archiveObject.getAccordiServizioParteSpecifica()!=null && archiveObject.getAccordiServizioParteSpecifica().size()>0) {
aspsOpenSPCoop2 = archiveObject.getAccordiServizioParteSpecifica().get(0).getAccordoServizioParteSpecifica();
idCorrelazione = archiveObject.getAccordiServizioParteSpecifica().get(0).getIdCorrelazione();
}
else {
return;
}
boolean informazioniComplete = true;
if(aspsOpenSPCoop2.getTipoSoggettoErogatore()==null || aspsOpenSPCoop2.getNomeSoggettoErogatore()==null) {
informazioniComplete = false;
}
if(aspsOpenSPCoop2.getVersione()==null) {
informazioniComplete = false;
}
if(aspsOpenSPCoop2.getAccordoServizioParteComune()==null) {
informazioniComplete = false;
}
ArchiveAccordoServizioParteSpecifica archiveASPS = new ArchiveAccordoServizioParteSpecifica(aspsOpenSPCoop2,idCorrelazione,!informazioniComplete);
if(informazioniComplete) {
// Devo creare una erogazione o fruizione
IDServizio idServizio = archiveASPS.getIdAccordoServizioParteSpecifica();
IDSoggetto idSoggettoErogatore = archiveASPS.getIdSoggettoErogatore();
Soggetto soggetto = registryReader.getSoggetto(idSoggettoErogatore);
String portaDominio = soggetto.getPortaDominio();
boolean operativo = false;
List<String> pddOperative = null;
try {
pddOperative = registryReader.findIdPorteDominio(true);
}catch(RegistryNotFound notFound) {}
if(portaDominio!=null) {
if(pddOperative!=null && !pddOperative.isEmpty()) {
for (String pdd : pddOperative) {
if(portaDominio.equals(pdd)) {
operativo = true;
break;
}
}
}
}
if(operativo) {
// creo Porta Applicativa
ProtocolImplementation implementationDefault = this.protocolFactory.createProtocolIntegrationConfiguration().
createDefaultImplementation(ServiceBinding.SOAP, idServizio);
PortaApplicativa portaApplicativa = implementationDefault.getPortaApplicativa();
portaApplicativa.setIdSoggetto(soggetto.getId());
portaApplicativa.setStato(StatoFunzionalita.DISABILITATO);
// Per non creare un buco di sicurezza per default, abilito l'autorizzazione dei soggetti
portaApplicativa.setAutenticazione(TipoAutenticazione.DISABILITATO.getValue());
portaApplicativa.setAutorizzazione(TipoAutorizzazione.AUTHENTICATED.getValue());
// Viene creata in automatico
MappingErogazionePortaApplicativa mappingErogazione = implementationDefault.getMapping();
ServizioApplicativo sa = new ServizioApplicativo();
sa.setNome(portaApplicativa.getNome());
sa.setTipologiaFruizione(TipologiaFruizione.DISABILITATO.getValue());
sa.setTipologiaErogazione(TipologiaErogazione.TRASPARENTE.getValue());
sa.setIdSoggetto(soggetto.getId());
sa.setTipoSoggettoProprietario(portaApplicativa.getTipoSoggettoProprietario());
sa.setNomeSoggettoProprietario(portaApplicativa.getNomeSoggettoProprietario());
RispostaAsincrona rispostaAsinc = new RispostaAsincrona();
rispostaAsinc.setAutenticazione(InvocazioneServizioTipoAutenticazione.NONE);
rispostaAsinc.setGetMessage(CostantiConfigurazione.DISABILITATO);
sa.setRispostaAsincrona(rispostaAsinc);
InvocazioneServizio invServizio = new InvocazioneServizio();
invServizio.setAutenticazione(InvocazioneServizioTipoAutenticazione.NONE);
invServizio.setGetMessage(CostantiConfigurazione.DISABILITATO);
Connettore connettore = new Connettore();
connettore.setTipo(TipiConnettore.HTTP.getNome());
org.openspcoop2.core.config.Property prop = new org.openspcoop2.core.config.Property();
prop.setNome(CostantiDB.CONNETTORE_HTTP_LOCATION);
prop.setValore("http://undefined");
connettore.addProperty(prop);
invServizio.setConnettore(connettore);
sa.setInvocazioneServizio(invServizio);
PortaApplicativaServizioApplicativo paSA = new PortaApplicativaServizioApplicativo();
paSA.setNome(sa.getNome());
portaApplicativa.addServizioApplicativo(paSA);
if(archiveASPS.getMappingPorteApplicativeAssociate()==null) {
archiveASPS.setMappingPorteApplicativeAssociate(new ArrayList<>());
}
archiveASPS.getMappingPorteApplicativeAssociate().add(mappingErogazione);
ArchiveServizioApplicativo archiveSA = new ArchiveServizioApplicativo(sa, idCorrelazione, false);
archiveObject.getServiziApplicativi().add(archiveSA);
ArchivePortaApplicativa archivePA = new ArchivePortaApplicativa(portaApplicativa, idCorrelazione,false);
archiveObject.getPorteApplicative().add(archivePA);
}
else {
// creo Porta Delegata
IDSoggetto idFruitore = null;
if(pddOperative==null) {
throw new Exception("Non esistono pdd operative");
}
for (String pddOperativa : pddOperative) {
ProtocolFiltroRicercaSoggetti filtro = new ProtocolFiltroRicercaSoggetti();
filtro.setTipo("spc");
filtro.setNomePdd(pddOperativa);
List<IDSoggetto> idSoggetti = null;
try {
idSoggetti = registryReader.findIdSoggetti(filtro);
}catch(RegistryNotFound notFound) {}
if(idSoggetti!=null && !idSoggetti.isEmpty()) {
idFruitore = idSoggetti.get(0);
}
}
if(idFruitore==null) {
throw new Exception("Non esistone un soggetto interno al dominio");
}
Soggetto soggettoFruitore = registryReader.getSoggetto(idFruitore);
ProtocolSubscription subscriptionDefault = this.protocolFactory.createProtocolIntegrationConfiguration().
createDefaultSubscription(ServiceBinding.SOAP, idFruitore, idServizio);
PortaDelegata portaDelegata = subscriptionDefault.getPortaDelegata();
portaDelegata.setIdSoggetto(soggettoFruitore.getId());
portaDelegata.setStato(StatoFunzionalita.DISABILITATO);
// Per non creare un buco di sicurezza per default, abilito l'autenticazione degli applicativi
portaDelegata.setAutenticazione(TipoAutenticazione.SSL.getValue());
// Viene creata in automatico
MappingFruizionePortaDelegata mappingFruizione = subscriptionDefault.getMapping();
Fruitore fruitore = new Fruitore();
fruitore.setTipo(idFruitore.getTipo());
fruitore.setNome(idFruitore.getNome());
org.openspcoop2.core.registry.Connettore connettore = new org.openspcoop2.core.registry.Connettore();
connettore.setTipo(TipiConnettore.HTTP.getNome());
org.openspcoop2.core.registry.Property prop = new org.openspcoop2.core.registry.Property();
prop.setNome(CostantiDB.CONNETTORE_HTTP_LOCATION);
prop.setValore("http://undefined");
connettore.addProperty(prop);
fruitore.setStatoPackage(StatiAccordo.operativo.name());
fruitore.setConnettore(connettore);
ArchivePortaDelegata archivePD = new ArchivePortaDelegata(portaDelegata, idCorrelazione, false);
archiveObject.getPorteDelegate().add(archivePD);
ArchiveFruitore archiveFruitore = new ArchiveFruitore(idServizio, fruitore, idCorrelazione, false);
archiveObject.getAccordiFruitori().add(archiveFruitore);
if(archiveFruitore.getMappingPorteDelegateAssociate()==null) {
archiveFruitore.setMappingPorteDelegateAssociate(new ArrayList<>());
}
archiveFruitore.getMappingPorteDelegateAssociate().add(mappingFruizione);
}
}
}catch(SPCoopConvertToPackageCNIPAException convert){
throw convert;
}catch(Exception e){
throw new ProtocolException("Conversione archivio non riuscita: "+e.getMessage(),e);
}
}
public Archive buildAccordoCooperazione(byte[]archive,
IRegistryReader registryReader) throws ProtocolException, SPCoopConvertToPackageCNIPAException{
try{
SICAtoOpenSPCoopContext sicaContext = new SICAtoOpenSPCoopContext();
// *** Trasformazione in package CNIPA ***
XMLUtils daoUtilities = new XMLUtils(sicaContext,this.logger);
it.gov.spcoop.sica.dao.AccordoCooperazione acSICA = null;
try{
acSICA = daoUtilities.getAccordoCooperazione(archive);
}catch(Exception e){
throw new SPCoopConvertToPackageCNIPAException("Conversione dell'archivio in package CNIPA non riuscita: "+e.getMessage(),e);
}
// *** Verifica informazioni presenti nel package ***
if(acSICA.getManifesto().getNome()==null){
throw new ProtocolException("Riscontrato un archivio che possiede un manifesto senza nome");
}
// soggetto coordinatore
String soggettoCoordinatore = null;
if(acSICA.getManifesto().getCoordinatore()!=null) {
soggettoCoordinatore = acSICA.getManifesto().getCoordinatore().toString();
}
if(soggettoCoordinatore!=null){
String codiceIPA = SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(soggettoCoordinatore);
if(registryReader.existsSoggettoByCodiceIPA(codiceIPA)==false){
throw new ProtocolException("Il soggetto coordinatore con Codice IPA ["+codiceIPA+"] non esiste.");
}
}
// soggetti partecipanti
if(acSICA.getManifesto()!=null && acSICA.getManifesto().getElencoPartecipanti()!=null){
for(int i=0;i<acSICA.getManifesto().getElencoPartecipanti().sizePartecipanteList();i++){
String partecipante = null;
if(acSICA.getManifesto().getElencoPartecipanti().getPartecipante(i)!=null) {
partecipante = acSICA.getManifesto().getElencoPartecipanti().getPartecipante(i).toString();
}
if(partecipante!=null) {
String codiceIPA = SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(partecipante);
if(registryReader.existsSoggettoByCodiceIPA(codiceIPA)==false){
throw new ProtocolException("Il soggetto partecipante con Codice IPA ["+codiceIPA+"] non esiste.");
}
}
}
}
// *** impostazione mapping soggetto con codice IPA ***
SPCoopArchiveImportUtils.setIDSoggettoFromCodiceIPA(acSICA, sicaContext, registryReader);
// *** Trasformazione in oggetto OpenSPCoop2 ***
AccordoCooperazione acOpenSPCoop2 = null;
try{
acOpenSPCoop2 = SICAtoOpenSPCoopUtilities.accordoCooperazione_sicaToOpenspcoop(registryReader, acSICA, sicaContext, this.logger);
Archive archiveObject = new Archive();
ArchiveIdCorrelazione idCorrelazione = new ArchiveIdCorrelazione("CnipaPackageAC");
ArchiveAccordoCooperazione archiveAC = new ArchiveAccordoCooperazione(acOpenSPCoop2,idCorrelazione,true);
archiveObject.getAccordiCooperazione().add(archiveAC);
return archiveObject;
}catch(Exception e){
throw new ProtocolException("Conversione dell'archivio, da formato CNIPA a formato OpenSPCoop2, non riuscita: "+e.getMessage(),e);
}
}catch(SPCoopConvertToPackageCNIPAException convert){
throw convert;
}catch(Exception e){
throw new ProtocolException("Conversione archivio non riuscita: "+e.getMessage(),e);
}
}
}