XMLUtils.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 it.gov.spcoop.sica.dao.driver;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Enumeration;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipFile;
- import java.util.zip.ZipOutputStream;
- import javax.activation.FileDataSource;
- import org.slf4j.Logger;
- import org.openspcoop2.protocol.spcoop.sica.SICAtoOpenSPCoopContext;
- import org.openspcoop2.utils.io.ZipUtilities;
- import org.openspcoop2.utils.resources.FileSystemUtilities;
- import it.gov.spcoop.sica.dao.AccordoCooperazione;
- import it.gov.spcoop.sica.dao.AccordoServizioComposto;
- import it.gov.spcoop.sica.dao.AccordoServizioParteComune;
- import it.gov.spcoop.sica.dao.AccordoServizioParteSpecifica;
- import it.gov.spcoop.sica.dao.Costanti;
- import it.gov.spcoop.sica.dao.Documento;
- import it.gov.spcoop.sica.firma.Firma;
- import it.gov.spcoop.sica.manifest.AccordoServizio;
- import it.gov.spcoop.sica.manifest.ServizioComposto;
- import it.gov.spcoop.sica.manifest.SpecificaConversazione;
- import it.gov.spcoop.sica.manifest.SpecificaInterfaccia;
- import it.gov.spcoop.sica.manifest.SpecificaPortiAccesso;
- import it.gov.spcoop.sica.manifest.driver.XMLUtilsException;
- /**
- * Classe utilizzata per lavorare sui package di un accordo di servizio o di cooperazione
- *
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class XMLUtils {
-
-
- private SICAtoOpenSPCoopContext sicaToOpenSPCoopContext = null;
- private Logger log = null;
- public XMLUtils(SICAtoOpenSPCoopContext sContext,Logger log){
- this.sicaToOpenSPCoopContext = sContext;
- this.log = log;
- }
-
-
-
-
-
-
-
- /* ----- Unmarshall Manifest dell'accordo di servizio parte comune ----- */
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte comune
- *
- * @param zip byte[]
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteComune getAccordoServizioParteComune(byte[] zip) throws XMLUtilsException{
- File tmp = null;
- FileOutputStream fout = null;
- try{
- tmp = FileSystemUtilities.createTempFile("sica", Costanti.ESTENSIONE_ACCORDO_SERVIZIO_PARTE_COMUNE);
-
- fout = new FileOutputStream(tmp);
- fout.write(zip);
- fout.flush();
- fout.close();
-
- return getAccordoServizioParteComune(tmp);
-
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // ignore
- }
- try {
- if(tmp!=null) {
- if(!tmp.delete()) {
- // ignore
- }
- }
- }catch(Exception eClose){
- // ignore
- }
- }
-
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte comune
- *
- * @param fileName File
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteComune getAccordoServizioParteComune(String fileName) throws XMLUtilsException{
- return getAccordoServizioParteComune(new File(fileName));
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte comune
- *
- * @param zip File
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteComune getAccordoServizioParteComune(File zip) throws XMLUtilsException{
- ZipFile zipFile = null;
- try{
- zipFile = new ZipFile(zip);
- return getAccordoServizioParteComune(zipFile);
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(zipFile!=null)
- zipFile.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte comune
- *
- * @param m InputStream
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteComune getAccordoServizioParteComune(InputStream m) throws XMLUtilsException{
- ByteArrayOutputStream bout = null;
- try{
- bout = new ByteArrayOutputStream();
- byte[]read = new byte[1024];
- int letti = 0;
- while( (letti=m.read(read))>=0 ){
- bout.write(read, 0, letti);
- }
- bout.flush();
- bout.close();
- m.close();
-
- return getAccordoServizioParteComune(bout.toByteArray());
-
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(bout!=null){
- bout.close();
- }
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte comune
- *
- * @param zip File
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteComune getAccordoServizioParteComune(ZipFile zip) throws XMLUtilsException{
- try{
- AccordoServizioParteComune archivio = new AccordoServizioParteComune();
-
- String rootDir = null;
-
- /* Primo giro per catturare il Manifest */
- it.gov.spcoop.sica.manifest.AccordoServizioParteComune parteComune = null;
- Enumeration<?> e = zip.entries();
- while(e.hasMoreElements()) {
- ZipEntry zipEntry = (ZipEntry)e.nextElement();
- String entryName = ZipUtilities.operativeSystemConversion(zipEntry.getName());
-
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- if(rootDir==null){
- // Calcolo ROOT DIR
- rootDir=ZipUtilities.getRootDir(entryName);
- }
-
- if(zipEntry.isDirectory()) {
- continue; // directory
- }
- else {
- FileDataSource fds = new FileDataSource(entryName);
- String nome = fds.getName();
- String tipo = nome.substring(nome.lastIndexOf(".")+1,nome.length());
- tipo = tipo.toUpperCase();
- //System.out.println("VERIFICARE NAME["+nome+"] TIPO["+tipo+"]");
-
- //System.out.println("ENTRY ["+rootDir+Costanti.MANIFESTO_XML+"]==["+entryName+"]");
- if((rootDir+Costanti.MANIFESTO_XML).equals(entryName)){
- //System.out.println("MANIFESTO!");
- InputStream inputStream = zip.getInputStream(zipEntry);
- AccordoServizio manifesto = it.gov.spcoop.sica.manifest.driver.XMLUtils.getManifestoAS(this.log,inputStream);
- parteComune = manifesto.getParteComune();
- if(parteComune==null){
- throw new Exception("Manifest Parte Comune non presente");
- }
- inputStream.close();
- archivio.setManifesto(manifesto);
- break;
- }
- }
- }
- if(parteComune==null){
- throw new Exception("Manifest Parte Comune non presente");
- }
-
-
- /* Lettura informazioni dal manifest */
- String interfacciaConcettuale = Costanti.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL;
- String interfaccialogicoErogatore = Costanti.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL;
- String interfaccialogicoFruitore = Costanti.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL;
- String conversazioneConcettuale = Costanti.SPECIFICA_CONVERSAZIONE_CONCETTUALE_WSBL;
- String conversazionelogicoErogatore = Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_EROGATORE_WSBL;
- String conversazionelogicoFruitore = Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_FRUITORE_WSBL;
- if(parteComune.getSpecificaInterfaccia()!=null){
- SpecificaInterfaccia interfaccia = parteComune.getSpecificaInterfaccia();
- if(interfaccia.getInterfacciaConcettuale()!=null){
- interfacciaConcettuale = ZipUtilities.getBaseName(interfaccia.getInterfacciaConcettuale().getBase());
- }
- if(interfaccia.getInterfacciaLogicaLatoErogatore()!=null){
- interfaccialogicoErogatore = ZipUtilities.getBaseName(interfaccia.getInterfacciaLogicaLatoErogatore().getBase());
- }
- if(interfaccia.getInterfacciaLogicaLatoFruitore()!=null){
- interfaccialogicoFruitore = ZipUtilities.getBaseName(interfaccia.getInterfacciaLogicaLatoFruitore().getBase());
- }
- }
- if(parteComune.getSpecificaConversazione()!=null){
- SpecificaConversazione conversazione = parteComune.getSpecificaConversazione();
- if(conversazione.getConversazioneConcettuale()!=null){
- conversazioneConcettuale = ZipUtilities.getBaseName(conversazione.getConversazioneConcettuale().getBase());
- }
- if(conversazione.getConversazioneLogicaLatoErogatore()!=null){
- conversazionelogicoErogatore = ZipUtilities.getBaseName(conversazione.getConversazioneLogicaLatoErogatore().getBase());
- }
- if(conversazione.getConversazioneLogicaLatoFruitore()!=null){
- conversazionelogicoFruitore = ZipUtilities.getBaseName(conversazione.getConversazioneLogicaLatoFruitore().getBase());
- }
- }
-
-
- /* Identificazione altri campi */
- e = zip.entries();
- while(e.hasMoreElements()) {
- ZipEntry zipEntry = (ZipEntry)e.nextElement();
- String entryName = ZipUtilities.operativeSystemConversion(zipEntry.getName());
-
- //System.out.println("FILE NAME: "+entryName);
- //System.out.println("SIZE: "+entry.getSize());
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- if(rootDir==null){
- // Calcolo ROOT DIR
- rootDir=ZipUtilities.getRootDir(entryName);
- }
-
- if(zipEntry.isDirectory()) {
- continue; // directory
- }
- else {
- FileDataSource fds = new FileDataSource(entryName);
- String nome = fds.getName();
- String tipo = nome.substring(nome.lastIndexOf(".")+1,nome.length());
- tipo = tipo.toUpperCase();
- //System.out.println("VERIFICARE NAME["+nome+"] TIPO["+tipo+"]");
-
- //System.out.println("ENTRY ["+entryName+"]");
- if((rootDir+Costanti.PROJECT_CLIENT_SICA).equals(entryName)){
- //System.out.println(".PROJECT: NIENTE DA GESTIRE");
- }
- else if((rootDir+Costanti.FIRMA_XML).equals(entryName)){
- //System.out.println("FIRMA!");
- Firma firma = new Firma();
- archivio.setFirma(firma);
- }
- else if((rootDir+Costanti.MANIFESTO_XML).equals(entryName)){
- //System.out.println("MANIFESTO! SCARTO");
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR)) ){
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- String dir = rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar;
- if((dir+conversazioneConcettuale).equals(entryName)){
- //System.out.println("CONVERSAZIONE CONCETTUALE WSBL!");
- archivio.setConversazioneConcettuale(d);
- }
- else if((dir+conversazionelogicoErogatore).equals(entryName)){
- //System.out.println("CONVERSAZIONE LOGICA EROGATORE WSBL!");
- archivio.setConversazioneLogicaErogatore(d);
- }
- else if((dir+conversazionelogicoFruitore).equals(entryName)){
- //System.out.println("CONVERSAZIONE LOGICA FRUITORE WSBL!");
- archivio.setConversazioneLogicaFruitore(d);
- }
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR)) ){
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- String dir = rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar;
- if((dir+interfacciaConcettuale).equals(entryName)){
- //System.out.println("INTERFACCIA CONCETTUALE WSDL!");
- archivio.setInterfacciaConcettuale(d);
- }
- else if((dir+interfaccialogicoErogatore).equals(entryName)){
- //System.out.println("INTERFACCIA LOGICA EROGATORE WSDL!");
- archivio.setInterfacciaLogicaLatoErogatore(d);
- }
- else if((dir+interfaccialogicoFruitore).equals(entryName)){
- //System.out.println("INTERFACCIA LOGICA FRUITORE WSDL!");
- archivio.setInterfacciaLogicaLatoFruitore(d);
- }
- }
- else if(entryName.startsWith((rootDir+Costanti.ALLEGATI_DIR)) ){
- //System.out.println("ALLEGATO");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addAllegato(d);
-
- // Validazione XSD delle informazioni egov
- if(it.cnipa.collprofiles.driver.XMLUtils.isProfiloCollaborazioneEGOV(d.getContenuto())){
- it.cnipa.collprofiles.driver.XMLUtils.getDichiarazioneEGov(this.log,d.getContenuto(),
- this.sicaToOpenSPCoopContext.isInformazioniEGov_wscpDisabled_childUnqualified());
- }else if(it.gov.spcoop.sica.wscp.driver.XMLUtils.isProfiloCollaborazioneEGOV(d.getContenuto())){
- it.gov.spcoop.sica.wscp.driver.XMLUtils.getDichiarazioneEGov(this.log,d.getContenuto(),
- this.sicaToOpenSPCoopContext.isInformazioniEGov_wscpEnabled_childUnqualified());
- }
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR)) ){
- //System.out.println("SPECIFICASEMIFORMALE");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addSpecificaSemiformale(d);
-
- // Validazione XSD delle informazioni egov
- if(it.cnipa.collprofiles.driver.XMLUtils.isProfiloCollaborazioneEGOV(d.getContenuto())){
- it.cnipa.collprofiles.driver.XMLUtils.getDichiarazioneEGov(this.log,d.getContenuto(),
- this.sicaToOpenSPCoopContext.isInformazioniEGov_wscpDisabled_childUnqualified());
- }else if(it.gov.spcoop.sica.wscp.driver.XMLUtils.isProfiloCollaborazioneEGOV(d.getContenuto())){
- it.gov.spcoop.sica.wscp.driver.XMLUtils.getDichiarazioneEGov(this.log,d.getContenuto(),
- this.sicaToOpenSPCoopContext.isInformazioniEGov_wscpEnabled_childUnqualified());
- }
- }
- }
-
-
- }
-
- // check
- if(archivio.getManifesto()==null){
- throw new Exception("Manifesto non presente");
- }
-
- // Metto a posto i tipi (le estensioni dei files possono essere diverse)
- if(archivio.getManifesto().getSpecificaSemiformale()!=null){
- for(int i=0; i<archivio.getManifesto().getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
- String fileName = archivio.getManifesto().getSpecificaSemiformale().getDocumentoSemiformale(i).getBase();
- String tipo = archivio.getManifesto().getSpecificaSemiformale().getDocumentoSemiformale(i).getTipo();
- for(int j=0; j<archivio.sizeSpecificheSemiformali(); j++){
- if(fileName.equals(archivio.getSpecificaSemiformale(j).getNome())){
- //System.out.println("Metto a posto da ["+archivio.getSpecificaSemiformale(j).getTipo()+"] a ["+tipo+"]");
- archivio.getSpecificaSemiformale(j).setTipo(tipo);
- }
- }
- }
- }
-
- return archivio;
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
- /* ----- Marshall dell'accordo di servizio parte comune----- */
- public void generateAccordoServizioParteComune(AccordoServizioParteComune manifesto,File file) throws XMLUtilsException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(file);
- generateAccordoServizioParteComune(manifesto,fout);
- fout.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public void generateAccordoServizioParteComune(AccordoServizioParteComune manifesto,String fileName) throws XMLUtilsException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(fileName);
- generateAccordoServizioParteComune(manifesto,fout);
- fout.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public byte[] generateAccordoServizioParteComune(AccordoServizioParteComune manifesto) throws XMLUtilsException{
- try{
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- generateAccordoServizioParteComune(manifesto,bout);
- bout.flush();
- bout.close();
- return bout.toByteArray();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }
- }
- public void generateAccordoServizioParteComune(AccordoServizioParteComune manifesto,OutputStream out) throws XMLUtilsException{
-
- boolean generaSICAClientProjectFile = this.sicaToOpenSPCoopContext.isSICAClient_generaProject();
- boolean includiInfoRegistroGenerale = this.sicaToOpenSPCoopContext.isSICAClient_includiInfoRegistroGenerale();
- boolean lunghezzaNomeAccordoLimitata = this.sicaToOpenSPCoopContext.isSICAClient_nomeAccordo_32CaratteriMax();
-
- ZipOutputStream zipOut = null;
- try{
- zipOut = new ZipOutputStream(out);
- String rootDir = "";
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- rootDir = manifesto.getManifesto().getNome()+File.separatorChar;
-
- // .project
- if(generaSICAClientProjectFile){
- String nomeProgettoEclipse = manifesto.getManifesto().getNome() + "_" + Costanti.ESTENSIONE_ACCORDO_SERVIZIO_PARTE_COMUNE;
- String projectContenuto = Costanti.PROJECT_CLIENT_SICA_CONTENUTO.replace(Costanti.PROJECT_CLIENT_SICA_KEY_NOME, nomeProgettoEclipse);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.PROJECT_CLIENT_SICA));
- zipOut.write(projectContenuto.getBytes());
- }
-
- // firma
- if(manifesto.getFirma()!=null){
- byte[] firma = manifesto.getFirma().getBytes();
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.FIRMA_XML));
- zipOut.write(firma);
- }
-
- // manifest
- byte[] manifestoBytes = it.gov.spcoop.sica.manifest.driver.XMLUtils.generateManifestoAS(manifesto.getManifesto(),includiInfoRegistroGenerale, lunghezzaNomeAccordoLimitata);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.MANIFESTO_XML));
- zipOut.write(manifestoBytes);
-
- // Specifica Interfaccia
- boolean specificaInterfaccia = false;
- if(manifesto.getInterfacciaConcettuale()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar+Costanti.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL));
- zipOut.write(manifesto.getInterfacciaConcettuale().getContenuto());
- specificaInterfaccia = true;
- }
- if(manifesto.getInterfacciaLogicaLatoErogatore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar+Costanti.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL));
- zipOut.write(manifesto.getInterfacciaLogicaLatoErogatore().getContenuto());
- specificaInterfaccia = true;
- }
- if(manifesto.getInterfacciaLogicaLatoFruitore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar+Costanti.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL));
- zipOut.write(manifesto.getInterfacciaLogicaLatoFruitore().getContenuto());
- specificaInterfaccia = true;
- }
- if(!specificaInterfaccia){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar));
- }
-
- // Specifica Conversazioni
- boolean specificaConversazione = false;
- if(manifesto.getConversazioneConcettuale()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar+Costanti.SPECIFICA_CONVERSAZIONE_CONCETTUALE_WSBL));
- zipOut.write(manifesto.getConversazioneConcettuale().getContenuto());
- specificaConversazione = true;
- }
- if(manifesto.getConversazioneLogicaErogatore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar+Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_EROGATORE_WSBL));
- zipOut.write(manifesto.getConversazioneLogicaErogatore().getContenuto());
- specificaConversazione = true;
- }
- if(manifesto.getConversazioneLogicaFruitore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar+Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_FRUITORE_WSBL));
- zipOut.write(manifesto.getConversazioneLogicaFruitore().getContenuto());
- specificaConversazione = true;
- }
- if(!specificaConversazione){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar));
- }
-
- // Allegati
- boolean allegati = manifesto.sizeAllegati()>0;
- for(int i=0; i<manifesto.sizeAllegati(); i++){
- Documento allegato = manifesto.getAllegato(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.ALLEGATI_DIR+File.separatorChar+allegato.getNome()));
- zipOut.write(allegato.getContenuto());
- }
- if(!allegati){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.ALLEGATI_DIR+File.separatorChar));
- }
-
- // Specifiche semiformali
- boolean specificheSemiformali = manifesto.sizeSpecificheSemiformali()>0;
- for(int i=0; i<manifesto.sizeSpecificheSemiformali(); i++){
- Documento doc = manifesto.getSpecificaSemiformale(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar+doc.getNome()));
- zipOut.write(doc.getContenuto());
- }
- if(!specificheSemiformali){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar));
- }
-
- zipOut.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(zipOut!=null)
- zipOut.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /* ----- Unmarshall Manifest dell'accordo di servizio parte specifica----- */
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte specifica
- *
- * @param zip byte[]
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica(byte[] zip) throws XMLUtilsException{
- File tmp = null;
- FileOutputStream fout = null;
- try{
- tmp = FileSystemUtilities.createTempFile("sica", Costanti.ESTENSIONE_ACCORDO_SERVIZIO_PARTE_SPECIFICA);
-
- fout = new FileOutputStream(tmp);
- fout.write(zip);
- fout.flush();
- fout.close();
-
- return getAccordoServizioParteSpecifica(tmp);
-
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // ignore
- }
- try {
- if(tmp!=null) {
- if(!tmp.delete()) {
- // ignore
- }
- }
- }catch(Exception eClose){
- // close
- }
- }
-
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte specifica
- *
- * @param fileName File
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica(String fileName) throws XMLUtilsException{
- return getAccordoServizioParteSpecifica(new File(fileName));
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte specifica
- *
- * @param zip File
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica(File zip) throws XMLUtilsException{
- ZipFile zipFile = null;
- try{
- zipFile = new ZipFile(zip);
- return getAccordoServizioParteSpecifica(zipFile);
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(zipFile!=null)
- zipFile.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte specifica
- *
- * @param m InputStream
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica(InputStream m) throws XMLUtilsException{
- ByteArrayOutputStream bout = null;
- try{
- bout = new ByteArrayOutputStream();
- byte[]read = new byte[1024];
- int letti = 0;
- while( (letti=m.read(read))>=0 ){
- bout.write(read, 0, letti);
- }
- bout.flush();
- bout.close();
- m.close();
-
- return getAccordoServizioParteSpecifica(bout.toByteArray());
-
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(bout!=null){
- bout.close();
- }
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio parte specifica
- *
- * @param zip File
- * @return ManifestoAS
- * @throws XMLUtilsException
- */
- public AccordoServizioParteSpecifica getAccordoServizioParteSpecifica(ZipFile zip) throws XMLUtilsException{
- try{
- AccordoServizioParteSpecifica archivio = new AccordoServizioParteSpecifica();
-
- String rootDir = null;
-
- /* Primo giro per catturare il Manifest */
- it.gov.spcoop.sica.manifest.AccordoServizioParteSpecifica parteSpecifica = null;
- Enumeration<?> e = zip.entries();
- while(e.hasMoreElements()) {
- ZipEntry zipEntry = (ZipEntry)e.nextElement();
- String entryName = ZipUtilities.operativeSystemConversion(zipEntry.getName());
-
- //System.out.println("FILE NAME: "+entryName);
- //System.out.println("SIZE: "+entry.getSize());
-
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- if(rootDir==null){
- // Calcolo ROOT DIR
- rootDir=ZipUtilities.getRootDir(entryName);
- }
-
- if(zipEntry.isDirectory()) {
- continue; // directory
- }
- else {
- FileDataSource fds = new FileDataSource(entryName);
- String nome = fds.getName();
- String tipo = nome.substring(nome.lastIndexOf(".")+1,nome.length());
- tipo = tipo.toUpperCase();
- //System.out.println("NAME["+nome+"] TIPO["+tipo+"]");
-
- //System.out.println("ENTRY ["+entryName+"]");
- if((rootDir+Costanti.MANIFESTO_XML).equals(entryName)){
- //System.out.println("MANIFESTO!");
- InputStream inputStream = zip.getInputStream(zipEntry);
- AccordoServizio manifesto = it.gov.spcoop.sica.manifest.driver.XMLUtils.getManifestoAS(this.log,inputStream);
- parteSpecifica = manifesto.getParteSpecifica();
- if(parteSpecifica==null){
- throw new Exception("Manifest Parte Specifica non presente");
- }
- inputStream.close();
- archivio.setManifesto(manifesto);
- break;
- }
- }
- }
- if(parteSpecifica==null){
- throw new Exception("Manifest Parte Specifica non presente");
- }
-
-
- /* Lettura informazioni dal manifest */
- String interfacciaPortiAccessoErogatore = Costanti.SPECIFICA_PORTI_ACCESSO_EROGATORE_WSDL;
- String interfacciaPortiAccessoFruitore = Costanti.SPECIFICA_PORTI_ACCESSO_FRUITORE_WSDL;
- if(parteSpecifica.getSpecificaPortiAccesso()!=null){
- SpecificaPortiAccesso portiAccesso = parteSpecifica.getSpecificaPortiAccesso();
- if(portiAccesso.getPortiAccessoErogatore()!=null){
- interfacciaPortiAccessoErogatore = ZipUtilities.getBaseName(portiAccesso.getPortiAccessoErogatore().getBase());
- }
- if(portiAccesso.getPortiAccessoFruitore()!=null){
- interfacciaPortiAccessoFruitore = ZipUtilities.getBaseName(portiAccesso.getPortiAccessoFruitore().getBase());
- }
- }
-
-
- /* Identificazione altri campi */
- e = zip.entries();
- while(e.hasMoreElements()) {
- ZipEntry zipEntry = (ZipEntry)e.nextElement();
- String entryName = ZipUtilities.operativeSystemConversion(zipEntry.getName());
-
- //System.out.println("FILE NAME: "+entryName);
- //System.out.println("SIZE: "+entry.getSize());
-
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- if(rootDir==null){
- // Calcolo ROOT DIR
- rootDir=ZipUtilities.getRootDir(entryName);
- }
-
- if(zipEntry.isDirectory()) {
- continue; // directory
- }
- else {
- FileDataSource fds = new FileDataSource(entryName);
- String nome = fds.getName();
- String tipo = nome.substring(nome.lastIndexOf(".")+1,nome.length());
- tipo = tipo.toUpperCase();
- //System.out.println("NAME["+nome+"] TIPO["+tipo+"]");
-
- //System.out.println("ENTRY ["+entryName+"]");
- if((rootDir+Costanti.PROJECT_CLIENT_SICA).equals(entryName)){
- //System.out.println(".PROJECT: NIENTE DA GESTIRE");
- }
- else if((rootDir+Costanti.FIRMA_XML).equals(entryName)){
- //System.out.println("FIRMA!");
- Firma firma = new Firma();
- archivio.setFirma(firma);
- }
- else if((rootDir+Costanti.MANIFESTO_XML).equals(entryName)){
- //System.out.println("MANIFESTO SCARTO!");
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_PORTI_ACCESSO_DIR)) ){
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- String dir = rootDir+Costanti.SPECIFICA_PORTI_ACCESSO_DIR+File.separatorChar;
- if((dir+interfacciaPortiAccessoErogatore).equals(entryName)){
- //System.out.println("PORTI ACCESSO EROGATORE WSBL!");
- archivio.setPortiAccessoErogatore(d);
- }
- else if((dir+interfacciaPortiAccessoFruitore).equals(entryName)){
- //System.out.println("PORTI ACCESSO FRUITORE WSBL!");
- archivio.setPortiAccessoFruitore(d);
- }
- }
- else if(entryName.startsWith((rootDir+Costanti.ALLEGATI_DIR)) ){
- //System.out.println("ALLEGATO");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addAllegato(d);
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR)) ){
- //System.out.println("SPECIFICA SEMIFORMALE");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addSpecificaSemiformale(d);
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_LIVELLI_SERVIZIO_DIR)) ){
- //System.out.println("SPECIFICA LIVELLO SERVIZIO");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addSpecificaLivelloServizio(d);
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_SICUREZZA_DIR)) ){
- //System.out.println("SPECIFICA SICUREZZA");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addSpecificaSicurezza(d);
- }
- }
-
-
- }
-
- // check
- if(archivio.getManifesto()==null){
- throw new Exception("Manifesto non presente");
- }
-
- // Metto a posto i tipi (le estensioni dei files possono essere diverse)
- if(archivio.getManifesto().getSpecificaSemiformale()!=null){
- for(int i=0; i<archivio.getManifesto().getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
- String fileName = archivio.getManifesto().getSpecificaSemiformale().getDocumentoSemiformale(i).getBase();
- String tipo = archivio.getManifesto().getSpecificaSemiformale().getDocumentoSemiformale(i).getTipo();
- for(int j=0; j<archivio.sizeSpecificheSemiformali(); j++){
- if(fileName.equals(archivio.getSpecificaSemiformale(j).getNome())){
- //System.out.println("Metto a posto da ["+archivio.getSpecificaSemiformale(j).getTipo()+"] a ["+tipo+"]");
- archivio.getSpecificaSemiformale(j).setTipo(tipo);
- }
- }
- }
- }
- if(archivio.getManifesto().getParteSpecifica().getSpecificaLivelliServizio()!=null){
- for(int i=0; i<archivio.getManifesto().getParteSpecifica().getSpecificaLivelliServizio().sizeDocumentoLivelloServizioList(); i++){
- String fileName = archivio.getManifesto().getParteSpecifica().getSpecificaLivelliServizio().getDocumentoLivelloServizio(i).getBase();
- String tipo = archivio.getManifesto().getParteSpecifica().getSpecificaLivelliServizio().getDocumentoLivelloServizio(i).getTipo();
- for(int j=0; j<archivio.sizeSpecificheLivelliServizio(); j++){
- if(fileName.equals(archivio.getSpecificaLivelloServizio(j).getNome())){
- //System.out.println("Metto a posto da ["+archivio.getSpecificaLivelloServizio(j).getTipo()+"] a ["+tipo+"]");
- archivio.getSpecificaLivelloServizio(j).setTipo(tipo);
- }
- }
- }
- }
- if(archivio.getManifesto().getParteSpecifica().getSpecificaSicurezza()!=null){
- for(int i=0; i<archivio.getManifesto().getParteSpecifica().getSpecificaSicurezza().sizeDocumentoSicurezzaList(); i++){
- String fileName = archivio.getManifesto().getParteSpecifica().getSpecificaSicurezza().getDocumentoSicurezza(i).getBase();
- String tipo = archivio.getManifesto().getParteSpecifica().getSpecificaSicurezza().getDocumentoSicurezza(i).getTipo();
- for(int j=0; j<archivio.sizeSpecificheSicurezza(); j++){
- if(fileName.equals(archivio.getSpecificaSicurezza(j).getNome())){
- //System.out.println("Metto a posto da ["+archivio.getSpecificaSicurezza(j).getTipo()+"] a ["+tipo+"]");
- archivio.getSpecificaSicurezza(j).setTipo(tipo);
- }
- }
- }
- }
-
- return archivio;
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
- /* ----- Marshall dell'accordo di servizio parte specifica----- */
- public void generateAccordoServizioParteSpecifica(AccordoServizioParteSpecifica manifesto,File file) throws XMLUtilsException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(file);
- generateAccordoServizioParteSpecifica(manifesto,fout);
- fout.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public void generateAccordoServizioParteSpecifica(AccordoServizioParteSpecifica manifesto,String fileName) throws XMLUtilsException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(fileName);
- generateAccordoServizioParteSpecifica(manifesto,fout);
- fout.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public byte[] generateAccordoServizioParteSpecifica(AccordoServizioParteSpecifica manifesto) throws XMLUtilsException{
- try{
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- generateAccordoServizioParteSpecifica(manifesto,bout);
- bout.flush();
- bout.close();
- return bout.toByteArray();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }
- }
- public void generateAccordoServizioParteSpecifica(AccordoServizioParteSpecifica manifesto,OutputStream out) throws XMLUtilsException{
-
- boolean generaSICAClientProjectFile = this.sicaToOpenSPCoopContext.isSICAClient_generaProject();
- boolean includiInfoRegistroGenerale = this.sicaToOpenSPCoopContext.isSICAClient_includiInfoRegistroGenerale();
- boolean lunghezzaNomeAccordoLimitata = this.sicaToOpenSPCoopContext.isSICAClient_nomeAccordo_32CaratteriMax();
-
- ZipOutputStream zipOut = null;
- try{
- zipOut = new ZipOutputStream(out);
- String rootDir = "";
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- rootDir = manifesto.getManifesto().getNome()+File.separatorChar;
-
- // .project
- if(generaSICAClientProjectFile){
- String nomeProgettoEclipse = manifesto.getManifesto().getNome() + "_" + Costanti.ESTENSIONE_ACCORDO_SERVIZIO_PARTE_SPECIFICA;
- String projectContenuto = Costanti.PROJECT_CLIENT_SICA_CONTENUTO.replace(Costanti.PROJECT_CLIENT_SICA_KEY_NOME, nomeProgettoEclipse);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.PROJECT_CLIENT_SICA));
- zipOut.write(projectContenuto.getBytes());
- }
-
- // firma
- if(manifesto.getFirma()!=null){
- byte[] firma = manifesto.getFirma().getBytes();
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.FIRMA_XML));
- zipOut.write(firma);
- }
-
- // manifest
- byte[] manifestoBytes = it.gov.spcoop.sica.manifest.driver.XMLUtils.generateManifestoAS(manifesto.getManifesto(),includiInfoRegistroGenerale,lunghezzaNomeAccordoLimitata);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.MANIFESTO_XML));
- zipOut.write(manifestoBytes);
-
- // Specifica Porti Accesso
- boolean specificaPortiAccesso = false;
- if(manifesto.getPortiAccessoErogatore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_PORTI_ACCESSO_DIR+File.separatorChar+Costanti.SPECIFICA_PORTI_ACCESSO_EROGATORE_WSDL));
- zipOut.write(manifesto.getPortiAccessoErogatore().getContenuto());
- specificaPortiAccesso = true;
- }
- if(manifesto.getPortiAccessoFruitore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_PORTI_ACCESSO_DIR+File.separatorChar+Costanti.SPECIFICA_PORTI_ACCESSO_FRUITORE_WSDL));
- zipOut.write(manifesto.getPortiAccessoFruitore().getContenuto());
- specificaPortiAccesso = true;
- }
- if(!specificaPortiAccesso){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_PORTI_ACCESSO_DIR+File.separatorChar));
- }
-
- // Allegati
- boolean allegati = manifesto.sizeAllegati()>0;
- for(int i=0; i<manifesto.sizeAllegati(); i++){
- Documento allegato = manifesto.getAllegato(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.ALLEGATI_DIR+File.separatorChar+allegato.getNome()));
- zipOut.write(allegato.getContenuto());
- }
- if(!allegati){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.ALLEGATI_DIR+File.separatorChar));
- }
-
- // Specifiche Livelli Servizio
- boolean specificheLivelliServizio = manifesto.sizeSpecificheLivelliServizio()>0;
- for(int i=0; i<manifesto.sizeSpecificheLivelliServizio(); i++){
- Documento doc = manifesto.getSpecificaLivelloServizio(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_LIVELLI_SERVIZIO_DIR+File.separatorChar+doc.getNome()));
- zipOut.write(doc.getContenuto());
- }
- if(!specificheLivelliServizio){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_LIVELLI_SERVIZIO_DIR+File.separatorChar));
- }
-
- // Specifiche semiformali
- boolean specificheSemiformali = manifesto.sizeSpecificheSemiformali()>0;
- for(int i=0; i<manifesto.sizeSpecificheSemiformali(); i++){
- Documento doc = manifesto.getSpecificaSemiformale(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar+doc.getNome()));
- zipOut.write(doc.getContenuto());
- }
- if(!specificheSemiformali){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar));
- }
-
- // Specifiche sicurezza
- boolean specificheSicurezza = manifesto.sizeSpecificheSicurezza()>0;
- for(int i=0; i<manifesto.sizeSpecificheSicurezza(); i++){
- Documento doc = manifesto.getSpecificaSicurezza(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SICUREZZA_DIR+File.separatorChar+doc.getNome()));
- zipOut.write(doc.getContenuto());
- }
- if(!specificheSicurezza){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SICUREZZA_DIR+File.separatorChar));
- }
-
- zipOut.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(zipOut!=null)
- zipOut.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /* ----- Unmarshall Manifest dell'accordo di cooperazione ----- */
-
- /**
- * Ritorna la rappresentazione java di un accordo di cooperazione
- *
- * @param zip byte[]
- * @return ManifestoAC
- * @throws XMLUtilsException
- */
- public AccordoCooperazione getAccordoCooperazione(byte[] zip) throws XMLUtilsException{
- File tmp = null;
- FileOutputStream fout = null;
- try{
- tmp = FileSystemUtilities.createTempFile("sica", Costanti.ESTENSIONE_ACCORDO_COOPERAZIONE);
-
- fout = new FileOutputStream(tmp);
- fout.write(zip);
- fout.flush();
- fout.close();
-
- return getAccordoCooperazione(tmp);
-
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // ignore
- }
- try {
- if(tmp!=null) {
- if(!tmp.delete()) {
- // ignore
- }
- }
- }catch(Exception eClose){
- // close
- }
- }
-
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di cooperazione
- *
- * @param fileName File
- * @return ManifestoAC
- * @throws XMLUtilsException
- */
- public AccordoCooperazione getAccordoCooperazione(String fileName) throws XMLUtilsException{
- return getAccordoCooperazione(new File(fileName));
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di cooperazione
- *
- * @param zip File
- * @return ManifestoAC
- * @throws XMLUtilsException
- */
- public AccordoCooperazione getAccordoCooperazione(File zip) throws XMLUtilsException{
- ZipFile zipFile = null;
- try{
- zipFile = new ZipFile(zip);
- return getAccordoCooperazione(zipFile);
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(zipFile!=null)
- zipFile.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di cooperazione
- *
- * @param m InputStream
- * @return ManifestoAC
- * @throws XMLUtilsException
- */
- public AccordoCooperazione getAccordoCooperazione(InputStream m) throws XMLUtilsException{
- ByteArrayOutputStream bout = null;
- try{
- bout = new ByteArrayOutputStream();
- byte[]read = new byte[1024];
- int letti = 0;
- while( (letti=m.read(read))>=0 ){
- bout.write(read, 0, letti);
- }
- bout.flush();
- bout.close();
- m.close();
-
- return getAccordoCooperazione(bout.toByteArray());
-
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(bout!=null){
- bout.close();
- }
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di cooperazione
- *
- * @param zip File
- * @return ManifestoAC
- * @throws XMLUtilsException
- */
- public AccordoCooperazione getAccordoCooperazione(ZipFile zip) throws XMLUtilsException{
- try{
- AccordoCooperazione archivio = new AccordoCooperazione();
-
- String rootDir = null;
-
- Enumeration<?> e = zip.entries();
- while(e.hasMoreElements()) {
- ZipEntry zipEntry = (ZipEntry)e.nextElement();
- String entryName = ZipUtilities.operativeSystemConversion(zipEntry.getName());
-
- //System.out.println("FILE NAME: "+entryName);
- //System.out.println("SIZE: "+entry.getSize());
-
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- if(rootDir==null){
- // Calcolo ROOT DIR
- rootDir=ZipUtilities.getRootDir(entryName);
- }
-
- if(zipEntry.isDirectory()) {
- continue; // directory
- }
- else {
- FileDataSource fds = new FileDataSource(entryName);
- String nome = fds.getName();
- String tipo = nome.substring(nome.lastIndexOf(".")+1,nome.length());
- tipo = tipo.toUpperCase();
- //System.out.println("NAME["+nome+"] TIPO["+tipo+"]");
-
- //System.out.println("ENTRY ["+entryName+"]");
- if((rootDir+Costanti.PROJECT_CLIENT_SICA).equals(entryName)){
- //System.out.println(".PROJECT: NIENTE DA GESTIRE");
- }
- else if((rootDir+Costanti.FIRMA_XML).equals(entryName)){
- //System.out.println("FIRMA!");
- Firma firma = new Firma();
- archivio.setFirma(firma);
- }
- else if((rootDir+Costanti.MANIFESTO_XML).equals(entryName)){
- //System.out.println("MANIFESTO!");
- InputStream inputStream = zip.getInputStream(zipEntry);
- it.gov.spcoop.sica.manifest.AccordoCooperazione manifesto = it.gov.spcoop.sica.manifest.driver.XMLUtils.getManifestoAC(this.log,inputStream);
- inputStream.close();
- archivio.setManifesto(manifesto);
- }
- else if(entryName.startsWith((rootDir+Costanti.ALLEGATI_DIR)) ){
- //System.out.println("ALLEGATO");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addAllegato(d);
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR)) ){
- //System.out.println("SPECIFICA SEMIFORMALE");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addSpecificaSemiformale(d);
- }
- }
-
-
- }
-
- // check
- if(archivio.getManifesto()==null){
- throw new Exception("Manifesto non presente");
- }
-
- // Metto a posto i tipi (le estensioni dei files possono essere diverse)
- if(archivio.getManifesto().getSpecificaSemiformale()!=null){
- for(int i=0; i<archivio.getManifesto().getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
- String fileName = archivio.getManifesto().getSpecificaSemiformale().getDocumentoSemiformale(i).getBase();
- String tipo = archivio.getManifesto().getSpecificaSemiformale().getDocumentoSemiformale(i).getTipo();
- for(int j=0; j<archivio.sizeSpecificheSemiformali(); j++){
- if(fileName.equals(archivio.getSpecificaSemiformale(j).getNome())){
- //System.out.println("Metto a posto da ["+archivio.getSpecificaSemiformale(j).getTipo()+"] a ["+tipo+"]");
- archivio.getSpecificaSemiformale(j).setTipo(tipo);
- }
- }
- }
- }
-
- return archivio;
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
- /* ----- Marshall dell'accordo di cooperazione ----- */
- public void generateAccordoCooperazione(AccordoCooperazione manifesto,File file) throws XMLUtilsException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(file);
- generateAccordoCooperazione(manifesto,fout);
- fout.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public void generateAccordoCooperazione(AccordoCooperazione manifesto,String fileName) throws XMLUtilsException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(fileName);
- generateAccordoCooperazione(manifesto,fout);
- fout.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public byte[] generateAccordoCooperazione(AccordoCooperazione manifesto) throws XMLUtilsException{
- try{
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- generateAccordoCooperazione(manifesto,bout);
- bout.flush();
- bout.close();
- return bout.toByteArray();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }
- }
- public void generateAccordoCooperazione(AccordoCooperazione manifesto,OutputStream out) throws XMLUtilsException{
-
- boolean generaSICAClientProjectFile = this.sicaToOpenSPCoopContext.isSICAClient_generaProject();
- boolean includiInfoRegistroGenerale = this.sicaToOpenSPCoopContext.isSICAClient_includiInfoRegistroGenerale();
- boolean lunghezzaNomeAccordoLimitata = this.sicaToOpenSPCoopContext.isSICAClient_nomeAccordo_32CaratteriMax();
-
- ZipOutputStream zipOut = null;
- try{
- zipOut = new ZipOutputStream(out);
- String rootDir = "";
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- rootDir = manifesto.getManifesto().getNome()+File.separatorChar;
-
- // .project
- if(generaSICAClientProjectFile){
- String nomeProgettoEclipse = manifesto.getManifesto().getNome() + "_" + Costanti.ESTENSIONE_ACCORDO_COOPERAZIONE;
- String projectContenuto = Costanti.PROJECT_CLIENT_SICA_CONTENUTO.replace(Costanti.PROJECT_CLIENT_SICA_KEY_NOME, nomeProgettoEclipse);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.PROJECT_CLIENT_SICA));
- zipOut.write(projectContenuto.getBytes());
- }
-
- // firma
- if(manifesto.getFirma()!=null){
- byte[] firma = manifesto.getFirma().getBytes();
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.FIRMA_XML));
- zipOut.write(firma);
- }
-
- // manifest
- byte[] manifestoBytes = it.gov.spcoop.sica.manifest.driver.XMLUtils.generateManifestoAC(manifesto.getManifesto(),includiInfoRegistroGenerale,lunghezzaNomeAccordoLimitata);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.MANIFESTO_XML));
- zipOut.write(manifestoBytes);
-
- // Allegati
- boolean allegati = manifesto.sizeAllegati()>0;
- for(int i=0; i<manifesto.sizeAllegati(); i++){
- Documento allegato = manifesto.getAllegato(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.ALLEGATI_DIR+File.separatorChar+allegato.getNome()));
- zipOut.write(allegato.getContenuto());
- }
- if(!allegati){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.ALLEGATI_DIR+File.separatorChar));
- }
-
- // Specifiche semiformali
- boolean specificheSemiformali = manifesto.sizeSpecificheSemiformali()>0;
- for(int i=0; i<manifesto.sizeSpecificheSemiformali(); i++){
- Documento doc = manifesto.getSpecificaSemiformale(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar+doc.getNome()));
- zipOut.write(doc.getContenuto());
- }
- if(!specificheSemiformali){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar));
- }
-
- zipOut.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(zipOut!=null)
- zipOut.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /* ----- Unmarshall Manifest dell'accordo di servizio composto ----- */
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio composto
- *
- * @param zip byte[]
- * @return ManifestoSC
- * @throws XMLUtilsException
- */
- public AccordoServizioComposto getAccordoServizioComposto(byte[] zip) throws XMLUtilsException{
- File tmp = null;
- FileOutputStream fout = null;
- try{
- tmp = FileSystemUtilities.createTempFile("sica", Costanti.ESTENSIONE_ACCORDO_SERVIZIO_COMPOSTO);
-
- fout = new FileOutputStream(tmp);
- fout.write(zip);
- fout.flush();
- fout.close();
-
- return getAccordoServizioComposto(tmp);
-
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // ignore
- }
- try {
- if(tmp!=null) {
- if(!tmp.delete()) {
- // ignore
- }
- }
- }catch(Exception eClose){
- // close
- }
- }
-
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio composto
- *
- * @param fileName File
- * @return ManifestoSC
- * @throws XMLUtilsException
- */
- public AccordoServizioComposto getAccordoServizioComposto(String fileName) throws XMLUtilsException{
- return getAccordoServizioComposto(new File(fileName));
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio composto
- *
- * @param zip File
- * @return ManifestoSC
- * @throws XMLUtilsException
- */
- public AccordoServizioComposto getAccordoServizioComposto(File zip) throws XMLUtilsException{
- ZipFile zipFile = null;
- try{
- zipFile = new ZipFile(zip);
- return getAccordoServizioComposto(zipFile);
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(zipFile!=null)
- zipFile.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio composto
- *
- * @param m InputStream
- * @return ManifestoSC
- * @throws XMLUtilsException
- */
- public AccordoServizioComposto getAccordoServizioComposto(InputStream m) throws XMLUtilsException{
- ByteArrayOutputStream bout = null;
- try{
- bout = new ByteArrayOutputStream();
- byte[]read = new byte[1024];
- int letti = 0;
- while( (letti=m.read(read))>=0 ){
- bout.write(read, 0, letti);
- }
- bout.flush();
- bout.close();
- m.close();
-
- return getAccordoServizioComposto(bout.toByteArray());
-
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(bout!=null){
- bout.close();
- }
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- /**
- * Ritorna la rappresentazione java di un accordo di servizio composto
- *
- * @param zip File
- * @return ManifestoSC
- * @throws XMLUtilsException
- */
- public AccordoServizioComposto getAccordoServizioComposto(ZipFile zip) throws XMLUtilsException{
- try{
- AccordoServizioComposto archivio = new AccordoServizioComposto();
-
- String rootDir = null;
-
- /* Primo giro per catturare il Manifest */
- ServizioComposto manifesto = null;
- Enumeration<?> e = zip.entries();
- while(e.hasMoreElements()) {
- ZipEntry zipEntry = (ZipEntry)e.nextElement();
- String entryName = ZipUtilities.operativeSystemConversion(zipEntry.getName());
-
- //System.out.println("FILE NAME: "+entryName);
- //System.out.println("SIZE: "+entry.getSize());
-
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- if(rootDir==null){
- // Calcolo ROOT DIR
- rootDir=ZipUtilities.getRootDir(entryName);
- }
-
- if(zipEntry.isDirectory()) {
- continue; // directory
- }
- else {
- FileDataSource fds = new FileDataSource(entryName);
- String nome = fds.getName();
- String tipo = nome.substring(nome.lastIndexOf(".")+1,nome.length());
- tipo = tipo.toUpperCase();
- //System.out.println("NAME["+nome+"] TIPO["+tipo+"]");
-
- //System.out.println("ENTRY ["+entryName+"]");
- if((rootDir+Costanti.MANIFESTO_XML).equals(entryName)){
- //System.out.println("MANIFESTO!");
- InputStream inputStream = zip.getInputStream(zipEntry);
- manifesto = it.gov.spcoop.sica.manifest.driver.XMLUtils.getManifestoSC(this.log,inputStream);
- inputStream.close();
- archivio.setManifesto(manifesto);
- break;
- }
- }
- }
- if(manifesto==null){
- throw new Exception("Manifest ServizioComposto non presente");
- }
-
-
- /* Lettura informazioni dal manifest */
- String interfacciaConcettuale = Costanti.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL;
- String interfaccialogicoErogatore = Costanti.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL;
- String interfaccialogicoFruitore = Costanti.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL;
- String conversazioneConcettuale = Costanti.SPECIFICA_CONVERSAZIONE_CONCETTUALE_WSBL;
- String conversazionelogicoErogatore = Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_EROGATORE_WSBL;
- String conversazionelogicoFruitore = Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_FRUITORE_WSBL;
- if(manifesto.getSpecificaInterfaccia()!=null){
- SpecificaInterfaccia interfaccia = manifesto.getSpecificaInterfaccia();
- if(interfaccia.getInterfacciaConcettuale()!=null){
- interfacciaConcettuale = ZipUtilities.getBaseName(interfaccia.getInterfacciaConcettuale().getBase());
- }
- if(interfaccia.getInterfacciaLogicaLatoErogatore()!=null){
- interfaccialogicoErogatore = ZipUtilities.getBaseName(interfaccia.getInterfacciaLogicaLatoErogatore().getBase());
- }
- if(interfaccia.getInterfacciaLogicaLatoFruitore()!=null){
- interfaccialogicoFruitore = ZipUtilities.getBaseName(interfaccia.getInterfacciaLogicaLatoFruitore().getBase());
- }
- }
- if(manifesto.getSpecificaConversazione()!=null){
- SpecificaConversazione conversazione = manifesto.getSpecificaConversazione();
- if(conversazione.getConversazioneConcettuale()!=null){
- conversazioneConcettuale = ZipUtilities.getBaseName(conversazione.getConversazioneConcettuale().getBase());
- }
- if(conversazione.getConversazioneLogicaLatoErogatore()!=null){
- conversazionelogicoErogatore = ZipUtilities.getBaseName(conversazione.getConversazioneLogicaLatoErogatore().getBase());
- }
- if(conversazione.getConversazioneLogicaLatoFruitore()!=null){
- conversazionelogicoFruitore = ZipUtilities.getBaseName(conversazione.getConversazioneLogicaLatoFruitore().getBase());
- }
- }
-
-
- /* Identificazione altri campi */
- e = zip.entries();
- while(e.hasMoreElements()) {
- ZipEntry zipEntry = (ZipEntry)e.nextElement();
- String entryName = ZipUtilities.operativeSystemConversion(zipEntry.getName());
-
- //System.out.println("FILE NAME: "+entryName);
- //System.out.println("SIZE: "+entry.getSize());
-
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- if(rootDir==null){
- // Calcolo ROOT DIR
- rootDir=ZipUtilities.getRootDir(entryName);
- }
-
- if(zipEntry.isDirectory()) {
- continue; // directory
- }
- else {
- FileDataSource fds = new FileDataSource(entryName);
- String nome = fds.getName();
- String tipo = nome.substring(nome.lastIndexOf(".")+1,nome.length());
- tipo = tipo.toUpperCase();
- //System.out.println("NAME["+nome+"] TIPO["+tipo+"]");
-
- //System.out.println("ENTRY ["+entryName+"]");
- if((rootDir+Costanti.PROJECT_CLIENT_SICA).equals(entryName)){
- //System.out.println(".PROJECT: NIENTE DA GESTIRE");
- }
- else if((rootDir+Costanti.FIRMA_XML).equals(entryName)){
- //System.out.println("FIRMA!");
- Firma firma = new Firma();
- archivio.setFirma(firma);
- }
- else if((rootDir+Costanti.MANIFESTO_XML).equals(entryName)){
- //System.out.println("MANIFESTO SCARTO!");
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR)) ){
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- String dir = rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar;
- if((dir+conversazioneConcettuale).equals(entryName)){
- //System.out.println("CONVERSAZIONE CONCETTUALE WSBL!");
- archivio.setConversazioneConcettuale(d);
- }
- else if((dir+conversazionelogicoErogatore).equals(entryName)){
- //System.out.println("CONVERSAZIONE LOGICA EROGATORE WSBL!");
- archivio.setConversazioneLogicaErogatore(d);
- }
- else if((dir+conversazionelogicoFruitore).equals(entryName)){
- //System.out.println("CONVERSAZIONE LOGICA FRUITORE WSBL!");
- archivio.setConversazioneLogicaFruitore(d);
- }
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR)) ){
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- String dir = rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar;
- if((dir+interfacciaConcettuale).equals(entryName)){
- //System.out.println("INTERFACCIA CONCETTUALE WSDL!");
- archivio.setInterfacciaConcettuale(d);
- }
- else if((dir+interfaccialogicoErogatore).equals(entryName)){
- //System.out.println("INTERFACCIA LOGICA EROGATORE WSDL!");
- archivio.setInterfacciaLogicaLatoErogatore(d);
- }
- else if((dir+interfaccialogicoFruitore).equals(entryName)){
- //System.out.println("INTERFACCIA LOGICA FRUITORE WSDL!");
- archivio.setInterfacciaLogicaLatoFruitore(d);
- }
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_COORDINAMENTO_DIR)) ){
- //System.out.println("COORDINAMENTO!");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addSpecificaCoordinamento(d);
- }
- else if(entryName.startsWith((rootDir+Costanti.ALLEGATI_DIR)) ){
- //System.out.println("ALLEGATO");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addAllegato(d);
-
- // Validazione XSD delle informazioni egov
- if(it.cnipa.collprofiles.driver.XMLUtils.isProfiloCollaborazioneEGOV(d.getContenuto())){
- it.cnipa.collprofiles.driver.XMLUtils.getDichiarazioneEGov(this.log,d.getContenuto(),
- this.sicaToOpenSPCoopContext.isInformazioniEGov_wscpDisabled_childUnqualified());
- }else if(it.gov.spcoop.sica.wscp.driver.XMLUtils.isProfiloCollaborazioneEGOV(d.getContenuto())){
- it.gov.spcoop.sica.wscp.driver.XMLUtils.getDichiarazioneEGov(this.log,d.getContenuto(),
- this.sicaToOpenSPCoopContext.isInformazioniEGov_wscpEnabled_childUnqualified());
- }
- }
- else if(entryName.startsWith((rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR)) ){
- //System.out.println("SPECIFICA SEMIFORMALE");
- InputStream inputStream = zip.getInputStream(zipEntry);
- Documento d = new Documento(nome,tipo,inputStream);
- inputStream.close();
- archivio.addSpecificaSemiformale(d);
-
- // Validazione XSD delle informazioni egov
- if(it.cnipa.collprofiles.driver.XMLUtils.isProfiloCollaborazioneEGOV(d.getContenuto())){
- it.cnipa.collprofiles.driver.XMLUtils.getDichiarazioneEGov(this.log,d.getContenuto(),
- this.sicaToOpenSPCoopContext.isInformazioniEGov_wscpDisabled_childUnqualified());
- }else if(it.gov.spcoop.sica.wscp.driver.XMLUtils.isProfiloCollaborazioneEGOV(d.getContenuto())){
- it.gov.spcoop.sica.wscp.driver.XMLUtils.getDichiarazioneEGov(this.log,d.getContenuto(),
- this.sicaToOpenSPCoopContext.isInformazioniEGov_wscpEnabled_childUnqualified());
- }
- }
- }
-
-
- }
-
- // check
- if(archivio.getManifesto()==null){
- throw new Exception("Manifesto non presente");
- }
-
- // Metto a posto i tipi (le estensioni dei files possono essere diverse)
- if(archivio.getManifesto().getSpecificaSemiformale()!=null){
- for(int i=0; i<archivio.getManifesto().getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
- String fileName = archivio.getManifesto().getSpecificaSemiformale().getDocumentoSemiformale(i).getBase();
- String tipo = archivio.getManifesto().getSpecificaSemiformale().getDocumentoSemiformale(i).getTipo();
- for(int j=0; j<archivio.sizeSpecificheSemiformali(); j++){
- if(fileName.equals(archivio.getSpecificaSemiformale(j).getNome())){
- //System.out.println("Metto a posto da ["+archivio.getSpecificaSemiformale(j).getTipo()+"] a ["+tipo+"]");
- archivio.getSpecificaSemiformale(j).setTipo(tipo);
- }
- }
- }
- }
- if(archivio.getManifesto().getSpecificaCoordinamento()!=null){
- for(int i=0; i<archivio.getManifesto().getSpecificaCoordinamento().sizeDocumentoCoordinamentoList(); i++){
- String fileName = archivio.getManifesto().getSpecificaCoordinamento().getDocumentoCoordinamento(i).getBase();
- String tipo = archivio.getManifesto().getSpecificaCoordinamento().getDocumentoCoordinamento(i).getTipo();
- for(int j=0; j<archivio.sizeSpecificheCoordinamento(); j++){
- if(fileName.equals(archivio.getSpecificaCoordinamento(j).getNome())){
- //System.out.println("Metto a posto da ["+archivio.getSpecificaCoordinamento(j).getTipo()+"] a ["+tipo+"]");
- archivio.getSpecificaCoordinamento(j).setTipo(tipo);
- }
- }
- }
- }
-
- return archivio;
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
- /* ----- Marshall dell'accordo di servizio composto----- */
- public void generateAccordoServizioComposto(AccordoServizioComposto manifesto,File file) throws XMLUtilsException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(file);
- generateAccordoServizioComposto(manifesto,fout);
- fout.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public void generateAccordoServizioComposto(AccordoServizioComposto manifesto,String fileName) throws XMLUtilsException{
- FileOutputStream fout = null;
- try{
- fout = new FileOutputStream(fileName);
- generateAccordoServizioComposto(manifesto,fout);
- fout.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(fout!=null)
- fout.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
-
- public byte[] generateAccordoServizioComposto(AccordoServizioComposto manifesto) throws XMLUtilsException{
- try{
- ByteArrayOutputStream bout = new ByteArrayOutputStream();
- generateAccordoServizioComposto(manifesto,bout);
- bout.flush();
- bout.close();
- return bout.toByteArray();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }
- }
- public void generateAccordoServizioComposto(AccordoServizioComposto manifesto,OutputStream out) throws XMLUtilsException{
-
- boolean generaSICAClientProjectFile = this.sicaToOpenSPCoopContext.isSICAClient_generaProject();
- boolean includiInfoRegistroGenerale = this.sicaToOpenSPCoopContext.isSICAClient_includiInfoRegistroGenerale();
- boolean lunghezzaNomeAccordoLimitata = this.sicaToOpenSPCoopContext.isSICAClient_nomeAccordo_32CaratteriMax();
-
- ZipOutputStream zipOut = null;
- try{
- zipOut = new ZipOutputStream(out);
- String rootDir = "";
- // Il codice dopo fissa il problema di inserire una directory nel package.
- // Commentare la riga sotto per ripristinare il vecchio comportamento.
- rootDir = manifesto.getManifesto().getNome()+File.separatorChar;
-
- // .project
- if(generaSICAClientProjectFile){
- String nomeProgettoEclipse = manifesto.getManifesto().getNome() + "_" + Costanti.ESTENSIONE_ACCORDO_SERVIZIO_COMPOSTO;
- String projectContenuto = Costanti.PROJECT_CLIENT_SICA_CONTENUTO.replace(Costanti.PROJECT_CLIENT_SICA_KEY_NOME, nomeProgettoEclipse);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.PROJECT_CLIENT_SICA));
- zipOut.write(projectContenuto.getBytes());
- }
-
- // firma
- if(manifesto.getFirma()!=null){
- byte[] firma = manifesto.getFirma().getBytes();
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.FIRMA_XML));
- zipOut.write(firma);
- }
-
- // manifest
- byte[] manifestoBytes = it.gov.spcoop.sica.manifest.driver.XMLUtils.generateManifestoSC(manifesto.getManifesto(),includiInfoRegistroGenerale,lunghezzaNomeAccordoLimitata);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.MANIFESTO_XML));
- zipOut.write(manifestoBytes);
-
- // Specifica Interfaccia
- boolean specificaInterfaccia = false;
- if(manifesto.getInterfacciaConcettuale()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar+Costanti.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL));
- zipOut.write(manifesto.getInterfacciaConcettuale().getContenuto());
- specificaInterfaccia = true;
- }
- if(manifesto.getInterfacciaLogicaLatoErogatore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar+Costanti.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL));
- zipOut.write(manifesto.getInterfacciaLogicaLatoErogatore().getContenuto());
- specificaInterfaccia = true;
- }
- if(manifesto.getInterfacciaLogicaLatoFruitore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar+Costanti.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL));
- zipOut.write(manifesto.getInterfacciaLogicaLatoFruitore().getContenuto());
- specificaInterfaccia = true;
- }
- if(!specificaInterfaccia){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_INTERFACCIA_DIR+File.separatorChar));
- }
-
- // Specifica Conversazioni
- boolean specificaConversazioni = false;
- if(manifesto.getConversazioneConcettuale()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar+Costanti.SPECIFICA_CONVERSAZIONE_CONCETTUALE_WSBL));
- zipOut.write(manifesto.getConversazioneConcettuale().getContenuto());
- specificaConversazioni = true;
- }
- if(manifesto.getConversazioneLogicaErogatore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar+Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_EROGATORE_WSBL));
- zipOut.write(manifesto.getConversazioneLogicaErogatore().getContenuto());
- specificaConversazioni = true;
- }
- if(manifesto.getConversazioneLogicaFruitore()!=null){
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar+Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_FRUITORE_WSBL));
- zipOut.write(manifesto.getConversazioneLogicaFruitore().getContenuto());
- specificaConversazioni = true;
- }
- if(!specificaConversazioni){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_CONVERSAZIONE_DIR+File.separatorChar));
- }
-
- // SpecificaCoordinamento
- boolean specificheCoordinameno = manifesto.sizeSpecificheCoordinamento()>0;
- for(int i=0; i<manifesto.sizeSpecificheCoordinamento(); i++){
- Documento doc = manifesto.getSpecificaCoordinamento(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_COORDINAMENTO_DIR+File.separatorChar+doc.getNome()));
- zipOut.write(doc.getContenuto());
- }
- if(!specificheCoordinameno){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_COORDINAMENTO_DIR+File.separatorChar));
- }
-
- // Allegati
- boolean allegati = manifesto.sizeAllegati()>0;
- for(int i=0; i<manifesto.sizeAllegati(); i++){
- Documento allegato = manifesto.getAllegato(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.ALLEGATI_DIR+File.separatorChar+allegato.getNome()));
- zipOut.write(allegato.getContenuto());
- }
- if(!allegati){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.ALLEGATI_DIR+File.separatorChar));
- }
-
- // Specifiche semiformali
- boolean specificheSemiformali = manifesto.sizeSpecificheSemiformali()>0;
- for(int i=0; i<manifesto.sizeSpecificheSemiformali(); i++){
- Documento doc = manifesto.getSpecificaSemiformale(i);
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar+doc.getNome()));
- zipOut.write(doc.getContenuto());
- }
- if(!specificheSemiformali){
- // La directory deve cmq esistere, al massimo sara' vuota
- zipOut.putNextEntry(new ZipEntry(rootDir+Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar));
- }
-
- zipOut.flush();
- }catch(Exception e){
- throw new XMLUtilsException(e.getMessage(),e);
- }finally{
- try{
- if(zipOut!=null)
- zipOut.close();
- }catch(Exception eClose){
- // close
- }
- }
- }
- }