SICAtoOpenSPCoopUtilities.java
- /*
- * GovWay - A customizable API Gateway
- * https://govway.org
- *
- * Copyright (c) 2005-2025 Link.it srl (https://link.it).
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3, as published by
- * the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- package org.openspcoop2.protocol.spcoop.sica;
- import java.io.File;
- import java.net.URI;
- import java.util.List;
- import javax.wsdl.Binding;
- import javax.wsdl.Definition;
- import org.openspcoop2.core.constants.CostantiDB;
- import org.openspcoop2.core.id.IDAccordo;
- import org.openspcoop2.core.id.IDAccordoCooperazione;
- import org.openspcoop2.core.id.IDServizio;
- import org.openspcoop2.core.id.IDSoggetto;
- import org.openspcoop2.core.registry.AccordoCooperazione;
- import org.openspcoop2.core.registry.AccordoCooperazionePartecipanti;
- import org.openspcoop2.core.registry.AccordoServizioParteComune;
- import org.openspcoop2.core.registry.AccordoServizioParteComuneServizioCompostoServizioComponente;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.registry.ConfigurazioneServizio;
- import org.openspcoop2.core.registry.Connettore;
- import org.openspcoop2.core.registry.IdSoggetto;
- import org.openspcoop2.core.registry.constants.CostantiRegistroServizi;
- import org.openspcoop2.core.registry.constants.FormatoSpecifica;
- import org.openspcoop2.core.registry.constants.RuoliDocumento;
- import org.openspcoop2.core.registry.constants.ServiceBinding;
- import org.openspcoop2.core.registry.constants.TipologiaServizio;
- import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
- import org.openspcoop2.core.registry.driver.IDAccordoFactory;
- import org.openspcoop2.core.registry.driver.IDServizioFactory;
- import org.openspcoop2.core.registry.wsdl.RegistroOpenSPCoopUtilities;
- import org.openspcoop2.message.OpenSPCoop2MessageFactory;
- import org.openspcoop2.message.soap.SoapUtils;
- import org.openspcoop2.message.xml.MessageXMLUtils;
- import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaAccordi;
- import org.openspcoop2.protocol.sdk.registry.ProtocolFiltroRicercaServizi;
- import org.openspcoop2.protocol.sdk.registry.IRegistryReader;
- import org.openspcoop2.protocol.sdk.registry.RegistryNotFound;
- import org.openspcoop2.utils.LoggerWrapperFactory;
- import org.openspcoop2.utils.certificate.CertificateUtils;
- import org.openspcoop2.utils.wsdl.DefinitionWrapper;
- import org.openspcoop2.utils.wsdl.WSDLUtilities;
- import org.openspcoop2.utils.xml.AbstractXMLUtils;
- import org.slf4j.Logger;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import it.gov.spcoop.sica.dao.Costanti;
- 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.ElencoPartecipanti;
- import it.gov.spcoop.sica.manifest.ElencoServiziComponenti;
- import it.gov.spcoop.sica.manifest.SpecificaCoordinamento;
- import it.gov.spcoop.sica.manifest.SpecificaLivelliServizio;
- import it.gov.spcoop.sica.manifest.SpecificaSicurezza;
- import it.gov.spcoop.sica.manifest.constants.TipoAdesione;
- import it.gov.spcoop.sica.manifest.constants.TipoDocumentoConversazione;
- import it.gov.spcoop.sica.manifest.constants.TipoDocumentoInterfaccia;
- import it.gov.spcoop.sica.manifest.driver.TipiDocumentoConversazione;
- import it.gov.spcoop.sica.manifest.driver.TipiDocumentoInterfaccia;
- import it.gov.spcoop.sica.manifest.driver.TipiDocumentoSicurezza;
- /**
- * Utilities di conversione da oggetto OpenSPCoop a oggetti SICA e viceversa
- *
- * @author Andrea Poli (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class SICAtoOpenSPCoopUtilities {
-
- /*
- * uri:dn:<identificativo soggetto>
- * Potrebbe essere dn=
- * uri:dn:o=m_sa,c=it
- * */
-
- /* IDSoggetti */
- private static String [] getValoriDN(String dn) throws SICAToOpenSPCoopUtilitiesException{
- String [] valori;
- int indexOf = dn.indexOf("=");
- if(indexOf<=0){
- throw new SICAToOpenSPCoopUtilitiesException("Separatore validi per il dn non trovati");
- }
- valori = dn.split(",");
- if(valori==null || valori.length<1){
- throw new SICAToOpenSPCoopUtilitiesException("Identificazione dn non riuscita: null??");
- }
- return valori;
- }
- public static void validateIDSoggettoSICA(String dn) throws SICAToOpenSPCoopUtilitiesException{
- String tmp = new String(dn);
- if(tmp.startsWith("uri:dn:")){
- tmp = tmp.substring("uri:dn:".length());
- }
- if(tmp==null || "".equals(tmp))
- throw new SICAToOpenSPCoopUtilitiesException("DN non fornita");
- if(tmp.contains("c=it")==false){
- throw new SICAToOpenSPCoopUtilitiesException("c=it non presente");
- }
- if(tmp.contains(",")==false){
- throw new SICAToOpenSPCoopUtilitiesException("Nessuna amministrazione definita nella radice c=it");
- }
- if(tmp.contains("=")==false){
- throw new SICAToOpenSPCoopUtilitiesException("Nessuna amministrazione definita nella radice c=it");
- }
- String [] valoriDN = SICAtoOpenSPCoopUtilities.getValoriDN(tmp);
- boolean campoObbligatorioO = false;
- for(int i=0; i<valoriDN.length; i++){
- if(valoriDN[i].contains("=")==false){
- throw new SICAToOpenSPCoopUtilitiesException("Identificazione dn non riuscita: ["+valoriDN[i]+"] non separata dal carattere \"=\"");
- }
- String [] keyValue = valoriDN[i].trim().split("=");
- if(keyValue.length!=2){
- throw new SICAToOpenSPCoopUtilitiesException("Identificazione dn non riuscita: ["+valoriDN[i]+"] contiene piu' di un carattere \"=\"");
- }
- if(keyValue[0].trim().contains(" ")){
- throw new SICAToOpenSPCoopUtilitiesException("Identificazione dn non riuscita: il campo ["+valoriDN[i]+"] contiene spazi nella chiave identificativa ["+keyValue[0].trim()+"]");
- }
- if(CertificateUtils.formatKeyPrincipal(keyValue[0]).equalsIgnoreCase("O")){
- campoObbligatorioO = true;
- }
- }
- if(!campoObbligatorioO){
- throw new SICAToOpenSPCoopUtilitiesException("Nessuna amministrazione definita nella radice c=it (o=XX non trovato)");
- }
-
- }
- public static String appendURI_IDSoggettoSica(String dn) throws SICAToOpenSPCoopUtilitiesException{
- SICAtoOpenSPCoopUtilities.validateIDSoggettoSICA(dn);
- return "uri:dn:" + dn;
- }
- public static String removeURI_IDSoggettoSica(String uri_dn) throws SICAToOpenSPCoopUtilitiesException{
- SICAtoOpenSPCoopUtilities.validateIDSoggettoSICA(uri_dn);
- if(uri_dn.startsWith("uri:dn:")){
- uri_dn = uri_dn.substring("uri:dn:".length());
- }
- return uri_dn;
- }
- // NOTA: Metodo che permette di costruire DistinguishedName non standard: gestisce i tipi diversi da SPC.
- // Da utilizzare con cautela
- public static String buildIDSoggettoSica(IDSoggetto idSoggetto,boolean createURI) throws SICAToOpenSPCoopUtilitiesException{
- String soggetto = null;
- if("spc".equals(idSoggetto.getTipo())){
- // standard, utilizzo solo il nome
- soggetto = idSoggetto.getNome();
- }else{
- // non standard, utilizzo tipo/nome per avere l'univocita'
- soggetto = idSoggetto.toString();
- }
- return SICAtoOpenSPCoopUtilities.buildIDSoggettoSica(soggetto, createURI);
- }
- public static String buildIDSoggettoSica(String soggetto,boolean createURI) throws SICAToOpenSPCoopUtilitiesException{
- if(soggetto==null || "".equals(soggetto))
- throw new SICAToOpenSPCoopUtilitiesException("Identificativo soggetto non fornito");
- StringBuilder bf = new StringBuilder();
- if(createURI){
- bf.append("uri:dn:");
- }
- bf.append("o=");
- bf.append(soggetto);
- bf.append(",c=it");
- return bf.toString();
- }
- public static String idSoggetto_openspcoopToSica(org.openspcoop2.core.id.IDSoggetto idSoggetto) throws SICAToOpenSPCoopUtilitiesException{
- if(idSoggetto==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDSoggetto non definito");
- if(idSoggetto.getTipo()==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDSoggetto.tipo non definito");
- if(idSoggetto.getNome()==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDSoggetto.nome non definito");
- if("spc".equals(idSoggetto.getTipo())==false)
- throw new SICAToOpenSPCoopUtilitiesException("Tipo soggetto diverso da SPC non utilizzabile");
-
- return SICAtoOpenSPCoopUtilities.buildIDSoggettoSica(idSoggetto.getNome(),true);
- }
- public static org.openspcoop2.core.id.IDSoggetto idSoggetto_sicaToOpenspcoop(String uriSoggetto) throws SICAToOpenSPCoopUtilitiesException{
- return SICAtoOpenSPCoopUtilities.idSoggetto_sicaToOpenspcoop(uriSoggetto,true);
- }
- public static org.openspcoop2.core.id.IDSoggetto idSoggetto_sicaToOpenspcoop(String uriSoggetto,boolean uri) throws SICAToOpenSPCoopUtilitiesException{
-
- if(uriSoggetto==null)
- throw new SICAToOpenSPCoopUtilitiesException("uriSoggetto non definito");
-
- String senzaSpazi = uriSoggetto.replaceAll("" , "");
-
- if(senzaSpazi.startsWith("uri:dn:")==false && uri)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriSoggetto ("+uriSoggetto+") non corretto (uri:dn:o=<identificativo soggetto>,c=it)");
- if( (senzaSpazi.indexOf(",c=it")<=0) && senzaSpazi.indexOf(" c=it")<=0)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriSoggetto ("+uriSoggetto+") non corretto (uri:dn:o=<identificativo soggetto>,c=it)");
- if(uri){
- if(senzaSpazi.indexOf(",o=")<=0 && senzaSpazi.indexOf(":o=")<=0 && senzaSpazi.indexOf(" o=")<=0){
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriSoggetto ("+uriSoggetto+") non corretto (uri:dn:o=<identificativo soggetto>,c=it)");
- }
- }else{
- if(senzaSpazi.indexOf(",o=")<=0 && senzaSpazi.indexOf("o=")<0){
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriSoggetto ("+uriSoggetto+") non corretto (o=<identificativo soggetto>,c=it)");
- }
- }
-
- int index = -1;
- int lenghtPrefixO = 3;
- if(uri){
- index = senzaSpazi.indexOf(",o=");
- if(index<=0){
- index = senzaSpazi.indexOf(":o=");
- }
- if(index<=0){
- index = senzaSpazi.indexOf(" o=");
- }
- }else{
- index = senzaSpazi.indexOf(",o=");
- if(index<=0){
- index = senzaSpazi.indexOf("o=");
- lenghtPrefixO = 2;
- }
- }
-
-
- int endSoggetto = senzaSpazi.length();
- if(senzaSpazi.indexOf(",",index+1)>0){
- endSoggetto = senzaSpazi.indexOf(",",index+1);
- }
-
- org.openspcoop2.core.id.IDSoggetto idSoggetto =
- new org.openspcoop2.core.id.IDSoggetto("spc",senzaSpazi.substring(index+lenghtPrefixO,endSoggetto));
- return idSoggetto;
- }
- public static String readDNSoggettoFromUriAccordo(String uriAccordo) throws SICAToOpenSPCoopUtilitiesException{
- if(uriAccordo==null)
- throw new SICAToOpenSPCoopUtilitiesException("uriAccordo non definito");
- String [] values = uriAccordo.split(":");
- if(values.length != 5)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriAccordo ("+uriAccordo+") non valido (urn:<tipo_accordo>:<soggetto_organizzativo>:<nome_accordo>:<versione>)");
- String urn = values[0];
- if("urn".equals(urn)==false)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriAccordo ("+uriAccordo+") non valido (urn:<tipo_accordo>:<soggetto_organizzativo>:<nome_accordo>:<versione>)");
- String soggetto = values[2];
- if(soggetto==null)
- throw new SICAToOpenSPCoopUtilitiesException("Soggetto non presente nell'uriAccordo ("+uriAccordo+")");
- return soggetto;
- }
-
-
-
-
-
-
-
-
-
- /*
- * urn:adc:<nome_accordo>:<versione>
- * */
- public static String buildIDAccordoCooperazioneSica(String nome_accordo,Integer versione)throws SICAToOpenSPCoopUtilitiesException{
-
- if(nome_accordo==null || "".equals(nome_accordo))
- throw new SICAToOpenSPCoopUtilitiesException("Nome accordo non fornito");
- if(versione==null)
- throw new SICAToOpenSPCoopUtilitiesException("Versione non fornita");
-
- StringBuilder bf = new StringBuilder();
- bf.append("urn:");
- bf.append(Costanti.TIPO_ACCORDO_COOPERAZIONE);
- bf.append(":");
- bf.append(nome_accordo);
- bf.append(":");
- bf.append(versione);
- return bf.toString();
- }
-
- public static String idAccordoCooperazione_openspcoopToSica(IRegistryReader registryReader, IDAccordoCooperazione idAccordo) throws SICAToOpenSPCoopUtilitiesException{
- if(idAccordo==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDAccordo non definito");
- if(idAccordo.getNome()==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDAccordo.nome non definito");
- if(idAccordo.getVersione()==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDAccordo.versione non definito");
-
- // Recupero property del nome Accordo
- String nomeAccordo = null;
- try{
- AccordoCooperazione ac = registryReader.getAccordoCooperazione(idAccordo);
- // if(ac.sizeProtocolPropertyList()<=0){
- // throw new Exception("Nome dell'accordo da utilizzare non trovato: non esistono proprieta' di protocollo all'interno dell'accordo di servizio");
- // }
- // for (int i = 0; i < ac.sizeProtocolPropertyList(); i++) {
- // if(org.openspcoop2.protocol.spcoop.constants.SPCoopCostanti.SPCOOP_PROTOCOL_PROPERTIES_NOME_ACCORDO_CNIPA.equals(ac.getProtocolProperty(i).getName())){
- // nomeAccordo = ac.getProtocolProperty(i).getValue();
- // }
- // }
- // if(nomeAccordo==null){
- // throw new Exception("Nome dell'accordo da utilizzare non trovato all'interno delle proprieta' di protocollo dell'accordo di servizio");
- // }
- nomeAccordo = ac.getNome();
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
-
- return SICAtoOpenSPCoopUtilities.buildIDAccordoCooperazioneSica(nomeAccordo,idAccordo.getVersione());
- }
- public static IDAccordoCooperazione idAccordoCooperazione_sicaToOpenspcoop(IRegistryReader registryReader, String uriAccordo) throws SICAToOpenSPCoopUtilitiesException{
- if(uriAccordo==null)
- throw new SICAToOpenSPCoopUtilitiesException("uriAccordo non definito");
- String [] values = uriAccordo.split(":");
- if(values.length != 4)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriAccordo ("+uriAccordo+") non valido (urn:adc:<nome_accordo>:<versione>)");
- String urn = values[0];
- if("urn".equals(urn)==false)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriAccordo ("+uriAccordo+") non valido (urn:adc:<nome_accordo>:<versione>)");
- String tipoAccordo = values[1];
- if("adc".equals(tipoAccordo)==false)
- throw new SICAToOpenSPCoopUtilitiesException("Tipo presente nell'uriAccordo ("+tipoAccordo+") non corrisponde quello atteso (adc)");
- String nome = values[2];
- if(nome==null)
- throw new SICAToOpenSPCoopUtilitiesException("Nome non presente nell'uriAccordo ("+uriAccordo+")");
- String versione = values[3];
- if(versione==null)
- throw new SICAToOpenSPCoopUtilitiesException("Versione non presente nell'uriAccordo ("+uriAccordo+")");
- Integer versioneInt = null;
- try{
- versioneInt = Integer.parseInt(versione);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Versione presente nell'uriAccordo ("+uriAccordo+") non ha un formato numerico: "+e.getMessage(),e);
- }
-
- try{
- ProtocolFiltroRicercaAccordi filtro = new ProtocolFiltroRicercaAccordi();
- filtro.setVersione(versioneInt);
- // org.openspcoop2.protocol.sdk.properties.ProtocolProperties protocolProperties = new org.openspcoop2.protocol.sdk.properties.ProtocolProperties();
- // protocolProperties.addProperty(org.openspcoop2.protocol.spcoop.constants.SPCoopCostanti.SPCOOP_PROTOCOL_PROPERTIES_NOME_ACCORDO_CNIPA, nome);
- // filtro.setProtocolProperties(protocolProperties);
- List<IDAccordoCooperazione> list = null;
- try {
- list = registryReader.findIdAccordiCooperazione(filtro);
- }catch(RegistryNotFound notFound) {}
- if(list==null || list.size()<=0){
- throw new Exception("Non sono stati trovati accordi che contengono il nome '"+nome+"'");
- }
- if(list.size()>1){
- throw new Exception("Sono stati trovati più accordi ("+list.size()+") che contengono il nome '"+nome+"' e la versione '"+versioneInt+"'");
- }
- return list.get(0);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
-
- }
-
-
-
-
-
-
-
-
-
- /*
- * urn:<tipo_accordo>:<soggetto_organizzativo>:<nome_accordo>:<versione>
- * */
- public static String buildIDAccordoSica(String tipo_accordo,String soggetto,String nome_accordo,Integer versione)throws SICAToOpenSPCoopUtilitiesException{
-
- if(tipo_accordo==null || "".equals(tipo_accordo))
- throw new SICAToOpenSPCoopUtilitiesException("Tipo accordo non fornito");
- if(soggetto==null || "".equals(soggetto))
- throw new SICAToOpenSPCoopUtilitiesException("Soggetto organizzativo non fornito");
- if(nome_accordo==null || "".equals(nome_accordo))
- throw new SICAToOpenSPCoopUtilitiesException("Nome accordo non fornito");
- if(versione==null)
- throw new SICAToOpenSPCoopUtilitiesException("Versione non fornita");
-
- StringBuilder bf = new StringBuilder();
- bf.append("urn:");
- bf.append(tipo_accordo);
- bf.append(":");
- bf.append(soggetto);
- bf.append(":");
- bf.append(nome_accordo);
- bf.append(":");
- bf.append(versione);
- return bf.toString();
- }
-
- public static String idAccordoServizioParteComune_openspcoopToSica(IRegistryReader registryReader, IDAccordo idAccordo,SICAtoOpenSPCoopContext sicaToOpenSPCoopContext) throws SICAToOpenSPCoopUtilitiesException{
-
- // Recupero property del nome Accordo
- String nomeAccordo = null;
- try{
- AccordoServizioParteComune aspc = registryReader.getAccordoServizioParteComune(idAccordo, false, false);
- // if(aspc.sizeProtocolPropertyList()<=0){
- // throw new Exception("Nome dell'accordo da utilizzare non trovato: non esistono proprieta' di protocollo all'interno dell'accordo di servizio");
- // }
- // for (int i = 0; i < aspc.sizeProtocolPropertyList(); i++) {
- // if(org.openspcoop2.protocol.spcoop.constants.SPCoopCostanti.SPCOOP_PROTOCOL_PROPERTIES_NOME_ACCORDO_CNIPA.equals(aspc.getProtocolProperty(i).getName())){
- // nomeAccordo = aspc.getProtocolProperty(i).getValue();
- // }
- // }
- // if(nomeAccordo==null){
- // throw new Exception("Nome dell'accordo da utilizzare non trovato all'interno delle proprieta' di protocollo dell'accordo di servizio");
- // }
- nomeAccordo = aspc.getNome();
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
-
- return SICAtoOpenSPCoopUtilities.idAccordo_openspcoopToSica(nomeAccordo,idAccordo.getVersione(),idAccordo.getSoggettoReferente(),
- Costanti.TIPO_ACCORDO_SERVIZIO_PARTE_COMUNE,sicaToOpenSPCoopContext);
- }
- public static IDAccordo idAccordoServizioParteComune_sicaToOpenspcoop(IRegistryReader registryReader,String uriAccordo,SICAtoOpenSPCoopContext sicaToOpenSPCoopContext) throws SICAToOpenSPCoopUtilitiesException{
- return SICAtoOpenSPCoopUtilities.idAccordo_sicaToOpenspcoop(registryReader,uriAccordo,Costanti.TIPO_ACCORDO_SERVIZIO_PARTE_COMUNE,sicaToOpenSPCoopContext);
- }
-
- public static String idAccordoServizioComposto_openspcoopToSica(IRegistryReader registryReader, IDAccordo idAccordo,SICAtoOpenSPCoopContext sicaToOpenSPCoopContext) throws SICAToOpenSPCoopUtilitiesException{
-
- // Recupero property del nome Accordo
- String nomeAccordo = null;
- try{
- AccordoServizioParteComune aspc = registryReader.getAccordoServizioParteComune(idAccordo, false, false);
- // if(aspc.sizeProtocolPropertyList()<=0){
- // throw new Exception("Nome dell'accordo da utilizzare non trovato: non esistono proprieta' di protocollo all'interno dell'accordo di servizio");
- // }
- // for (int i = 0; i < aspc.sizeProtocolPropertyList(); i++) {
- // if(org.openspcoop2.protocol.spcoop.constants.SPCoopCostanti.SPCOOP_PROTOCOL_PROPERTIES_NOME_ACCORDO_CNIPA.equals(aspc.getProtocolProperty(i).getName())){
- // nomeAccordo = aspc.getProtocolProperty(i).getValue();
- // }
- // }
- // if(nomeAccordo==null){
- // throw new Exception("Nome dell'accordo da utilizzare non trovato all'interno delle proprieta' di protocollo dell'accordo di servizio");
- // }
- nomeAccordo = aspc.getNome();
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
-
- return SICAtoOpenSPCoopUtilities.idAccordo_openspcoopToSica(nomeAccordo,idAccordo.getVersione(),idAccordo.getSoggettoReferente(),
- Costanti.TIPO_ACCORDO_SERVIZIO_COMPOSTO,sicaToOpenSPCoopContext);
- }
- public static IDAccordo idAccordoServizioComposto_sicaToOpenspcoop(IRegistryReader registryReader,String uriAccordo,SICAtoOpenSPCoopContext sicaToOpenSPCoopContext) throws SICAToOpenSPCoopUtilitiesException{
- return SICAtoOpenSPCoopUtilities.idAccordo_sicaToOpenspcoop(registryReader,uriAccordo,Costanti.TIPO_ACCORDO_SERVIZIO_COMPOSTO,sicaToOpenSPCoopContext);
- }
-
- public static String idAccordoServizioParteSpecifica_openspcoopToSica(IRegistryReader registryReader, IDServizio idServizio,SICAtoOpenSPCoopContext sicaToOpenSPCoopContext) throws SICAToOpenSPCoopUtilitiesException{
-
- // Recupero property del nome Accordo
- String nomeAccordo = null;
- try{
- AccordoServizioParteSpecifica asps = registryReader.getAccordoServizioParteSpecifica(idServizio, false);
- // if(asps.sizeProtocolPropertyList()<=0){
- // throw new Exception("Nome dell'accordo da utilizzare non trovato: non esistono proprieta' di protocollo all'interno dell'accordo di servizio");
- // }
- // for (int i = 0; i < asps.sizeProtocolPropertyList(); i++) {
- // if(org.openspcoop2.protocol.spcoop.constants.SPCoopCostanti.SPCOOP_PROTOCOL_PROPERTIES_NOME_ACCORDO_CNIPA.equals(asps.getProtocolProperty(i).getName())){
- // nomeAccordo = asps.getProtocolProperty(i).getValue();
- // }
- // }
- // if(nomeAccordo==null){
- // throw new Exception("Nome dell'accordo da utilizzare non trovato all'interno delle proprieta' di protocollo dell'accordo di servizio");
- // }
- nomeAccordo = asps.getNome();
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
-
- return SICAtoOpenSPCoopUtilities.idAccordo_openspcoopToSica(nomeAccordo,idServizio.getVersione(),idServizio.getSoggettoErogatore(),
- Costanti.TIPO_ACCORDO_SERVIZIO_PARTE_SPECIFICA,sicaToOpenSPCoopContext);
- }
- public static IDServizio idAccordoServizioParteSpecifica_sicaToOpenspcoop(IRegistryReader registryReader,String uriAccordo,SICAtoOpenSPCoopContext sicaToOpenSPCoopContext) throws SICAToOpenSPCoopUtilitiesException{
- return SICAtoOpenSPCoopUtilities.idServizio_sicaToOpenspcoop(registryReader,uriAccordo,Costanti.TIPO_ACCORDO_SERVIZIO_PARTE_SPECIFICA,sicaToOpenSPCoopContext);
- }
-
-
-
- private static String idAccordo_openspcoopToSica(String nomeAccordo, Integer versioneAccordo, IDSoggetto soggettoAccordo,
- String tipo,SICAtoOpenSPCoopContext sicaToOpenSPCoopContext) throws SICAToOpenSPCoopUtilitiesException{
- if(nomeAccordo==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDAccordo.nome non definito");
- if(versioneAccordo==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDAccordo.versione non definito");
- if(soggettoAccordo==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDAccordo.soggetto non definito");
- if(soggettoAccordo.getTipo()==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDAccordo.soggetto.tipo non definito");
- if(soggettoAccordo.getNome()==null)
- throw new SICAToOpenSPCoopUtilitiesException("IDAccordo.soggetto.nome non definito");
- if("spc".equals(soggettoAccordo.getTipo())==false)
- throw new SICAToOpenSPCoopUtilitiesException("Tipo soggetto referente diverso da SPC non utilizzabile");
-
- String codiceIPASoggettoReferente =
- sicaToOpenSPCoopContext.getCodiceIPA(new IDSoggetto(soggettoAccordo.getTipo(), soggettoAccordo.getNome()));
- if(codiceIPASoggettoReferente==null){
- codiceIPASoggettoReferente = SICAtoOpenSPCoopUtilities.buildIDSoggettoSica(soggettoAccordo.getNome(),false);
- }
-
- return SICAtoOpenSPCoopUtilities.buildIDAccordoSica(tipo,
- codiceIPASoggettoReferente,
- nomeAccordo,
- versioneAccordo);
- }
- public static IDAccordo idAccordo_sicaToOpenspcoop(IRegistryReader registryReader, String uriAccordo,String tipoAtteso,SICAtoOpenSPCoopContext sicaToOpenSPCoopContext) throws SICAToOpenSPCoopUtilitiesException{
- if(uriAccordo==null)
- throw new SICAToOpenSPCoopUtilitiesException("uriAccordo non definito");
- String [] values = uriAccordo.split(":");
- if(values.length != 5)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriAccordo ("+uriAccordo+") non valido (urn:<tipo_accordo>:<soggetto_organizzativo>:<nome_accordo>:<versione>)");
- String urn = values[0];
- if("urn".equals(urn)==false)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriAccordo ("+uriAccordo+") non valido (urn:<tipo_accordo>:<soggetto_organizzativo>:<nome_accordo>:<versione>)");
- String tipoAccordo = values[1];
- if(tipoAtteso.equals(tipoAccordo)==false)
- throw new SICAToOpenSPCoopUtilitiesException("Tipo presente nell'uriAccordo ("+tipoAccordo+") non corrisponde quello atteso ("+tipoAtteso+")");
- String soggetto = values[2];
- if(soggetto==null)
- throw new SICAToOpenSPCoopUtilitiesException("Soggetto non presente nell'uriAccordo ("+uriAccordo+")");
- IDSoggetto idSoggetto = sicaToOpenSPCoopContext.getIDSoggetto(soggetto);
- if(idSoggetto==null)
- idSoggetto = SICAtoOpenSPCoopUtilities.idSoggetto_sicaToOpenspcoop(soggetto,false);
- String nome = values[3];
- if(nome==null)
- throw new SICAToOpenSPCoopUtilitiesException("Nome non presente nell'uriAccordo ("+uriAccordo+")");
- String versione = values[4];
- if(versione==null)
- throw new SICAToOpenSPCoopUtilitiesException("Versione non presente nell'uriAccordo ("+uriAccordo+")");
- Integer versioneInt = null;
- try{
- versioneInt = Integer.parseInt(versione);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Versione presente nell'uriAccordo ("+uriAccordo+") non ha un formato numerico: "+e.getMessage(),e);
- }
-
- try{
- ProtocolFiltroRicercaAccordi filtro = new ProtocolFiltroRicercaAccordi();
- filtro.setVersione(versioneInt);
- filtro.setSoggetto(idSoggetto);
- // org.openspcoop2.protocol.sdk.properties.ProtocolProperties protocolProperties = new org.openspcoop2.protocol.sdk.properties.ProtocolProperties();
- // protocolProperties.addProperty(org.openspcoop2.protocol.spcoop.constants.SPCoopCostanti.SPCOOP_PROTOCOL_PROPERTIES_NOME_ACCORDO_CNIPA, nome);
- // filtro.setProtocolProperties(protocolProperties);
- List<IDAccordo> list = null;
- try {
- list = registryReader.findIdAccordiServizioParteComune(filtro);
- }catch(RegistryNotFound notFound) {}
- if(list==null || list.size()<=0){
- throw new Exception("Non sono stati trovati accordi che contengono il nome '"+nome+"'");
- }
- if(list.size()>1){
- throw new Exception("Sono stati trovati più accordi ("+list.size()+") che contengono il nome '"+nome+"', la versione '"+versioneInt+"' ed il soggetto '"+idSoggetto+"'");
- }
- return list.get(0);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
- }
- public static IDServizio idServizio_sicaToOpenspcoop(IRegistryReader registryReader, String uriAccordo,String tipoAtteso,SICAtoOpenSPCoopContext sicaToOpenSPCoopContext) throws SICAToOpenSPCoopUtilitiesException{
- if(uriAccordo==null)
- throw new SICAToOpenSPCoopUtilitiesException("uriAccordo non definito");
- String [] values = uriAccordo.split(":");
- if(values.length != 5)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriAccordo ("+uriAccordo+") non valido (urn:<tipo_accordo>:<soggetto_organizzativo>:<nome_accordo>:<versione>)");
- String urn = values[0];
- if("urn".equals(urn)==false)
- throw new SICAToOpenSPCoopUtilitiesException("Formato uriAccordo ("+uriAccordo+") non valido (urn:<tipo_accordo>:<soggetto_organizzativo>:<nome_accordo>:<versione>)");
- String tipoAccordo = values[1];
- if(tipoAtteso.equals(tipoAccordo)==false)
- throw new SICAToOpenSPCoopUtilitiesException("Tipo presente nell'uriAccordo ("+tipoAccordo+") non corrisponde quello atteso ("+tipoAtteso+")");
- String soggetto = values[2];
- if(soggetto==null)
- throw new SICAToOpenSPCoopUtilitiesException("Soggetto non presente nell'uriAccordo ("+uriAccordo+")");
- IDSoggetto idSoggetto = sicaToOpenSPCoopContext.getIDSoggetto(soggetto);
- if(idSoggetto==null)
- idSoggetto = SICAtoOpenSPCoopUtilities.idSoggetto_sicaToOpenspcoop(soggetto,false);
- String nome = values[3];
- if(nome==null)
- throw new SICAToOpenSPCoopUtilitiesException("Nome non presente nell'uriAccordo ("+uriAccordo+")");
- String versione = values[4];
- if(versione==null)
- throw new SICAToOpenSPCoopUtilitiesException("Versione non presente nell'uriAccordo ("+uriAccordo+")");
- Integer versioneInt = null;
- try{
- versioneInt = Integer.parseInt(versione);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Versione presente nell'uriAccordo ("+uriAccordo+") non ha un formato numerico: "+e.getMessage(),e);
- }
-
- try{
- ProtocolFiltroRicercaServizi filtro = new ProtocolFiltroRicercaServizi();
- filtro.setVersioneServizio(versioneInt);
- filtro.setSoggettoErogatore(idSoggetto);
- // org.openspcoop2.protocol.sdk.properties.ProtocolProperties protocolProperties = new org.openspcoop2.protocol.sdk.properties.ProtocolProperties();
- // protocolProperties.addProperty(org.openspcoop2.protocol.spcoop.constants.SPCoopCostanti.SPCOOP_PROTOCOL_PROPERTIES_NOME_ACCORDO_CNIPA, nome);
- // filtro.setProtocolPropertiesServizi(protocolProperties);
- List<IDServizio> list = null;
- try {
- list = registryReader.findIdAccordiServizioParteSpecifica(filtro);
- }catch(RegistryNotFound notFound) {}
- if(list==null || list.size()<=0){
- throw new Exception("Non sono stati trovati accordi che contengono il nome '"+nome+"'");
- }
- if(list.size()>1){
- throw new Exception("Sono stati trovati più accordi ("+list.size()+") che contengono il nome '"+nome+"', la versione '"+versioneInt+"' ed il soggetto '"+idSoggetto+"'");
- }
- return list.get(0);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
-
-
- /* WSDL Utilities */
- public static String readConnettoreFromWsdlImplementativo(byte[] wsdlImplementativo) throws SICAToOpenSPCoopUtilitiesException{
-
- try{
- AbstractXMLUtils xmlUtils = org.openspcoop2.message.xml.MessageXMLUtils.DEFAULT;
- Document documentLogico = xmlUtils.newDocument(wsdlImplementativo);
-
- NodeList list = documentLogico.getChildNodes();
- if(list!=null){
- for(int i=0; i<list.getLength(); i++){
- Node child = list.item(i);
- if("definitions".equals(child.getLocalName())){
- NodeList listDefinition = child.getChildNodes();
- if(listDefinition!=null){
- for(int j=0; j<listDefinition.getLength(); j++){
- Node childDefinition = listDefinition.item(j);
- if("service".equals(childDefinition.getLocalName())){
- NodeList listPort = childDefinition.getChildNodes();
- if(listPort!=null){
- for(int z=0; z<listPort.getLength(); z++){
- Node port = listPort.item(z);
- if("port".equals(port.getLocalName())){
- NodeList addressList = port.getChildNodes();
- if(addressList!=null){
- for(int m=0; m<addressList.getLength(); m++){
- Node address = addressList.item(m);
- if("address".equals(address.getLocalName())){
- return address.getAttributes().getNamedItem("location").getNodeValue();
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return null;
-
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("readWsdlImplementativo error: "+e.getMessage(),e);
- }
- }
- public static byte[] saveConnettoreIntoWsdlImplementativo(byte[] wsdlImplementativo,String url) throws SICAToOpenSPCoopUtilitiesException{
-
- try{
- AbstractXMLUtils xmlUtils = org.openspcoop2.message.xml.MessageXMLUtils.DEFAULT;
- Document documentLogico = xmlUtils.newDocument(wsdlImplementativo);
-
- NodeList list = documentLogico.getChildNodes();
- if(list!=null){
- for(int i=0; i<list.getLength(); i++){
- Node child = list.item(i);
- if("definitions".equals(child.getLocalName())){
- NodeList listDefinition = child.getChildNodes();
- if(listDefinition!=null){
- for(int j=0; j<listDefinition.getLength(); j++){
- Node childDefinition = listDefinition.item(j);
- if("service".equals(childDefinition.getLocalName())){
- NodeList listPort = childDefinition.getChildNodes();
- if(listPort!=null){
- for(int z=0; z<listPort.getLength(); z++){
- Node port = listPort.item(z);
- if("port".equals(port.getLocalName())){
- NodeList addressList = port.getChildNodes();
- if(addressList!=null){
- for(int m=0; m<addressList.getLength(); m++){
- Node address = addressList.item(m);
- if("address".equals(address.getLocalName())){
- address.getAttributes().getNamedItem("location").setNodeValue(url);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- return xmlUtils.toByteArray(documentLogico);
-
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("readWsdlImplementativo error: "+e.getMessage(),e);
- }
- }
-
- public static boolean isWsdlEmpty(byte[] wsdl){
-
- try{
-
- // <wsdl:definitions xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"/>
- Element el = MessageXMLUtils.DEFAULT.newElement(wsdl);
-
- if("http://schemas.xmlsoap.org/wsdl/".equals(el.getNamespaceURI())==false){
- return false;
- }
- if("definitions".equals(el.getLocalName())==false){
- return false;
- }
-
- List<Node> childs = SoapUtils.getNotEmptyChildNodes(OpenSPCoop2MessageFactory.getDefaultMessageFactory(), el, false);
- if(childs.size()<=0){
- return true;
- }
- else{
- return false;
- }
-
- }catch(Exception e){
- //e.printStackTrace();
- return false;
- }
- }
-
- private static String resizeDescriptionForMaxLength(String description){
- if(description!=null && description.length()>255){
- return description.substring(0, 252)+"...";
- }
- else{
- return description;
- }
- }
-
-
-
-
-
-
-
-
-
-
- /* Accordi di cooperazione */
- public static org.openspcoop2.core.registry.AccordoCooperazione accordoCooperazione_sicaToOpenspcoop(
- IRegistryReader registryReader,
- it.gov.spcoop.sica.dao.AccordoCooperazione accordoCooperazioneSICA,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext,
- Logger logParam) throws SICAToOpenSPCoopUtilitiesException{
-
- Logger log = logParam;
- if(log==null){
- log = LoggerWrapperFactory.getLogger(SICAtoOpenSPCoopUtilities.class);
- }
-
- org.openspcoop2.core.registry.AccordoCooperazione accCooperazioneOpenspcoop = new org.openspcoop2.core.registry.AccordoCooperazione();
-
- /* Metadati presenti nel Manifest dell'Accordo di Cooperazione. */
- it.gov.spcoop.sica.manifest.AccordoCooperazione manifest = accordoCooperazioneSICA.getManifesto();
- accCooperazioneOpenspcoop.setDescrizione(resizeDescriptionForMaxLength(manifest.getDescrizione()));
- accCooperazioneOpenspcoop.setNome(manifest.getNome());
- if(manifest.getVersione()!=null)
- accCooperazioneOpenspcoop.setVersione(Integer.parseInt(manifest.getVersione()));
- accCooperazioneOpenspcoop.setOraRegistrazione(manifest.getDataCreazione());
- //accCooperazioneOpenspcoop.setDataPubblicazione(manifest.getDataPubblicazione());
- //manifest.getRiservato() ???
-
- // Coordinatore:
- if(manifest.getCoordinatore()!=null){
- IdSoggetto soggettoReferente =
- new IdSoggetto();
- IDSoggetto soggettoCoordinatore = sicaToOpenspcoopContext.getIDSoggetto(SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(manifest.getCoordinatore().toString()));
- if(soggettoCoordinatore==null){
- soggettoCoordinatore = SICAtoOpenSPCoopUtilities.idSoggetto_sicaToOpenspcoop(manifest.getCoordinatore().toString());
- }
- soggettoReferente.setNome(soggettoCoordinatore.getNome());
- soggettoReferente.setTipo(soggettoCoordinatore.getTipo());
- accCooperazioneOpenspcoop.setSoggettoReferente(soggettoReferente);
- }
-
- // Allegati
- if(manifest.getAllegati()!=null){
- for(int i=0; i<manifest.getAllegati().sizeGenericoDocumentoList(); i++){
- String fileName = manifest.getAllegati().getGenericoDocumento(i);
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.allegato.toString());
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoCooperazioneSICA.sizeAllegati(); j++){
- if(fileName.equals(accordoCooperazioneSICA.getAllegato(j).getNome())){
- docSICA = accordoCooperazioneSICA.getAllegato(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("Allegato con nome["+fileName+"] non trovato");
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- accCooperazioneOpenspcoop.addAllegato(docOpenspcoop);
- }
- }
-
- // SpecificaSemiformale
- if(manifest.getSpecificaSemiformale()!=null){
- for(int i=0; i<manifest.getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
- DocumentoSemiformale specificaSemiformale = manifest.getSpecificaSemiformale().getDocumentoSemiformale(i);
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = specificaSemiformale.getBase();
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.specificaSemiformale.toString());
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoCooperazioneSICA.sizeSpecificheSemiformali(); j++){
- if(fileName.equals(accordoCooperazioneSICA.getSpecificaSemiformale(j).getNome())){
- docSICA = accordoCooperazioneSICA.getSpecificaSemiformale(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("SpecificaSemiformale con nome["+fileName+"] non trovato");
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- accCooperazioneOpenspcoop.addSpecificaSemiformale(docOpenspcoop);
- }
- }
-
- // Partecipanti
- ElencoPartecipanti elencoPartecipantiSICA = manifest.getElencoPartecipanti();
- if(elencoPartecipantiSICA!=null){
- if(elencoPartecipantiSICA.sizePartecipanteList()>0){
- accCooperazioneOpenspcoop.setElencoPartecipanti(new AccordoCooperazionePartecipanti());
- }
- for(int i=0; i<elencoPartecipantiSICA.sizePartecipanteList(); i++){
- String partecipante = elencoPartecipantiSICA.getPartecipante(i).toString();
-
- IdSoggetto soggetto =
- new IdSoggetto();
- IDSoggetto soggettoPartecipante = sicaToOpenspcoopContext.getIDSoggetto(SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(partecipante));
- if(soggettoPartecipante==null){
- soggettoPartecipante = SICAtoOpenSPCoopUtilities.idSoggetto_sicaToOpenspcoop(partecipante);
- }
- soggetto.setNome(soggettoPartecipante.getNome());
- soggetto.setTipo(soggettoPartecipante.getTipo());
- accCooperazioneOpenspcoop.getElencoPartecipanti().addSoggettoPartecipante(soggetto);
- }
- }
-
- // ServiziComposti
- it.gov.spcoop.sica.manifest.ElencoServiziComposti serviziComposti = manifest.getServiziComposti();
- if(serviziComposti!=null){
- for(int i=0; i<serviziComposti.sizeServizioCompostoList(); i++){
- String servizioComposto = serviziComposti.getServizioComposto(i).toString();
- IDAccordo idAccordo = SICAtoOpenSPCoopUtilities.idAccordoServizioComposto_sicaToOpenspcoop(registryReader,servizioComposto,sicaToOpenspcoopContext);
- try{
- accCooperazioneOpenspcoop.addUriServiziComposti(IDAccordoFactory.getInstance().getUriFromIDAccordo(idAccordo));
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("uri IDAccordo servizio composto ["+servizioComposto+"] non costruibile: "+e.getMessage(),e);
- }
- }
- }
-
- /* Firma apposta dal Servizio di Registro quando l'accordo viene scaricato dal Registro stesso */
- //if(manifest.getFirmato() && accordoCooperazioneSICA.getFirma()!=null)
- // accCooperazioneOpenspcoop.setByteFirma(accordoCooperazioneSICA.getFirma().getBytes());
-
-
- return accCooperazioneOpenspcoop;
- }
- public static it.gov.spcoop.sica.dao.AccordoCooperazione accordoCooperazione_openspcoopToSica(
- IRegistryReader registryReader,
- org.openspcoop2.core.registry.AccordoCooperazione accordoCooperazioneOpenspcoop,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext,
- Logger logParam)throws SICAToOpenSPCoopUtilitiesException{
-
- Logger log = logParam;
- if(log==null){
- log = LoggerWrapperFactory.getLogger(SICAtoOpenSPCoopUtilities.class);
- }
-
- boolean includiInfoRegistroGenerale = sicaToOpenspcoopContext.isSICAClient_includiInfoRegistroGenerale();
-
- it.gov.spcoop.sica.dao.AccordoCooperazione accCooperazioneSICA =
- new it.gov.spcoop.sica.dao.AccordoCooperazione();
-
- /* Metadati presenti nel Manifest dell'Accordo di Cooperazione. */
- it.gov.spcoop.sica.manifest.AccordoCooperazione manifest = new it.gov.spcoop.sica.manifest.AccordoCooperazione();
- manifest.setDescrizione(accordoCooperazioneOpenspcoop.getDescrizione());
- manifest.setNome(accordoCooperazioneOpenspcoop.getNome());
- manifest.setDataCreazione(accordoCooperazioneOpenspcoop.getOraRegistrazione());
- //manifest.getRiservato() ???
-
- if(includiInfoRegistroGenerale){
-
- if(accordoCooperazioneOpenspcoop.getVersione()!=null){
- manifest.setVersione(accordoCooperazioneOpenspcoop.getVersione().intValue()+"");
- }
- //manifest.setDataPubblicazione(accordoCooperazioneOpenspcoop.getDataPubblicazione());
- //if(accordoCooperazioneOpenspcoop.getByteFirma()!=null){
- // manifest.setFirmato(true);
- //}
-
- // Coordinatore
- if(accordoCooperazioneOpenspcoop.getSoggettoReferente()==null)
- throw new SICAToOpenSPCoopUtilitiesException("Soggetto referente non definito");
- IDSoggetto soggettoCoordinatore = new IDSoggetto(accordoCooperazioneOpenspcoop.getSoggettoReferente().getTipo(),accordoCooperazioneOpenspcoop.getSoggettoReferente().getNome());
- String uriCoordinatore = sicaToOpenspcoopContext.getCodiceIPA(soggettoCoordinatore);
- if(uriCoordinatore==null)
- uriCoordinatore = SICAtoOpenSPCoopUtilities.idSoggetto_openspcoopToSica(soggettoCoordinatore);
- else
- uriCoordinatore = SICAtoOpenSPCoopUtilities.appendURI_IDSoggettoSica(uriCoordinatore);
- try {
- manifest.setCoordinatore(new URI(uriCoordinatore));
- }catch(Exception e) {
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
-
- // ServiziComposti
- it.gov.spcoop.sica.manifest.ElencoServiziComposti sComposti = null;
- for(int i=0; i<accordoCooperazioneOpenspcoop.sizeUriServiziCompostiList(); i++){
- String uriServizioComposto = accordoCooperazioneOpenspcoop.getUriServiziComposti(i);
-
- if(sComposti==null)
- sComposti = new it.gov.spcoop.sica.manifest.ElencoServiziComposti();
- try{
- sComposti.addServizioComposto(new URI(SICAtoOpenSPCoopUtilities.
- idAccordoServizioComposto_openspcoopToSica(registryReader,
- IDAccordoFactory.getInstance().getIDAccordoFromUri(uriServizioComposto),sicaToOpenspcoopContext)));
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Costruzione IDAccordo servizio composto ["+uriServizioComposto+"] non riuscito: "+e.getMessage(),e);
- }
- }
- if(sComposti!=null)
- manifest.setServiziComposti(sComposti);
-
- }
-
- // Allegati
- if(accordoCooperazioneOpenspcoop.sizeAllegatoList()>0){
- it.gov.spcoop.sica.manifest.ElencoAllegati allegato = new it.gov.spcoop.sica.manifest.ElencoAllegati();
- for(int i=0; i<accordoCooperazioneOpenspcoop.sizeAllegatoList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = accordoCooperazioneOpenspcoop.getAllegato(i);
- allegato.addGenericoDocumento(docOpenspcoop.getFile());
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte dell'allegato "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accCooperazioneSICA.addAllegato(docSICA);
- }
- manifest.setAllegati(allegato);
- }
-
- // SpecificheSemiformali
- if(accordoCooperazioneOpenspcoop.sizeSpecificaSemiformaleList()>0){
- it.gov.spcoop.sica.manifest.SpecificaSemiformale specificaSemiformale = new it.gov.spcoop.sica.manifest.SpecificaSemiformale();
- for(int i=0; i<accordoCooperazioneOpenspcoop.sizeSpecificaSemiformaleList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = accordoCooperazioneOpenspcoop.getSpecificaSemiformale(i);
-
- it.gov.spcoop.sica.manifest.DocumentoSemiformale docSemiformale = new it.gov.spcoop.sica.manifest.DocumentoSemiformale();
- docSemiformale.setTipo(docOpenspcoop.getTipo());
- docSemiformale.setBase(docOpenspcoop.getFile());
- specificaSemiformale.addDocumentoSemiformale(docSemiformale);
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte della specifica semiformale "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accCooperazioneSICA.addSpecificaSemiformale(docSICA);
- }
- manifest.setSpecificaSemiformale(specificaSemiformale);
- }
- // Partecipanti
- it.gov.spcoop.sica.manifest.ElencoPartecipanti partecipanti = null;
- if(accordoCooperazioneOpenspcoop.getElencoPartecipanti()!=null){
- AccordoCooperazionePartecipanti partecipantiOpenSPCoop = accordoCooperazioneOpenspcoop.getElencoPartecipanti();
- for(int i=0; i<partecipantiOpenSPCoop.sizeSoggettoPartecipanteList(); i++){
- IdSoggetto soggetto = partecipantiOpenSPCoop.getSoggettoPartecipante(i);
- IDSoggetto idSoggetto = new IDSoggetto(soggetto.getTipo(),soggetto.getNome());
-
- if(partecipanti==null)
- partecipanti = new it.gov.spcoop.sica.manifest.ElencoPartecipanti();
- String codiceIPAPartecipante = sicaToOpenspcoopContext.getCodiceIPA(idSoggetto);
- if(codiceIPAPartecipante==null){
- codiceIPAPartecipante = SICAtoOpenSPCoopUtilities.idSoggetto_openspcoopToSica(idSoggetto);
- }
- else
- codiceIPAPartecipante = SICAtoOpenSPCoopUtilities.appendURI_IDSoggettoSica(codiceIPAPartecipante);
- try {
- partecipanti.addPartecipante(new URI(codiceIPAPartecipante));
- }catch(Exception e) {
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
- }
- }
- if(partecipanti!=null)
- manifest.setElencoPartecipanti(partecipanti);
-
- /* Firma apposta dal Servizio di Registro quando l'accordo viene scaricato dal Registro stesso */
- if(includiInfoRegistroGenerale){
- //if(accordoCooperazioneOpenspcoop.getByteFirma()!=null){
- // it.gov.spcoop.sica.firma.Firma firma = new it.gov.spcoop.sica.firma.Firma();
- // accCooperazioneSICA.setFirma(firma);
- //}
- }
-
- accCooperazioneSICA.setManifesto(manifest);
- return accCooperazioneSICA;
- }
-
-
-
-
-
-
-
-
-
-
-
- /* Accordi di servizio, parte comune */
- public static org.openspcoop2.core.registry.AccordoServizioParteComune accordoServizioParteComune_sicaToOpenspcoop(
- IRegistryReader registryReader,
- it.gov.spcoop.sica.dao.AccordoServizioParteComune accordoServizioSICA,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext,
- Logger log)throws SICAToOpenSPCoopUtilitiesException{
-
- if(log==null){
- log = LoggerWrapperFactory.getLogger(SICAtoOpenSPCoopUtilities.class);
- }
-
- boolean verificaCorreggiLocationWSDL = sicaToOpenspcoopContext.isWSDL_XSD_allineaImportInclude();
- boolean prettyDocument = sicaToOpenspcoopContext.isWSDL_XSD_prettyDocuments();
- boolean documentoSpecificaEGOV_asClientSICADisabled_childUnquilified = sicaToOpenspcoopContext.isInformazioniEGov_wscpDisabled_childUnqualified();
- boolean documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified = sicaToOpenspcoopContext.isInformazioniEGov_wscpEnabled_childUnqualified();
-
- org.openspcoop2.core.registry.AccordoServizioParteComune accServizioOpenspcoop = new org.openspcoop2.core.registry.AccordoServizioParteComune();
- accServizioOpenspcoop.setServiceBinding(ServiceBinding.SOAP);
- accServizioOpenspcoop.setFormatoSpecifica(FormatoSpecifica.WSDL_11);
-
- /* Metadati presenti nel Manifest dell'Accordo di Cooperazione. */
- it.gov.spcoop.sica.manifest.AccordoServizio manifest = accordoServizioSICA.getManifesto();
- accServizioOpenspcoop.setDescrizione(resizeDescriptionForMaxLength(manifest.getDescrizione()));
- accServizioOpenspcoop.setNome(manifest.getNome());
- if(manifest.getVersione()!=null){
- accServizioOpenspcoop.setVersione(Integer.parseInt(manifest.getVersione()));
- }
- accServizioOpenspcoop.setOraRegistrazione(manifest.getDataCreazione());
- //accServizioOpenspcoop.setDataPubblicazione(manifest.getDataPubblicazione());
- accServizioOpenspcoop.setProfiloCollaborazione(CostantiRegistroServizi.ONEWAY); // Default per AS
- //manifest.getRiservato() ???
-
- it.gov.spcoop.sica.manifest.AccordoServizioParteComune parteComune = manifest.getParteComune();
-
- // SpecificaInterfaccia
- it.gov.spcoop.sica.manifest.SpecificaInterfaccia specificaInterfaccia = parteComune.getSpecificaInterfaccia();
- if( (accordoServizioSICA.getInterfacciaConcettuale()!=null) || (accordoServizioSICA.getInterfacciaLogicaLatoErogatore()!=null) || (accordoServizioSICA.getInterfacciaLogicaLatoFruitore()!=null) ){
- if(specificaInterfaccia.getInterfacciaConcettuale()!=null && accordoServizioSICA.getInterfacciaConcettuale()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getInterfacciaConcettuale().getContenuto()) ){
- accServizioOpenspcoop.setByteWsdlConcettuale(accordoServizioSICA.getInterfacciaConcettuale().getContenuto());
- }
- if(specificaInterfaccia.getInterfacciaLogicaLatoErogatore()!=null && accordoServizioSICA.getInterfacciaLogicaLatoErogatore()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getInterfacciaLogicaLatoErogatore().getContenuto()) ){
- accServizioOpenspcoop.setByteWsdlLogicoErogatore(accordoServizioSICA.getInterfacciaLogicaLatoErogatore().getContenuto());
- }
- if(specificaInterfaccia.getInterfacciaLogicaLatoFruitore()!=null && accordoServizioSICA.getInterfacciaLogicaLatoFruitore()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getInterfacciaLogicaLatoFruitore().getContenuto()) ){
- accServizioOpenspcoop.setByteWsdlLogicoFruitore(accordoServizioSICA.getInterfacciaLogicaLatoFruitore().getContenuto());
- }
- }
-
- // SpecificaConversazione
- it.gov.spcoop.sica.manifest.SpecificaConversazione specificaConversazione = parteComune.getSpecificaConversazione();
- if( (accordoServizioSICA.getConversazioneConcettuale()!=null) || (accordoServizioSICA.getConversazioneLogicaErogatore()!=null) || (accordoServizioSICA.getConversazioneLogicaFruitore()!=null) ){
- if(specificaConversazione.getConversazioneConcettuale()!=null && accordoServizioSICA.getConversazioneConcettuale()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getConversazioneConcettuale().getContenuto()) ){
- accServizioOpenspcoop.setByteSpecificaConversazioneConcettuale(accordoServizioSICA.getConversazioneConcettuale().getContenuto());
- }
- if(specificaConversazione.getConversazioneLogicaLatoErogatore()!=null && accordoServizioSICA.getConversazioneLogicaErogatore()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getConversazioneLogicaErogatore().getContenuto()) ){
- accServizioOpenspcoop.setByteSpecificaConversazioneErogatore(accordoServizioSICA.getConversazioneLogicaErogatore().getContenuto());
- }
- if(specificaConversazione.getConversazioneLogicaLatoFruitore()!=null && accordoServizioSICA.getConversazioneLogicaFruitore()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getConversazioneLogicaFruitore().getContenuto()) ){
- accServizioOpenspcoop.setByteSpecificaConversazioneFruitore(accordoServizioSICA.getConversazioneLogicaFruitore().getContenuto());
- }
- }
-
- // Pubblicatore:
- if(parteComune.getPubblicatore()!=null){
- IdSoggetto soggettoReferente =
- new IdSoggetto();
- IDSoggetto soggettoPubblicatore = sicaToOpenspcoopContext.getIDSoggetto(SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(parteComune.getPubblicatore().toString()));
- if(soggettoPubblicatore==null){
- soggettoPubblicatore = SICAtoOpenSPCoopUtilities.idSoggetto_sicaToOpenspcoop(parteComune.getPubblicatore().toString());
- }
- soggettoReferente.setNome(soggettoPubblicatore.getNome());
- soggettoReferente.setTipo(soggettoPubblicatore.getTipo());
- accServizioOpenspcoop.setSoggettoReferente(soggettoReferente);
- }
-
- boolean findDocumentoSpecificaEGOV = false;
- String tipoDocumentoSpecificaEGovTrovato = null;
- String fileNameSpecificaEGovTrovata = null;
-
- // Allegati
- if(manifest.getAllegati()!=null){
- for(int i=0; i<manifest.getAllegati().sizeGenericoDocumentoList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = manifest.getAllegati().getGenericoDocumento(i);
-
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.allegato.toString());
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoServizioSICA.sizeAllegati(); j++){
- if(fileName.equals(accordoServizioSICA.getAllegato(j).getNome())){
- docSICA = accordoServizioSICA.getAllegato(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("Allegato con nome["+fileName+"] non trovato");
-
- if(Costanti.ALLEGATO_DEFINITORIO_XSD.equals(fileName)){
-
- accServizioOpenspcoop.setByteWsdlDefinitorio(docSICA.getContenuto());
-
- }else{
-
- // tipo: http://spcoop.gov.it/sica/wscp
- boolean specificaEGovAsClientSICA = it.gov.spcoop.sica.wscp.driver.XMLUtils.isProfiloCollaborazioneEGOV(docSICA.getContenuto());
- // tipo: http://www.cnipa.it/collProfiles
- boolean specificaEGovAsDocumentoCNIPA = it.cnipa.collprofiles.driver.XMLUtils.isProfiloCollaborazioneEGOV(docSICA.getContenuto());
-
- // Check vincoli di unicita
- if(findDocumentoSpecificaEGOV){
- String fileNameTmp = Costanti.ALLEGATI_DIR+File.separatorChar+fileName;
- if(specificaEGovAsClientSICA){
- throw new SICAToOpenSPCoopUtilitiesException("Nel package sono presenti piu' di una specifica delle informazioni egov. E' stata gia' processata una specifica di tipo "+tipoDocumentoSpecificaEGovTrovato+" ("+fileNameSpecificaEGovTrovata+") e adesso e' stato riscontrato una specifica di tipo "+it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE+" ("+fileNameTmp+")");
- }
- if(specificaEGovAsDocumentoCNIPA){
- throw new SICAToOpenSPCoopUtilitiesException("Nel package sono presenti piu' di una specifica delle informazioni egov. E' stata gia' processata una specifica di tipo "+tipoDocumentoSpecificaEGovTrovato+" ("+fileNameSpecificaEGovTrovata+") e adesso e' stato riscontrato una specifica di tipo "+it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE+" ("+fileNameTmp+")");
- }
- }else{
- if(specificaEGovAsClientSICA && specificaEGovAsDocumentoCNIPA){
- throw new SICAToOpenSPCoopUtilitiesException("Trovata specifica delle informazioni egov sia di tipo "+it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE+" che di tipo "+it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE+" ??");
- }
- if(specificaEGovAsClientSICA || specificaEGovAsDocumentoCNIPA){
- findDocumentoSpecificaEGOV = true;
- fileNameSpecificaEGovTrovata = Costanti.ALLEGATI_DIR+File.separatorChar+fileName;
- }
- }
-
- // Gestione
- if(specificaEGovAsClientSICA){
- try{
- it.gov.spcoop.sica.wscp.driver.XMLUtils.mapProfiloCollaborazioneEGOVIntoAS(log,docSICA.getContenuto(), accServizioOpenspcoop, documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified);
- tipoDocumentoSpecificaEGovTrovato = it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE;
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la verifica dell'esistenza del documento di tipo 'ProfiloCollaborazioneEGOV' per il file ["+fileName+"] : "+e.getMessage(),e);
- }
- }
- else if(specificaEGovAsDocumentoCNIPA){
- try{
- it.cnipa.collprofiles.driver.XMLUtils.mapProfiloCollaborazioneEGOVIntoAS(log,docSICA.getContenuto(), accServizioOpenspcoop, documentoSpecificaEGOV_asClientSICADisabled_childUnquilified);
- tipoDocumentoSpecificaEGovTrovato = it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE;
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la verifica dell'esistenza del documento di tipo 'ProfiloCollaborazioneEGOV' per il file ["+fileName+"] : "+e.getMessage(),e);
- }
- }
- else{
- //allegatoGenerico
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- accServizioOpenspcoop.addAllegato(docOpenspcoop);
- }
- }
- }
- }
-
- // SpecificaSemiformale
- if(manifest.getSpecificaSemiformale()!=null){
- for(int i=0; i<manifest.getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
- DocumentoSemiformale specificaSemiformale = manifest.getSpecificaSemiformale().getDocumentoSemiformale(i);
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = specificaSemiformale.getBase();
-
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoServizioSICA.sizeSpecificheSemiformali(); j++){
- if(fileName.equals(accordoServizioSICA.getSpecificaSemiformale(j).getNome())){
- docSICA = accordoServizioSICA.getSpecificaSemiformale(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("SpecificaSemiformale con nome["+fileName+"] non trovato");
-
- // tipo: http://spcoop.gov.it/sica/wscp
- boolean specificaEGovAsClientSICA = it.gov.spcoop.sica.wscp.driver.XMLUtils.isProfiloCollaborazioneEGOV(docSICA.getContenuto());
- // tipo: http://www.cnipa.it/collProfiles
- boolean specificaEGovAsDocumentoCNIPA = it.cnipa.collprofiles.driver.XMLUtils.isProfiloCollaborazioneEGOV(docSICA.getContenuto());
-
- // Check vincoli di unicita
- if(findDocumentoSpecificaEGOV){
- String fileNameTmp = Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar+fileName;
- if(specificaEGovAsClientSICA){
- throw new SICAToOpenSPCoopUtilitiesException("Nel package sono presenti piu' di una specifica delle informazioni egov. E' stata gia' processata una specifica di tipo "+tipoDocumentoSpecificaEGovTrovato+" ("+fileNameSpecificaEGovTrovata+") e adesso e' stato riscontrato una specifica di tipo "+it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE+" ("+fileNameTmp+")");
- }
- if(specificaEGovAsDocumentoCNIPA){
- throw new SICAToOpenSPCoopUtilitiesException("Nel package sono presenti piu' di una specifica delle informazioni egov. E' stata gia' processata una specifica di tipo "+tipoDocumentoSpecificaEGovTrovato+" ("+fileNameSpecificaEGovTrovata+") e adesso e' stato riscontrato una specifica di tipo "+it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE+" ("+fileNameTmp+")");
- }
- }else{
- if(specificaEGovAsClientSICA && specificaEGovAsDocumentoCNIPA){
- throw new SICAToOpenSPCoopUtilitiesException("La specifica delle informazioni egov e' sia di tipo "+it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE+" che di tipo "+it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE+" ??");
- }
- if(specificaEGovAsClientSICA || specificaEGovAsDocumentoCNIPA){
- findDocumentoSpecificaEGOV = true;
- fileNameSpecificaEGovTrovata = Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar+fileName;
- }
- }
-
- // Gestione
- if(specificaEGovAsClientSICA){
- try{
- it.gov.spcoop.sica.wscp.driver.XMLUtils.mapProfiloCollaborazioneEGOVIntoAS(log,docSICA.getContenuto(), accServizioOpenspcoop, documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified);
- tipoDocumentoSpecificaEGovTrovato = it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE;
- findDocumentoSpecificaEGOV = true;
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la verifica dell'esistenza del documento di tipo 'ProfiloCollaborazioneEGOV' per il file ["+fileName+"] : "+e.getMessage(),e);
- }
- }
- else if(specificaEGovAsDocumentoCNIPA){
- try{
- it.cnipa.collprofiles.driver.XMLUtils.mapProfiloCollaborazioneEGOVIntoAS(log,docSICA.getContenuto(), accServizioOpenspcoop, documentoSpecificaEGOV_asClientSICADisabled_childUnquilified);
- tipoDocumentoSpecificaEGovTrovato = it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE;
- findDocumentoSpecificaEGOV = true;
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la verifica dell'esistenza del documento di tipo 'ProfiloCollaborazioneEGOV' per il file ["+fileName+"] : "+e.getMessage(),e);
- }
- }
- else{
- //specificaSemiformaleGenerica
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.specificaSemiformale.toString());
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- accServizioOpenspcoop.addSpecificaSemiformale(docOpenspcoop);
- }
- }
- }
-
-
- /* Firma apposta dal Servizio di Registro quando l'accordo viene scaricato dal Registro stesso */
- //if(manifest.getFirmato() && accordoServizioSICA.getFirma()!=null)
- // accServizioOpenspcoop.setByteFirma(accordoServizioSICA.getFirma().getBytes());
-
- // Correggo eventuali import/include malformati in maniera conforme alla struttura del package CNIPA
- if(verificaCorreggiLocationWSDL){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(), log);
- registroOpenSPCoopUtilities.updateLocation(accServizioOpenspcoop,false,prettyDocument);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.setImportLocation error: "+e.getMessage(),e);
- }
- }
-
- if(findDocumentoSpecificaEGOV==false){
- accServizioOpenspcoop.setProfiloCollaborazione(null); // In modo da riconoscere il caso e farlo gestire
- }
-
- return accServizioOpenspcoop;
- }
- public static it.gov.spcoop.sica.dao.AccordoServizioParteComune accordoServizioParteComune_openspcoopToSica(
- IRegistryReader registryReader,
- org.openspcoop2.core.registry.AccordoServizioParteComune accordoServizioOpenspcoop,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext,
- Logger log)throws SICAToOpenSPCoopUtilitiesException{
-
- if(log==null){
- log = LoggerWrapperFactory.getLogger(SICAtoOpenSPCoopUtilities.class);
- }
-
- boolean documentoSpecificaEGOV_asClientSICA = sicaToOpenspcoopContext.isInformazioniEGov_wscp();
- boolean documentoSpecificaEGOV_asSpecificaSemiformale = sicaToOpenspcoopContext.isInformazioniEGov_specificaSemiformale();
- boolean documentoSpecificaEGOV_asClientSICADisabled_namespaceCNIPA = sicaToOpenspcoopContext.isInformazioniEGov_wscpDisabled_namespaceCnipa();
- boolean documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified = sicaToOpenspcoopContext.isInformazioniEGov_wscpEnabled_childUnqualified();
- boolean documentoSpecificaEGOV_nomiSPCoopQualified = sicaToOpenspcoopContext.isInformazioniEGov_nomiSPCoop_qualified();
- boolean verificaCorreggiLocationWSDL = sicaToOpenspcoopContext.isWSDL_XSD_allineaImportInclude();
- boolean prettyDocument = sicaToOpenspcoopContext.isWSDL_XSD_prettyDocuments();
- boolean includiInfoRegistroGenerale = sicaToOpenspcoopContext.isSICAClient_includiInfoRegistroGenerale();
- boolean wsdlEmptySeNonDefiniti = sicaToOpenspcoopContext.isWSDL_XSD_accordiParteSpecifica_wsdlEmpty();
- // Correggo eventuali import/include malformati in maniera conforme alla struttura del package CNIPA
- if(verificaCorreggiLocationWSDL){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(), log);
- registroOpenSPCoopUtilities.updateLocation(accordoServizioOpenspcoop,true,prettyDocument);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.setImportLocation error: "+e.getMessage(),e);
- }
- }
-
- it.gov.spcoop.sica.dao.AccordoServizioParteComune accServParteComuneSICA =
- new it.gov.spcoop.sica.dao.AccordoServizioParteComune();
-
- /* Metadati presenti nel Manifest dell'Accordo di Cooperazione. */
- it.gov.spcoop.sica.manifest.AccordoServizio manifest = new it.gov.spcoop.sica.manifest.AccordoServizio();
- manifest.setDescrizione(accordoServizioOpenspcoop.getDescrizione());
- manifest.setNome(accordoServizioOpenspcoop.getNome());
- manifest.setDataCreazione(accordoServizioOpenspcoop.getOraRegistrazione());
- //manifest.getRiservato() ???
-
- it.gov.spcoop.sica.manifest.AccordoServizioParteComune parteComune = new it.gov.spcoop.sica.manifest.AccordoServizioParteComune();
-
- if(includiInfoRegistroGenerale){
- if(accordoServizioOpenspcoop.getVersione()!=null){
- manifest.setVersione(accordoServizioOpenspcoop.getVersione().intValue()+"");
- }
- //manifest.setDataPubblicazione(accordoServizioOpenspcoop.getDataPubblicazione());
- //if(accordoServizioOpenspcoop.getByteFirma()!=null){
- // manifest.setFirmato(true);
- //}
-
- // Pubblicatore
- if(accordoServizioOpenspcoop.getSoggettoReferente()==null)
- throw new SICAToOpenSPCoopUtilitiesException("Soggetto referente non definito");
- IDSoggetto soggettoPubblicatore = new IDSoggetto(accordoServizioOpenspcoop.getSoggettoReferente().getTipo(),accordoServizioOpenspcoop.getSoggettoReferente().getNome());
- String uriPubblicatore = sicaToOpenspcoopContext.getCodiceIPA(soggettoPubblicatore);
- if(uriPubblicatore==null){
- uriPubblicatore = SICAtoOpenSPCoopUtilities.idSoggetto_openspcoopToSica(soggettoPubblicatore);
- }
- else
- uriPubblicatore = SICAtoOpenSPCoopUtilities.appendURI_IDSoggettoSica(uriPubblicatore);
- try {
- parteComune.setPubblicatore(new URI(uriPubblicatore));
- }catch(Exception e) {
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
- }
-
-
- // SpecificaInterfaccia
- it.gov.spcoop.sica.manifest.SpecificaInterfaccia specificaInterfaccia = null;
- if( (accordoServizioOpenspcoop.getByteWsdlConcettuale()!=null) || (accordoServizioOpenspcoop.getByteWsdlLogicoErogatore()!=null) || (accordoServizioOpenspcoop.getByteWsdlLogicoFruitore()!=null) ){
- specificaInterfaccia = new it.gov.spcoop.sica.manifest.SpecificaInterfaccia();
- }
- if(wsdlEmptySeNonDefiniti || (accordoServizioOpenspcoop.getByteWsdlConcettuale()!=null)){
- it.gov.spcoop.sica.manifest.DocumentoInterfaccia docInterfaccia = new it.gov.spcoop.sica.manifest.DocumentoInterfaccia();
- docInterfaccia.setBase(Costanti.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL);
- docInterfaccia.setTipo(TipoDocumentoInterfaccia.WSDL);
- specificaInterfaccia.setInterfacciaConcettuale(docInterfaccia);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoInterfaccia.WSDL.toString());
- doc.setNome(Costanti.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL);
- if(accordoServizioOpenspcoop.getByteWsdlConcettuale()!=null){
- doc.setContenuto(accordoServizioOpenspcoop.getByteWsdlConcettuale());
- }else{
- // Imposto WSDL Empty per compatibilita Client SICA
- doc.setContenuto(Costanti.WSDL_EMPTY.getBytes());
- }
- accServParteComuneSICA.setInterfacciaConcettuale(doc);
- }
- if(wsdlEmptySeNonDefiniti || (accordoServizioOpenspcoop.getByteWsdlLogicoErogatore()!=null)){
- it.gov.spcoop.sica.manifest.DocumentoInterfaccia docInterfaccia = new it.gov.spcoop.sica.manifest.DocumentoInterfaccia();
- docInterfaccia.setBase(Costanti.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL);
- docInterfaccia.setTipo(TipoDocumentoInterfaccia.WSDL);
- specificaInterfaccia.setInterfacciaLogicaLatoErogatore(docInterfaccia);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoInterfaccia.WSDL.toString());
- doc.setNome(Costanti.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL);
- if(accordoServizioOpenspcoop.getByteWsdlLogicoErogatore()!=null){
- doc.setContenuto(accordoServizioOpenspcoop.getByteWsdlLogicoErogatore());
- }else{
- // Imposto WSDL Empty per compatibilita Client SICA
- doc.setContenuto(Costanti.WSDL_EMPTY.getBytes());
- }
- accServParteComuneSICA.setInterfacciaLogicaLatoErogatore(doc);
- }
- if(wsdlEmptySeNonDefiniti || (accordoServizioOpenspcoop.getByteWsdlLogicoFruitore()!=null)){
- it.gov.spcoop.sica.manifest.DocumentoInterfaccia docInterfaccia = new it.gov.spcoop.sica.manifest.DocumentoInterfaccia();
- docInterfaccia.setBase(Costanti.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL);
- docInterfaccia.setTipo(TipoDocumentoInterfaccia.WSDL);
- specificaInterfaccia.setInterfacciaLogicaLatoFruitore(docInterfaccia);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoInterfaccia.WSDL.toString());
- doc.setNome(Costanti.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL);
- if(accordoServizioOpenspcoop.getByteWsdlLogicoFruitore()!=null){
- doc.setContenuto(accordoServizioOpenspcoop.getByteWsdlLogicoFruitore());
- }else{
- // Imposto WSDL Empty per compatibilita Client SICA
- doc.setContenuto(Costanti.WSDL_EMPTY.getBytes());
- }
- accServParteComuneSICA.setInterfacciaLogicaLatoFruitore(doc);
- }
- if(specificaInterfaccia!=null){
- parteComune.setSpecificaInterfaccia(specificaInterfaccia);
- }
-
-
- // SpecificaConversazione (li cerco sia negli allegati che nelle specifiche semiformali)
- it.gov.spcoop.sica.manifest.SpecificaConversazione specificaConversazione = null;
- if( (accordoServizioOpenspcoop.getByteSpecificaConversazioneConcettuale()!=null) ||
- (accordoServizioOpenspcoop.getByteSpecificaConversazioneErogatore()!=null) ||
- (accordoServizioOpenspcoop.getByteSpecificaConversazioneFruitore()!=null) ){
- specificaConversazione = new it.gov.spcoop.sica.manifest.SpecificaConversazione();
- }
- if(accordoServizioOpenspcoop.getByteSpecificaConversazioneConcettuale()!=null){
- it.gov.spcoop.sica.manifest.DocumentoConversazione docConversazione = new it.gov.spcoop.sica.manifest.DocumentoConversazione();
- docConversazione.setBase(Costanti.SPECIFICA_CONVERSAZIONE_CONCETTUALE_WSBL);
- docConversazione.setTipo(TipoDocumentoConversazione.WSBL);
- specificaConversazione.setConversazioneConcettuale(docConversazione);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoConversazione.WSBL.toString());
- doc.setNome(Costanti.SPECIFICA_CONVERSAZIONE_CONCETTUALE_WSBL);
- doc.setContenuto(accordoServizioOpenspcoop.getByteSpecificaConversazioneConcettuale());
- accServParteComuneSICA.setConversazioneConcettuale(doc);
- }
- if(accordoServizioOpenspcoop.getByteSpecificaConversazioneErogatore()!=null){
- it.gov.spcoop.sica.manifest.DocumentoConversazione docConversazione = new it.gov.spcoop.sica.manifest.DocumentoConversazione();
- docConversazione.setBase(Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_EROGATORE_WSBL);
- docConversazione.setTipo(TipoDocumentoConversazione.WSBL);
- specificaConversazione.setConversazioneLogicaLatoErogatore(docConversazione);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoConversazione.WSBL.toString());
- doc.setNome(Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_EROGATORE_WSBL);
- doc.setContenuto(accordoServizioOpenspcoop.getByteSpecificaConversazioneErogatore());
- accServParteComuneSICA.setConversazioneLogicaErogatore(doc);
- }
- if(accordoServizioOpenspcoop.getByteSpecificaConversazioneFruitore()!=null){
- it.gov.spcoop.sica.manifest.DocumentoConversazione docConversazione = new it.gov.spcoop.sica.manifest.DocumentoConversazione();
- docConversazione.setBase(Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_FRUITORE_WSBL);
- docConversazione.setTipo(TipoDocumentoConversazione.WSBL);
- specificaConversazione.setConversazioneLogicaLatoFruitore(docConversazione);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoConversazione.WSBL.toString());
- doc.setNome(Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_FRUITORE_WSBL);
- doc.setContenuto(accordoServizioOpenspcoop.getByteSpecificaConversazioneFruitore());
- accServParteComuneSICA.setConversazioneLogicaFruitore(doc);
- }
- if(specificaConversazione!=null){
- parteComune.setSpecificaConversazione(specificaConversazione);
- }
-
-
- /* Allegati */
- it.gov.spcoop.sica.manifest.ElencoAllegati allegati = null;
- // ProfiloCollaborazioneEGOV
- if(accordoServizioOpenspcoop.sizePortTypeList()>0 && !documentoSpecificaEGOV_asSpecificaSemiformale){
- String docGenerico = null;
- if(documentoSpecificaEGOV_asClientSICA){
- try{
- docGenerico = it.gov.spcoop.sica.wscp.driver.XMLUtils.generaGenericoDocumento(accordoServizioOpenspcoop, accServParteComuneSICA,
- documentoSpecificaEGOV_nomiSPCoopQualified, documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la conversione delle informazioni eGov in Allegati (http://spcoop.gov.it/sica/wscp): "+e.getMessage(),e);
- }
- }else{
- try{
- docGenerico = it.cnipa.collprofiles.driver.XMLUtils.generaGenericoDocumento(accordoServizioOpenspcoop, accServParteComuneSICA,
- documentoSpecificaEGOV_asClientSICADisabled_namespaceCNIPA,
- documentoSpecificaEGOV_nomiSPCoopQualified);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la conversione delle informazioni eGov in Allegati (http://www.cnipa.it/collProfiles): "+e.getMessage(),e);
- }
- }
- if(docGenerico!=null){
- if(allegati==null){
- allegati = new it.gov.spcoop.sica.manifest.ElencoAllegati();
- }
- allegati.addGenericoDocumento(docGenerico);
- manifest.setAllegati(allegati);
- }
- }
- // Altri allegati generici
- if(accordoServizioOpenspcoop.sizeAllegatoList()>0){
- if(allegati==null){
- allegati = new it.gov.spcoop.sica.manifest.ElencoAllegati();
- }
- for(int i=0; i<accordoServizioOpenspcoop.sizeAllegatoList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = accordoServizioOpenspcoop.getAllegato(i);
- allegati.addGenericoDocumento(docOpenspcoop.getFile());
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte dell'allegato "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accServParteComuneSICA.addAllegato(docSICA);
- }
- manifest.setAllegati(allegati);
- }
- // WSDL Definitorio
- if(accordoServizioOpenspcoop.getByteWsdlDefinitorio()!=null){
- if(allegati==null) {
- allegati = new it.gov.spcoop.sica.manifest.ElencoAllegati();
- }
- allegati.addGenericoDocumento(Costanti.ALLEGATO_DEFINITORIO_XSD);
- manifest.setAllegati(allegati);
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo("XSD");
- docSICA.setNome(Costanti.ALLEGATO_DEFINITORIO_XSD);
- docSICA.setContenuto(accordoServizioOpenspcoop.getByteWsdlDefinitorio());
- accServParteComuneSICA.addAllegato(docSICA);
- }
-
-
-
- /* SpecificheSemiformali */
- it.gov.spcoop.sica.manifest.SpecificaSemiformale specificaSemiformale = null;
- // ProfiloCollaborazioneEGOV
- if(accordoServizioOpenspcoop.sizePortTypeList()>0 && documentoSpecificaEGOV_asSpecificaSemiformale){
- it.gov.spcoop.sica.manifest.DocumentoSemiformale docSemiformale = null;
- if(documentoSpecificaEGOV_asClientSICA){
- try{
- docSemiformale = it.gov.spcoop.sica.wscp.driver.XMLUtils.generaDocumentoSemiformale(accordoServizioOpenspcoop, accServParteComuneSICA,
- documentoSpecificaEGOV_nomiSPCoopQualified, documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la conversione delle informazioni eGov in SpecificaSemiformale (http://spcoop.gov.it/sica/wscp): "+e.getMessage(),e);
- }
- }else{
- try{
- docSemiformale = it.cnipa.collprofiles.driver.XMLUtils.generaDocumentoSemiformale(accordoServizioOpenspcoop, accServParteComuneSICA,
- documentoSpecificaEGOV_asClientSICADisabled_namespaceCNIPA,
- documentoSpecificaEGOV_nomiSPCoopQualified);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la conversione delle informazioni eGov in SpecificaSemiformale (http://www.cnipa.it/collProfiles): "+e.getMessage(),e);
- }
- }
- if(docSemiformale!=null){
- if(specificaSemiformale==null){
- specificaSemiformale = new it.gov.spcoop.sica.manifest.SpecificaSemiformale();
- }
- specificaSemiformale.addDocumentoSemiformale(docSemiformale);
- manifest.setSpecificaSemiformale(specificaSemiformale);
- }
- }
- // Altre Specifiche semiformali
- if(accordoServizioOpenspcoop.sizeSpecificaSemiformaleList()>0){
- if(specificaSemiformale==null){
- specificaSemiformale = new it.gov.spcoop.sica.manifest.SpecificaSemiformale();
- }
- for(int i=0; i<accordoServizioOpenspcoop.sizeSpecificaSemiformaleList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = accordoServizioOpenspcoop.getSpecificaSemiformale(i);
-
- it.gov.spcoop.sica.manifest.DocumentoSemiformale docSemiformale = new it.gov.spcoop.sica.manifest.DocumentoSemiformale();
- docSemiformale.setTipo(docOpenspcoop.getTipo());
- docSemiformale.setBase(docOpenspcoop.getFile());
- specificaSemiformale.addDocumentoSemiformale(docSemiformale);
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte della specifica semiformale "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accServParteComuneSICA.addSpecificaSemiformale(docSICA);
- }
- manifest.setSpecificaSemiformale(specificaSemiformale);
- }
-
- /* Firma apposta dal Servizio di Registro quando l'accordo viene scaricato dal Registro stesso */
- if(includiInfoRegistroGenerale){
- //if(accordoServizioOpenspcoop.getByteFirma()!=null){
- // it.gov.spcoop.sica.firma.Firma firma = new it.gov.spcoop.sica.firma.Firma();
- // accServParteComuneSICA.setFirma(firma);
- //}
- }
-
-
- // Setto parte comune
- manifest.setParteComune(parteComune);
-
- accServParteComuneSICA.setManifesto(manifest);
- return accServParteComuneSICA;
- }
-
-
-
-
-
-
- /* Accordi di servizio, parte specifica */
- public static org.openspcoop2.core.registry.AccordoServizioParteSpecifica accordoServizioParteSpecifica_sicaToOpenspcoop(
- IRegistryReader registryReader,
- it.gov.spcoop.sica.dao.AccordoServizioParteSpecifica accordoServizioSICA,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext,
- Logger log)throws SICAToOpenSPCoopUtilitiesException{
- return SICAtoOpenSPCoopUtilities.accordoServizioParteSpecifica_sicaToOpenspcoop(registryReader,accordoServizioSICA, sicaToOpenspcoopContext,null,log);
- }
- public static org.openspcoop2.core.registry.AccordoServizioParteSpecifica accordoServizioParteSpecifica_sicaToOpenspcoop(
- IRegistryReader registryReader,
- it.gov.spcoop.sica.dao.AccordoServizioParteSpecifica accordoServizioSICA,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext,String Servizio,
- Logger log)throws SICAToOpenSPCoopUtilitiesException{
-
- if(log==null){
- log = LoggerWrapperFactory.getLogger(SICAtoOpenSPCoopUtilities.class);
- }
-
- boolean verificaCorreggiLocationWSDL = sicaToOpenspcoopContext.isWSDL_XSD_allineaImportInclude();
- boolean prettyDocument = sicaToOpenspcoopContext.isWSDL_XSD_prettyDocuments();
- boolean eliminaInformazioniASParteComuneWSDL = sicaToOpenspcoopContext.isWSDL_XSD_accordiParteSpecifica_gestioneParteComune();
- boolean sicaToOpenspcoopAggiuntaImportParteComune = sicaToOpenspcoopContext.isWSDL_XSD_accordiParteSpecifica_sicaToOpenspcoop_aggiuntaImportParteComune();
-
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica aspsOpenSPCoop = new org.openspcoop2.core.registry.AccordoServizioParteSpecifica();
-
- IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();
- AbstractXMLUtils xmlUtils = org.openspcoop2.message.xml.MessageXMLUtils.DEFAULT;
- WSDLUtilities wsdlUtilities = WSDLUtilities.getInstance(xmlUtils);
-
- /* Metadati presenti nel Manifest dell'Accordo di Cooperazione. */
- it.gov.spcoop.sica.manifest.AccordoServizio manifest = accordoServizioSICA.getManifesto();
-
- aspsOpenSPCoop.setNome(manifest.getNome());
- if(manifest.getVersione()!=null){
- aspsOpenSPCoop.setVersione(Integer.parseInt(manifest.getVersione()));
- }
-
- aspsOpenSPCoop.setDescrizione(resizeDescriptionForMaxLength(manifest.getDescrizione()));
- aspsOpenSPCoop.setOraRegistrazione(manifest.getDataCreazione());
- //aspsOpenSPCoop.setDataPubblicazione(manifest.getDataPubblicazione());
- //manifest.getRiservato() ???
-
- it.gov.spcoop.sica.manifest.AccordoServizioParteSpecifica parteSpecifica = manifest.getParteSpecifica();
-
- // riferimentoParteComune
- try{
- String[] split = parteSpecifica.getRiferimentoParteComune().toString().split(":");
- if(split.length<2)
- throw new Exception("Riferimento parte comune non corretto (split non riuscito) ["+parteSpecifica.getRiferimentoParteComune()+"]");
- if(split[1].equals(Costanti.TIPO_ACCORDO_SERVIZIO_COMPOSTO)){
- aspsOpenSPCoop.setAccordoServizioParteComune(idAccordoFactory.getUriFromIDAccordo(SICAtoOpenSPCoopUtilities.idAccordoServizioComposto_sicaToOpenspcoop(registryReader,parteSpecifica.getRiferimentoParteComune().toString(),sicaToOpenspcoopContext)));
- }else if(split[1].equals(Costanti.TIPO_ACCORDO_SERVIZIO_PARTE_COMUNE)){
- aspsOpenSPCoop.setAccordoServizioParteComune(idAccordoFactory.getUriFromIDAccordo(SICAtoOpenSPCoopUtilities.idAccordoServizioParteComune_sicaToOpenspcoop(registryReader,parteSpecifica.getRiferimentoParteComune().toString(),sicaToOpenspcoopContext)));
- }else{
- throw new Exception("Tipo accordo ["+split[1]+"] non conosciuto");
- }
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Trasformazione riferimento parte comune ["+parteSpecifica.getRiferimentoParteComune()+"] non riuscita: "+e.getMessage(),e);
- }
-
- // Specifica Porti di Accesso
- String nomeServizio = Servizio; // Servizio puo' essere null, in tal caso calcolo il nome dal wsdl
- String nomeServizioCorrelato = Servizio; // Servizio puo' essere null, in tal caso calcolo il nome dal wsdl
- it.gov.spcoop.sica.manifest.SpecificaPortiAccesso specificaInterfaccia = parteSpecifica.getSpecificaPortiAccesso();
- if( (accordoServizioSICA.getPortiAccessoFruitore()!=null) || (accordoServizioSICA.getPortiAccessoErogatore()!=null) ){
- if(specificaInterfaccia.getPortiAccessoErogatore()!=null && accordoServizioSICA.getPortiAccessoErogatore()!=null
- && accordoServizioSICA.getPortiAccessoErogatore().getContenuto()!=null
- && !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getPortiAccessoErogatore().getContenuto()) ){
- byte[] doc = accordoServizioSICA.getPortiAccessoErogatore().getContenuto();
- if(eliminaInformazioniASParteComuneWSDL){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- doc = registroOpenSPCoopUtilities.eliminaASParteComune(doc,true);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.eliminaASParteComune error: "+e.getMessage(),e);
- }
- }else if(sicaToOpenspcoopAggiuntaImportParteComune){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- doc = registroOpenSPCoopUtilities.aggiungiImportASParteComune(doc,true);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.aggiungiImportASParteComune error: "+e.getMessage(),e);
- }
- }
- aspsOpenSPCoop.setByteWsdlImplementativoErogatore(doc);
- aspsOpenSPCoop.setTipologiaServizio(TipologiaServizio.NORMALE);
-
- // Identificazione servizio SPCoop
- if(nomeServizio==null){
- try{
- Document d = xmlUtils.newDocument(doc);
- wsdlUtilities.removeImports(d);
- DefinitionWrapper wsdl = new DefinitionWrapper(d,xmlUtils);
- java.util.Map<?,?> bindings = wsdl.getAllBindings();
- if(bindings==null || bindings.size()<=0){
- throw new Exception("Bindings non presenti");
- }
- java.util.Iterator<?> bindingIterator = bindings.values().iterator();
- while(bindingIterator.hasNext()) {
- Binding binding = (Binding) bindingIterator.next();
- if(binding.getPortType()==null){
- throw new Exception("Un binding non specifica il port type implementato");
- }
- if(binding.getPortType().getQName()==null){
- throw new Exception("Binding con port type che non possiede QName");
- }
- if(nomeServizio==null)
- nomeServizio=binding.getPortType().getQName().getLocalPart();
- else{
- if(nomeServizio.equals(binding.getPortType().getQName().getLocalPart())==false){
- throw new Exception("Trovato piu' di un port-type implementato dai binding definiti nell'interfaccia");
- }
- }
- }
- }catch(Exception e){
- log.error("Identificazione servizio spcoop da wsdl implementativo erogatore non riuscita: "+e.getMessage(),e);
- //throw new SICAToOpenSPCoopUtilitiesException("Identificazione servizio spcoop da wsdl implementativo erogatore non riuscita: "+e.getMessage(),e);
- // Il Servizio verra' selezionato tramite select list
- nomeServizio = "Errore lettura dati Wsdl: "+e.getMessage();
- }
- }
- }
- if(specificaInterfaccia.getPortiAccessoFruitore()!=null && accordoServizioSICA.getPortiAccessoFruitore()!=null
- && accordoServizioSICA.getPortiAccessoFruitore().getContenuto()!=null
- && !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getPortiAccessoFruitore().getContenuto()) ){
- byte[] doc = accordoServizioSICA.getPortiAccessoFruitore().getContenuto();
- if(eliminaInformazioniASParteComuneWSDL){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- doc = registroOpenSPCoopUtilities.eliminaASParteComune(doc,false);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.eliminaASParteComune error: "+e.getMessage(),e);
- }
- }else if(sicaToOpenspcoopAggiuntaImportParteComune){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- doc = registroOpenSPCoopUtilities.aggiungiImportASParteComune(doc,false);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.aggiungiImportASParteComune error: "+e.getMessage(),e);
- }
- }
- aspsOpenSPCoop.setByteWsdlImplementativoFruitore(doc);
- aspsOpenSPCoop.setTipologiaServizio(TipologiaServizio.CORRELATO);
-
- // Identificazione servizio SPCoop
- if(nomeServizioCorrelato==null){
- try{
- Document d = xmlUtils.newDocument(doc);
- wsdlUtilities.removeImports(d);
- DefinitionWrapper wsdl = new DefinitionWrapper(d,xmlUtils);
- java.util.Map<?,?> bindings = wsdl.getAllBindings();
- if(bindings==null || bindings.size()<=0){
- throw new Exception("Bindings non presenti");
- }
- java.util.Iterator<?> bindingIterator = bindings.values().iterator();
- while(bindingIterator.hasNext()) {
- Binding binding = (Binding) bindingIterator.next();
- if(binding.getPortType()==null){
- throw new Exception("Un binding non specifica il port type implementato");
- }
- if(binding.getPortType().getQName()==null){
- throw new Exception("Binding con port type che non possiede QName");
- }
- if(nomeServizioCorrelato==null)
- nomeServizioCorrelato=binding.getPortType().getQName().getLocalPart();
- else{
- if(nomeServizioCorrelato.equals(binding.getPortType().getQName().getLocalPart())==false){
- throw new Exception("Trovato piu' di un port-type implementato dai binding definiti nell'interfaccia");
- }
- }
- }
- }catch(Exception e){
- log.error("Identificazione servizio spcoop da wsdl implementativo fruitore non riuscita: "+e.getMessage(),e);
- // throw new SICAToOpenSPCoopUtilitiesException("Identificazione servizio spcoop da wsdl implementativo fruitore non riuscita: "+e.getMessage(),e);
- // Il Servizio verra' selezionato tramite select list
- nomeServizioCorrelato = "Errore lettura dati Wsdl: "+e.getMessage();
- }
- }
- }
- }
- if(TipologiaServizio.CORRELATO.equals(aspsOpenSPCoop.getTipologiaServizio())){
- if(nomeServizioCorrelato==null){
- //throw new SICAToOpenSPCoopUtilitiesException("Identificazione nome del Servizio SPCoop correlato non riuscita tramite la lettura dei wsdl implementativi");
- // Il Servizio verra' selezionato tramite select list
- nomeServizioCorrelato = "Errore lettura dati Wsdl: wsdl implementativo fruitore non esistente o corrotto";
- }
- //else{
- aspsOpenSPCoop.setTipo("spc");
- aspsOpenSPCoop.setNome(nomeServizioCorrelato);
- aspsOpenSPCoop.setPortType(nomeServizioCorrelato);
- //}
- }else{
- if(nomeServizio==null){
- //throw new SICAToOpenSPCoopUtilitiesException("Identificazione nome del Servizio SPCoop non riuscita tramite la lettura dei wsdl implementativi");
- // Il Servizio verra' selezionato tramite select list
- nomeServizio = "Errore lettura dati Wsdl: wsdl implementativo erogatore non esistente o corrotto";
- }
- //else{
- aspsOpenSPCoop.setTipo("spc");
- aspsOpenSPCoop.setNome(nomeServizio);
- aspsOpenSPCoop.setPortType(nomeServizio);
- //}
- }
-
- // Adesione
- //aspsOpenSPCoop.setTipoAdesione(parteSpecifica.getAdesione());
-
-
- // Erogatore:
- IDSoggetto soggettoErogatore = null;
- if(parteSpecifica.getErogatore()!=null){
- soggettoErogatore = sicaToOpenspcoopContext.getIDSoggetto(SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(parteSpecifica.getErogatore().toString()));
- if(soggettoErogatore==null){
- soggettoErogatore = SICAtoOpenSPCoopUtilities.idSoggetto_sicaToOpenspcoop(parteSpecifica.getErogatore().toString());
- }
- aspsOpenSPCoop.setTipoSoggettoErogatore(soggettoErogatore.getTipo());
- aspsOpenSPCoop.setNomeSoggettoErogatore(soggettoErogatore.getNome());
- }
-
-
- // Allegati
- if(manifest.getAllegati()!=null){
- for(int i=0; i<manifest.getAllegati().sizeGenericoDocumentoList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = manifest.getAllegati().getGenericoDocumento(i);
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.allegato.toString());
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoServizioSICA.sizeAllegati(); j++){
- if(fileName.equals(accordoServizioSICA.getAllegato(j).getNome())){
- docSICA = accordoServizioSICA.getAllegato(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("Allegato con nome["+fileName+"] non trovato");
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- aspsOpenSPCoop.addAllegato(docOpenspcoop);
- }
- }
-
- // SpecificaSemiformale
- if(manifest.getSpecificaSemiformale()!=null){
- for(int i=0; i<manifest.getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
- DocumentoSemiformale specificaSemiformale = manifest.getSpecificaSemiformale().getDocumentoSemiformale(i);
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = specificaSemiformale.getBase();
-
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoServizioSICA.sizeSpecificheSemiformali(); j++){
- if(fileName.equals(accordoServizioSICA.getSpecificaSemiformale(j).getNome())){
- docSICA = accordoServizioSICA.getSpecificaSemiformale(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("SpecificaSemiformale con nome["+fileName+"] non trovato");
-
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.specificaSemiformale.toString());
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- aspsOpenSPCoop.addSpecificaSemiformale(docOpenspcoop);
- }
- }
-
-
- // SpecificaSicurezza
- SpecificaSicurezza specificaSicurezza = parteSpecifica.getSpecificaSicurezza();
- if(specificaSicurezza!=null){
- for(int i=0; i<specificaSicurezza.sizeDocumentoSicurezzaList(); i++){
- DocumentoSicurezza docSicurezzaSICA = specificaSicurezza.getDocumentoSicurezza(i);
-
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = docSicurezzaSICA.getBase();
-
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoServizioSICA.sizeSpecificheSicurezza(); j++){
- if(fileName.equals(accordoServizioSICA.getSpecificaSicurezza(j).getNome())){
- docSICA = accordoServizioSICA.getSpecificaSicurezza(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("SpecificaSicurezza con nome["+fileName+"] non trovato");
-
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.specificaSicurezza.toString());
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- aspsOpenSPCoop.addSpecificaSicurezza(docOpenspcoop);
- }
- }
-
-
- // Specifica Livelli di Servizio
- SpecificaLivelliServizio specificaLivelliServizio = parteSpecifica.getSpecificaLivelliServizio();
- if(specificaLivelliServizio!=null){
- for(int i=0; i<specificaLivelliServizio.sizeDocumentoLivelloServizioList(); i++){
- DocumentoLivelloServizio docLS = specificaLivelliServizio.getDocumentoLivelloServizio(i);
-
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = docLS.getBase();
-
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoServizioSICA.sizeSpecificheLivelliServizio(); j++){
- if(fileName.equals(accordoServizioSICA.getSpecificaLivelloServizio(j).getNome())){
- docSICA = accordoServizioSICA.getSpecificaLivelloServizio(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("SpecificaLivelloServizio con nome["+fileName+"] non trovato");
-
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.specificaLivelloServizio.toString());
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- aspsOpenSPCoop.addSpecificaLivelloServizio(docOpenspcoop);
- }
- }
-
-
-
- // Connettore servizio
- String url = null;
- if(aspsOpenSPCoop.getByteWsdlImplementativoErogatore()!=null){
- try{
- url = SICAtoOpenSPCoopUtilities.readConnettoreFromWsdlImplementativo(aspsOpenSPCoop.getByteWsdlImplementativoErogatore());
- }catch(Exception e){
- log.info("Lettura WsdlLocation non riuscita (ImplementativoErogatore): "+e.getMessage(),e);
- }
- }else if(aspsOpenSPCoop.getByteWsdlImplementativoFruitore()!=null){
- try{
- url = SICAtoOpenSPCoopUtilities.readConnettoreFromWsdlImplementativo(aspsOpenSPCoop.getByteWsdlImplementativoFruitore());
- }catch(Exception e){
- log.info("Lettura WsdlLocation non riuscita (ImplementativoFruitore): "+e.getMessage(),e);
- }
- }
- Connettore connettore = new Connettore();
- if(soggettoErogatore!=null){
- String nomeConn = "CNT_" + soggettoErogatore.getTipo() + "/" + soggettoErogatore.getNome() + "_" +
- aspsOpenSPCoop.getTipo() + "/" + aspsOpenSPCoop.getNome();
- connettore.setNome(nomeConn);
- }
- if(url!=null){
- connettore.setTipo(CostantiDB.CONNETTORE_TIPO_HTTP);
- org.openspcoop2.core.registry.Property prop = new org.openspcoop2.core.registry.Property();
- prop.setNome(CostantiDB.CONNETTORE_HTTP_LOCATION);
- prop.setValore(url);
- connettore.addProperty(prop);
- }else{
- connettore.setTipo(CostantiDB.CONNETTORE_TIPO_DISABILITATO);
- }
- aspsOpenSPCoop.setConfigurazioneServizio(new ConfigurazioneServizio());
- aspsOpenSPCoop.getConfigurazioneServizio().setConnettore(connettore);
-
-
-
- /* Firma apposta dal Servizio di Registro quando l'accordo viene scaricato dal Registro stesso */
- //if(manifest.getFirmato() && accordoServizioSICA.getFirma()!=null)
- // aspsOpenSPCoop.setByteFirma(accordoServizioSICA.getFirma().getBytes());
-
-
- // Correggo eventuali import/include malformati in maniera conforme alla struttura del package CNIPA
- if(verificaCorreggiLocationWSDL){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- registroOpenSPCoopUtilities.updateLocation(aspsOpenSPCoop,false,prettyDocument);
- }catch(Exception e){
- //throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.setImportLocation error: "+e.getMessage(),e);
- // Verra impostato uno stato bozza
- log.error("Lettura connettore indicato nel WSDL Implementativo (Port) non riuscita: "+e.getMessage(),e);
- }
- }
-
- return aspsOpenSPCoop;
- }
- /*public static it.gov.spcoop.sica.dao.AccordoServizioParteSpecifica accordoServizioParteSpecifica_openspcoopToSica(
- IRegistryReader registryReader,
- org.openspcoop2.core.registry.Servizio accordoServizioOpenspcoop,
- boolean implementazioneAccordoServizioComposto,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext)throws SICAToOpenSPCoopUtilitiesException{
- return accordoServizioParteSpecifica_openspcoopToSica(registryReader,accordoServizioOpenspcoop, implementazioneAccordoServizioComposto, null, sicaToOpenspcoopContext);
- }*/
- public static it.gov.spcoop.sica.dao.AccordoServizioParteSpecifica accordoServizioParteSpecifica_openspcoopToSica(
- IRegistryReader registryReader,
- org.openspcoop2.core.registry.AccordoServizioParteSpecifica aspsOpenspcoop,
- boolean implementazioneAccordoServizioComposto,
- org.openspcoop2.core.registry.AccordoServizioParteComune parteComuneDaIncludereWSDLImplementativo,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext,
- Logger log)throws SICAToOpenSPCoopUtilitiesException{
-
- if(log==null){
- log = LoggerWrapperFactory.getLogger(SICAtoOpenSPCoopUtilities.class);
- }
-
- boolean verificaCorreggiLocationWSDL = sicaToOpenspcoopContext.isWSDL_XSD_allineaImportInclude();
- boolean prettyDocument = sicaToOpenspcoopContext.isWSDL_XSD_prettyDocuments();
- boolean includiInfoRegistroGenerale = sicaToOpenspcoopContext.isSICAClient_includiInfoRegistroGenerale();
- boolean wsdlEmptySeNonDefiniti = sicaToOpenspcoopContext.isWSDL_XSD_accordiParteSpecifica_wsdlEmpty();
- boolean openspcoopToSicaEliminazioneImportParteComune = sicaToOpenspcoopContext.isWSDL_XSD_accordiParteSpecifica_openspcoopToSica_eliminazioneImportParteComune();
-
- AbstractXMLUtils xmlUtils = org.openspcoop2.message.xml.MessageXMLUtils.DEFAULT;
-
- IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();
-
- // Correggo eventuali import/include malformati in maniera conforme alla struttura del package CNIPA
- if(verificaCorreggiLocationWSDL){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- registroOpenSPCoopUtilities.updateLocation(aspsOpenspcoop,true,prettyDocument);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.setImportLocation error: "+e.getMessage(),e);
- }
- }
-
- it.gov.spcoop.sica.dao.AccordoServizioParteSpecifica accServParteSpecificaSICA =
- new it.gov.spcoop.sica.dao.AccordoServizioParteSpecifica();
-
- /* Metadati presenti nel Manifest dell'Accordo di Cooperazione. */
- it.gov.spcoop.sica.manifest.AccordoServizio manifest = new it.gov.spcoop.sica.manifest.AccordoServizio();
- manifest.setDescrizione(aspsOpenspcoop.getDescrizione());
- manifest.setNome(aspsOpenspcoop.getNome());
- manifest.setDataCreazione(aspsOpenspcoop.getOraRegistrazione());
- //manifest.getRiservato() ???
-
- it.gov.spcoop.sica.manifest.AccordoServizioParteSpecifica parteSpecifica = new it.gov.spcoop.sica.manifest.AccordoServizioParteSpecifica();
-
- if(includiInfoRegistroGenerale){
- if(aspsOpenspcoop.getVersione()!=null){
- manifest.setVersione(aspsOpenspcoop.getVersione().intValue()+"");
- }
- //manifest.setDataPubblicazione(aspsOpenspcoop.getDataPubblicazione());
-
- // Erogatore:
- IDSoggetto soggettoErogatore = new IDSoggetto(aspsOpenspcoop.getTipoSoggettoErogatore(),aspsOpenspcoop.getNomeSoggettoErogatore());
- String uriErogatore = sicaToOpenspcoopContext.getCodiceIPA(soggettoErogatore);
- if(uriErogatore==null){
- uriErogatore = SICAtoOpenSPCoopUtilities.idSoggetto_openspcoopToSica(soggettoErogatore);
- }
- else
- uriErogatore = SICAtoOpenSPCoopUtilities.appendURI_IDSoggettoSica(uriErogatore);
- try {
- parteSpecifica.setErogatore(new URI(uriErogatore));
- }catch(Exception e) {
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
-
- //if(aspsOpenspcoop.getByteFirma()!=null){
- // manifest.setFirmato(true);
- //}
- }
-
-
- // riferimentoParteComune
- try{
- if(implementazioneAccordoServizioComposto)
- parteSpecifica.setRiferimentoParteComune(new URI(SICAtoOpenSPCoopUtilities.idAccordoServizioComposto_openspcoopToSica(registryReader,idAccordoFactory.getIDAccordoFromUri(aspsOpenspcoop.getAccordoServizioParteComune()),sicaToOpenspcoopContext)));
- else
- parteSpecifica.setRiferimentoParteComune(new URI(SICAtoOpenSPCoopUtilities.idAccordoServizioParteComune_openspcoopToSica(registryReader,idAccordoFactory.getIDAccordoFromUri(aspsOpenspcoop.getAccordoServizioParteComune()),sicaToOpenspcoopContext)));
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Trasformazione riferimento parte comune ["+aspsOpenspcoop.getAccordoServizioParteComune()+"] non riuscita: "+e.getMessage(),e);
- }
-
- // Calcolo connettore servizioOpenspcoop
- String urlConnettore = null;
- if(aspsOpenspcoop.getConfigurazioneServizio()!=null && aspsOpenspcoop.getConfigurazioneServizio().getConnettore()!=null){
- if(CostantiDB.CONNETTORE_TIPO_HTTP.equals(aspsOpenspcoop.getConfigurazioneServizio().getConnettore().getTipo()) ||
- CostantiDB.CONNETTORE_TIPO_HTTPS.equals(aspsOpenspcoop.getConfigurazioneServizio().getConnettore().getTipo())){
- if(aspsOpenspcoop.getConfigurazioneServizio().getConnettore().sizePropertyList()>0){
- for(int i=0; i<aspsOpenspcoop.getConfigurazioneServizio().getConnettore().sizePropertyList(); i++){
- if(CostantiDB.CONNETTORE_HTTP_LOCATION.equals(aspsOpenspcoop.getConfigurazioneServizio().getConnettore().getProperty(i).getNome())){
- urlConnettore = aspsOpenspcoop.getConfigurazioneServizio().getConnettore().getProperty(i).getValore();
- }
- }
- }
- }
- }
-
- // Specifica Porti di Accesso
- it.gov.spcoop.sica.manifest.SpecificaPortiAccesso specificaPortiAccesso = null;
- if( (aspsOpenspcoop.getByteWsdlImplementativoErogatore()!=null) || (aspsOpenspcoop.getByteWsdlImplementativoFruitore()!=null) ){
- specificaPortiAccesso = new it.gov.spcoop.sica.manifest.SpecificaPortiAccesso();
- }
-
- // ImplementativoErogatore
- if(wsdlEmptySeNonDefiniti || aspsOpenspcoop.getByteWsdlImplementativoErogatore()!=null){
- it.gov.spcoop.sica.manifest.DocumentoInterfaccia docInterfacciaErogatore = new it.gov.spcoop.sica.manifest.DocumentoInterfaccia();
- docInterfacciaErogatore.setBase(Costanti.SPECIFICA_PORTI_ACCESSO_EROGATORE_WSDL);
- docInterfacciaErogatore.setTipo(TipoDocumentoInterfaccia.WSDL);
- specificaPortiAccesso.setPortiAccessoErogatore(docInterfacciaErogatore);
- it.gov.spcoop.sica.dao.Documento docErogatore = new it.gov.spcoop.sica.dao.Documento();
- docErogatore.setTipo(TipiDocumentoInterfaccia.WSDL.toString());
- docErogatore.setNome(Costanti.SPECIFICA_PORTI_ACCESSO_EROGATORE_WSDL);
- byte [] wsdlImplementativoErogatore = null;
- if(aspsOpenspcoop.getByteWsdlImplementativoErogatore()!=null){
-
- wsdlImplementativoErogatore = aspsOpenspcoop.getByteWsdlImplementativoErogatore();
- if(parteComuneDaIncludereWSDLImplementativo!=null){
- // Includo parte comune
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- Definition wsdl = registroOpenSPCoopUtilities.buildWsdlFromObjects(parteComuneDaIncludereWSDLImplementativo, wsdlImplementativoErogatore, true);
- DefinitionWrapper wsdlOpenSPCoop = new DefinitionWrapper(wsdl,xmlUtils);
- wsdlImplementativoErogatore = wsdlOpenSPCoop.toByteArray();
- }catch(Exception e){
- log.info("Inserimento parte comune nel wsdl non riuscito (ImplementativoErogatore): "+e.getMessage(),e);
- }
- }
- else if(openspcoopToSicaEliminazioneImportParteComune){
- // Elimino import parte comune
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- wsdlImplementativoErogatore = registroOpenSPCoopUtilities.eliminaImportASParteComune(wsdlImplementativoErogatore);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.eliminaImportASParteComune error: "+e.getMessage(),e);
- }
- }
- if(urlConnettore!=null){
- // salvo il connettore
- try{
- wsdlImplementativoErogatore = SICAtoOpenSPCoopUtilities.saveConnettoreIntoWsdlImplementativo(wsdlImplementativoErogatore,
- urlConnettore);
- }catch(Exception e){
- log.info("Impostazione WsdlLocation non riuscita (ImplementativoErogatore): "+e.getMessage(),e);
- }
- }
- }
- else{
- // Imposto WSDL Empty per compatibilita Client SICA
- wsdlImplementativoErogatore = Costanti.WSDL_EMPTY.getBytes();
- }
- docErogatore.setContenuto(wsdlImplementativoErogatore);
- accServParteSpecificaSICA.setPortiAccessoErogatore(docErogatore);
- }
-
- // ImplementativoFruitore
- if(wsdlEmptySeNonDefiniti || aspsOpenspcoop.getByteWsdlImplementativoFruitore()!=null){
- it.gov.spcoop.sica.manifest.DocumentoInterfaccia docInterfacciaFruitore = new it.gov.spcoop.sica.manifest.DocumentoInterfaccia();
- docInterfacciaFruitore.setBase(Costanti.SPECIFICA_PORTI_ACCESSO_FRUITORE_WSDL);
- docInterfacciaFruitore.setTipo(TipoDocumentoInterfaccia.WSDL);
- specificaPortiAccesso.setPortiAccessoFruitore(docInterfacciaFruitore);
- it.gov.spcoop.sica.dao.Documento docFruitore = new it.gov.spcoop.sica.dao.Documento();
- docFruitore.setTipo(TipiDocumentoInterfaccia.WSDL.toString());
- docFruitore.setNome(Costanti.SPECIFICA_PORTI_ACCESSO_FRUITORE_WSDL);
- byte [] wsdlImplementativoFruitore = null;
- if(aspsOpenspcoop.getByteWsdlImplementativoFruitore()!=null){
-
- wsdlImplementativoFruitore = aspsOpenspcoop.getByteWsdlImplementativoFruitore();
- if(parteComuneDaIncludereWSDLImplementativo!=null){
- // Includo parte comune
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- Definition wsdl = registroOpenSPCoopUtilities.buildWsdlFromObjects(parteComuneDaIncludereWSDLImplementativo, wsdlImplementativoFruitore, false);
- DefinitionWrapper wsdlOpenSPCoop = new DefinitionWrapper(wsdl,xmlUtils);
- wsdlImplementativoFruitore = wsdlOpenSPCoop.toByteArray();
- }catch(Exception e){
- log.info("Inserimento parte comune nel wsdl non riuscito (ImplementativoFruitore): "+e.getMessage(),e);
- }
- }
- else if(openspcoopToSicaEliminazioneImportParteComune){
- // Elimino import parte comune
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(),log);
- wsdlImplementativoFruitore = registroOpenSPCoopUtilities.eliminaImportASParteComune(wsdlImplementativoFruitore);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.eliminaImportASParteComune error: "+e.getMessage(),e);
- }
- }
- if(urlConnettore!=null){
- // salvo il connettore
- try{
- wsdlImplementativoFruitore = SICAtoOpenSPCoopUtilities.saveConnettoreIntoWsdlImplementativo(wsdlImplementativoFruitore,
- urlConnettore);
- }catch(Exception e){
- log.info("Impostazione WsdlLocation non riuscita (ImplementativoFruitore): "+e.getMessage(),e);
- }
- }
- }
- else{
- // Imposto WSDL Empty per compatibilita Client SICA
- wsdlImplementativoFruitore = Costanti.WSDL_EMPTY.getBytes();
- }
- docFruitore.setContenuto(wsdlImplementativoFruitore);
- accServParteSpecificaSICA.setPortiAccessoFruitore(docFruitore);
- }
-
- // Imposto specificaPortiAccesso
- if(specificaPortiAccesso!=null){
- parteSpecifica.setSpecificaPortiAccesso(specificaPortiAccesso);
- }
-
- // Adesione
- //parteSpecifica.setAdesione(aspsOpenspcoop.getTipoAdesione());
- parteSpecifica.setAdesione(TipoAdesione.AUTOMATICA);
-
-
- // Allegati
- if(aspsOpenspcoop.sizeAllegatoList()>0){
- it.gov.spcoop.sica.manifest.ElencoAllegati allegati = new it.gov.spcoop.sica.manifest.ElencoAllegati();
- for(int i=0; i<aspsOpenspcoop.sizeAllegatoList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = aspsOpenspcoop.getAllegato(i);
-
- allegati.addGenericoDocumento(docOpenspcoop.getFile());
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte dell'allegato "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accServParteSpecificaSICA.addAllegato(docSICA);
- }
- manifest.setAllegati(allegati);
- }
-
- // SpecificheSemiformali
- if(aspsOpenspcoop.sizeSpecificaSemiformaleList()>0){
- it.gov.spcoop.sica.manifest.SpecificaSemiformale specificaSemiformale = new it.gov.spcoop.sica.manifest.SpecificaSemiformale();
- for(int i=0; i<aspsOpenspcoop.sizeSpecificaSemiformaleList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = aspsOpenspcoop.getSpecificaSemiformale(i);
-
- it.gov.spcoop.sica.manifest.DocumentoSemiformale docSemiformale = new it.gov.spcoop.sica.manifest.DocumentoSemiformale();
- docSemiformale.setTipo(docOpenspcoop.getTipo());
- docSemiformale.setBase(docOpenspcoop.getFile());
- specificaSemiformale.addDocumentoSemiformale(docSemiformale);
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte della specifica semiformale "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accServParteSpecificaSICA.addSpecificaSemiformale(docSICA);
- }
- manifest.setSpecificaSemiformale(specificaSemiformale);
- }
-
-
- // SpecificheSicurezza
- it.gov.spcoop.sica.manifest.SpecificaSicurezza specificaSicurezza = null;
- for(int i=0; i<aspsOpenspcoop.sizeSpecificaSicurezzaList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = aspsOpenspcoop.getSpecificaSicurezza(i);
-
- if(specificaSicurezza==null)
- specificaSicurezza = new it.gov.spcoop.sica.manifest.SpecificaSicurezza();
-
- // In OpenSPCoop e' stato aggiunto xacmlPolicy non gestito dal CNIPA
- String tipo = docOpenspcoop.getTipo();
- if(!TipiDocumentoSicurezza.LINGUAGGIO_NATURALE.getNome().equals(tipo) && !TipiDocumentoSicurezza.WSPOLICY.getNome().equals(tipo)){
- tipo = TipiDocumentoSicurezza.LINGUAGGIO_NATURALE.getNome(); // forzo tipo di linguaggio naturale.
- }
-
- it.gov.spcoop.sica.manifest.DocumentoSicurezza docSicurezza = new it.gov.spcoop.sica.manifest.DocumentoSicurezza();
- docSicurezza.setTipo(tipo);
- docSicurezza.setBase(docOpenspcoop.getFile());
- specificaSicurezza.addDocumentoSicurezza(docSicurezza);
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(tipo);
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte della specifica di sicurezza "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accServParteSpecificaSICA.addSpecificaSicurezza(docSICA);
- }
- if(specificaSicurezza!=null)
- parteSpecifica.setSpecificaSicurezza(specificaSicurezza);
-
-
- // Specifiche Livelli di Servizio
- it.gov.spcoop.sica.manifest.SpecificaLivelliServizio specificaLivelliServizio = null;
- for(int i=0; i<aspsOpenspcoop.sizeSpecificaLivelloServizioList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = aspsOpenspcoop.getSpecificaLivelloServizio(i);
-
- if(specificaLivelliServizio==null)
- specificaLivelliServizio = new it.gov.spcoop.sica.manifest.SpecificaLivelliServizio();
- it.gov.spcoop.sica.manifest.DocumentoLivelloServizio docLivelliServizio = new it.gov.spcoop.sica.manifest.DocumentoLivelloServizio();
-
- docLivelliServizio.setTipo(docOpenspcoop.getTipo());
- docLivelliServizio.setBase(docOpenspcoop.getFile());
- specificaLivelliServizio.addDocumentoLivelloServizio(docLivelliServizio);
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte della specifica del livello di servizio "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accServParteSpecificaSICA.addSpecificaLivelloServizio(docSICA);
- }
- if(specificaLivelliServizio!=null)
- parteSpecifica.setSpecificaLivelliServizio(specificaLivelliServizio);
-
- /* Firma apposta dal Servizio di Registro quando l'accordo viene scaricato dal Registro stesso */
- if(includiInfoRegistroGenerale){
- //if(aspsOpenspcoop.getByteFirma()!=null){
- // it.gov.spcoop.sica.firma.Firma firma = new it.gov.spcoop.sica.firma.Firma();
- // accServParteSpecificaSICA.setFirma(firma);
- //}
- }
-
-
- // Setto parte comune
- manifest.setParteSpecifica(parteSpecifica);
-
- accServParteSpecificaSICA.setManifesto(manifest);
- return accServParteSpecificaSICA;
- }
-
-
-
-
-
-
-
- /* Servizio Composto */
- public static org.openspcoop2.core.registry.AccordoServizioParteComune accordoServizioComposto_sicaToOpenspcoop(
- IRegistryReader registryReader,
- it.gov.spcoop.sica.dao.AccordoServizioComposto accordoServizioSICA,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext,
- Logger log)throws SICAToOpenSPCoopUtilitiesException{
-
- if(log==null){
- log = LoggerWrapperFactory.getLogger(SICAtoOpenSPCoopUtilities.class);
- }
-
- boolean verificaCorreggiLocationWSDL = sicaToOpenspcoopContext.isWSDL_XSD_allineaImportInclude();
- boolean prettyDocument = sicaToOpenspcoopContext.isWSDL_XSD_prettyDocuments();
- boolean documentoSpecificaEGOV_asClientSICADisabled_childUnquilified = sicaToOpenspcoopContext.isInformazioniEGov_wscpDisabled_childUnqualified();
- boolean documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified = sicaToOpenspcoopContext.isInformazioniEGov_wscpEnabled_childUnqualified();
-
- org.openspcoop2.core.registry.AccordoServizioParteComune accServizioOpenspcoop = new org.openspcoop2.core.registry.AccordoServizioParteComune();
- accServizioOpenspcoop.setServiceBinding(ServiceBinding.SOAP);
- accServizioOpenspcoop.setFormatoSpecifica(FormatoSpecifica.WSDL_11);
-
- IDAccordoCooperazioneFactory idAccordoCooperazioneFactory = IDAccordoCooperazioneFactory.getInstance();
-
- /* Metadati presenti nel Manifest dell'Accordo di Cooperazione. */
- it.gov.spcoop.sica.manifest.ServizioComposto manifest = accordoServizioSICA.getManifesto();
- accServizioOpenspcoop.setDescrizione(resizeDescriptionForMaxLength(manifest.getDescrizione()));
- accServizioOpenspcoop.setNome(manifest.getNome());
- if(manifest.getVersione()!=null){
- accServizioOpenspcoop.setVersione(Integer.parseInt(manifest.getVersione()));
- }
- accServizioOpenspcoop.setOraRegistrazione(manifest.getDataCreazione());
- //accServizioOpenspcoop.setDataPubblicazione(manifest.getDataPubblicazione());
- accServizioOpenspcoop.setProfiloCollaborazione(CostantiRegistroServizi.ONEWAY); // Default per AS
- //manifest.getRiservato() ???
-
- // SpecificaInterfaccia
- it.gov.spcoop.sica.manifest.SpecificaInterfaccia specificaInterfaccia = manifest.getSpecificaInterfaccia();
- if( (accordoServizioSICA.getInterfacciaConcettuale()!=null) || (accordoServizioSICA.getInterfacciaLogicaLatoErogatore()!=null) || (accordoServizioSICA.getInterfacciaLogicaLatoFruitore()!=null) ){
- if(specificaInterfaccia.getInterfacciaConcettuale()!=null && accordoServizioSICA.getInterfacciaConcettuale()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getInterfacciaConcettuale().getContenuto()) ){
- accServizioOpenspcoop.setByteWsdlConcettuale(accordoServizioSICA.getInterfacciaConcettuale().getContenuto());
- }
- if(specificaInterfaccia.getInterfacciaLogicaLatoErogatore()!=null && accordoServizioSICA.getInterfacciaLogicaLatoErogatore()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getInterfacciaLogicaLatoErogatore().getContenuto()) ){
- accServizioOpenspcoop.setByteWsdlLogicoErogatore(accordoServizioSICA.getInterfacciaLogicaLatoErogatore().getContenuto());
- }
- if(specificaInterfaccia.getInterfacciaLogicaLatoFruitore()!=null && accordoServizioSICA.getInterfacciaLogicaLatoFruitore()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getInterfacciaLogicaLatoFruitore().getContenuto()) ){
- accServizioOpenspcoop.setByteWsdlLogicoFruitore(accordoServizioSICA.getInterfacciaLogicaLatoFruitore().getContenuto());
- }
- }
-
- // SpecificaConversazione
- it.gov.spcoop.sica.manifest.SpecificaConversazione specificaConversazione = manifest.getSpecificaConversazione();
- if( (accordoServizioSICA.getConversazioneConcettuale()!=null) || (accordoServizioSICA.getConversazioneLogicaErogatore()!=null) || (accordoServizioSICA.getConversazioneLogicaFruitore()!=null) ){
- if(specificaConversazione.getConversazioneConcettuale()!=null && accordoServizioSICA.getConversazioneConcettuale()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getConversazioneConcettuale().getContenuto()) ){
- accServizioOpenspcoop.setByteSpecificaConversazioneConcettuale(accordoServizioSICA.getConversazioneConcettuale().getContenuto());
- }
- if(specificaConversazione.getConversazioneLogicaLatoErogatore()!=null && accordoServizioSICA.getConversazioneLogicaErogatore()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getConversazioneLogicaErogatore().getContenuto()) ){
- accServizioOpenspcoop.setByteSpecificaConversazioneErogatore(accordoServizioSICA.getConversazioneLogicaErogatore().getContenuto());
- }
- if(specificaConversazione.getConversazioneLogicaLatoFruitore()!=null && accordoServizioSICA.getConversazioneLogicaFruitore()!=null &&
- !SICAtoOpenSPCoopUtilities.isWsdlEmpty(accordoServizioSICA.getConversazioneLogicaFruitore().getContenuto()) ){
- accServizioOpenspcoop.setByteSpecificaConversazioneFruitore(accordoServizioSICA.getConversazioneLogicaFruitore().getContenuto());
- }
- }
-
- // Pubblicatore:
- if(manifest.getPubblicatore()!=null){
- IdSoggetto soggettoReferente =
- new IdSoggetto();
- IDSoggetto soggettoPubblicatore = sicaToOpenspcoopContext.getIDSoggetto(SICAtoOpenSPCoopUtilities.removeURI_IDSoggettoSica(manifest.getPubblicatore().toString()));
- if(soggettoPubblicatore==null){
- soggettoPubblicatore = SICAtoOpenSPCoopUtilities.idSoggetto_sicaToOpenspcoop(manifest.getPubblicatore().toString());
- }
- soggettoReferente.setNome(soggettoPubblicatore.getNome());
- soggettoReferente.setTipo(soggettoPubblicatore.getTipo());
- accServizioOpenspcoop.setSoggettoReferente(soggettoReferente);
- }
-
- // Riferimento accordo di cooperazione:
- org.openspcoop2.core.registry.AccordoServizioParteComuneServizioComposto servizioComposto =
- new org.openspcoop2.core.registry.AccordoServizioParteComuneServizioComposto();
- IDAccordoCooperazione idAccordo = SICAtoOpenSPCoopUtilities.idAccordoCooperazione_sicaToOpenspcoop(registryReader,manifest.getRiferimentoAccordoCooperazione().toString());
- try{
- servizioComposto.setAccordoCooperazione(idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordo));
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Trasformazione IDAccordo di cooperazione ["+manifest.getRiferimentoAccordoCooperazione()+"] non riuscito: "+e.getMessage(),e);
- }
-
- // Servizi componenti
- if(manifest.getServiziComponenti()!=null){
- for(int i=0; i<manifest.getServiziComponenti().sizeServizioComponenteList(); i++){
- String servComponente = manifest.getServiziComponenti().getServizioComponente(i).toString();
- //IDServizio idServizioComponente = idAccordoServizioParteSpecifica_sicaToOpenspcoop(servComponente,sicaToOpenspcoopContext);
- IDServizio idServizioComponente = sicaToOpenspcoopContext.getIDServizio(servComponente);
- if(idServizioComponente==null){
- throw new SICAToOpenSPCoopUtilitiesException("Trasformazione uriAPS["+servComponente+"] in IDServizio SPCoop non riuscita");
- }
- org.openspcoop2.core.registry.AccordoServizioParteComuneServizioCompostoServizioComponente servComponenteOpenspcoop =
- new org.openspcoop2.core.registry.AccordoServizioParteComuneServizioCompostoServizioComponente();
- try{
- servComponenteOpenspcoop.setTipo(idServizioComponente.getTipo());
- servComponenteOpenspcoop.setNome(idServizioComponente.getNome());
- servComponenteOpenspcoop.setVersione(idServizioComponente.getVersione());
- servComponenteOpenspcoop.setTipoSoggetto(idServizioComponente.getSoggettoErogatore().getTipo());
- servComponenteOpenspcoop.setNomeSoggetto(idServizioComponente.getSoggettoErogatore().getNome());
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Trasformazione IDAccordo di servizio composto ["+servComponente+"] non riuscito: "+e.getMessage(),e);
- }
- servizioComposto.addServizioComponente(servComponenteOpenspcoop);
- }
- }
- boolean findDocumentoSpecificaEGOV = false;
- String tipoDocumentoSpecificaEGovTrovato = null;
- String fileNameSpecificaEGovTrovata = null;
-
- // Allegati
- if(manifest.getAllegati()!=null){
- for(int i=0; i<manifest.getAllegati().sizeGenericoDocumentoList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = manifest.getAllegati().getGenericoDocumento(i);
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.allegato.toString());
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoServizioSICA.sizeAllegati(); j++){
- if(fileName.equals(accordoServizioSICA.getAllegato(j).getNome())){
- docSICA = accordoServizioSICA.getAllegato(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("Allegato con nome["+fileName+"] non trovato");
-
- if(Costanti.ALLEGATO_DEFINITORIO_XSD.equals(fileName)){
-
- accServizioOpenspcoop.setByteWsdlDefinitorio(docSICA.getContenuto());
-
- }else{
-
- // tipo: http://spcoop.gov.it/sica/wscp
- boolean specificaEGovAsClientSICA = it.gov.spcoop.sica.wscp.driver.XMLUtils.isProfiloCollaborazioneEGOV(docSICA.getContenuto());
- // tipo: http://www.cnipa.it/collProfiles
- boolean specificaEGovAsDocumentoCNIPA = it.cnipa.collprofiles.driver.XMLUtils.isProfiloCollaborazioneEGOV(docSICA.getContenuto());
-
- // Check vincoli di unicita
- if(findDocumentoSpecificaEGOV){
- String fileNameTmp = Costanti.ALLEGATI_DIR+File.separatorChar+fileName;
- if(specificaEGovAsClientSICA){
- throw new SICAToOpenSPCoopUtilitiesException("Nel package sono presenti piu' di una specifica delle informazioni egov. E' stata gia' processata una specifica di tipo "+tipoDocumentoSpecificaEGovTrovato+" ("+fileNameSpecificaEGovTrovata+") e adesso e' stato riscontrato una specifica di tipo "+it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE+" ("+fileNameTmp+")");
- }
- if(specificaEGovAsDocumentoCNIPA){
- throw new SICAToOpenSPCoopUtilitiesException("Nel package sono presenti piu' di una specifica delle informazioni egov. E' stata gia' processata una specifica di tipo "+tipoDocumentoSpecificaEGovTrovato+" ("+fileNameSpecificaEGovTrovata+") e adesso e' stato riscontrato una specifica di tipo "+it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE+" ("+fileNameTmp+")");
- }
- }else{
- if(specificaEGovAsClientSICA && specificaEGovAsDocumentoCNIPA){
- throw new SICAToOpenSPCoopUtilitiesException("Trovata specifica delle informazioni egov sia di tipo "+it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE+" che di tipo "+it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE+" ??");
- }
- if(specificaEGovAsClientSICA || specificaEGovAsDocumentoCNIPA){
- findDocumentoSpecificaEGOV = true;
- fileNameSpecificaEGovTrovata = Costanti.ALLEGATI_DIR+File.separatorChar+fileName;
- }
- }
-
- // Gestione
- if(specificaEGovAsClientSICA){
- try{
- it.gov.spcoop.sica.wscp.driver.XMLUtils.mapProfiloCollaborazioneEGOVIntoAS(log,docSICA.getContenuto(), accServizioOpenspcoop, documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified);
- tipoDocumentoSpecificaEGovTrovato = it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE;
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la verifica dell'esistenza del documento di tipo 'ProfiloCollaborazioneEGOV' per il file ["+fileName+"] : "+e.getMessage(),e);
- }
- }
- else if(specificaEGovAsDocumentoCNIPA){
- try{
- it.cnipa.collprofiles.driver.XMLUtils.mapProfiloCollaborazioneEGOVIntoAS(log,docSICA.getContenuto(), accServizioOpenspcoop, documentoSpecificaEGOV_asClientSICADisabled_childUnquilified);
- tipoDocumentoSpecificaEGovTrovato = it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE;
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la verifica dell'esistenza del documento di tipo 'ProfiloCollaborazioneEGOV' per il file ["+fileName+"] : "+e.getMessage(),e);
- }
- }
- else{
- //allegatoGenerico
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- accServizioOpenspcoop.addAllegato(docOpenspcoop);
- }
- }
- }
- }
-
-
-
- // SpecificaSemiformale
- if(manifest.getSpecificaSemiformale()!=null){
- for(int i=0; i<manifest.getSpecificaSemiformale().sizeDocumentoSemiformaleList(); i++){
- DocumentoSemiformale specificaSemiformale = manifest.getSpecificaSemiformale().getDocumentoSemiformale(i);
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = specificaSemiformale.getBase();
-
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoServizioSICA.sizeSpecificheSemiformali(); j++){
- if(fileName.equals(accordoServizioSICA.getSpecificaSemiformale(j).getNome())){
- docSICA = accordoServizioSICA.getSpecificaSemiformale(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("SpecificaSemiformale con nome["+fileName+"] non trovato");
-
- // tipo: http://spcoop.gov.it/sica/wscp
- boolean specificaEGovAsClientSICA = it.gov.spcoop.sica.wscp.driver.XMLUtils.isProfiloCollaborazioneEGOV(docSICA.getContenuto());
- // tipo: http://www.cnipa.it/collProfiles
- boolean specificaEGovAsDocumentoCNIPA = it.cnipa.collprofiles.driver.XMLUtils.isProfiloCollaborazioneEGOV(docSICA.getContenuto());
-
- // Check vincoli di unicita
- if(findDocumentoSpecificaEGOV){
- String fileNameTmp = Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar+fileName;
- if(specificaEGovAsClientSICA){
- throw new SICAToOpenSPCoopUtilitiesException("Nel package sono presenti piu' di una specifica delle informazioni egov. E' stata gia' processata una specifica di tipo "+tipoDocumentoSpecificaEGovTrovato+" ("+fileNameSpecificaEGovTrovata+") e adesso e' stato riscontrato una specifica di tipo "+it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE+" ("+fileNameTmp+")");
- }
- if(specificaEGovAsDocumentoCNIPA){
- throw new SICAToOpenSPCoopUtilitiesException("Nel package sono presenti piu' di una specifica delle informazioni egov. E' stata gia' processata una specifica di tipo "+tipoDocumentoSpecificaEGovTrovato+" ("+fileNameSpecificaEGovTrovata+") e adesso e' stato riscontrato una specifica di tipo "+it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE+" ("+fileNameTmp+")");
- }
- }else{
- if(specificaEGovAsClientSICA && specificaEGovAsDocumentoCNIPA){
- throw new SICAToOpenSPCoopUtilitiesException("La specifica delle informazioni egov e' sia di tipo "+it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE+" che di tipo "+it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE+" ??");
- }
- if(specificaEGovAsClientSICA || specificaEGovAsDocumentoCNIPA){
- findDocumentoSpecificaEGOV = true;
- fileNameSpecificaEGovTrovata = Costanti.SPECIFICA_SEMIFORMALE_DIR+File.separatorChar+fileName;
- }
- }
-
- // Gestione
- if(specificaEGovAsClientSICA){
- try{
- it.gov.spcoop.sica.wscp.driver.XMLUtils.mapProfiloCollaborazioneEGOVIntoAS(log,docSICA.getContenuto(), accServizioOpenspcoop, documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified);
- tipoDocumentoSpecificaEGovTrovato = it.gov.spcoop.sica.wscp.driver.Costanti.TARGET_NAMESPACE;
- findDocumentoSpecificaEGOV = true;
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la verifica dell'esistenza del documento di tipo 'ProfiloCollaborazioneEGOV' per il file ["+fileName+"] : "+e.getMessage(),e);
- }
- }
- else if(specificaEGovAsDocumentoCNIPA){
- try{
- it.cnipa.collprofiles.driver.XMLUtils.mapProfiloCollaborazioneEGOVIntoAS(log,docSICA.getContenuto(), accServizioOpenspcoop, documentoSpecificaEGOV_asClientSICADisabled_childUnquilified);
- tipoDocumentoSpecificaEGovTrovato = it.cnipa.collprofiles.driver.Costanti.TARGET_NAMESPACE;
- findDocumentoSpecificaEGOV = true;
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la verifica dell'esistenza del documento di tipo 'ProfiloCollaborazioneEGOV' per il file ["+fileName+"] : "+e.getMessage(),e);
- }
- }
- else{
- //specificaSemiformaleGenerica
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.specificaSemiformale.toString());
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- accServizioOpenspcoop.addSpecificaSemiformale(docOpenspcoop);
- }
- }
- }
-
-
- // Specifica coordinamento
- SpecificaCoordinamento specificaCoordinamento = manifest.getSpecificaCoordinamento();
- if(specificaCoordinamento!=null){
- for(int i=0; i<specificaCoordinamento.sizeDocumentoCoordinamentoList(); i++){
- DocumentoCoordinamento docCoordinamento = specificaCoordinamento.getDocumentoCoordinamento(i);
-
- org.openspcoop2.core.registry.Documento docOpenspcoop = new org.openspcoop2.core.registry.Documento();
- String fileName = docCoordinamento.getBase();
- docOpenspcoop.setFile(fileName);
- docOpenspcoop.setRuolo(RuoliDocumento.specificaCoordinamento.toString());
- it.gov.spcoop.sica.dao.Documento docSICA = null;
- for(int j=0; j<accordoServizioSICA.sizeSpecificheCoordinamento(); j++){
- if(fileName.equals(accordoServizioSICA.getSpecificaCoordinamento(j).getNome())){
- docSICA = accordoServizioSICA.getSpecificaCoordinamento(j);
- }
- }
- if(docSICA==null)
- throw new SICAToOpenSPCoopUtilitiesException("SpecificaCoordinamento con nome["+fileName+"] non trovato");
- docOpenspcoop.setTipo(docSICA.getTipo());
- docOpenspcoop.setByteContenuto(docSICA.getContenuto());
- servizioComposto.addSpecificaCoordinamento(docOpenspcoop);
- }
- }
-
- /* Firma apposta dal Servizio di Registro quando l'accordo viene scaricato dal Registro stesso */
- //if(manifest.getFirmato() && accordoServizioSICA.getFirma()!=null)
- // accServizioOpenspcoop.setByteFirma(accordoServizioSICA.getFirma().getBytes());
-
- // Imposto servizio composto
- accServizioOpenspcoop.setServizioComposto(servizioComposto);
-
- // Correggo eventuali import/include malformati in maniera conforme alla struttura del package CNIPA
- if(verificaCorreggiLocationWSDL){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(), log);
- registroOpenSPCoopUtilities.updateLocation(accServizioOpenspcoop,false,prettyDocument);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.setImportLocation error: "+e.getMessage(),e);
- }
- }
-
-
- if(findDocumentoSpecificaEGOV==false){
- accServizioOpenspcoop.setProfiloCollaborazione(null); // In modo da riconoscere il caso e farlo gestire
- }
-
- return accServizioOpenspcoop;
- }
- public static it.gov.spcoop.sica.dao.AccordoServizioComposto accordoServizioComposto_openspcoopToSica(
- IRegistryReader registryReader,
- org.openspcoop2.core.registry.AccordoServizioParteComune accordoServizioOpenspcoop,
- SICAtoOpenSPCoopContext sicaToOpenspcoopContext,
- Logger log)throws SICAToOpenSPCoopUtilitiesException{
-
- if(log==null){
- log = LoggerWrapperFactory.getLogger(SICAtoOpenSPCoopUtilities.class);
- }
-
- boolean documentoSpecificaEGOV_asClientSICA = sicaToOpenspcoopContext.isInformazioniEGov_wscp();
- boolean documentoSpecificaEGOV_asSpecificaSemiformale = sicaToOpenspcoopContext.isInformazioniEGov_specificaSemiformale();
- boolean documentoSpecificaEGOV_asClientSICADisabled_namespaceCNIPA = sicaToOpenspcoopContext.isInformazioniEGov_wscpDisabled_namespaceCnipa();
- boolean documentoSpecificaEGOV_nomiSPCoopQualified = sicaToOpenspcoopContext.isInformazioniEGov_nomiSPCoop_qualified();
- boolean documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified = sicaToOpenspcoopContext.isInformazioniEGov_wscpEnabled_childUnqualified();
- boolean verificaCorreggiLocationWSDL = sicaToOpenspcoopContext.isWSDL_XSD_allineaImportInclude();
- boolean prettyDocument = sicaToOpenspcoopContext.isWSDL_XSD_prettyDocuments();
- boolean includiInfoRegistroGenerale = sicaToOpenspcoopContext.isSICAClient_includiInfoRegistroGenerale();
- boolean wsdlEmptySeNonDefiniti = sicaToOpenspcoopContext.isWSDL_XSD_accordiParteSpecifica_wsdlEmpty();
-
- // Correggo eventuali import/include malformati in maniera conforme alla struttura del package CNIPA
- if(verificaCorreggiLocationWSDL){
- try{
- RegistroOpenSPCoopUtilities registroOpenSPCoopUtilities = new RegistroOpenSPCoopUtilities(OpenSPCoop2MessageFactory.getDefaultMessageFactory(), log);
- registroOpenSPCoopUtilities.updateLocation(accordoServizioOpenspcoop,true,prettyDocument);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("RegistroOpenSPCoopUtilities.setImportLocation error: "+e.getMessage(),e);
- }
- }
-
- it.gov.spcoop.sica.dao.AccordoServizioComposto accServCompostoSICA =
- new it.gov.spcoop.sica.dao.AccordoServizioComposto();
-
- IDAccordoCooperazioneFactory idAccordoCooperazioneFactory = IDAccordoCooperazioneFactory.getInstance();
-
- /* Metadati presenti nel Manifest dell'Accordo di Cooperazione. */
- it.gov.spcoop.sica.manifest.ServizioComposto manifest = new it.gov.spcoop.sica.manifest.ServizioComposto();
- manifest.setDescrizione(accordoServizioOpenspcoop.getDescrizione());
- manifest.setNome(accordoServizioOpenspcoop.getNome());
- manifest.setDataCreazione(accordoServizioOpenspcoop.getOraRegistrazione());
- //manifest.getRiservato() ???
-
- if(includiInfoRegistroGenerale){
- if(accordoServizioOpenspcoop.getVersione()!=null){
- manifest.setVersione(accordoServizioOpenspcoop.getVersione().intValue()+"");
- }
- //manifest.setDataPubblicazione(accordoServizioOpenspcoop.getDataPubblicazione());
-
- // Pubblicatore
- if(accordoServizioOpenspcoop.getSoggettoReferente()==null)
- throw new SICAToOpenSPCoopUtilitiesException("Soggetto referente non definito");
- IDSoggetto soggettoPubblicatore = new IDSoggetto(accordoServizioOpenspcoop.getSoggettoReferente().getTipo(),accordoServizioOpenspcoop.getSoggettoReferente().getNome());
- String uriPubblicatore = sicaToOpenspcoopContext.getCodiceIPA(soggettoPubblicatore);
- if(uriPubblicatore==null){
- uriPubblicatore = SICAtoOpenSPCoopUtilities.idSoggetto_openspcoopToSica(soggettoPubblicatore);
- }
- else
- uriPubblicatore = SICAtoOpenSPCoopUtilities.appendURI_IDSoggettoSica(uriPubblicatore);
- try {
- manifest.setPubblicatore(new URI(uriPubblicatore));
- }catch(Exception e) {
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
-
-
- //if(accordoServizioOpenspcoop.getByteFirma()!=null){
- // manifest.setFirmato(true);
- //}
- }
-
-
- // SpecificaInterfaccia
- it.gov.spcoop.sica.manifest.SpecificaInterfaccia specificaInterfaccia = null;
- if( (accordoServizioOpenspcoop.getByteWsdlConcettuale()!=null) || (accordoServizioOpenspcoop.getByteWsdlLogicoErogatore()!=null) || (accordoServizioOpenspcoop.getByteWsdlLogicoFruitore()!=null) ){
- specificaInterfaccia = new it.gov.spcoop.sica.manifest.SpecificaInterfaccia();
- }
- if(wsdlEmptySeNonDefiniti || (accordoServizioOpenspcoop.getByteWsdlConcettuale()!=null)){
- it.gov.spcoop.sica.manifest.DocumentoInterfaccia docInterfaccia = new it.gov.spcoop.sica.manifest.DocumentoInterfaccia();
- docInterfaccia.setBase(Costanti.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL);
- docInterfaccia.setTipo(TipoDocumentoInterfaccia.WSDL);
- specificaInterfaccia.setInterfacciaConcettuale(docInterfaccia);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoInterfaccia.WSDL.toString());
- doc.setNome(Costanti.SPECIFICA_INTERFACCIA_CONCETTUALE_WSDL);
- if(accordoServizioOpenspcoop.getByteWsdlConcettuale()!=null){
- doc.setContenuto(accordoServizioOpenspcoop.getByteWsdlConcettuale());
- }else{
- // Imposto WSDL Empty per compatibilita Client SICA
- doc.setContenuto(Costanti.WSDL_EMPTY.getBytes());
- }
- accServCompostoSICA.setInterfacciaConcettuale(doc);
- }
- if(wsdlEmptySeNonDefiniti || (accordoServizioOpenspcoop.getByteWsdlLogicoErogatore()!=null)){
- it.gov.spcoop.sica.manifest.DocumentoInterfaccia docInterfaccia = new it.gov.spcoop.sica.manifest.DocumentoInterfaccia();
- docInterfaccia.setBase(Costanti.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL);
- docInterfaccia.setTipo(TipoDocumentoInterfaccia.WSDL);
- specificaInterfaccia.setInterfacciaLogicaLatoErogatore(docInterfaccia);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoInterfaccia.WSDL.toString());
- doc.setNome(Costanti.SPECIFICA_INTERFACCIA_LOGICA_EROGATORE_WSDL);
- if(accordoServizioOpenspcoop.getByteWsdlLogicoErogatore()!=null){
- doc.setContenuto(accordoServizioOpenspcoop.getByteWsdlLogicoErogatore());
- }else{
- // Imposto WSDL Empty per compatibilita Client SICA
- doc.setContenuto(Costanti.WSDL_EMPTY.getBytes());
- }
- accServCompostoSICA.setInterfacciaLogicaLatoErogatore(doc);
- }
- if(wsdlEmptySeNonDefiniti || (accordoServizioOpenspcoop.getByteWsdlLogicoFruitore()!=null)){
- it.gov.spcoop.sica.manifest.DocumentoInterfaccia docInterfaccia = new it.gov.spcoop.sica.manifest.DocumentoInterfaccia();
- docInterfaccia.setBase(Costanti.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL);
- docInterfaccia.setTipo(TipoDocumentoInterfaccia.WSDL);
- specificaInterfaccia.setInterfacciaLogicaLatoFruitore(docInterfaccia);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoInterfaccia.WSDL.toString());
- doc.setNome(Costanti.SPECIFICA_INTERFACCIA_LOGICA_FRUITORE_WSDL);
- if(accordoServizioOpenspcoop.getByteWsdlLogicoFruitore()!=null){
- doc.setContenuto(accordoServizioOpenspcoop.getByteWsdlLogicoFruitore());
- }else{
- // Imposto WSDL Empty per compatibilita Client SICA
- doc.setContenuto(Costanti.WSDL_EMPTY.getBytes());
- }
- accServCompostoSICA.setInterfacciaLogicaLatoFruitore(doc);
- }
- if(specificaInterfaccia!=null){
- manifest.setSpecificaInterfaccia(specificaInterfaccia);
- }
-
-
- // SpecificaConversazione
- it.gov.spcoop.sica.manifest.SpecificaConversazione specificaConversazione = null;
- if( (accordoServizioOpenspcoop.getByteSpecificaConversazioneConcettuale()!=null) ||
- (accordoServizioOpenspcoop.getByteSpecificaConversazioneErogatore()!=null) ||
- (accordoServizioOpenspcoop.getByteSpecificaConversazioneFruitore()!=null) ){
- specificaConversazione = new it.gov.spcoop.sica.manifest.SpecificaConversazione();
- }
- if(accordoServizioOpenspcoop.getByteSpecificaConversazioneConcettuale()!=null){
- it.gov.spcoop.sica.manifest.DocumentoConversazione docConversazione = new it.gov.spcoop.sica.manifest.DocumentoConversazione();
- docConversazione.setBase(Costanti.SPECIFICA_CONVERSAZIONE_CONCETTUALE_WSBL);
- docConversazione.setTipo(TipoDocumentoConversazione.WSBL);
- specificaConversazione.setConversazioneConcettuale(docConversazione);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoConversazione.WSBL.toString());
- doc.setNome(Costanti.SPECIFICA_CONVERSAZIONE_CONCETTUALE_WSBL);
- doc.setContenuto(accordoServizioOpenspcoop.getByteSpecificaConversazioneConcettuale());
- accServCompostoSICA.setConversazioneConcettuale(doc);
- }
- if(accordoServizioOpenspcoop.getByteSpecificaConversazioneErogatore()!=null){
- it.gov.spcoop.sica.manifest.DocumentoConversazione docConversazione = new it.gov.spcoop.sica.manifest.DocumentoConversazione();
- docConversazione.setBase(Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_EROGATORE_WSBL);
- docConversazione.setTipo(TipoDocumentoConversazione.WSBL);
- specificaConversazione.setConversazioneLogicaLatoErogatore(docConversazione);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoConversazione.WSBL.toString());
- doc.setNome(Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_EROGATORE_WSBL);
- doc.setContenuto(accordoServizioOpenspcoop.getByteSpecificaConversazioneErogatore());
- accServCompostoSICA.setConversazioneLogicaErogatore(doc);
- }
- if(accordoServizioOpenspcoop.getByteSpecificaConversazioneFruitore()!=null){
- it.gov.spcoop.sica.manifest.DocumentoConversazione docConversazione = new it.gov.spcoop.sica.manifest.DocumentoConversazione();
- docConversazione.setBase(Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_FRUITORE_WSBL);
- docConversazione.setTipo(TipoDocumentoConversazione.WSBL);
- specificaConversazione.setConversazioneLogicaLatoFruitore(docConversazione);
-
- it.gov.spcoop.sica.dao.Documento doc = new it.gov.spcoop.sica.dao.Documento();
- doc.setTipo(TipiDocumentoConversazione.WSBL.toString());
- doc.setNome(Costanti.SPECIFICA_CONVERSAZIONE_LOGICA_LATO_FRUITORE_WSBL);
- doc.setContenuto(accordoServizioOpenspcoop.getByteSpecificaConversazioneFruitore());
- accServCompostoSICA.setConversazioneLogicaFruitore(doc);
- }
- if(specificaConversazione!=null){
- manifest.setSpecificaConversazione(specificaConversazione);
- }
-
-
-
- // Riferimento accordo di cooperazione:
- String uriAccordoCooperazione = null;
- if(accordoServizioOpenspcoop.getServizioComposto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("ServizioComposto non definito");
- }
- try{
- uriAccordoCooperazione = SICAtoOpenSPCoopUtilities.idAccordoCooperazione_openspcoopToSica(registryReader,idAccordoCooperazioneFactory.getIDAccordoFromUri(accordoServizioOpenspcoop.getServizioComposto().getAccordoCooperazione()));
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Trasformazione IDAccordo di cooperazione ["+accordoServizioOpenspcoop.getServizioComposto().getAccordoCooperazione()+"] non riuscito: "+e.getMessage(),e);
- }
- try {
- manifest.setRiferimentoAccordoCooperazione(new URI(uriAccordoCooperazione));
- }catch(Exception e) {
- throw new SICAToOpenSPCoopUtilitiesException(e.getMessage(),e);
- }
-
-
-
- // Servizi componenti
- ElencoServiziComponenti servComponentiSICA = null;
- for(int i=0; i<accordoServizioOpenspcoop.getServizioComposto().sizeServizioComponenteList(); i++){
- AccordoServizioParteComuneServizioCompostoServizioComponente servComponente = accordoServizioOpenspcoop.getServizioComposto().getServizioComponente(i);
-
- if(servComponentiSICA==null)
- servComponentiSICA = new ElencoServiziComponenti();
- try{
- IDServizio idServ = IDServizioFactory.getInstance().getIDServizioFromValues(servComponente.getTipo(),servComponente.getNome(),
- servComponente.getTipoSoggetto(),servComponente.getNomeSoggetto(),
- servComponente.getVersione());
- String uriAPS = sicaToOpenspcoopContext.getUriAPS(idServ);
- if(uriAPS==null){
- throw new SICAToOpenSPCoopUtilitiesException("Trasformazione IDServizio ["+idServ+"] in uri accordo servizio parte specifica non riuscita");
- }
- servComponentiSICA.addServizioComponente(new URI(uriAPS));
- }catch(Exception e){
- IDServizio idServWithOutCheck = IDServizioFactory.getInstance().getIDServizioFromValuesWithoutCheck(servComponente.getTipo(),servComponente.getNome(),
- servComponente.getTipoSoggetto(),servComponente.getNomeSoggetto(),
- servComponente.getVersione());
- throw new SICAToOpenSPCoopUtilitiesException("Trasformazione IDServizio ["+idServWithOutCheck+"] non riuscito: "+e.getMessage(),e);
- }
- }
- if(servComponentiSICA!=null)
- manifest.setServiziComponenti(servComponentiSICA);
-
-
- /* Allegati */
- it.gov.spcoop.sica.manifest.ElencoAllegati allegati = null;
- // ProfiloCollaborazioneEGOV
- if(accordoServizioOpenspcoop.sizePortTypeList()>0 && !documentoSpecificaEGOV_asSpecificaSemiformale){
- String docGenerico = null;
- if(documentoSpecificaEGOV_asClientSICA){
- try{
- docGenerico = it.gov.spcoop.sica.wscp.driver.XMLUtils.generaGenericoDocumento(accordoServizioOpenspcoop, accServCompostoSICA,
- documentoSpecificaEGOV_nomiSPCoopQualified, documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la conversione delle informazioni eGov in Allegati (http://spcoop.gov.it/sica/wscp): "+e.getMessage(),e);
- }
- }else{
- try{
- docGenerico = it.cnipa.collprofiles.driver.XMLUtils.generaGenericoDocumento(accordoServizioOpenspcoop, accServCompostoSICA,
- documentoSpecificaEGOV_asClientSICADisabled_namespaceCNIPA,
- documentoSpecificaEGOV_nomiSPCoopQualified);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la conversione delle informazioni eGov in Allegati (http://www.cnipa.it/collProfiles): "+e.getMessage(),e);
- }
- }
- if(docGenerico!=null){
- if(allegati==null){
- allegati = new it.gov.spcoop.sica.manifest.ElencoAllegati();
- }
- allegati.addGenericoDocumento(docGenerico);
- manifest.setAllegati(allegati);
- }
- }
- // Altri allegati generici
- if(accordoServizioOpenspcoop.sizeAllegatoList()>0){
- if(allegati==null){
- allegati = new it.gov.spcoop.sica.manifest.ElencoAllegati();
- }
- for(int i=0; i<accordoServizioOpenspcoop.sizeAllegatoList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = accordoServizioOpenspcoop.getAllegato(i);
-
- allegati.addGenericoDocumento(docOpenspcoop.getFile());
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte dell'allegato "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accServCompostoSICA.addAllegato(docSICA);
- }
- manifest.setAllegati(allegati);
- }
- // WSDL Definitorio
- if(accordoServizioOpenspcoop.getByteWsdlDefinitorio()!=null){
- if(allegati==null){
- allegati = new it.gov.spcoop.sica.manifest.ElencoAllegati();
- }
- allegati.addGenericoDocumento(Costanti.ALLEGATO_DEFINITORIO_XSD);
- manifest.setAllegati(allegati);
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo("XSD");
- docSICA.setNome(Costanti.ALLEGATO_DEFINITORIO_XSD);
- docSICA.setContenuto(accordoServizioOpenspcoop.getByteWsdlDefinitorio());
- accServCompostoSICA.addAllegato(docSICA);
- }
-
-
- /* SpecificheSemiformali */
- it.gov.spcoop.sica.manifest.SpecificaSemiformale specificaSemiformale = null;
- // ProfiloCollaborazioneEGOV
- if(accordoServizioOpenspcoop.sizePortTypeList()>0 && documentoSpecificaEGOV_asSpecificaSemiformale){
- it.gov.spcoop.sica.manifest.DocumentoSemiformale docSemiformale = null;
- if(documentoSpecificaEGOV_asClientSICA){
- try{
- docSemiformale = it.gov.spcoop.sica.wscp.driver.XMLUtils.generaDocumentoSemiformale(accordoServizioOpenspcoop, accServCompostoSICA,
- documentoSpecificaEGOV_nomiSPCoopQualified, documentoSpecificaEGOV_asClientSICAEnabled_childUnquilified);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la conversione delle informazioni eGov in SpecificaSemiformale (http://spcoop.gov.it/sica/wscp): "+e.getMessage(),e);
- }
- }else{
- try{
- docSemiformale = it.cnipa.collprofiles.driver.XMLUtils.generaDocumentoSemiformale(accordoServizioOpenspcoop, accServCompostoSICA,
- documentoSpecificaEGOV_asClientSICADisabled_namespaceCNIPA,
- documentoSpecificaEGOV_nomiSPCoopQualified);
- }catch(Exception e){
- throw new SICAToOpenSPCoopUtilitiesException("Errore durante la conversione delle informazioni eGov in SpecificaSemiformale (http://www.cnipa.it/collProfiles): "+e.getMessage(),e);
- }
- }
- if(docSemiformale!=null){
- if(specificaSemiformale==null){
- specificaSemiformale = new it.gov.spcoop.sica.manifest.SpecificaSemiformale();
- }
- specificaSemiformale.addDocumentoSemiformale(docSemiformale);
- manifest.setSpecificaSemiformale(specificaSemiformale);
- }
- }
- // Altre Specifiche semiformali
- if(accordoServizioOpenspcoop.sizeSpecificaSemiformaleList()>0){
- if(specificaSemiformale==null){
- specificaSemiformale = new it.gov.spcoop.sica.manifest.SpecificaSemiformale();
- }
- for(int i=0; i<accordoServizioOpenspcoop.sizeSpecificaSemiformaleList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = accordoServizioOpenspcoop.getSpecificaSemiformale(i);
-
- it.gov.spcoop.sica.manifest.DocumentoSemiformale docSemiformale = new it.gov.spcoop.sica.manifest.DocumentoSemiformale();
- docSemiformale.setTipo(docOpenspcoop.getTipo());
- docSemiformale.setBase(docOpenspcoop.getFile());
- specificaSemiformale.addDocumentoSemiformale(docSemiformale);
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte della specifica semiformale "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accServCompostoSICA.addSpecificaSemiformale(docSICA);
- }
- manifest.setSpecificaSemiformale(specificaSemiformale);
- }
-
- // Specifiche di coordinamento
- it.gov.spcoop.sica.manifest.SpecificaCoordinamento coordinamento = null;
- for(int i=0; i<accordoServizioOpenspcoop.getServizioComposto().sizeSpecificaCoordinamentoList(); i++){
- org.openspcoop2.core.registry.Documento docOpenspcoop = accordoServizioOpenspcoop.getServizioComposto().getSpecificaCoordinamento(i);
-
- if(coordinamento==null)
- coordinamento = new it.gov.spcoop.sica.manifest.SpecificaCoordinamento();
-
- it.gov.spcoop.sica.manifest.DocumentoCoordinamento docCoordinamento = new it.gov.spcoop.sica.manifest.DocumentoCoordinamento();
- docCoordinamento.setTipo(docOpenspcoop.getTipo());
- docCoordinamento.setBase(docOpenspcoop.getFile());
- coordinamento.addDocumentoCoordinamento(docCoordinamento);
-
- it.gov.spcoop.sica.dao.Documento docSICA = new it.gov.spcoop.sica.dao.Documento();
- docSICA.setTipo(docOpenspcoop.getTipo());
- docSICA.setNome(docOpenspcoop.getFile());
- if(docOpenspcoop.getByteContenuto()==null){
- throw new SICAToOpenSPCoopUtilitiesException("Byte della specifica di coordinamento "+docOpenspcoop.getFile()+" di tipo "+docOpenspcoop.getTipo()+" non forniti");
- }
- docSICA.setContenuto(docOpenspcoop.getByteContenuto());
- accServCompostoSICA.addSpecificaCoordinamento(docSICA);
- }
- if(coordinamento!=null)
- manifest.setSpecificaCoordinamento(coordinamento);
-
-
- /* Firma apposta dal Servizio di Registro quando l'accordo viene scaricato dal Registro stesso */
- if(includiInfoRegistroGenerale){
- //if(accordoServizioOpenspcoop.getByteFirma()!=null){
- // it.gov.spcoop.sica.firma.Firma firma = new it.gov.spcoop.sica.firma.Firma();
- // accServCompostoSICA.setFirma(firma);
- //}
- }
-
- accServCompostoSICA.setManifesto(manifest);
- return accServCompostoSICA;
- }
- }