SPCoopArchive.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.spcoop.archive;
- import java.io.ByteArrayOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.List;
- import org.openspcoop2.core.id.IDAccordo;
- import org.openspcoop2.core.id.IDAccordoCooperazione;
- import org.openspcoop2.core.id.IDServizio;
- import org.openspcoop2.core.registry.AccordoServizioParteComune;
- import org.openspcoop2.core.registry.Operation;
- import org.openspcoop2.core.registry.PortType;
- import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
- import org.openspcoop2.protocol.basic.archive.BasicArchive;
- 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.ArchiveEsitoDelete;
- import org.openspcoop2.protocol.sdk.archive.ArchiveEsitoImport;
- import org.openspcoop2.protocol.sdk.archive.ArchiveEsitoImportDetail;
- import org.openspcoop2.protocol.sdk.archive.ArchiveMode;
- import org.openspcoop2.protocol.sdk.archive.ArchiveModeType;
- import org.openspcoop2.protocol.sdk.archive.ExportMode;
- import org.openspcoop2.protocol.sdk.archive.ImportMode;
- import org.openspcoop2.protocol.sdk.archive.MapPlaceholder;
- import org.openspcoop2.protocol.sdk.archive.MappingModeTypesExtensions;
- import org.openspcoop2.protocol.sdk.constants.ArchiveStatoImport;
- import org.openspcoop2.protocol.sdk.constants.ArchiveType;
- import org.openspcoop2.protocol.sdk.registry.IConfigIntegrationReader;
- import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
- import org.openspcoop2.protocol.spcoop.config.SPCoopProperties;
- import org.openspcoop2.protocol.spcoop.constants.SPCoopCostantiArchivi;
- import org.openspcoop2.utils.Utilities;
- import org.slf4j.Logger;
- import it.gov.spcoop.sica.dao.Costanti;
- import it.gov.spcoop.sica.wsbl.ConceptualBehavior;
- /**
- * SPCoopArchive
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class SPCoopArchive extends BasicArchive {
- private SPCoopArchiveImport importEngine = null;
- private SPCoopArchiveExport exportEngine = null;
- private SPCoopProperties spcoopProperties = null;
-
- public SPCoopArchive(Logger log, IProtocolFactory<?> protocolFactory) throws ProtocolException {
- super(protocolFactory);
- this.importEngine = new SPCoopArchiveImport(protocolFactory);
- this.exportEngine = new SPCoopArchiveExport(protocolFactory);
- this.spcoopProperties = SPCoopProperties.getInstance(log);
- }
-
-
-
-
- /* ----- Utilita' generali ----- */
-
- @Override
- public MappingModeTypesExtensions getMappingTypesExtensions(ArchiveMode mode)
- throws ProtocolException {
-
- if(this.spcoopProperties.isGestionePackageSICA() && SPCoopCostantiArchivi.CNIPA_MODE.equals(mode) ||
- SPCoopCostantiArchivi.EXPORT_MODE_COMPATIBILITA_CLIENT_SICA.equals(mode) ||
- SPCoopCostantiArchivi.EXPORT_MODE_INFORMAZIONI_COMPLETE.equals(mode) ){
- MappingModeTypesExtensions m = new MappingModeTypesExtensions();
-
- m.add(org.openspcoop2.protocol.basic.Costanti.OPENSPCOOP_ARCHIVE_EXT,
- SPCoopCostantiArchivi.TYPE_ALL,
- SPCoopCostantiArchivi.TYPE_APC,
- SPCoopCostantiArchivi.TYPE_APS,
- SPCoopCostantiArchivi.TYPE_ADC,
- SPCoopCostantiArchivi.TYPE_ASC);
-
- m.add(Costanti.ESTENSIONE_ACCORDO_SERVIZIO_PARTE_COMUNE,
- ArchiveType.ACCORDO_SERVIZIO_PARTE_COMUNE,
- SPCoopCostantiArchivi.TYPE_APC,
- SPCoopCostantiArchivi.TYPE_ALL);
-
- m.add(Costanti.ESTENSIONE_ACCORDO_SERVIZIO_PARTE_SPECIFICA,
- ArchiveType.ACCORDO_SERVIZIO_PARTE_SPECIFICA,
- SPCoopCostantiArchivi.TYPE_APS,
- SPCoopCostantiArchivi.TYPE_ALL);
-
- m.add(Costanti.ESTENSIONE_ACCORDO_COOPERAZIONE,
- ArchiveType.ACCORDO_COOPERAZIONE,
- SPCoopCostantiArchivi.TYPE_ADC,
- SPCoopCostantiArchivi.TYPE_ALL);
-
- m.add(Costanti.ESTENSIONE_ACCORDO_SERVIZIO_COMPOSTO,
- ArchiveType.ACCORDO_SERVIZIO_COMPOSTO,
- SPCoopCostantiArchivi.TYPE_ASC,
- SPCoopCostantiArchivi.TYPE_ALL);
-
- return m;
- }
- else{
- return super.getMappingTypesExtensions(mode);
- }
- }
-
- /**
- * Imposta per ogni portType e operation presente nell'accordo fornito come parametro
- * le informazioni di protocollo analizzando i documenti interni agli archivi
- */
- @Override
- public void setProtocolInfo(AccordoServizioParteComune accordoServizioParteComune) throws ProtocolException{
-
- super.setProtocolInfo(accordoServizioParteComune);
-
- try{
-
- String operationAsincronaRichiesta = null;
- String operationAsincronaRisposta = null;
- boolean presenzaWSBLLogicoFruitore = false;
-
- if(accordoServizioParteComune.getByteSpecificaConversazioneConcettuale()!=null){
-
- byte [] wsbl = accordoServizioParteComune.getByteSpecificaConversazioneConcettuale();
-
- if(!it.gov.spcoop.sica.wsbl.driver.XMLUtils.isConceptualBehavior(wsbl)){
- if(it.gov.spcoop.sica.wsbl.driver.XMLUtils.isMessageBehavior(wsbl)){
- throw new Exception("La specifica di conversazione concettuale non e' un documento WSBL ConceptualBehavior, ma erroneamente un documento WSBL MessageBehavior");
- }else{
- throw new Exception("La specifica di conversazione concettuale non e' un documento WSBL ConceptualBehavior");
- }
- }
-
- ConceptualBehavior wsblConcettuale = it.gov.spcoop.sica.wsbl.driver.XMLUtils.getConceptualBehavior(this.getProtocolFactory().getLogger(),wsbl);
- String[]operazioniAsincrone = it.gov.spcoop.sica.wsbl.driver.XMLUtils.getOperazioniAsincrone(wsblConcettuale);
-
- operationAsincronaRichiesta = operazioniAsincrone[0];
- operationAsincronaRisposta = operazioniAsincrone[1];
- //System.out.println("1: "+operazioniAsincrone[0]);
- //System.out.println("2: "+operazioniAsincrone[1]);
-
- if(accordoServizioParteComune.getByteSpecificaConversazioneFruitore()!=null){
- presenzaWSBLLogicoFruitore = it.gov.spcoop.sica.wsbl.driver.XMLUtils.isMessageBehavior(wsbl);
- }
-
-
- // Verifico profilo di collaborazione e correlazione in base ai valori presenti nel WSBL
- // Verifico come nome:
- // 1. azione
- // 2. servizio_azione
- for (PortType ptOpenSPCoop : accordoServizioParteComune.getPortTypeList()) {
-
- for (Operation opOpenSPCoop : ptOpenSPCoop.getAzioneList()) {
-
- // 1. azione
- String tmp = opOpenSPCoop.getNome();
- if(tmp.equals(operationAsincronaRichiesta) || tmp.equals(operationAsincronaRisposta)){
- if(presenzaWSBLLogicoFruitore){
- opOpenSPCoop.setProfiloCollaborazione(CostantiRegistroServizi.ASINCRONO_SIMMETRICO);
- }else{
- opOpenSPCoop.setProfiloCollaborazione(CostantiRegistroServizi.ASINCRONO_ASIMMETRICO);
- }
- opOpenSPCoop.setProfAzione(CostantiRegistroServizi.PROFILO_AZIONE_RIDEFINITO);
- if(tmp.equals(operationAsincronaRisposta)){
- opOpenSPCoop.setCorrelata(operationAsincronaRichiesta);
- // search servizio della richiesta
- for (PortType ptSearch : accordoServizioParteComune.getPortTypeList()) {
- boolean found = false;
- for (Operation opSearch : ptSearch.getAzioneList()) {
- if(opSearch!=null && opSearch.getNome().equals(operationAsincronaRichiesta)){
- opOpenSPCoop.setCorrelataServizio(ptSearch.getNome());
- found = true;
- break;
- }
- }
- if(found){
- break;
- }
- }
- }
- }
-
- else {
- // 2. servizio_azione
- int lengthServizioAzione = (ptOpenSPCoop.getNome().length()+1+opOpenSPCoop.getNome().length());
- boolean richiesta = (operationAsincronaRichiesta!=null)
- && (operationAsincronaRichiesta.length()==lengthServizioAzione)
- && (operationAsincronaRichiesta.startsWith(ptOpenSPCoop.getNome()))
- && (operationAsincronaRichiesta.endsWith(opOpenSPCoop.getNome()));
- boolean risposta = (operationAsincronaRisposta!=null)
- && (operationAsincronaRisposta.length()==lengthServizioAzione)
- && (operationAsincronaRisposta.startsWith(ptOpenSPCoop.getNome()))
- && (operationAsincronaRisposta.endsWith(opOpenSPCoop.getNome()));
- if(richiesta || risposta){
- //System.out.println("TROVATO ["+richiesta+"] ["+risposta+"]");
- if(presenzaWSBLLogicoFruitore){
- opOpenSPCoop.setProfiloCollaborazione(CostantiRegistroServizi.ASINCRONO_SIMMETRICO);
- }else{
- opOpenSPCoop.setProfiloCollaborazione(CostantiRegistroServizi.ASINCRONO_ASIMMETRICO);
- }
- opOpenSPCoop.setProfAzione(CostantiRegistroServizi.PROFILO_AZIONE_RIDEFINITO);
- //System.out.println("PROFILO ["+opOpenSPCoop.getProfiloCollaborazione()+"]");
- if(risposta){
- // search servizio della richiesta
- for (PortType ptSearch : accordoServizioParteComune.getPortTypeList()) {
- boolean found = false;
- for (Operation opSearch : ptSearch.getAzioneList()) {
- int lengthServizioAzioneSearch = (ptSearch.getNome().length()+1+opSearch.getNome().length());
- boolean richiestaSearch = (operationAsincronaRichiesta.length()==lengthServizioAzioneSearch)
- && (operationAsincronaRichiesta.startsWith(ptSearch.getNome()))
- && (operationAsincronaRichiesta.endsWith(opSearch.getNome()));
- if(richiestaSearch){
- opOpenSPCoop.setCorrelata(opSearch.getNome());
- opOpenSPCoop.setCorrelataServizio(ptSearch.getNome());
- //System.out.println("TROVATA CORRELAZIONE ["+opOpenSPCoop.getCorrelata()+"] ["+opOpenSPCoop.getCorrelataServizio()+"]");
- found = true;
- break;
- }
- }
- if(found){
- break;
- }
- }
- }
- }
- }
- }
- }
- }
-
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
-
- /* ----- Utilita' generali di interpretazione di un Esito ----- */
-
- private String toString(ArchiveEsitoImport archive, boolean importOperation){
-
- StringBuilder bfEsito = new StringBuilder();
-
- // Nel CNIPA ci sono sempre e solo un oggetto.
-
- // Accordi di Cooperazione
- if(archive.getAccordiCooperazione().size()>0){
- bfEsito.append("Accordo di Cooperazione\n");
- try{
- ArchiveEsitoImportDetail archiveAccordoCooperazione = archive.getAccordiCooperazione().get(0);
- IDAccordoCooperazione idAccordoCooperazione = ((ArchiveAccordoCooperazione)archiveAccordoCooperazione.getArchiveObject()).getIdAccordoCooperazione();
- String uriAccordo = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordoCooperazione);
- bfEsito.append("\t- [").append(uriAccordo).append("] ");
- this.esitoUtils.serializeStato(archiveAccordoCooperazione, bfEsito, importOperation);
- }catch(Exception e){
- bfEsito.append("\t- non importato: ").append(e.getMessage());
- }
- }
-
-
- // Accordi di Servizio Parte Comune
- else if(archive.getAccordiServizioParteComune().size()>0){
- bfEsito.append("Accordi di Servizio Parte Comune\n");
- try{
- ArchiveEsitoImportDetail archiveAccordoServizioParteComune = archive.getAccordiServizioParteComune().get(0);
- IDAccordo idAccordo = ((ArchiveAccordoServizioParteComune)archiveAccordoServizioParteComune.getArchiveObject()).getIdAccordoServizioParteComune();
- String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
- bfEsito.append("\t- [").append(uriAccordo).append("] ");
- this.esitoUtils.serializeStato(archiveAccordoServizioParteComune, bfEsito, importOperation);
- }catch(Exception e){
- bfEsito.append("\t- non importato: ").append(e.getMessage());
- }
- }
-
-
- // Accordi di Servizio Parte Specifica (implementano accordi di servizio parte comune)
- else if(archive.getAccordiServizioParteSpecifica().size()>0){
- bfEsito.append("Accordi di Servizio Parte Specifica\n");
- try{
- ArchiveEsitoImportDetail archiveAccordoServizioParteSpecifica = archive.getAccordiServizioParteSpecifica().get(0);
- IDServizio idServizio = ((ArchiveAccordoServizioParteSpecifica)archiveAccordoServizioParteSpecifica.getArchiveObject()).getIdAccordoServizioParteSpecifica();
- String uriAccordo = this.idServizioFactory.getUriFromIDServizio(idServizio);
- bfEsito.append("\t- [").append(uriAccordo).append("] ");
- this.esitoUtils.serializeStato(archiveAccordoServizioParteSpecifica, bfEsito, importOperation);
- if(archiveAccordoServizioParteSpecifica.getState()!=null &&
- (ArchiveStatoImport.CREATED.equals(archiveAccordoServizioParteSpecifica.getState())) ||
- ArchiveStatoImport.UPDATED.equals(archiveAccordoServizioParteSpecifica.getState())) {
- if(archive.getPorteApplicative().size()>0) {
- bfEsito.append("\n\n!!Attenzione!!: E' stata creata un'erogazione con stato disabilitato.\n\tDefinire correttamente il connettore ed abilitare l'erogazione per renderla operativa");
- }
- else if(archive.getPorteDelegate().size()>0) {
- bfEsito.append("\n\n!!Attenzione!!: E' stata creata una fruizione con stato disabilitato.\n\tDefinire correttamente il connettore ed abilitare la fruizione per renderla operativa");
- }
- }
- }catch(Exception e){
- bfEsito.append("\t- non importato: ").append(e.getMessage());
- }
- }
-
-
- // Accordi di Servizio Composto
- else if(archive.getAccordiServizioComposto().size()>0){
- bfEsito.append("Accordi di Servizio Composto\n");
- try{
- ArchiveEsitoImportDetail archiveAccordoServizioComposto = archive.getAccordiServizioComposto().get(0);
- IDAccordo idAccordo = ((ArchiveAccordoServizioComposto)archiveAccordoServizioComposto.getArchiveObject()).getIdAccordoServizioParteComune();
- String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
- bfEsito.append("\t- [").append(uriAccordo).append("] ");
- this.esitoUtils.serializeStato(archiveAccordoServizioComposto, bfEsito, importOperation);
- }catch(Exception e){
- bfEsito.append("\t- non importato: ").append(e.getMessage());
- }
- }
-
-
- // Accordi di Servizio Parte Specifica (implementano accordi di servizio composto)
- if(archive.getAccordiServizioParteSpecificaServiziComposti().size()>0){
- bfEsito.append("Accordi di Servizio Composto Parte Specifica\n");
- try{
- ArchiveEsitoImportDetail archiveAccordoServizioParteSpecifica = archive.getAccordiServizioParteSpecificaServiziComposti().get(0);
- IDServizio idServizio = ((ArchiveAccordoServizioParteSpecifica)archiveAccordoServizioParteSpecifica.getArchiveObject()).getIdAccordoServizioParteSpecifica();
- String uriAccordo = this.idServizioFactory.getUriFromIDServizio(idServizio);
- bfEsito.append("\t- [").append(uriAccordo).append("] ");
- this.esitoUtils.serializeStato(archiveAccordoServizioParteSpecifica, bfEsito, importOperation);
- }catch(Exception e){
- bfEsito.append("\t- non importato: ").append(e.getMessage());
- }
- }
-
- return bfEsito.toString();
- }
-
-
-
-
-
-
-
-
-
-
- /* ----- Import ----- */
-
- @Override
- public List<ImportMode> getImportModes() throws ProtocolException {
- List<ImportMode> list = super.getImportModes();
- if(this.spcoopProperties.isGestionePackageSICA()) {
- list.add(new ImportMode(SPCoopCostantiArchivi.CNIPA_MODE));
- }
- return list;
- }
- @Override
- public Archive importArchive(byte[]archive,ArchiveMode mode,ArchiveModeType type,
- IRegistryReader registryReader,IConfigIntegrationReader configIntegrationReader,
- boolean validationDocuments, MapPlaceholder placeholder) throws ProtocolException {
-
- if(org.openspcoop2.protocol.basic.Costanti.OPENSPCOOP_IMPORT_ARCHIVE_MODE.equals(mode)){
- return super.importArchive(archive, mode, type, registryReader,configIntegrationReader,
- validationDocuments, placeholder);
- }
- else if(SPCoopCostantiArchivi.CNIPA_MODE.equals(mode)){
-
- if(SPCoopCostantiArchivi.TYPE_APC.equals(type)){
- try{
- return this.importEngine.buildAccordoServizioParteComune(archive, registryReader,validationDocuments);
- }catch(SPCoopConvertToPackageCNIPAException e){
- throw new ProtocolException(e.getMessage(), e);
- }
- }
- else if(SPCoopCostantiArchivi.TYPE_ASC.equals(type)){
- try{
- return this.importEngine.buildAccordoServizioComposto(archive, registryReader,validationDocuments);
- }catch(SPCoopConvertToPackageCNIPAException e){
- throw new ProtocolException(e.getMessage(), e);
- }
- }
- else if(SPCoopCostantiArchivi.TYPE_APS.equals(type)){
- try{
- return this.importEngine.buildAccordoServizioParteSpecifica(archive, registryReader,validationDocuments);
- }catch(SPCoopConvertToPackageCNIPAException e){
- throw new ProtocolException(e.getMessage(), e);
- }
- }
- else if(SPCoopCostantiArchivi.TYPE_ADC.equals(type)){
- try{
- return this.importEngine.buildAccordoCooperazione(archive, registryReader);
- }catch(SPCoopConvertToPackageCNIPAException e){
- throw new ProtocolException(e.getMessage(), e);
- }
- }
- else if(SPCoopCostantiArchivi.TYPE_ALL.equals(type)){
- try{
- return this.importEngine.buildAccordoServizioParteComune(archive, registryReader,validationDocuments);
- }catch(SPCoopConvertToPackageCNIPAException eAPC){
- try{
- return this.importEngine.buildAccordoServizioComposto(archive, registryReader,validationDocuments);
- }catch(SPCoopConvertToPackageCNIPAException eAComposto){
- try{
- return this.importEngine.buildAccordoServizioParteSpecifica(archive, registryReader,validationDocuments);
- }catch(SPCoopConvertToPackageCNIPAException eAPS){
- try{
- return this.importEngine.buildAccordoCooperazione(archive, registryReader);
- }catch(SPCoopConvertToPackageCNIPAException eADC){
- throw new ProtocolException("L'archivio fornito non e' stato possibile interpretarlo come nessuno dei package supportati (per ottenere maggiori dettagli re-importarlo indicando un tipo specifico): "+
- SPCoopCostantiArchivi.TYPE_APC
- +","+
- SPCoopCostantiArchivi.TYPE_APS
- +","+
- SPCoopCostantiArchivi.TYPE_ASC
- +","+
- SPCoopCostantiArchivi.TYPE_ADC);
- }
- }
- }
- }
- }
- else{
- throw new ProtocolException("Type ["+type+"] unknown");
- }
- }
- else{
- throw new ProtocolException("Mode ["+mode+"] unknown");
- }
-
- }
-
- @Override
- public Archive importArchive(InputStream archive,ArchiveMode mode,ArchiveModeType type,
- IRegistryReader registryReader, IConfigIntegrationReader configIntegrationReader,
- boolean validationDocuments, MapPlaceholder placeholder) throws ProtocolException {
-
- byte[] bytes = null;
- try{
- bytes = Utilities.getAsByteArray(archive);
- }
- catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }
- finally{
- try{
- if(archive!=null){
- archive.close();
- }
- }catch(Exception eClose){
- // close
- }
- }
- return this.importArchive(bytes, mode, type, registryReader, configIntegrationReader,
- validationDocuments, placeholder);
- }
-
- @Override
- public void finalizeImportArchive(Archive archive,ArchiveMode mode,ArchiveModeType type,
- IRegistryReader registryReader,IConfigIntegrationReader configIntegrationReader,
- boolean validationDocuments, MapPlaceholder placeholder) throws ProtocolException {
- if(org.openspcoop2.protocol.basic.Costanti.OPENSPCOOP_IMPORT_ARCHIVE_MODE.equals(mode)){
- super.finalizeImportArchive(archive, mode, type, registryReader,configIntegrationReader,
- validationDocuments, placeholder);
- }
- else if(SPCoopCostantiArchivi.CNIPA_MODE.equals(mode)){
-
- if(SPCoopCostantiArchivi.TYPE_APC.equals(type)){
- // nop;
- }
- else if(SPCoopCostantiArchivi.TYPE_ASC.equals(type)){
- // nop;
- }
- else if(SPCoopCostantiArchivi.TYPE_APS.equals(type)){
- try{
- this.importEngine.finalizeAccordoServizioParteSpecifica(archive, registryReader,validationDocuments);
- }catch(SPCoopConvertToPackageCNIPAException e){
- throw new ProtocolException(e.getMessage(), e);
- }
- }
- else if(SPCoopCostantiArchivi.TYPE_ADC.equals(type)){
- // nop;
- }
- else if(SPCoopCostantiArchivi.TYPE_ALL.equals(type)){
- try{
- this.importEngine.finalizeAccordoServizioParteSpecifica(archive, registryReader,validationDocuments);
- }catch(SPCoopConvertToPackageCNIPAException e){
- throw new ProtocolException(e.getMessage(), e);
- }
- }
- else{
- throw new ProtocolException("Type ["+type+"] unknown");
- }
- }
- else{
- throw new ProtocolException("Mode ["+mode+"] unknown");
- }
- }
-
- @Override
- public String toString(ArchiveEsitoImport esito, ArchiveMode archiveMode) throws ProtocolException{
- if(org.openspcoop2.protocol.basic.Costanti.OPENSPCOOP_IMPORT_ARCHIVE_MODE.equals(archiveMode)){
- return super.toString(esito, archiveMode);
- }
- else if(SPCoopCostantiArchivi.CNIPA_MODE.equals(archiveMode)){
- return this.toString(esito,true);
- }
- else{
- throw new ProtocolException("Mode ["+archiveMode+"] unknown");
- }
- }
-
- @Override
- public String toString(ArchiveEsitoDelete esito, ArchiveMode archiveMode) throws ProtocolException{
- if(org.openspcoop2.protocol.basic.Costanti.OPENSPCOOP_IMPORT_ARCHIVE_MODE.equals(archiveMode)){
- return super.toString(esito, archiveMode);
- }
- else if(SPCoopCostantiArchivi.CNIPA_MODE.equals(archiveMode)){
- return this.toString(esito,false);
- }
- else{
- throw new ProtocolException("Mode ["+archiveMode+"] unknown");
- }
- }
-
-
-
-
-
-
- /* ----- Export ----- */
-
- @Override
- public List<ExportMode> getExportModes(ArchiveType archiveType) throws ProtocolException {
- List<ExportMode> list = super.getExportModes(archiveType);
- if(this.spcoopProperties.isGestionePackageSICA()) {
- switch (archiveType) {
- case ACCORDO_SERVIZIO_PARTE_COMUNE:
- case ACCORDO_SERVIZIO_PARTE_SPECIFICA:
- case ACCORDO_SERVIZIO_COMPOSTO:
- case ACCORDO_COOPERAZIONE:
- ExportMode exportSICA = new ExportMode(SPCoopCostantiArchivi.EXPORT_MODE_COMPATIBILITA_CLIENT_SICA);
- ExportMode exportComplete = new ExportMode(SPCoopCostantiArchivi.EXPORT_MODE_INFORMAZIONI_COMPLETE);
- list.add(exportSICA);
- list.add(exportComplete);
- break;
- default:
- break;
- }
- }
- return list;
- }
-
- @Override
- public byte[] exportArchive(Archive archive, ArchiveMode mode,
- IRegistryReader registroReader, IConfigIntegrationReader configIntegrationReader)
- throws ProtocolException {
-
- if(org.openspcoop2.protocol.basic.Costanti.OPENSPCOOP_EXPORT_ARCHIVE_MODE.equals(mode)){
- return super.exportArchive(archive, mode, registroReader, configIntegrationReader);
- }
- else if(SPCoopCostantiArchivi.EXPORT_MODE_COMPATIBILITA_CLIENT_SICA.equals(mode) ||
- SPCoopCostantiArchivi.EXPORT_MODE_INFORMAZIONI_COMPLETE.equals(mode)){
- try{
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- this.exportEngine.exportArchive(archive, mode, registroReader, bout);
- bout.flush();
- bout.close();
- return bout.toByteArray();
- }catch(Exception e){
- throw new ProtocolException(e.getMessage(),e);
- }
- }
- else{
- throw new ProtocolException("Mode ["+mode+"] unknown");
- }
-
- }
- @Override
- public void exportArchive(Archive archive, OutputStream out, ArchiveMode mode,
- IRegistryReader registroReader, IConfigIntegrationReader configIntegrationReader)
- throws ProtocolException {
- if(org.openspcoop2.protocol.basic.Costanti.OPENSPCOOP_EXPORT_ARCHIVE_MODE.equals(mode)){
- super.exportArchive(archive, out, mode, registroReader, configIntegrationReader);
- }
- else if(SPCoopCostantiArchivi.EXPORT_MODE_COMPATIBILITA_CLIENT_SICA.equals(mode) ||
- SPCoopCostantiArchivi.EXPORT_MODE_INFORMAZIONI_COMPLETE.equals(mode)){
- this.exportEngine.exportArchive(archive, mode, registroReader, out);
- }
- else{
- throw new ProtocolException("Mode ["+mode+"] unknown");
- }
- }
-
-
- }