XMLUtils.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package it.gov.spcoop.sica.manifest.driver;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.slf4j.Logger;
import org.openspcoop2.utils.xml.JaxbUtils;
import org.openspcoop2.utils.xml.ValidatoreXSD;
import it.gov.spcoop.sica.manifest.AccordoCooperazione;
import it.gov.spcoop.sica.manifest.AccordoServizio;
import it.gov.spcoop.sica.manifest.AccordoServizioParteComune;
import it.gov.spcoop.sica.manifest.AccordoServizioParteSpecifica;
import it.gov.spcoop.sica.manifest.DocumentoCoordinamento;
import it.gov.spcoop.sica.manifest.DocumentoLivelloServizio;
import it.gov.spcoop.sica.manifest.DocumentoSemiformale;
import it.gov.spcoop.sica.manifest.DocumentoSicurezza;
import it.gov.spcoop.sica.manifest.ServizioComposto;
import it.gov.spcoop.sica.manifest.SpecificaCoordinamento;
import it.gov.spcoop.sica.manifest.SpecificaLivelliServizio;
import it.gov.spcoop.sica.manifest.SpecificaSicurezza;
/**
* Classe utilizzata per lavorare sui manifest inseriti all'interno di un package di un accordo di servizio o di cooperazione
*
*
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class XMLUtils {
/** Validatore XSD */
static ValidatoreXSD validatoreXSD = null;
public static synchronized ValidatoreXSD getValidatoreXSD(Logger log) throws Exception{
if(XMLUtils.validatoreXSD==null){
XMLUtils.validatoreXSD = new ValidatoreXSD(log,XMLUtils.class.getResourceAsStream("/ManifestPackageSICA_originale.xsd"));
}
return XMLUtils.validatoreXSD;
}
public static boolean validateManifestoAS(AccordoServizio manifestoAS,StringBuilder motivoErroreValidazione,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata){
int size = motivoErroreValidazione.length();
// Vincoli ManifestoAccordo
if(manifestoAS.getDescrizione()==null){
motivoErroreValidazione.append("Descrizione non fornita\n");
}
if(manifestoAS.getNome()==null){
motivoErroreValidazione.append("Nome non fornito\n");
}else if(lunghezzaNomeAccordoLimitata && manifestoAS.getNome().length()>Costanti.LUNGHEZZA_MAX_NOME_ACCORDO){
motivoErroreValidazione.append("Nome fornito ["+manifestoAS.getNome()+"] supera il numero di caratteri consentiti: "+Costanti.LUNGHEZZA_MAX_NOME_ACCORDO+"\n");
}
if(manifestoAS.getDataCreazione()==null){
motivoErroreValidazione.append("DataCreazione non fornita\n");
}
if(manifestoAS.getAllegati()!=null){
for(int i=0; i<manifestoAS.getAllegati().sizeGenericoDocumentoList(); i++){
if(manifestoAS.getAllegati().getGenericoDocumento(i)==null){
motivoErroreValidazione.append("Allegato["+i+"] senza la definizione del documento\n");
}
}
}
if(manifestoAS.getSpecificaSemiformale()!=null){
for(int i=0; i<manifestoAS.getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
DocumentoSemiformale ss = manifestoAS.getSpecificaSemiformale().getDocumentoSemiformale(i);
if(ss.getBase()==null){
motivoErroreValidazione.append("SpecificaSemiformale["+i+"] senza la location del documento semiformale\n");
}
if(ss.getTipo()==null){
motivoErroreValidazione.append("SpecificaSemiformale["+i+"] senza il tipo del documento semiformale\n");
}else{
if(TipiDocumentoSemiformale.HTML.toString().equals(ss.getTipo())==false &&
TipiDocumentoSemiformale.UML.toString().equals(ss.getTipo())==false &&
TipiDocumentoSemiformale.XML.toString().equals(ss.getTipo())==false &&
TipiDocumentoSemiformale.LINGUAGGIO_NATURALE.toString().equals(ss.getTipo())==false ){
motivoErroreValidazione.append("SpecificaSemiformale["+i+"] con tipo del documento semiformale["+ss.getTipo()+"] diverso dai tipi accettati:"+
TipiDocumentoSemiformale.HTML.toString()+","+
TipiDocumentoSemiformale.UML.toString()+","+
TipiDocumentoSemiformale.XML.toString()+","+
TipiDocumentoSemiformale.LINGUAGGIO_NATURALE.toString()+","+"\n");
}
}
}
}
if(manifestoAS.getParteComune()!=null && manifestoAS.getParteSpecifica()!=null){
motivoErroreValidazione.append("Definita sia una parte comune che una parte specifica\n");
}else if(manifestoAS.getParteComune()!=null){
AccordoServizioParteComune parteComune = manifestoAS.getParteComune();
if(includiInfoRegistroGenerale){
if(parteComune.getPubblicatore()==null){
motivoErroreValidazione.append("Pubblicatore non definito\n");
}
}
if(parteComune.getSpecificaInterfaccia()==null){
motivoErroreValidazione.append("SpecificaInterfaccia non definita\n");
}else{
if(parteComune.getSpecificaInterfaccia().getInterfacciaConcettuale()==null){
motivoErroreValidazione.append("SpecificaInterfacciaConcettuale non definita\n");
}else{
if(parteComune.getSpecificaInterfaccia().getInterfacciaConcettuale().getBase()==null){
motivoErroreValidazione.append("contenuto SpecificaInterfacciaConcettuale non definito\n");
}
if(parteComune.getSpecificaInterfaccia().getInterfacciaConcettuale().getTipo()!=null &&
TipiDocumentoInterfaccia.WSDL.toString().equals(parteComune.getSpecificaInterfaccia().getInterfacciaConcettuale().getTipo().name())==false){
motivoErroreValidazione.append("tipo SpecificaInterfacciaConcettuale diverso da "+TipiDocumentoInterfaccia.WSDL.toString()+"\n");
}
}
if(parteComune.getSpecificaInterfaccia().getInterfacciaLogicaLatoErogatore()==null){
motivoErroreValidazione.append("SpecificaInterfacciaLogicaLatoErogatore non definita\n");
}else{
if(parteComune.getSpecificaInterfaccia().getInterfacciaLogicaLatoErogatore().getBase()==null){
motivoErroreValidazione.append("contenuto SpecificaInterfacciaLogicaLatoErogatore non definito\n");
}
if(parteComune.getSpecificaInterfaccia().getInterfacciaLogicaLatoErogatore().getTipo()!=null &&
TipiDocumentoInterfaccia.WSDL.toString().equals(parteComune.getSpecificaInterfaccia().getInterfacciaLogicaLatoErogatore().getTipo().name())==false){
motivoErroreValidazione.append("tipo SpecificaInterfacciaLogicaLatoErogatore diverso da "+TipiDocumentoInterfaccia.WSDL.toString()+"\n");
}
}
if(parteComune.getSpecificaInterfaccia().getInterfacciaLogicaLatoFruitore()!=null){
if(parteComune.getSpecificaInterfaccia().getInterfacciaLogicaLatoFruitore().getBase()==null){
motivoErroreValidazione.append("contenuto SpecificaInterfacciaLogicaLatoFruitore non definito\n");
}
if(parteComune.getSpecificaInterfaccia().getInterfacciaLogicaLatoFruitore().getTipo()!=null &&
TipiDocumentoInterfaccia.WSDL.toString().equals(parteComune.getSpecificaInterfaccia().getInterfacciaLogicaLatoFruitore().getTipo().name())==false){
motivoErroreValidazione.append("tipo SpecificaInterfacciaLogicaLatoFruitore diverso da "+TipiDocumentoInterfaccia.WSDL.toString()+"\n");
}
}
}
if(parteComune.getSpecificaConversazione()!=null){
if(parteComune.getSpecificaConversazione().getConversazioneConcettuale()!=null){
if(parteComune.getSpecificaConversazione().getConversazioneConcettuale().getBase()==null){
motivoErroreValidazione.append("contenuto ConversazioneConcettuale non definito\n");
}
if(parteComune.getSpecificaConversazione().getConversazioneConcettuale().getTipo()!=null &&
TipiDocumentoConversazione.BPEL.toString().equals(parteComune.getSpecificaConversazione().getConversazioneConcettuale().getTipo().name())==false &&
TipiDocumentoConversazione.WSBL.toString().equals(parteComune.getSpecificaConversazione().getConversazioneConcettuale().getTipo().name())==false){
motivoErroreValidazione.append("tipo ConversazioneConcettuale diverso da "+TipiDocumentoConversazione.BPEL.toString()+"/"+TipiDocumentoConversazione.WSBL.toString()+"\n");
}
}
if(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoErogatore()!=null){
if(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoErogatore().getBase()==null){
motivoErroreValidazione.append("contenuto ConversazioneLogicaLatoErogatore non definito\n");
}
if(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoErogatore().getTipo()!=null &&
TipiDocumentoConversazione.BPEL.toString().equals(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoErogatore().getTipo().name())==false &&
TipiDocumentoConversazione.WSBL.toString().equals(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoErogatore().getTipo().name())==false){
motivoErroreValidazione.append("tipo ConversazioneLogicaLatoErogatore diverso da "+TipiDocumentoConversazione.BPEL.toString()+"/"+TipiDocumentoConversazione.WSBL.toString()+"\n");
}
}
if(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoFruitore()!=null){
if(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoFruitore().getBase()==null){
motivoErroreValidazione.append("contenuto ConversazioneLogicaLatoFruitore non definito\n");
}
if(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoFruitore().getTipo()!=null &&
TipiDocumentoConversazione.BPEL.toString().equals(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoFruitore().getTipo().name())==false &&
TipiDocumentoConversazione.WSBL.toString().equals(parteComune.getSpecificaConversazione().getConversazioneLogicaLatoFruitore().getTipo().name())==false){
motivoErroreValidazione.append("tipo ConversazioneLogicaLatoFruitore diverso da "+TipiDocumentoConversazione.BPEL.toString()+"/"+TipiDocumentoConversazione.WSBL.toString()+"\n");
}
}
}
}else if(manifestoAS.getParteSpecifica()!=null){
AccordoServizioParteSpecifica parteSpecifica = manifestoAS.getParteSpecifica();
if(parteSpecifica.getAdesione()==null){
motivoErroreValidazione.append("Adesione non definita\n");
}
if(includiInfoRegistroGenerale){
if(parteSpecifica.getErogatore()==null){
motivoErroreValidazione.append("Erogatore non definito\n");
}
}
if(parteSpecifica.getRiferimentoParteComune()==null){
motivoErroreValidazione.append("RiferimentoParteComune non definito\n");
}
if(parteSpecifica.getSpecificaPortiAccesso()!=null){
if(parteSpecifica.getSpecificaPortiAccesso().getPortiAccessoErogatore()!=null){
if(parteSpecifica.getSpecificaPortiAccesso().getPortiAccessoErogatore().getBase()==null){
motivoErroreValidazione.append("contenuto PortiAccessoErogatore non definito\n");
}
if(parteSpecifica.getSpecificaPortiAccesso().getPortiAccessoErogatore().getTipo()!=null &&
TipiDocumentoInterfaccia.WSDL.toString().equals(parteSpecifica.getSpecificaPortiAccesso().getPortiAccessoErogatore().getTipo().name())==false){
motivoErroreValidazione.append("tipo PortiAccessoErogatore diverso da "+TipiDocumentoInterfaccia.WSDL.toString()+"\n");
}
}
if(parteSpecifica.getSpecificaPortiAccesso().getPortiAccessoFruitore()!=null){
if(parteSpecifica.getSpecificaPortiAccesso().getPortiAccessoFruitore().getBase()==null){
motivoErroreValidazione.append("contenuto PortiAccessoFruitore non definito\n");
}
if(parteSpecifica.getSpecificaPortiAccesso().getPortiAccessoFruitore().getTipo()!=null &&
TipiDocumentoInterfaccia.WSDL.toString().equals(parteSpecifica.getSpecificaPortiAccesso().getPortiAccessoFruitore().getTipo().name())==false){
motivoErroreValidazione.append("tipo PortiAccessoFruitore diverso da "+TipiDocumentoInterfaccia.WSDL.toString()+"\n");
}
}
}
SpecificaSicurezza specificaSicurezza = parteSpecifica.getSpecificaSicurezza();
if(specificaSicurezza!=null){
for(int i=0; i<specificaSicurezza.sizeDocumentoSicurezzaList(); i++){
DocumentoSicurezza docS = specificaSicurezza.getDocumentoSicurezza(i);
if(docS.getBase()==null){
motivoErroreValidazione.append("SpecificaSicurezza["+i+"] senza la location del documento \n");
}
if(docS.getTipo()==null){
motivoErroreValidazione.append("SpecificaSicurezza["+i+"] senza il tipo del documento \n");
}else{
if(TipiDocumentoSicurezza.LINGUAGGIO_NATURALE.toString().equals(docS.getTipo())==false &&
TipiDocumentoSicurezza.WSPOLICY.toString().equals(docS.getTipo())==false ){
motivoErroreValidazione.append("SpecificaSicurezza["+i+"] con tipo del documento specificaSicurezza["+docS.getTipo()+"] diverso dai tipi accettati:"+
TipiDocumentoSicurezza.LINGUAGGIO_NATURALE.toString()+","+TipiDocumentoSicurezza.WSPOLICY.toString()+"\n");
}
}
}
}
SpecificaLivelliServizio specificaLivelliServizio = parteSpecifica.getSpecificaLivelliServizio();
if(specificaSicurezza!=null){
for(int i=0; i<specificaLivelliServizio.sizeDocumentoLivelloServizioList(); i++){
DocumentoLivelloServizio docL = specificaLivelliServizio.getDocumentoLivelloServizio(i);
if(docL.getBase()==null){
motivoErroreValidazione.append("SpecificaLivelliServizio["+i+"] senza la location del documento \n");
}
if(docL.getTipo()==null){
motivoErroreValidazione.append("SpecificaLivelliServizio["+i+"] senza il tipo del documento \n");
}else{
if(TipiDocumentoLivelloServizio.WSAGREEMENT.toString().equals(docL.getTipo())==false &&
TipiDocumentoLivelloServizio.WSLA.toString().equals(docL.getTipo())==false ){
motivoErroreValidazione.append("SpecificaLivelliServizio["+i+"] con tipo del documento specificaLivelliServizio["+docL.getTipo()+"] diverso dai tipi accettati:"+
TipiDocumentoLivelloServizio.WSAGREEMENT.toString()+","+TipiDocumentoLivelloServizio.WSLA.toString()+"\n");
}
}
}
}
}else{
motivoErroreValidazione.append("Una parte comune o una parte specifica non definita\n");
}
if(motivoErroreValidazione.length()!=size)
return false;
else
return true;
}
public static boolean validateManifestoAC(AccordoCooperazione manifestoAC,StringBuilder motivoErroreValidazione, boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata){
int size = motivoErroreValidazione.length();
// Vincoli ManifestoAccordo
if(manifestoAC.getDescrizione()==null){
motivoErroreValidazione.append("Descrizione non fornita\n");
}
if(manifestoAC.getNome()==null){
motivoErroreValidazione.append("Nome non fornito\n");
}else if(lunghezzaNomeAccordoLimitata && manifestoAC.getNome().length()>Costanti.LUNGHEZZA_MAX_NOME_ACCORDO){
motivoErroreValidazione.append("Nome fornito ["+manifestoAC.getNome()+"] supera il numero di caratteri consentiti: "+Costanti.LUNGHEZZA_MAX_NOME_ACCORDO+"\n");
}
if(manifestoAC.getDataCreazione()==null){
motivoErroreValidazione.append("DataCreazione non fornita\n");
}
if(manifestoAC.getAllegati()!=null){
for(int i=0; i<manifestoAC.getAllegati().sizeGenericoDocumentoList(); i++){
if(manifestoAC.getAllegati().getGenericoDocumento(i)==null){
motivoErroreValidazione.append("Allegato["+i+"] senza la definizione del documento\n");
}
}
}
if(manifestoAC.getSpecificaSemiformale()!=null){
for(int i=0; i<manifestoAC.getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
DocumentoSemiformale ss = manifestoAC.getSpecificaSemiformale().getDocumentoSemiformale(i);
if(ss.getBase()==null){
motivoErroreValidazione.append("SpecificaSemiformale["+i+"] senza la location del documento semiformale\n");
}
if(ss.getTipo()==null){
motivoErroreValidazione.append("SpecificaSemiformale["+i+"] senza il tipo del documento semiformale\n");
}else{
if(TipiDocumentoSemiformale.HTML.toString().equals(ss.getTipo())==false &&
TipiDocumentoSemiformale.UML.toString().equals(ss.getTipo())==false &&
TipiDocumentoSemiformale.XML.toString().equals(ss.getTipo())==false &&
TipiDocumentoSemiformale.LINGUAGGIO_NATURALE.toString().equals(ss.getTipo())==false ){
motivoErroreValidazione.append("SpecificaSemiformale["+i+"] con tipo del documento semiformale["+ss.getTipo()+"] diverso dai tipi accettati:"+
TipiDocumentoSemiformale.HTML.toString()+","+
TipiDocumentoSemiformale.UML.toString()+","+
TipiDocumentoSemiformale.XML.toString()+","+
TipiDocumentoSemiformale.LINGUAGGIO_NATURALE.toString()+","+"\n");
}
}
}
}
if(includiInfoRegistroGenerale){
if(manifestoAC.getCoordinatore()==null){
motivoErroreValidazione.append("Coordinatore non definito\n");
}
}
if(manifestoAC.getElencoPartecipanti()==null){
motivoErroreValidazione.append("ElencoPartecipanti non definito\n");
}else{
if(manifestoAC.getElencoPartecipanti().sizePartecipanteList()<2){
motivoErroreValidazione.append("ElencoPartecipanti <2\n");
}else{
for(int i=0; i<manifestoAC.getElencoPartecipanti().sizePartecipanteList(); i++){
if(manifestoAC.getElencoPartecipanti().getPartecipante(i)==null){
motivoErroreValidazione.append("ElencoPartecipanti["+i+"] senza il partecipante \n");
}
}
}
}
if(includiInfoRegistroGenerale){
if(manifestoAC.getServiziComposti()!=null){
for(int i=0; i<manifestoAC.getServiziComposti().sizeServizioCompostoList(); i++){
java.net.URI servComposti = manifestoAC.getServiziComposti().getServizioComposto(i);
if(servComposti==null){
motivoErroreValidazione.append("ElencoServiziComposti["+i+"] senza il servizio composto \n");
}
}
}
}
if(motivoErroreValidazione.length()!=size)
return false;
else
return true;
}
public static boolean validateManifestoSC(ServizioComposto manifestoSC,StringBuilder motivoErroreValidazione, boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata){
int size = motivoErroreValidazione.length();
// Vincoli ManifestoAccordo
if(manifestoSC.getDescrizione()==null){
motivoErroreValidazione.append("Descrizione non fornita\n");
}
if(manifestoSC.getNome()==null){
motivoErroreValidazione.append("Nome non fornito\n");
}else if(lunghezzaNomeAccordoLimitata && manifestoSC.getNome().length()>Costanti.LUNGHEZZA_MAX_NOME_ACCORDO){
motivoErroreValidazione.append("Nome fornito ["+manifestoSC.getNome()+"] supera il numero di caratteri consentiti: "+Costanti.LUNGHEZZA_MAX_NOME_ACCORDO+"\n");
}
if(manifestoSC.getDataCreazione()==null){
motivoErroreValidazione.append("DataCreazione non fornita\n");
}
if(manifestoSC.getAllegati()!=null){
for(int i=0; i<manifestoSC.getAllegati().sizeGenericoDocumentoList(); i++){
if(manifestoSC.getAllegati().getGenericoDocumento(i)==null){
motivoErroreValidazione.append("Allegato["+i+"] senza la definizione del documento\n");
}
}
}
if(includiInfoRegistroGenerale){
if(manifestoSC.getPubblicatore()==null){
motivoErroreValidazione.append("Pubblicatore non definito\n");
}
}
if(manifestoSC.getSpecificaSemiformale()!=null){
for(int i=0; i<manifestoSC.getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
DocumentoSemiformale ss = manifestoSC.getSpecificaSemiformale().getDocumentoSemiformale(i);
if(ss.getBase()==null){
motivoErroreValidazione.append("SpecificaSemiformale["+i+"] senza la location del documento semiformale\n");
}
if(ss.getTipo()==null){
motivoErroreValidazione.append("SpecificaSemiformale["+i+"] senza il tipo del documento semiformale\n");
}else{
if(TipiDocumentoSemiformale.HTML.toString().equals(ss.getTipo())==false &&
TipiDocumentoSemiformale.UML.toString().equals(ss.getTipo())==false &&
TipiDocumentoSemiformale.XML.toString().equals(ss.getTipo())==false &&
TipiDocumentoSemiformale.LINGUAGGIO_NATURALE.toString().equals(ss.getTipo())==false ){
motivoErroreValidazione.append("SpecificaSemiformale["+i+"] con tipo del documento semiformale["+ss.getTipo()+"] diverso dai tipi accettati:"+
TipiDocumentoSemiformale.HTML.toString()+","+
TipiDocumentoSemiformale.UML.toString()+","+
TipiDocumentoSemiformale.XML.toString()+","+
TipiDocumentoSemiformale.LINGUAGGIO_NATURALE.toString()+","+"\n");
}
}
}
}
if(manifestoSC.getSpecificaInterfaccia()==null){
motivoErroreValidazione.append("SpecificaInterfaccia non definita\n");
}else{
if(manifestoSC.getSpecificaInterfaccia().getInterfacciaConcettuale()==null){
motivoErroreValidazione.append("SpecificaInterfacciaConcettuale non definita\n");
}else{
if(manifestoSC.getSpecificaInterfaccia().getInterfacciaConcettuale().getBase()==null){
motivoErroreValidazione.append("contenuto SpecificaInterfacciaConcettuale non definito\n");
}
if(manifestoSC.getSpecificaInterfaccia().getInterfacciaConcettuale().getTipo()!=null &&
TipiDocumentoInterfaccia.WSDL.toString().equals(manifestoSC.getSpecificaInterfaccia().getInterfacciaConcettuale().getTipo().name())==false){
motivoErroreValidazione.append("tipo SpecificaInterfacciaConcettuale diverso da "+TipiDocumentoInterfaccia.WSDL.toString()+"\n");
}
}
if(manifestoSC.getSpecificaInterfaccia().getInterfacciaLogicaLatoErogatore()==null){
motivoErroreValidazione.append("SpecificaInterfacciaLogicaLatoErogatore non definita\n");
}else{
if(manifestoSC.getSpecificaInterfaccia().getInterfacciaLogicaLatoErogatore().getBase()==null){
motivoErroreValidazione.append("contenuto SpecificaInterfacciaLogicaLatoErogatore non definito\n");
}
if(manifestoSC.getSpecificaInterfaccia().getInterfacciaLogicaLatoErogatore().getTipo()!=null &&
TipiDocumentoInterfaccia.WSDL.toString().equals(manifestoSC.getSpecificaInterfaccia().getInterfacciaLogicaLatoErogatore().getTipo().name())==false){
motivoErroreValidazione.append("tipo SpecificaInterfacciaLogicaLatoErogatore diverso da "+TipiDocumentoInterfaccia.WSDL.toString()+"\n");
}
}
if(manifestoSC.getSpecificaInterfaccia().getInterfacciaLogicaLatoFruitore()!=null){
if(manifestoSC.getSpecificaInterfaccia().getInterfacciaLogicaLatoFruitore().getBase()==null){
motivoErroreValidazione.append("contenuto SpecificaInterfacciaLogicaLatoFruitore non definito\n");
}
if(manifestoSC.getSpecificaInterfaccia().getInterfacciaLogicaLatoFruitore().getTipo()!=null &&
TipiDocumentoInterfaccia.WSDL.toString().equals(manifestoSC.getSpecificaInterfaccia().getInterfacciaLogicaLatoFruitore().getTipo().name())==false){
motivoErroreValidazione.append("tipo SpecificaInterfacciaLogicaLatoFruitore diverso da "+TipiDocumentoInterfaccia.WSDL.toString()+"\n");
}
}
}
if(manifestoSC.getSpecificaConversazione()!=null){
if(manifestoSC.getSpecificaConversazione().getConversazioneConcettuale()!=null){
if(manifestoSC.getSpecificaConversazione().getConversazioneConcettuale().getBase()==null){
motivoErroreValidazione.append("contenuto ConversazioneConcettuale non definito\n");
}
if(manifestoSC.getSpecificaConversazione().getConversazioneConcettuale().getTipo()!=null &&
TipiDocumentoConversazione.BPEL.toString().equals(manifestoSC.getSpecificaConversazione().getConversazioneConcettuale().getTipo().name())==false &&
TipiDocumentoConversazione.WSBL.toString().equals(manifestoSC.getSpecificaConversazione().getConversazioneConcettuale().getTipo().name())==false){
motivoErroreValidazione.append("tipo ConversazioneConcettuale diverso da "+TipiDocumentoConversazione.BPEL.toString()+"/"+TipiDocumentoConversazione.WSBL.toString()+"\n");
}
}
if(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoErogatore()!=null){
if(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoErogatore().getBase()==null){
motivoErroreValidazione.append("contenuto ConversazioneLogicaLatoErogatore non definito\n");
}
if(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoErogatore().getTipo()!=null &&
TipiDocumentoConversazione.BPEL.toString().equals(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoErogatore().getTipo().name())==false &&
TipiDocumentoConversazione.WSBL.toString().equals(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoErogatore().getTipo().name())==false){
motivoErroreValidazione.append("tipo ConversazioneLogicaLatoErogatore diverso da "+TipiDocumentoConversazione.BPEL.toString()+"/"+TipiDocumentoConversazione.WSBL.toString()+"\n");
}
}
if(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoFruitore()!=null){
if(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoFruitore().getBase()==null){
motivoErroreValidazione.append("contenuto ConversazioneLogicaLatoFruitore non definito\n");
}
if(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoFruitore().getTipo()!=null &&
TipiDocumentoConversazione.BPEL.toString().equals(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoFruitore().getTipo().name())==false &&
TipiDocumentoConversazione.WSBL.toString().equals(manifestoSC.getSpecificaConversazione().getConversazioneLogicaLatoFruitore().getTipo().name())==false){
motivoErroreValidazione.append("tipo ConversazioneLogicaLatoFruitore diverso da "+TipiDocumentoConversazione.BPEL.toString()+"/"+TipiDocumentoConversazione.WSBL.toString()+"\n");
}
}
}
if(manifestoSC.getRiferimentoAccordoCooperazione()==null){
motivoErroreValidazione.append("RiferimentoAccordo non definito\n");
}
if(manifestoSC.getServiziComponenti()==null){
motivoErroreValidazione.append("ElencoServiziComponenti non presente \n");
}else{
for(int i=0; i<manifestoSC.getServiziComponenti().sizeServizioComponenteList(); i++){
java.net.URI servComponente = manifestoSC.getServiziComponenti().getServizioComponente(i);
if(servComponente==null){
motivoErroreValidazione.append("ElencoServiziComponenti["+i+"] senza il servizio componente \n");
}
}
}
SpecificaCoordinamento specificaCoordinamento = manifestoSC.getSpecificaCoordinamento();
if(specificaCoordinamento!=null){
for(int i=0; i<specificaCoordinamento.sizeDocumentoCoordinamentoList(); i++){
DocumentoCoordinamento docC = specificaCoordinamento.getDocumentoCoordinamento(i);
if(docC.getBase()==null){
motivoErroreValidazione.append("SpecificaCoordinamento["+i+"] senza la location del documento \n");
}
if(docC.getTipo()==null){
motivoErroreValidazione.append("SpecificaCoordinamento["+i+"] senza il tipo del documento \n");
}else{
if(TipiDocumentoCoordinamento.BPEL.toString().equals(docC.getTipo())==false &&
TipiDocumentoCoordinamento.WSCDL.toString().equals(docC.getTipo())==false){
motivoErroreValidazione.append("tipo SpecificaCoordinamento["+docC.getTipo()+"] diverso da "+TipiDocumentoCoordinamento.BPEL.toString()+"/"+TipiDocumentoCoordinamento.WSCDL.toString()+"\n");
}
}
}
}
if(motivoErroreValidazione.length()!=size)
return false;
else
return true;
}
/* ----- Unmarshall Manifest dell'accordo di servizio ----- */
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m byte[]
* @return ManifestoAS
* @throws XMLUtilsException
*/
public static AccordoServizio getManifestoAS(Logger log,byte[] m) throws XMLUtilsException{
ByteArrayInputStream bin = null;
try{
bin = new ByteArrayInputStream(m);
return XMLUtils.getManifestoAS(log,bin);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}finally{
try{
if(bin!=null)
bin.close();
}catch(Exception eClose){
// close
}
}
}
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m File
* @return ManifestoAS
* @throws XMLUtilsException
*/
public static AccordoServizio getManifestoAS(Logger log,File m) throws XMLUtilsException{
FileInputStream fin = null;
try{
fin = new FileInputStream(m);
return XMLUtils.getManifestoAS(log,fin);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}finally{
try{
if(fin!=null)
fin.close();
}catch(Exception eClose){
// close
}
}
}
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m String
* @return ManifestoAS
* @throws XMLUtilsException
*/
public static AccordoServizio getManifestoAS(Logger log,String m) throws XMLUtilsException{
return XMLUtils.getManifestoAS(log,m.getBytes());
}
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m InputStream
* @return ManifestoAS
* @throws XMLUtilsException
*/
public static AccordoServizio getManifestoAS(Logger log,InputStream m) throws XMLUtilsException{
try{
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[]reads = new byte[1024];
int letti = 0;
while( (letti=m.read(reads)) != -1){
bout.write(reads, 0, letti);
}
bout.flush();
bout.close();
byte [] xml = bout.toByteArray();
ByteArrayInputStream binValidazione = new ByteArrayInputStream(xml);
ValidatoreXSD validatoreXSD = XMLUtils.getValidatoreXSD(log);
validatoreXSD.valida(binValidazione);
ByteArrayInputStream binTrasformazione = new ByteArrayInputStream(xml);
return (AccordoServizio) JaxbUtils.xmlToObj(binTrasformazione, AccordoServizio.class);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
/* ----- Marshall Manifest dell'accordo di servizio ----- */
public static void generateManifestoAS(AccordoServizio manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata,File out) throws XMLUtilsException{
try{
StringBuilder risultatoValidazione = new StringBuilder();
if(XMLUtils.validateManifestoAS(manifest, risultatoValidazione, includiInfoRegistroGenerale, lunghezzaNomeAccordoLimitata)==false){
throw new Exception(risultatoValidazione.toString());
}
JaxbUtils.objToXml(out.getName(), AccordoServizio.class, manifest);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
public static void generateManifestoAS(AccordoServizio manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata,String fileName) throws XMLUtilsException{
try{
StringBuilder risultatoValidazione = new StringBuilder();
if(XMLUtils.validateManifestoAS(manifest, risultatoValidazione, includiInfoRegistroGenerale,lunghezzaNomeAccordoLimitata)==false){
throw new Exception(risultatoValidazione.toString());
}
JaxbUtils.objToXml(fileName, AccordoServizio.class, manifest);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
public static byte[] generateManifestoAS(AccordoServizio manifest, boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata) throws XMLUtilsException{
try{
ByteArrayOutputStream bout = new ByteArrayOutputStream();
XMLUtils.generateManifestoAS(manifest,includiInfoRegistroGenerale,lunghezzaNomeAccordoLimitata,bout);
bout.flush();
bout.close();
return bout.toByteArray();
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
public static void generateManifestoAS(AccordoServizio manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata,OutputStream out) throws XMLUtilsException{
try{
StringBuilder risultatoValidazione = new StringBuilder();
if(XMLUtils.validateManifestoAS(manifest, risultatoValidazione, includiInfoRegistroGenerale,lunghezzaNomeAccordoLimitata)==false){
throw new Exception(risultatoValidazione.toString());
}
JaxbUtils.objToXml(out, AccordoServizio.class, manifest);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
/* ----- Unmarshall Manifest dell'accordo di cooperazione ----- */
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m byte[]
* @return ManifestAC
* @throws XMLUtilsException
*/
public static AccordoCooperazione getManifestoAC(Logger log,byte[] m) throws XMLUtilsException{
ByteArrayInputStream bin = null;
try{
bin = new ByteArrayInputStream(m);
return XMLUtils.getManifestoAC(log,bin);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}finally{
try{
if(bin!=null)
bin.close();
}catch(Exception eClose){
// close
}
}
}
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m File
* @return ManifestAC
* @throws XMLUtilsException
*/
public static AccordoCooperazione getManifestoAC(Logger log,File m) throws XMLUtilsException{
FileInputStream fin = null;
try{
fin = new FileInputStream(m);
return XMLUtils.getManifestoAC(log,fin);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}finally{
try{
if(fin!=null)
fin.close();
}catch(Exception eClose){
// close
}
}
}
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m String
* @return ManifestAC
* @throws XMLUtilsException
*/
public static AccordoCooperazione getManifestoAC(Logger log,String m) throws XMLUtilsException{
return XMLUtils.getManifestoAC(log,m.getBytes());
}
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m InputStream
* @return ManifestAC
* @throws XMLUtilsException
*/
public static AccordoCooperazione getManifestoAC(Logger log,InputStream m) throws XMLUtilsException{
try{
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[]reads = new byte[1024];
int letti = 0;
while( (letti=m.read(reads)) != -1){
bout.write(reads, 0, letti);
}
bout.flush();
bout.close();
byte [] xml = bout.toByteArray();
ByteArrayInputStream binValidazione = new ByteArrayInputStream(xml);
ValidatoreXSD validatoreXSD = XMLUtils.getValidatoreXSD(log);
validatoreXSD.valida(binValidazione);
ByteArrayInputStream binTrasformazione = new ByteArrayInputStream(xml);
return (AccordoCooperazione) JaxbUtils.xmlToObj(binTrasformazione, AccordoCooperazione.class);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
/* ----- Marshall Manifest dell'accordo di cooperazione ----- */
public static void generateManifestoAC(AccordoCooperazione manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata,File out) throws XMLUtilsException{
try{
StringBuilder risultatoValidazione = new StringBuilder();
if(XMLUtils.validateManifestoAC(manifest, risultatoValidazione, includiInfoRegistroGenerale, lunghezzaNomeAccordoLimitata)==false){
throw new Exception(risultatoValidazione.toString());
}
JaxbUtils.objToXml(out.getName(), AccordoCooperazione.class, manifest);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
public static void generateManifestoAC(AccordoCooperazione manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata,String fileName) throws XMLUtilsException{
try{
StringBuilder risultatoValidazione = new StringBuilder();
if(XMLUtils.validateManifestoAC(manifest, risultatoValidazione, includiInfoRegistroGenerale, lunghezzaNomeAccordoLimitata)==false){
throw new Exception(risultatoValidazione.toString());
}
JaxbUtils.objToXml(fileName, AccordoCooperazione.class, manifest);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
public static byte[] generateManifestoAC(AccordoCooperazione manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata) throws XMLUtilsException{
try{
ByteArrayOutputStream bout = new ByteArrayOutputStream();
XMLUtils.generateManifestoAC(manifest,includiInfoRegistroGenerale,lunghezzaNomeAccordoLimitata,bout);
bout.flush();
bout.close();
return bout.toByteArray();
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
public static void generateManifestoAC(AccordoCooperazione manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata,OutputStream out) throws XMLUtilsException{
try{
StringBuilder risultatoValidazione = new StringBuilder();
if(XMLUtils.validateManifestoAC(manifest, risultatoValidazione, includiInfoRegistroGenerale, lunghezzaNomeAccordoLimitata)==false){
throw new Exception(risultatoValidazione.toString());
}
JaxbUtils.objToXml(out, AccordoCooperazione.class, manifest);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
/* ----- Unmarshall Manifest del servizio composto ----- */
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m byte[]
* @return ManifestAC
* @throws XMLUtilsException
*/
public static ServizioComposto getManifestoSC(Logger log,byte[] m) throws XMLUtilsException{
ByteArrayInputStream bin = null;
try{
bin = new ByteArrayInputStream(m);
return XMLUtils.getManifestoSC(log,bin);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}finally{
try{
if(bin!=null)
bin.close();
}catch(Exception eClose){
// close
}
}
}
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m File
* @return ManifestAC
* @throws XMLUtilsException
*/
public static ServizioComposto getManifestoSC(Logger log,File m) throws XMLUtilsException{
FileInputStream fin = null;
try{
fin = new FileInputStream(m);
return XMLUtils.getManifestoSC(log,fin);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}finally{
try{
if(fin!=null)
fin.close();
}catch(Exception eClose){
// close
}
}
}
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m String
* @return ManifestAC
* @throws XMLUtilsException
*/
public static ServizioComposto getManifestoSC(Logger log,String m) throws XMLUtilsException{
return XMLUtils.getManifestoSC(log,m.getBytes());
}
/**
* Ritorna la rappresentazione java di un Manifest di un accordo di servizio
*
* @param m InputStream
* @return ManifestAC
* @throws XMLUtilsException
*/
public static ServizioComposto getManifestoSC(Logger log,InputStream m) throws XMLUtilsException{
try{
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[]reads = new byte[1024];
int letti = 0;
while( (letti=m.read(reads)) != -1){
bout.write(reads, 0, letti);
}
bout.flush();
bout.close();
byte [] xml = bout.toByteArray();
ByteArrayInputStream binValidazione = new ByteArrayInputStream(xml);
ValidatoreXSD validatoreXSD = XMLUtils.getValidatoreXSD(log);
validatoreXSD.valida(binValidazione);
ByteArrayInputStream binTrasformazione = new ByteArrayInputStream(xml);
return (ServizioComposto) JaxbUtils.xmlToObj(binTrasformazione, ServizioComposto.class);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
/* ----- Marshall Manifest dell'accordo di servizio ----- */
public static void generateManifestoSC(ServizioComposto manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata, File out) throws XMLUtilsException{
try{
StringBuilder risultatoValidazione = new StringBuilder();
if(XMLUtils.validateManifestoSC(manifest, risultatoValidazione, includiInfoRegistroGenerale, lunghezzaNomeAccordoLimitata)==false){
throw new Exception(risultatoValidazione.toString());
}
JaxbUtils.objToXml(out.getName(), ServizioComposto.class, manifest);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
public static void generateManifestoSC(ServizioComposto manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata,String fileName) throws XMLUtilsException{
try{
StringBuilder risultatoValidazione = new StringBuilder();
if(XMLUtils.validateManifestoSC(manifest, risultatoValidazione, includiInfoRegistroGenerale, lunghezzaNomeAccordoLimitata)==false){
throw new Exception(risultatoValidazione.toString());
}
JaxbUtils.objToXml(fileName, ServizioComposto.class, manifest);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
public static byte[] generateManifestoSC(ServizioComposto manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata) throws XMLUtilsException{
try{
ByteArrayOutputStream bout = new ByteArrayOutputStream();
XMLUtils.generateManifestoSC(manifest,includiInfoRegistroGenerale, lunghezzaNomeAccordoLimitata,bout);
bout.flush();
bout.close();
return bout.toByteArray();
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
public static void generateManifestoSC(ServizioComposto manifest,boolean includiInfoRegistroGenerale,boolean lunghezzaNomeAccordoLimitata,OutputStream out) throws XMLUtilsException{
try{
StringBuilder risultatoValidazione = new StringBuilder();
if(XMLUtils.validateManifestoSC(manifest, risultatoValidazione, includiInfoRegistroGenerale, lunghezzaNomeAccordoLimitata)==false){
throw new Exception(risultatoValidazione.toString());
}
JaxbUtils.objToXml(out, ServizioComposto.class, manifest);
}catch(Exception e){
throw new XMLUtilsException(e.getMessage(),e);
}
}
}