XMLLib.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.core.registry.driver.web;
- import java.io.BufferedReader;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.FileReader;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.StringTokenizer;
- 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.AccordoServizioParteComune;
- import org.openspcoop2.core.registry.AccordoServizioParteSpecifica;
- import org.openspcoop2.core.registry.Fruitore;
- import org.openspcoop2.core.registry.Gruppo;
- import org.openspcoop2.core.registry.PortaDominio;
- import org.openspcoop2.core.registry.Ruolo;
- import org.openspcoop2.core.registry.Scope;
- import org.openspcoop2.core.registry.Soggetto;
- import org.openspcoop2.core.registry.constants.CostantiXMLRepository;
- import org.openspcoop2.core.registry.driver.DriverRegistroServiziException;
- import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
- import org.openspcoop2.core.registry.driver.IDAccordoFactory;
- import org.openspcoop2.core.registry.driver.IDServizioFactory;
- import org.openspcoop2.utils.xml.JaxbUtils;
- /**
- * Classe utilizzata per creare/modificare/eliminare entita XML di un registro dei servizi OpenSPCoop.
- *
- * @author Poli Andrea (apoli@link.it)
- * @author $Author$
- * @version $Rev$, $Date$
- */
- public class XMLLib{
- /* ******** F I E L D S P R I V A T I ******** */
- /** --- Location del repository dove memorizzare i file XML associate alle entita create nel registro UDDI ---- */
- private String pathPrefix;
- /** --- URL Prefix utilizzato come prefisso da associare alle url memorizzate nelle entita create nell'UDDI
- e contenenti le definizioni XML ------*/
- private String urlPrefix;
-
- // Factory
- private IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();
- private IDAccordoCooperazioneFactory idAccordoCooperazioneFactory = IDAccordoCooperazioneFactory.getInstance();
- private IDServizioFactory idServizioFactory = IDServizioFactory.getInstance();
- private org.openspcoop2.core.registry.utils.CleanerOpenSPCoop2Extensions cleanerOpenSPCoop2ExtensionsRegistry = null;
- /**
- * Costruttore.
- *
- * @param path Contiene il path del repository necessario al registro dei servizi
- * @param url URL Prefix utilizzato come prefisso da associare alle url memorizzate per i WSDL
- */
- public XMLLib(String path,String url) throws DriverRegistroServiziException{
- this.cleanerOpenSPCoop2ExtensionsRegistry = new org.openspcoop2.core.registry.utils.CleanerOpenSPCoop2Extensions();
-
- if(path!=null){
- if (!path.endsWith(File.separator))
- this.pathPrefix= path + File.separator;
- else
- this.pathPrefix = path;
- }
-
- if(url!=null){
- if (!url.endsWith(CostantiXMLRepository.URL_SEPARATOR))
- this.urlPrefix= url + CostantiXMLRepository.URL_SEPARATOR;
- else
- this.urlPrefix = url;
- }
-
- if(path!=null){
- try {
- // Creazione/Controllo Esistenza directory accordo
- File dir = new File(this.pathPrefix+CostantiXMLRepository.ACCORDI_DI_SERVIZIO);
- if(dir.exists() == false){
- if(dir.mkdir()==false){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la creazione della directory per gli accordi di servizio ["+
- this.pathPrefix+CostantiXMLRepository.ACCORDI_DI_SERVIZIO+"]");
- }
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception io){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la creazione della directory per gli accordi di servizio ["+
- this.pathPrefix+CostantiXMLRepository.ACCORDI_DI_SERVIZIO+"]: "+io.getMessage());
- }
-
-
- try {
- // Creazione/Controllo Esistenza directory accordo cooperazione
- File dir = new File(this.pathPrefix+CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE);
- if(dir.exists() == false){
- if(dir.mkdir()==false){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la creazione della directory per gli accordi di cooperazione ["+
- this.pathPrefix+CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE+"]");
- }
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception io){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la creazione della directory per gli accordi di servizio ["+
- this.pathPrefix+CostantiXMLRepository.ACCORDI_DI_SERVIZIO+"]: "+io.getMessage());
- }
-
-
- try {
-
- // Creazione/Controllo Esistenza directory porte di dominio
- File dirPDD = new File(this.pathPrefix+CostantiXMLRepository.PORTE_DI_DOMINIO);
- if(dirPDD.exists() == false){
- if(dirPDD.mkdir()==false){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la creazione della directory per le porte di dominio ["+
- this.pathPrefix+CostantiXMLRepository.PORTE_DI_DOMINIO+"]");
- }
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception io){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la creazione della directory per le porte di dominio ["+
- this.pathPrefix+CostantiXMLRepository.PORTE_DI_DOMINIO+"]: "+io.getMessage());
- }
- }
- }
- /* ---------------- GENERAZIONE XML DA/A FILE ------------------------- */
- /**
- * Metodo che si occupa della generazione di un file a partire da un array di byte
- * Sono richiesti interattivamente i parametri che identificano il file da generare e l'array di byte.
- *
- * @param date Array di Byte da trasformare in file.
- * @param fileName Nome del File
- */
- public void generaFile(byte[]date, String fileName) throws DriverRegistroServiziException{
- FileOutputStream fos = null;
- try{
- File file = new File(fileName);
- if(file.exists()){
- if(!file.delete()) {
- // ignore
- }
- }
- fos =new FileOutputStream(fileName);
- fos.write(date);
- fos.close();
- }catch(Exception e){
- try{
- if( fos != null )
- fos.close();
- } catch(Exception er) {
- // close
- }
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante il salvataggio del file ("+fileName+"): "+e.getMessage(),e);
- }
- }
- /**
- * Legge un indice dei servizi di un soggetto
- *
- * @param directoryServiziSoggetto
- * @return L'indice dei servizi di un soggetto
- * @throws DriverRegistroServiziException
- */
- public String getContenutoIndexServizi( String directoryServiziSoggetto ) throws DriverRegistroServiziException{
- String indexServizi = directoryServiziSoggetto;
- if(directoryServiziSoggetto.endsWith(File.separator)==false){
- indexServizi = directoryServiziSoggetto + File.separator;
- }
- indexServizi = indexServizi + CostantiXMLRepository.INDEX_SERVIZI;
- BufferedReader bf = null;
- FileReader fr = null;
- try{
- File f = new File(indexServizi);
- StringBuilder contenuto = new StringBuilder();
- if(f.exists()){
- if(f.isFile()==false){
- throw new Exception("Non e' un file regolare");
- }
- fr = new FileReader(f);
- bf = new BufferedReader(fr);
- char[]buffer = new char[1024];
- int byteLetti = -1;
- while( (byteLetti = fr.read(buffer))!=-1){
- contenuto.append(buffer,0,byteLetti);
- }
- }
- if(contenuto.length()>0)
- return contenuto.toString();
- else
- return null;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la elaborazione del file di index ("+indexServizi+"): "+e.getMessage(),e);
- }
- finally {
- try{
- if( fr != null )
- fr.close();
- } catch(Exception er) {
- // close
- }
- try{
- if( bf != null )
- bf.close();
- } catch(Exception er) {
- // close
- }
- }
- }
- /**
- * Genera l'indice dei servizi
- *
- * @param directoryServiziSoggetto
- * @param contenuto
- * @throws DriverRegistroServiziException
- */
- private void setContenutoIndexServizi( String directoryServiziSoggetto , String contenuto ) throws DriverRegistroServiziException{
- // index name
- String indexServizi = directoryServiziSoggetto;
- if(directoryServiziSoggetto.endsWith(File.separator)==false){
- indexServizi = directoryServiziSoggetto + File.separator;
- }
- indexServizi = indexServizi + CostantiXMLRepository.INDEX_SERVIZI;
- if(contenuto==null)
- throw new DriverRegistroServiziException("Contenuto da inserire nell'indice dei servizi is null");
- // intestazione
- String content = null;
- if( contenuto.startsWith(CostantiXMLRepository.INDEX_SERVIZI_MANIFEST)==false ){
- content = CostantiXMLRepository.INDEX_SERVIZI_MANIFEST + contenuto;
- }else{
- content = contenuto;
- }
- FileOutputStream fos = null;
- try{
- File f = new File(indexServizi);
- if(f.exists()){
- if(!f.delete()) {
- // ignore
- }
- }
- fos = new FileOutputStream(f);
- fos.write(content.getBytes());
- fos.close();
- }catch(Exception e){
- try{
- if( fos != null )
- fos.close();
- } catch(Exception er) {
- // close
- }
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'impostazione del file di index ("+indexServizi+"): "+e.getMessage(),e);
- }
- }
- private void setContenutoIndexServizi(String directoryServiziSoggetto,IDServizio[]index)throws DriverRegistroServiziException {
- // genero stringa
- StringBuilder bf = new StringBuilder();
- for(int i=0; i<index.length; i++){
- bf.append(this.generaIndexServiziLine(index[i]));
- }
- this.setContenutoIndexServizi(directoryServiziSoggetto, bf.toString());
- }
- /**
- * Genera la linea di un servizio nell'indice
- * @return linea di un servizio nell'indice
- */
- private String generaIndexServiziLine(IDServizio idS) throws DriverRegistroServiziException{
- if(idS.getUriAccordoServizioParteComune()==null){
- throw new DriverRegistroServiziException("[generaIndexServiziLine] uri accordo is null");
- }
- if(idS.getTipo()==null){
- throw new DriverRegistroServiziException("[generaIndexServiziLine] tipo Servizio is null");
- }
- if(idS.getNome()==null){
- throw new DriverRegistroServiziException("[generaIndexServiziLine] nome Servizio is null");
- }
- if(idS.getVersione()==null){
- throw new DriverRegistroServiziException("[generaIndexServiziLine] versione Servizio is null");
- }
- if(idS.getSoggettoErogatore()==null){
- throw new DriverRegistroServiziException("[generaIndexServiziLine] soggetto Erogatore is null");
- }
- if(idS.getSoggettoErogatore().getTipo()==null){
- throw new DriverRegistroServiziException("[generaIndexServiziLine] tipo soggetto Erogatore is null");
- }
- if(idS.getSoggettoErogatore().getNome()==null){
- throw new DriverRegistroServiziException("[generaIndexServiziLine] nome soggetto Erogatore is null");
- }
- return idS.getUriAccordoServizioParteComune() +CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+
- idS.getSoggettoErogatore().getTipo()+"/"+idS.getSoggettoErogatore().getNome()+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+
- idS.getTipo()+"/"+idS.getNome()+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+idS.getVersione()+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+
- "tipologiaServizio("+idS.getTipologia().getValue()+")"+"\n";
- }
- private boolean existsIndexServizi(String directoryServiziSoggetto){
- String indexServizi = directoryServiziSoggetto;
- if(directoryServiziSoggetto.endsWith(File.separator)==false){
- indexServizi = directoryServiziSoggetto + File.separator;
- }
- indexServizi = indexServizi + CostantiXMLRepository.INDEX_SERVIZI;
- File f = new File(indexServizi);
- return f.exists();
- }
-
- private boolean isIndexServizi(File file)throws DriverRegistroServiziException{
- FileInputStream fin = null;
- ByteArrayOutputStream bout = null;
- try{
- fin = new FileInputStream(file);
- byte[] readB = new byte[1024];
- int letti =0;
- bout = new ByteArrayOutputStream();
- while( (letti=fin.read(readB))!=-1 ){
- bout.write(readB,0,letti);
- }
- fin.close();
- if(bout.size()>0 && bout.toString()!=null && bout.toString().startsWith(CostantiXMLRepository.INDEX_SERVIZI_MANIFEST))
- return true;
- else
- return false;
- }catch(Exception e){
- try{
- if( fin != null )
- fin.close();
- } catch(Exception er) {
- // close
- }
- try{
- if( bout != null )
- bout.close();
- } catch(Exception er) {
- // close
- }
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante il check del file di index ("+file.getName()+"): "+e.getMessage(),e);
- }
- }
- private void deleteIndexServizi(String directoryServiziSoggetto)throws DriverRegistroServiziException{
- String indexServizi = directoryServiziSoggetto;
- if(directoryServiziSoggetto.endsWith(File.separator)==false){
- indexServizi = directoryServiziSoggetto + File.separator;
- }
- indexServizi = indexServizi + CostantiXMLRepository.INDEX_SERVIZI;
- try{
- File f = new File(indexServizi);
- if(f.exists()){
- if (f.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione file di index ["+indexServizi+"] non riuscita");
- }
- }
- }catch(DriverRegistroServiziException de){
- throw de;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'eliminazione del file di index ("+indexServizi+"): "+e.getMessage(),e);
- }
- }
- /**
- * Legge un index dei servizi
- *
- * @param contenuto
- * @return La lettura di un indice dei servizi come array di IDServizio
- */
- public static IDServizio[] mappingIndexServizi(String contenuto)throws DriverRegistroServiziException{
- XMLLib xmlLib = new XMLLib(null,null);
- return xmlLib.readIndexServizi(contenuto);
- }
-
- /**
- * Legge un index dei servizi
- *
- * @param directoryServiziSoggetto
- * @return indice dei servizi
- */
- private IDServizio[] readIndexServizi(String contenuto)throws DriverRegistroServiziException{
- try{
- if(contenuto.toString().startsWith(CostantiXMLRepository.INDEX_SERVIZI_MANIFEST)==false){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop");
- }
-
- String cont = contenuto.replace(CostantiXMLRepository.INDEX_SERVIZI_MANIFEST,"");
- StringTokenizer st = new StringTokenizer(cont,"\n");
- List<IDServizio> ids = new ArrayList<IDServizio>();
- while(st.hasMoreTokens()){
- String line = null;
- try{
- line = st.nextToken();
- }catch(Exception e){
- break;
- }
-
- byte condizioneUscita = 0;
- if( (line!=null) && (line.length()>0) && (line.getBytes()[0]==condizioneUscita) )
- break;
- String [] splitLine = null;
- if(line!=null) {
- splitLine = line.split(CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE);
- }
- if(splitLine==null){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') ["+line+"]");
- }else if(splitLine.length!=5){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') ["+line+"][lenght:"+splitLine.length+"]");
- }else if(splitLine[0]==null){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') ["+line+"][split[0]:"+splitLine[0]+"]");
- }else if(splitLine[1]==null){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') ["+line+"][split[1]:"+splitLine[1]+"]");
- }else if(splitLine[2]==null){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') ["+line+"][split[2]:"+splitLine[2]+"]");
- }else if(splitLine[3]==null){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') ["+line+"][split[3]:"+splitLine[3]+"]");
- }else if(splitLine[4]==null){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') ["+line+"][split[4]:"+splitLine[4]+"]");
- }else if(splitLine[1].indexOf("/")==-1){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') '/' ["+line+"][split[1]:"+splitLine[1]+"]");
- }else if(splitLine[2].indexOf("/")==-1){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') '/' ["+line+"][split[2]:"+splitLine[2]+"]");
- }else if( (splitLine[4].equals("tipologiaServizio(normale)")==false) && (splitLine[4].equals("tipologiaServizio(correlato)")==false) ){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read line '"+CostantiXMLRepository.INDEX_SERVIZI_SEPARATORE+"') 'tipologiaServizio' ["+line+"][split[4]:"+splitLine[4]+"]");
- }
- // soggetto Erogatore
- IDSoggetto idSoggettoErogatore = null;
- String [] splitSoggetto = splitLine[1].split("/");
- if(splitSoggetto==null || splitSoggetto.length!=2 || splitSoggetto[0]==null || splitSoggetto[1]==null){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read soggetto ':') ["+splitLine[1]+"]");
- }
- idSoggettoErogatore = new IDSoggetto(splitSoggetto[0], splitSoggetto[1]);
-
- // servizio
- String [] splitServizio = splitLine[2].split("/");
- if(splitServizio==null || splitServizio.length!=2 || splitServizio[0]==null || splitServizio[1]==null){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read servizio ':') ["+splitLine[2]+"]");
- }
- String tipoServizio = splitServizio[0];
- String nomeServizio = splitServizio[1];
-
- // versioneServizio
- Integer versioneServizio = null;
- try{
- versioneServizio = Integer.parseInt(splitLine[3]);
- }catch(Exception e){
- throw new Exception("Non e' un file index servizi del registro dei servizi di OpenSPCoop (read versioneServizio) ["+splitLine[3]+"]: " +e.getMessage(),e);
- }
-
- IDServizio idServ = this.idServizioFactory.getIDServizioFromValues(tipoServizio, nomeServizio, idSoggettoErogatore, versioneServizio);
-
- // uri accordo
- String uriAccordoServizioParteComune = splitLine[0];
- idServ.setUriAccordoServizioParteComune(uriAccordoServizioParteComune);
-
- // servizio correlato
- if( splitLine[3].equals("tipologiaServizio(correlato)") )
- idServ.setTipologia(org.openspcoop2.core.constants.TipologiaServizio.CORRELATO);
- else
- idServ.setTipologia(org.openspcoop2.core.constants.TipologiaServizio.NORMALE);
- ids.add(idServ);
- }
- if(ids.size()==0){
- return null;
- }else{
- IDServizio [] rIDS = new IDServizio[1];
- return ids.toArray(rIDS);
- }
- }catch(DriverRegistroServiziException de){
- throw de;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la lettura del file di index: "+e.getMessage(),e);
- }
- }
- /**
- * Legge un file di index dei servizi
- *
- * @param directoryServiziSoggetto
- * @return index dei servizi
- */
- private IDServizio[] readIndexServiziFromFile(String directoryServiziSoggetto)throws DriverRegistroServiziException{
- String indexServizi = directoryServiziSoggetto;
- if(directoryServiziSoggetto.endsWith(File.separator)==false){
- indexServizi = directoryServiziSoggetto + File.separator;
- }
- indexServizi = indexServizi + CostantiXMLRepository.INDEX_SERVIZI;
- BufferedReader bf = null;
- FileReader fr = null;
- try{
- File f = new File(indexServizi);
- StringBuilder contenuto = new StringBuilder();
- if(f.exists()){
- if(f.isFile()==false){
- throw new Exception("Non e' un file regolare");
- }
- fr = new FileReader(f);
- bf = new BufferedReader(fr);
- char[]buffer = new char[1024];
- int letti=0;
- while( (letti=fr.read(buffer))!=-1){
- contenuto.append(buffer,0,letti);
- }
- }else{
- throw new DriverRegistroServiziException("File di index non esistente");
- }
- return this.readIndexServizi(contenuto.toString());
- }catch(DriverRegistroServiziException de){
- throw de;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la lettura del file di index ("+indexServizi+"): "+e.getMessage(),e);
- }finally{
- try{
- if( fr != null )
- fr.close();
- } catch(Exception er) {
- // close
- }
- try{
- if( bf != null )
- bf.close();
- } catch(Exception er) {
- // close
- }
- }
- }
- /* ---------------- GENERAZIONE XML ACCORDO DI COOPERAZIONE ------------------------- */
-
- public String mappingIDAccordoCooperazioneToFileName(IDAccordoCooperazione idAccordo)throws DriverRegistroServiziException{
- return this.mappingUriToFileName_accordoCooperazione(this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordo));
- }
- public String mappingUriToFileName_accordoCooperazione(String uriAccordo)throws DriverRegistroServiziException{
- String tmp = uriAccordo.replaceAll("/", "_");
- tmp = tmp.replaceAll(":", "_");
- return tmp;
- }
-
- /**
- * Metodo che controlla se l'accordo risulta gia' registrato
- *
- * @param idAccordo ID dell'accordo di cooperazione da creare/modificare
- * @return true se l'accordo risulta registrato, false altrimenti.
- *
- */
- public boolean existsAccordoCooperazione(IDAccordoCooperazione idAccordo)throws DriverRegistroServiziException{
- String fileNameAccordo = null;
- try {
- fileNameAccordo = mappingIDAccordoCooperazioneToFileName(idAccordo);
- File fileXML = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE + File.separator + fileNameAccordo + ".xml");
- File dirAllegati = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE + File.separator + CostantiXMLRepository.ALLEGATI_DIR +fileNameAccordo);
- File dirSpecificheSemiformali = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE + File.separator + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR +fileNameAccordo);
- if( (fileXML.exists()==false) || (dirAllegati.exists()==false) || (dirSpecificheSemiformali.exists()==false) ){
- return false;
- }else
- return true;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca ("+CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE+") ["+fileNameAccordo+"]: "+e.getMessage(),e);
- }
-
- }
- /**
- * Metodo che si occupa della generazione/modifica di un file XML a partire da un accordo di cooperazione.
- * Sono richiesti interattivamente i parametri che identificano il file XML da generare.
- *
- * @param idAccordo ID dell'accordo di cooperazione da creare/modificare
- * @param accordo Dati dell'accordo di cooperazione da trasformare in XML.
- *
- */
- public void createAccordoCooperazione(IDAccordoCooperazione idAccordo,AccordoCooperazione accordo) throws DriverRegistroServiziException{
- String fileNameAccordo = null;
- try {
- fileNameAccordo = mappingIDAccordoCooperazioneToFileName(idAccordo);
- String accordoDir = this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE + File.separator;
- String accordoOLD = fileNameAccordo;
- String accordoNEW = mappingUriToFileName_accordoCooperazione(this.idAccordoCooperazioneFactory.getUriFromAccordo(accordo));
- if(accordoOLD.equals(accordoNEW)==false){
- // Esiste gia' deve essere modificato il nome.
- // Controllo esistenza per modifica
- File fileXML = new File(accordoDir + accordoOLD + ".xml");
- File dirAllegati = new File(accordoDir + CostantiXMLRepository.ALLEGATI_DIR + accordoOLD);
- File dirSpecificheSemiformali = new File(accordoDir + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + accordoOLD);
-
- if( (fileXML.exists()==false) || (dirAllegati.exists()==false) || (dirSpecificheSemiformali.exists()==false) ){
- throw new DriverRegistroServiziException("Richiesta modifica di un accordo non registrato ["+accordoOLD + "]");
- }
- else{
- try{
- // elimino vecchia definizione Accordo Servizio
- if(fileXML.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per l'accordo ["+fileXML.getAbsolutePath()+"] non riuscita");
- }
- // Elimino vecchi allegati
- String[]listAllegati = dirAllegati.list();
- if(listAllegati!=null) {
- for(int j=0; j<listAllegati.length;j++){
- File fileAllegati = new File(dirAllegati.getAbsolutePath() + File.separator +listAllegati[j]);
- if(fileAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione dell'allegato ["+ fileAllegati.getAbsolutePath() +"] per l'accordo [" + accordoOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory degli allegati
- if(dirAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per gli allegati dell'accordo ["+accordoOLD + "] non riuscita");
- }
- // Elimino vecche specificheSemiformali
- String[]listSpecificheSemiformali = dirSpecificheSemiformali.list();
- if(listSpecificheSemiformali!=null) {
- for(int j=0; j<listSpecificheSemiformali.length;j++){
- File fileSpecificheSemiformali = new File(dirSpecificheSemiformali.getAbsolutePath() + File.separator +listSpecificheSemiformali[j]);
- if(fileSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica semiformale ["+ fileSpecificheSemiformali.getAbsolutePath() +"] per l'accordo [" + accordoOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche semiformali
- if(dirSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche semiformali dell'accordo ["+accordoOLD + "] non riuscita");
- }
- }catch(Exception io){
- throw new DriverRegistroServiziException("Rinominazione della directory/file per l'accordo ["+accordoOLD+ "] non riuscita: "+io.toString());
- }
- }
- }
- // Crea directory
- File dirAllegati = new File(accordoDir + CostantiXMLRepository.ALLEGATI_DIR + accordoNEW);
- File dirSpecificheSemiformali = new File(accordoDir + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + accordoNEW);
- String prefixUrlAllegato = this.urlPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.ALLEGATI_DIR + accordoNEW + CostantiXMLRepository.URL_SEPARATOR;
- String prefixUrlSpecificaSemiformale = this.urlPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + accordoNEW + CostantiXMLRepository.URL_SEPARATOR;
-
- // Gestione Allegati
- if(dirAllegati.exists()==false){
- if(dirAllegati.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per gli allegati dell'accordo ["+accordoNEW + "] non riuscita");
- }
- } else {
- // elimino vecchi allegati
- String [] files = dirAllegati.list();
- if(files!=null){
- for(int i=0; i<files.length; i++){
- File file = new File(files[i]);
- if(file.exists()){
- if(file.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione allegato ["+files[i]+ "] non riuscita");
- }
- }
- }
- }
- }
- // Gestione SpecificheSemiformali
- if(dirSpecificheSemiformali.exists()==false){
- if(dirSpecificheSemiformali.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per le specifiche semiformali dell'accordo ["+accordoNEW + "] non riuscita");
- }
- } else {
- // elimino vecche specifiche semiformali
- String [] files = dirSpecificheSemiformali.list();
- if(files!=null){
- for(int i=0; i<files.length; i++){
- File file = new File(files[i]);
- if(file.exists()){
- if(file.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione spacifica semiformale ["+files[i]+ "] non riuscita");
- }
- }
- }
- }
- }
- // File che definisce l'accordo
- String fileXML = accordoDir + accordoNEW + ".xml";
- // Definizione accordo
- org.openspcoop2.core.registry.RegistroServizi registroXML = new org.openspcoop2.core.registry.RegistroServizi();
-
- // Allegati
- for(int i=0; i<accordo.sizeAllegatoList();i++){
- String path = null;
- if(accordo.getAllegato(i).getFile().startsWith(prefixUrlAllegato)){
- path = dirAllegati.getAbsolutePath() + File.separator + accordo.getAllegato(i).getFile().substring(prefixUrlAllegato.length());
- }else{
- path = dirAllegati.getAbsolutePath() + File.separator + accordo.getAllegato(i).getFile();
- }
- generaFile(accordo.getAllegato(i).getByteContenuto(),path);
- String url = prefixUrlAllegato + accordo.getAllegato(i).getFile();
- accordo.getAllegato(i).setFile(url);
- }
-
- // SpecificheSemiformali
- for(int i=0; i<accordo.sizeSpecificaSemiformaleList();i++){
- String path = null;
- if(accordo.getSpecificaSemiformale(i).getFile().startsWith(prefixUrlSpecificaSemiformale)){
- path = dirSpecificheSemiformali.getAbsolutePath() + File.separator + accordo.getSpecificaSemiformale(i).getFile().substring(prefixUrlSpecificaSemiformale.length());
- }else{
- path = dirSpecificheSemiformali.getAbsolutePath() + File.separator + accordo.getSpecificaSemiformale(i).getFile();
- }
- generaFile(accordo.getSpecificaSemiformale(i).getByteContenuto(),path);
- String url = prefixUrlSpecificaSemiformale + accordo.getSpecificaSemiformale(i).getFile();
- accordo.getSpecificaSemiformale(i).setFile(url);
- }
- // generazione XML
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(accordo); // NOTA: vengono eliminati anche tutti i campi contenenti bytes. Comunque li ho letti prima
- registroXML.addAccordoCooperazione(accordo);
- JaxbUtils.objToXml(fileXML,org.openspcoop2.core.registry.RegistroServizi.class,registroXML);
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'elaborazione XML dell'accordo ["+fileNameAccordo+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa dell'eliminazione dell'accordo dal repository.
- *
- * @param idAccordo ID dell'accordo da eliminare
- */
- public void deleteAccordoCooperazione(IDAccordoCooperazione idAccordo) throws DriverRegistroServiziException {
- String fileNameAccordo = null;
- try {
- fileNameAccordo = mappingIDAccordoCooperazioneToFileName(idAccordo);
- String fileXML = this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE + File.separator + fileNameAccordo + ".xml";
- File dirAllegati = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE + File.separator + CostantiXMLRepository.ALLEGATI_DIR + fileNameAccordo);
- File dirSpecificheSemiformali = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE + File.separator + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + fileNameAccordo);
-
- // Elimino accordo
- File accordo = new File(fileXML);
- if(accordo.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML dell'accordo ["+fileNameAccordo+"] non riuscta");
- }
- // Elimino vecchi allegati
- String[]listAllegati = dirAllegati.list();
- if(listAllegati!=null) {
- for(int j=0; j<listAllegati.length;j++){
- File fileAllegati = new File(dirAllegati.getAbsolutePath() + File.separator +listAllegati[j]);
- if(fileAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione dell'allegato ["+ fileAllegati.getAbsolutePath() +"] per l'accordo [" + fileNameAccordo + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory degli allegati
- if(dirAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per gli allegati dell'accordo ["+fileNameAccordo + "] non riuscita");
- }
- // Elimino vecche specificheSemiformali
- String[]listSpecificheSemiformali = dirSpecificheSemiformali.list();
- if(listSpecificheSemiformali!=null) {
- for(int j=0; j<listSpecificheSemiformali.length;j++){
- File fileSpecificheSemiformali = new File(dirSpecificheSemiformali.getAbsolutePath() + File.separator +listSpecificheSemiformali[j]);
- if(fileSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica semiformale ["+ fileSpecificheSemiformali.getAbsolutePath() +"] per l'accordo [" + fileNameAccordo + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche semiformali
- if(dirSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche semiformali dell'accordo ["+fileNameAccordo + "] non riuscita");
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLlib] Riscontrato errore durante l'eliminazione XML dell'accordo ["+fileNameAccordo+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Lista di accordi registrati
- *
- * @return lista di accordi registrati.
- *
- */
- public AccordoCooperazione[] getAccordiCooperazione()throws DriverRegistroServiziException{
- AccordoCooperazione [] accordiRegistrati = null;
- try {
- File dir = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE);
- if(dir.exists()==false)
- return null;
- File[] accordi = dir.listFiles();
- int numAccordi = 0;
- if(accordi!=null){
- for(int i=0; i<accordi.length;i++){
- if(accordi[i].isFile()){
- numAccordi++;
- }
- }
- }
- if(numAccordi>0){
- accordiRegistrati = new AccordoCooperazione[numAccordi];
- for(int i=0,index=0; i<accordi.length;i++){
- if(accordi[i].isFile()){
- org.openspcoop2.core.registry.RegistroServizi r =
- (org.openspcoop2.core.registry.RegistroServizi) JaxbUtils.xmlToObj(accordi[i].getAbsolutePath(),
- org.openspcoop2.core.registry.RegistroServizi.class);
- accordiRegistrati[index] = r.getAccordoCooperazione(0);
- index++;
- }
- }
- }
- return accordiRegistrati;
- }catch(Exception e){
- e.printStackTrace(System.err);
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca degli accordi di cooperazione: "+e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- /* ---------------- GENERAZIONE XML ACCORDO DI SERVIZIO ------------------------- */
-
- public String mappingIDAccordoToFileName(IDAccordo idAccordo)throws DriverRegistroServiziException{
- return this.mappingUriToFileName(this.idAccordoFactory.getUriFromIDAccordo(idAccordo));
- }
- public String mappingUriToFileName(String uriAccordo)throws DriverRegistroServiziException{
- String tmp = uriAccordo.replaceAll("/", "_");
- tmp = tmp.replaceAll(":", "_");
- return tmp;
- }
-
- /**
- * Metodo che controlla se l'accordo risulta gia' registrato
- *
- * @param idAccordo ID dell'accordo di servizio da creare/modificare
- * @return true se l'accordo risulta registrato, false altrimenti.
- *
- */
- public boolean existsAccordoServizioParteComune(IDAccordo idAccordo)throws DriverRegistroServiziException{
- String fileNameAccordo = null;
- try {
- fileNameAccordo = mappingIDAccordoToFileName(idAccordo);
- File fileXML = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + fileNameAccordo + ".xml");
- File dirWSDL = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + CostantiXMLRepository.WSDL_DIR +fileNameAccordo);
- File dirSpecificheConversazioni = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + CostantiXMLRepository.SPECIFICHE_CONVERSAZIONI_DIR +fileNameAccordo);
- File dirAllegati = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + CostantiXMLRepository.ALLEGATI_DIR +fileNameAccordo);
- File dirSpecificheSemiformali = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR +fileNameAccordo);
- if( (fileXML.exists()==false) || (dirWSDL.exists()==false) || (dirSpecificheConversazioni.exists()==false) || (dirAllegati.exists()==false) || (dirSpecificheSemiformali.exists()==false) ){
- return false;
- }else
- return true;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca ("+CostantiXMLRepository.ACCORDI_DI_SERVIZIO+") ["+fileNameAccordo+"]: "+e.getMessage(),e);
- }
-
- }
- /**
- * Metodo che si occupa della generazione/modifica di un file XML a partire da un accordo di servizio.
- * Sono richiesti interattivamente i parametri che identificano il file XML da generare.
- *
- * @param idAccordo ID dell'accordo di servizio da creare/modificare
- * @param accordo Dati dell'accordo di servizio da trasformare in XML.
- *
- */
- public void createAccordoServizioParteComune(IDAccordo idAccordo,AccordoServizioParteComune accordo) throws DriverRegistroServiziException{
- String fileNameAccordo = null;
- try {
- fileNameAccordo = mappingIDAccordoToFileName(idAccordo);
- String accordoDir = this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator;
- String accordoOLD = fileNameAccordo;
- String accordoNEW = mappingUriToFileName(this.idAccordoFactory.getUriFromAccordo(accordo));
- if(accordoOLD.equals(accordoNEW)==false){
- // Esiste gia' deve essere modificato il nome.
- // Controllo esistenza per modifica
- File fileXML = new File(accordoDir + accordoOLD + ".xml");
- File dirWSDL = new File(accordoDir + CostantiXMLRepository.WSDL_DIR + accordoOLD);
- File dirSpecificheConversazioni = new File(accordoDir + CostantiXMLRepository.SPECIFICHE_CONVERSAZIONI_DIR + accordoOLD);
- File dirAllegati = new File(accordoDir + CostantiXMLRepository.ALLEGATI_DIR + accordoOLD);
- File dirSpecificheSemiformali = new File(accordoDir + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + accordoOLD);
- File dirSpecificheCoordinamento = new File(accordoDir + CostantiXMLRepository.SPECIFICHE_COORDINAMENTO_DIR + accordoOLD);
-
- if( (fileXML.exists()==false) || (dirWSDL.exists()==false) || (dirSpecificheConversazioni.exists()==false) || (dirAllegati.exists()==false) || (dirSpecificheSemiformali.exists()==false) ){
- throw new DriverRegistroServiziException("Richiesta modifica di un accordo non registrato ["+accordoOLD + "]");
- }
- else{
- try{
- // elimino vecchia definizione Accordo Servizio
- if(fileXML.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per l'accordo ["+fileXML.getAbsolutePath()+"] non riuscita");
- }
- // Elimino vecchi WSDL
- String[]listWSDL = dirWSDL.list();
- if(listWSDL!=null) {
- for(int j=0; j<listWSDL.length;j++){
- File fileWSDL = new File(dirWSDL.getAbsolutePath() + File.separator +listWSDL[j]);
- if(fileWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file wsdl ["+ fileWSDL.getAbsolutePath() +"] per l'accordo [" + accordoOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory dei WSDL
- if(dirWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per i WSDL dell'accordo ["+accordoOLD + "] non riuscita");
- }
- // Elimino vecche specofiche conversazione
- String[]listSpecificheConversazione = dirSpecificheConversazioni.list();
- if(listSpecificheConversazione!=null) {
- for(int j=0; j<listSpecificheConversazione.length;j++){
- File fileSpecificaConversazione = new File(dirSpecificheConversazioni.getAbsolutePath() + File.separator +listSpecificheConversazione[j]);
- if(fileSpecificaConversazione.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file di specifica conversazione ["+ fileSpecificaConversazione.getAbsolutePath() +"] per l'accordo [" + accordoOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche di conversazione
- if(dirSpecificheConversazioni.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche di conversazione dell'accordo ["+accordoOLD + "] non riuscita");
- }
- // Elimino vecchi allegati
- String[]listAllegati = dirAllegati.list();
- if(listAllegati!=null) {
- for(int j=0; j<listAllegati.length;j++){
- File fileAllegati = new File(dirAllegati.getAbsolutePath() + File.separator +listAllegati[j]);
- if(fileAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione dell'allegato ["+ fileAllegati.getAbsolutePath() +"] per l'accordo [" + accordoOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory degli allegati
- if(dirAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per gli allegati dell'accordo ["+accordoOLD + "] non riuscita");
- }
- // Elimino vecche specificheSemiformali
- String[]listSpecificheSemiformali = dirSpecificheSemiformali.list();
- if(listSpecificheSemiformali!=null) {
- for(int j=0; j<listSpecificheSemiformali.length;j++){
- File fileSpecificheSemiformali = new File(dirSpecificheSemiformali.getAbsolutePath() + File.separator +listSpecificheSemiformali[j]);
- if(fileSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica semiformale ["+ fileSpecificheSemiformali.getAbsolutePath() +"] per l'accordo [" + accordoOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche semiformali
- if(dirSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche semiformali dell'accordo ["+accordoOLD + "] non riuscita");
- }
- // Gestione specifiche di coordinamento se esistenti
- if(dirSpecificheCoordinamento.exists()){
- // Elimino vecche specificheCoordinamento
- String[]listSpecificheCoordinamento = dirSpecificheCoordinamento.list();
- if(listSpecificheCoordinamento!=null) {
- for(int j=0; j<listSpecificheCoordinamento.length;j++){
- File fileSpecificheCoordinamento = new File(dirSpecificheCoordinamento.getAbsolutePath() + File.separator +listSpecificheCoordinamento[j]);
- if(fileSpecificheCoordinamento.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica coordinamento ["+ fileSpecificheCoordinamento.getAbsolutePath() +"] per l'accordo [" + accordoOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche coordinamento
- if(dirSpecificheCoordinamento.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche coordinamento dell'accordo ["+accordoOLD + "] non riuscita");
- }
- }
- }catch(Exception io){
- throw new DriverRegistroServiziException("Rinominazione della directory/file per l'accordo ["+accordoOLD+ "] non riuscita: "+io.toString());
- }
- }
- }
- // Crea directory dei WSDL
- File dirWSDL = new File(accordoDir +CostantiXMLRepository.WSDL_DIR +accordoNEW);
- File dirSpecificaConversazioni = new File(accordoDir + CostantiXMLRepository.SPECIFICHE_CONVERSAZIONI_DIR + accordoNEW);
- File dirAllegati = new File(accordoDir + CostantiXMLRepository.ALLEGATI_DIR + accordoNEW);
- File dirSpecificheSemiformali = new File(accordoDir + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + accordoNEW);
- File dirSpecificheCoordinamento = new File(accordoDir + CostantiXMLRepository.SPECIFICHE_COORDINAMENTO_DIR + accordoNEW);
- String prefixUrlWSDL = this.urlPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.WSDL_DIR + accordoNEW + CostantiXMLRepository.URL_SEPARATOR;
- String prefixUrlSpecificaConversazione = this.urlPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SPECIFICHE_CONVERSAZIONI_DIR + accordoNEW + CostantiXMLRepository.URL_SEPARATOR;
- String prefixUrlAllegato = this.urlPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.ALLEGATI_DIR + accordoNEW + CostantiXMLRepository.URL_SEPARATOR;
- String prefixUrlSpecificaSemiformale = this.urlPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + accordoNEW + CostantiXMLRepository.URL_SEPARATOR;
- String prefixUrlSpecificaCoordinamento = this.urlPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SPECIFICHE_COORDINAMENTO_DIR + accordoNEW + CostantiXMLRepository.URL_SEPARATOR;
-
- // Gestione WSDL
- if(dirWSDL.exists()==false){
- if(dirWSDL.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per i WSDL dell'accordo ["+accordoNEW + "] non riuscita");
- }
- } else {
- // elimino vecchi wsdl
- // definitorio
- String definitorioPath = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_DEFINITORIO;
- File definitorioWSDL = new File(definitorioPath);
- if(definitorioWSDL.exists()){
- if(definitorioWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione WSDL definitorio ["+definitorioPath+ "] non riuscita");
- }
- }
- // concettuale
- String concettualePath = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_CONCETTUALE;
- File concettualeWSDL = new File(concettualePath);
- if(concettualeWSDL.exists()){
- if(concettualeWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione WSDL concettuale ["+concettualePath+ "] non riuscita");
- }
- }
- // logicoErogatore
- String logicoErogatorePath = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_LOGICO_EROGATORE;
- File logicoErogatoreWSDL = new File(logicoErogatorePath);
- if(logicoErogatoreWSDL.exists()){
- if(logicoErogatoreWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione WSDL logico Erogatore ["+logicoErogatorePath+ "] non riuscita");
- }
- }
- // logicoFruitore
- String logicoFruitorePath = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_LOGICO_FRUITORE;
- File logicoFruitoreWSDL = new File(logicoFruitorePath);
- if(logicoFruitoreWSDL.exists()){
- if(logicoFruitoreWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione WSDL logico Fruitore ["+logicoFruitorePath+ "] non riuscita");
- }
- }
- }
- // Gestione Specifica Conversazioni
- if(dirSpecificaConversazioni.exists()==false){
- if(dirSpecificaConversazioni.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per le specifiche delle conversazioni dell'accordo ["+accordoNEW + "] non riuscita");
- }
- } else {
- // elimino vecchie specifiche conversazioni
- // concettuale
- String concettualePath = dirSpecificaConversazioni.getAbsolutePath() + File.separator + CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_CONCETTUALE;
- File concettuale = new File(concettualePath);
- if(concettuale.exists()){
- if(concettuale.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione specifica conversazione concettuale ["+concettualePath+ "] non riuscita");
- }
- }
- // erogatore
- String erogatorePath = dirSpecificaConversazioni.getAbsolutePath() + File.separator + CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_EROGATORE;
- File erogatore = new File(erogatorePath);
- if(erogatore.exists()){
- if(erogatore.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione specifica conversazione erogatore ["+erogatorePath+ "] non riuscita");
- }
- }
- // fruitore
- String fruitorePath = dirSpecificaConversazioni.getAbsolutePath() + File.separator + CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_FRUITORE;
- File fruitore = new File(fruitorePath);
- if(fruitore.exists()){
- if(fruitore.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione specifica conversazione fruitore ["+fruitorePath+ "] non riuscita");
- }
- }
- }
- // Gestione Allegati
- if(dirAllegati.exists()==false){
- if(dirAllegati.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per gli allegati dell'accordo ["+accordoNEW + "] non riuscita");
- }
- } else {
- // elimino vecchi allegati
- String [] files = dirAllegati.list();
- if(files!=null){
- for(int i=0; i<files.length; i++){
- File file = new File(files[i]);
- if(file.exists()){
- if(file.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione allegato ["+files[i]+ "] non riuscita");
- }
- }
- }
- }
- }
- // Gestione SpecificheSemiformali
- if(dirSpecificheSemiformali.exists()==false){
- if(dirSpecificheSemiformali.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per le specifiche semiformali dell'accordo ["+accordoNEW + "] non riuscita");
- }
- } else {
- // elimino vecche specifiche semiformali
- String [] files = dirSpecificheSemiformali.list();
- if(files!=null){
- for(int i=0; i<files.length; i++){
- File file = new File(files[i]);
- if(file.exists()){
- if(file.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione spacifica semiformale ["+files[i]+ "] non riuscita");
- }
- }
- }
- }
- }
- // Gestione SpecificheCoordinamento
- if(dirSpecificheCoordinamento.exists()==false){
- if( accordo.getServizioComposto()!=null && dirSpecificheCoordinamento.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per le specifiche di coordinamento dell'accordo ["+accordoNEW + "] non riuscita");
- }
- } else {
- // elimino vecche specifiche di coordinamento
- String [] files = dirSpecificheCoordinamento.list();
- if(files!=null){
- for(int i=0; i<files.length; i++){
- File file = new File(files[i]);
- if(file.exists()){
- if(file.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione spacifica di coordinamento ["+files[i]+ "] non riuscita");
- }
- }
- }
- }
- }
- // File che definisce l'accordo
- String fileXML = accordoDir + accordoNEW + ".xml";
- // Definizione accordo
- org.openspcoop2.core.registry.RegistroServizi registroXML = new org.openspcoop2.core.registry.RegistroServizi();
- // Definizione WSDL
- // WSDLDefinitorio
- if( accordo.getByteWsdlDefinitorio() == null )
- accordo.setWsdlDefinitorio(CostantiXMLRepository.WSDL_UNDEFINED);
- else{
- String path = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_DEFINITORIO;
- generaFile(accordo.getByteWsdlDefinitorio(),path);
- String url = prefixUrlWSDL+ CostantiXMLRepository.WSDL_DEFINITORIO;
- accordo.setWsdlDefinitorio(url);
- }
- // WSDLConcettuale
- if( accordo.getByteWsdlConcettuale() == null )
- accordo.setWsdlConcettuale(CostantiXMLRepository.WSDL_UNDEFINED);
- else{
- String path = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_CONCETTUALE;
- generaFile(accordo.getByteWsdlConcettuale(),path);
- String url = prefixUrlWSDL+ CostantiXMLRepository.WSDL_CONCETTUALE;
- accordo.setWsdlConcettuale(url);
- }
- // WSDL Logico Erogatore
- if( accordo.getByteWsdlLogicoErogatore() == null )
- accordo.setWsdlLogicoErogatore(CostantiXMLRepository.WSDL_UNDEFINED);
- else{
- String path = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_LOGICO_EROGATORE;
- generaFile(accordo.getByteWsdlLogicoErogatore(),path);
- String url = prefixUrlWSDL + CostantiXMLRepository.WSDL_LOGICO_EROGATORE;
- accordo.setWsdlLogicoErogatore(url);
- }
- // WSDL Logico Fruitore
- if( (accordo.getByteWsdlLogicoFruitore() == null))
- accordo.setWsdlLogicoFruitore(CostantiXMLRepository.WSDL_UNDEFINED);
- else{
- String path = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_LOGICO_FRUITORE;
- generaFile(accordo.getByteWsdlLogicoFruitore(),path);
- String url = prefixUrlWSDL + CostantiXMLRepository.WSDL_LOGICO_FRUITORE;
- accordo.setWsdlLogicoFruitore(url);
- }
- // SpecificaConversazioneConcettuale
- if( accordo.getByteSpecificaConversazioneConcettuale() == null )
- accordo.setSpecificaConversazioneConcettuale(CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_UNDEFINED);
- else{
- String path = dirSpecificaConversazioni.getAbsolutePath() + File.separator + CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_CONCETTUALE;
- generaFile(accordo.getByteSpecificaConversazioneConcettuale(),path);
- String url = prefixUrlSpecificaConversazione+ CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_CONCETTUALE;
- accordo.setSpecificaConversazioneConcettuale(url);
- }
- // SpecificaConversazioneErogatore
- if( accordo.getByteSpecificaConversazioneErogatore() == null )
- accordo.setSpecificaConversazioneErogatore(CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_UNDEFINED);
- else{
- String path = dirSpecificaConversazioni.getAbsolutePath() + File.separator + CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_EROGATORE;
- generaFile(accordo.getByteSpecificaConversazioneErogatore(),path);
- String url = prefixUrlSpecificaConversazione + CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_EROGATORE;
- accordo.setSpecificaConversazioneErogatore(url);
- }
- // SpecificaConversazioneFruitore
- if( (accordo.getByteSpecificaConversazioneFruitore() == null))
- accordo.setSpecificaConversazioneFruitore(CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_UNDEFINED);
- else{
- String path = dirSpecificaConversazioni.getAbsolutePath() + File.separator + CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_FRUITORE;
- generaFile(accordo.getByteSpecificaConversazioneFruitore(),path);
- String url = prefixUrlSpecificaConversazione + CostantiXMLRepository.SPECIFICA_CONVERSAZIONE_FRUITORE;
- accordo.setSpecificaConversazioneFruitore(url);
- }
-
- // Allegati
- for(int i=0; i<accordo.sizeAllegatoList();i++){
- String path = null;
- if(accordo.getAllegato(i).getFile().startsWith(prefixUrlAllegato)){
- path = dirAllegati.getAbsolutePath() + File.separator + accordo.getAllegato(i).getFile().substring(prefixUrlAllegato.length());
- }else{
- path = dirAllegati.getAbsolutePath() + File.separator + accordo.getAllegato(i).getFile();
- }
- generaFile(accordo.getAllegato(i).getByteContenuto(),path);
- String url = prefixUrlAllegato + accordo.getAllegato(i).getFile();
- accordo.getAllegato(i).setFile(url);
- }
-
- // SpecificheSemiformali
- for(int i=0; i<accordo.sizeSpecificaSemiformaleList();i++){
- String path = null;
- if(accordo.getSpecificaSemiformale(i).getFile().startsWith(prefixUrlSpecificaSemiformale)){
- path = dirSpecificheSemiformali.getAbsolutePath() + File.separator + accordo.getSpecificaSemiformale(i).getFile().substring(prefixUrlSpecificaSemiformale.length());
- }else{
- path = dirSpecificheSemiformali.getAbsolutePath() + File.separator + accordo.getSpecificaSemiformale(i).getFile();
- }
- generaFile(accordo.getSpecificaSemiformale(i).getByteContenuto(),path);
- String url = prefixUrlSpecificaSemiformale + accordo.getSpecificaSemiformale(i).getFile();
- accordo.getSpecificaSemiformale(i).setFile(url);
- }
-
- // Specifiche di coordinamento
- if(accordo.getServizioComposto()!=null){
- for(int i=0; i<accordo.getServizioComposto().sizeSpecificaCoordinamentoList();i++){
- String path = null;
- if(accordo.getServizioComposto().getSpecificaCoordinamento(i).getFile().startsWith(prefixUrlSpecificaCoordinamento)){
- path = dirSpecificheCoordinamento.getAbsolutePath() + File.separator + accordo.getServizioComposto().getSpecificaCoordinamento(i).getFile().substring(prefixUrlSpecificaCoordinamento.length());
- }else{
- path = dirSpecificheCoordinamento.getAbsolutePath() + File.separator + accordo.getServizioComposto().getSpecificaCoordinamento(i).getFile();
- }
- generaFile(accordo.getServizioComposto().getSpecificaCoordinamento(i).getByteContenuto(),path);
- String url = prefixUrlSpecificaCoordinamento + accordo.getServizioComposto().getSpecificaCoordinamento(i).getFile();
- accordo.getServizioComposto().getSpecificaCoordinamento(i).setFile(url);
- }
- }
- // generazione XML
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(accordo); // NOTA: vengono eliminati anche tutti i campi contenenti bytes. Comunque li ho letti prima
- registroXML.addAccordoServizioParteComune(accordo);
- JaxbUtils.objToXml(fileXML,org.openspcoop2.core.registry.RegistroServizi.class,registroXML);
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'elaborazione XML dell'accordo ["+fileNameAccordo+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa dell'eliminazione dell'accordo dal repository.
- *
- * @param idAccordo ID dell'accordo da eliminare
- */
- public void deleteAccordoServizioParteComune(IDAccordo idAccordo) throws DriverRegistroServiziException {
- String fileNameAccordo = null;
- try {
- fileNameAccordo = mappingIDAccordoToFileName(idAccordo);
- String fileXML = this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + fileNameAccordo + ".xml";
- File dirWSDL = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + CostantiXMLRepository.WSDL_DIR + fileNameAccordo);
- File dirSpecificheConversazione = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + CostantiXMLRepository.SPECIFICHE_CONVERSAZIONI_DIR + fileNameAccordo);
- File dirAllegati = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + CostantiXMLRepository.ALLEGATI_DIR + fileNameAccordo);
- File dirSpecificheSemiformali = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + fileNameAccordo);
- File dirSpecificheCoordinamento = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO + File.separator + CostantiXMLRepository.SPECIFICHE_COORDINAMENTO_DIR + fileNameAccordo);
-
- // Elimino accordo
- File accordo = new File(fileXML);
- if(accordo.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML dell'accordo ["+fileNameAccordo+"] non riuscta");
- }
- // Elimino vecchi WSDL
- String[]listWSDL = dirWSDL.list();
- if(listWSDL!=null) {
- for(int j=0; j<listWSDL.length;j++){
- File fileWSDL = new File(dirWSDL.getAbsolutePath() + File.separator +listWSDL[j]);
- if(fileWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file wsdl ["+fileWSDL.getAbsolutePath()+"] per l'accordo [" + fileNameAccordo + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory dei WSDL
- if(dirWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per i WSDL dell'accordo ["+fileNameAccordo + "] non riuscita");
- }
- // Elimino vecchie specifiche conversazione
- String[]listSpecificheConversazione = dirSpecificheConversazione.list();
- if(listSpecificheConversazione!=null) {
- for(int j=0; j<listSpecificheConversazione.length;j++){
- File fileSpecificaConversazione = new File(dirSpecificheConversazione.getAbsolutePath() + File.separator +listSpecificheConversazione[j]);
- if(fileSpecificaConversazione.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file specifica di conversazione ["+ fileSpecificaConversazione.getAbsolutePath() +"] per l'accordo [" + fileNameAccordo + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche di conversazione
- if(dirSpecificheConversazione.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche di conversazione dell'accordo ["+fileNameAccordo + "] non riuscita");
- }
- // Elimino vecchi allegati
- String[]listAllegati = dirAllegati.list();
- if(listAllegati!=null) {
- for(int j=0; j<listAllegati.length;j++){
- File fileAllegati = new File(dirAllegati.getAbsolutePath() + File.separator +listAllegati[j]);
- if(fileAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione dell'allegato ["+ fileAllegati.getAbsolutePath() +"] per l'accordo [" + fileNameAccordo + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory degli allegati
- if(dirAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per gli allegati dell'accordo ["+fileNameAccordo + "] non riuscita");
- }
- // Elimino vecche specificheSemiformali
- String[]listSpecificheSemiformali = dirSpecificheSemiformali.list();
- if(listSpecificheSemiformali!=null) {
- for(int j=0; j<listSpecificheSemiformali.length;j++){
- File fileSpecificheSemiformali = new File(dirSpecificheSemiformali.getAbsolutePath() + File.separator +listSpecificheSemiformali[j]);
- if(fileSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica semiformale ["+ fileSpecificheSemiformali.getAbsolutePath() +"] per l'accordo [" + fileNameAccordo + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche semiformali
- if(dirSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche semiformali dell'accordo ["+fileNameAccordo + "] non riuscita");
- }
- // Gestione specifiche di coordinamento se esistenti
- if(dirSpecificheCoordinamento.exists()){
- // Elimino vecche specificheCoordinamento
- String[]listSpecificheCoordinamento = dirSpecificheCoordinamento.list();
- if(listSpecificheCoordinamento!=null) {
- for(int j=0; j<listSpecificheCoordinamento.length;j++){
- File fileSpecificheCoordinamento = new File(dirSpecificheCoordinamento.getAbsolutePath() + File.separator +listSpecificheCoordinamento[j]);
- if(fileSpecificheCoordinamento.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica coordinamento ["+ fileSpecificheCoordinamento.getAbsolutePath() +"] per l'accordo [" + fileNameAccordo + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche coordinamento
- if(dirSpecificheCoordinamento.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche coordinamento dell'accordo ["+fileNameAccordo + "] non riuscita");
- }
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLlib] Riscontrato errore durante l'eliminazione XML dell'accordo ["+fileNameAccordo+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Lista di accordi registrati
- *
- * @return lista di accordi registrati.
- *
- */
- public AccordoServizioParteComune[] getAccordiServizioParteComune()throws DriverRegistroServiziException{
- AccordoServizioParteComune [] accordiRegistrati = null;
- try {
- File dir = new File(this.pathPrefix + CostantiXMLRepository.ACCORDI_DI_SERVIZIO);
- if(dir.exists()==false)
- return null;
- File[] accordi = dir.listFiles();
- int numAccordi = 0;
- if(accordi!=null){
- for(int i=0; i<accordi.length;i++){
- if(accordi[i].isFile()){
- numAccordi++;
- }
- }
- }
- if(numAccordi>0){
- accordiRegistrati = new AccordoServizioParteComune[numAccordi];
- for(int i=0,index=0; i<accordi.length;i++){
- if(accordi[i].isFile()){
- org.openspcoop2.core.registry.RegistroServizi r =
- (org.openspcoop2.core.registry.RegistroServizi) JaxbUtils.xmlToObj(accordi[i].getAbsolutePath(),
- org.openspcoop2.core.registry.RegistroServizi.class);
- accordiRegistrati[index] = r.getAccordoServizioParteComune(0);
- index++;
- }
- }
- }
- return accordiRegistrati;
- }catch(Exception e){
- e.printStackTrace(System.err);
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca degli accordi di servizio: "+e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
- /* ---------------- GENERAZIONE XML PORTE DI DOMINIO ------------------------- */
- /**
- * Metodo che controlla se la porta di dominio risulta gia' registrata
- *
- * @param nome Nome della porta di dominio da creare/modificare
- * @return true se la porta di dominio risulta registrata, false altrimenti.
- *
- */
- public boolean existsPortaDominio(String nome)throws DriverRegistroServiziException{
- try {
- File fileXML = new File(this.pathPrefix + CostantiXMLRepository.PORTE_DI_DOMINIO + File.separator + nome + ".xml");
- if( (fileXML.exists()==false) ){
- return false;
- }else
- return true;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca ("+CostantiXMLRepository.PORTE_DI_DOMINIO+") ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa della generazione/modifica di un file XML a partire da una porta di dominio.
- * Sono richiesti interattivamente i parametri che identificano il file XML da generare.
- *
- * @param nome Nome della porta di dominio da creare/modificare
- * @param pdd Dati della porta di dominio da trasformare in XML.
- *
- */
- public void createPortaDominio(String nome,PortaDominio pdd) throws DriverRegistroServiziException{
- try {
- String pddDir = this.pathPrefix + CostantiXMLRepository.PORTE_DI_DOMINIO + File.separator;
-
- // Controllo esistenza per modifica
- String fileXML = pddDir + nome + ".xml";
- File fileXMLF = new File(fileXML);
- if( fileXMLF.exists() ){
- // richiesta modifica
- // elimino vecchia definizione Porta di Dominio
- try{
- if(fileXMLF.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per la porta di dominio ["+fileXMLF.getAbsolutePath()+"] non riuscita");
- }
- }catch(Exception io){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per la porta di dominio ["+nome+ "] non riuscita: "+io.toString());
- }
- }
- // Definizione porta di dominio
- org.openspcoop2.core.registry.RegistroServizi registroXML = new org.openspcoop2.core.registry.RegistroServizi();
- // generazione XML
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(pdd);
- registroXML.addPortaDominio(pdd);
- JaxbUtils.objToXml(fileXML,org.openspcoop2.core.registry.RegistroServizi.class,registroXML);
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'elaborazione XML della porta di dominio ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa dell'eliminazione della porta di dominio dal repository.
- *
- * @param nome Nome della porta di dominio da eliminare
- */
- public void deletePortaDominio(String nome) throws DriverRegistroServiziException {
- try {
- String fileXML = this.pathPrefix + CostantiXMLRepository.PORTE_DI_DOMINIO + File.separator + nome + ".xml";
-
- // Elimino porta di dominio
- File pdd = new File(fileXML);
- if(pdd.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML della porta di dominio ["+nome+"] non riuscta");
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLlib] Riscontrato errore durante l'eliminazione XML della porta di dominio ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Lista delle porte di dominio registrate
- *
- * @return lista delle porte di dominio registrate
- *
- */
- public PortaDominio[] getPorteDominio()throws DriverRegistroServiziException{
- PortaDominio [] pddRegistrate = null;
- try {
- File dir = new File(this.pathPrefix + CostantiXMLRepository.PORTE_DI_DOMINIO);
- if(dir.exists()==false)
- return null;
- File[] porteDiDominio = dir.listFiles();
- int numPorteDiDominio = 0;
- if(porteDiDominio!=null){
- for(int i=0; i<porteDiDominio.length;i++){
- if(porteDiDominio[i].isFile()){
- numPorteDiDominio++;
- }
- }
- }
- if(numPorteDiDominio>0){
- pddRegistrate = new PortaDominio[numPorteDiDominio];
- for(int i=0,index=0; i<porteDiDominio.length;i++){
- if(porteDiDominio[i].isFile()){
- org.openspcoop2.core.registry.RegistroServizi r =
- (org.openspcoop2.core.registry.RegistroServizi) JaxbUtils.xmlToObj(porteDiDominio[i].getAbsolutePath(),
- org.openspcoop2.core.registry.RegistroServizi.class);
- pddRegistrate[index] = r.getPortaDominio(0);
- index++;
- }
- }
- }
- return pddRegistrate;
- }catch(Exception e){
- e.printStackTrace(System.err);
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca delle porte di dominio: "+e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /* ---------------- GENERAZIONE XML GRUPPI ------------------------- */
- /**
- * Metodo che controlla se il gruppo risulta gia' registrato
- *
- * @param nome Nome del gruppo da creare/modificare
- * @return true se il gruppo risulta registrato, false altrimenti.
- *
- */
- public boolean existsGruppo(String nome)throws DriverRegistroServiziException{
- try {
- File fileXML = new File(this.pathPrefix + CostantiXMLRepository.GRUPPI + File.separator + nome + ".xml");
- if( (fileXML.exists()==false) ){
- return false;
- }else
- return true;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca ("+CostantiXMLRepository.GRUPPI+") ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa della generazione/modifica di un file XML a partire da un gruppo
- * Sono richiesti interattivamente i parametri che identificano il file XML da generare.
- *
- * @param nome Nome del gruppo da creare/modificare
- * @param gruppo Dati del gruppo da trasformare in XML.
- *
- */
- public void createGruppo(String nome,Gruppo gruppo) throws DriverRegistroServiziException{
- try {
- String gruppiDir = this.pathPrefix + CostantiXMLRepository.GRUPPI + File.separator;
-
- // Controllo esistenza per modifica
- String fileXML = gruppiDir + nome + ".xml";
- File fileXMLF = new File(fileXML);
- if( fileXMLF.exists() ){
- // richiesta modifica
- // elimino vecchia definizione Porta di Dominio
- try{
- if(fileXMLF.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per il gruppo ["+fileXMLF.getAbsolutePath()+"] non riuscita");
- }
- }catch(Exception io){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per il gruppo ["+nome+ "] non riuscita: "+io.toString());
- }
- }
- // Definizione gruppo
- org.openspcoop2.core.registry.RegistroServizi registroXML = new org.openspcoop2.core.registry.RegistroServizi();
- // generazione XML
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(gruppo);
- registroXML.addGruppo(gruppo);
- JaxbUtils.objToXml(fileXML,org.openspcoop2.core.registry.RegistroServizi.class,registroXML);
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'elaborazione XML del gruppo ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa dell'eliminazione del gruppo dal repository.
- *
- * @param nome Nome del gruppo da eliminare
- */
- public void deleteGruppo(String nome) throws DriverRegistroServiziException {
- try {
- String fileXML = this.pathPrefix + CostantiXMLRepository.GRUPPI + File.separator + nome + ".xml";
-
- // Elimino gruppo
- File gruppo = new File(fileXML);
- if(gruppo.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML del gruppo ["+nome+"] non riuscta");
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLlib] Riscontrato errore durante l'eliminazione XML del gruppo ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Lista dei gruppi registrati
- *
- * @return lista dei gruppi registrati
- *
- */
- public Gruppo[] getGruppi()throws DriverRegistroServiziException{
- Gruppo [] gruppiRegistrate = null;
- try {
- File dir = new File(this.pathPrefix + CostantiXMLRepository.GRUPPI);
- if(dir.exists()==false)
- return null;
- File[] gruppi = dir.listFiles();
- int numGruppi = 0;
- if(gruppi!=null){
- for(int i=0; i<gruppi.length;i++){
- if(gruppi[i].isFile()){
- numGruppi++;
- }
- }
- }
- if(numGruppi>0){
- gruppiRegistrate = new Gruppo[numGruppi];
- for(int i=0,index=0; i<gruppi.length;i++){
- if(gruppi[i].isFile()){
- org.openspcoop2.core.registry.RegistroServizi r =
- (org.openspcoop2.core.registry.RegistroServizi) JaxbUtils.xmlToObj(gruppi[i].getAbsolutePath(),
- org.openspcoop2.core.registry.RegistroServizi.class);
- gruppiRegistrate[index] = r.getGruppo(0);
- index++;
- }
- }
- }
- return gruppiRegistrate;
- }catch(Exception e){
- e.printStackTrace(System.err);
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca dei gruppi: "+e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /* ---------------- GENERAZIONE XML RUOLI ------------------------- */
- /**
- * Metodo che controlla se il ruolo risulta gia' registrato
- *
- * @param nome Nome del ruolo da creare/modificare
- * @return true se il ruolo risulta registrato, false altrimenti.
- *
- */
- public boolean existsRuolo(String nome)throws DriverRegistroServiziException{
- try {
- File fileXML = new File(this.pathPrefix + CostantiXMLRepository.RUOLI + File.separator + nome + ".xml");
- if( (fileXML.exists()==false) ){
- return false;
- }else
- return true;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca ("+CostantiXMLRepository.RUOLI+") ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa della generazione/modifica di un file XML a partire da un ruolo
- * Sono richiesti interattivamente i parametri che identificano il file XML da generare.
- *
- * @param nome Nome del ruolo da creare/modificare
- * @param ruolo Dati del ruolo da trasformare in XML.
- *
- */
- public void createRuolo(String nome,Ruolo ruolo) throws DriverRegistroServiziException{
- try {
- String ruoliDir = this.pathPrefix + CostantiXMLRepository.RUOLI + File.separator;
-
- // Controllo esistenza per modifica
- String fileXML = ruoliDir + nome + ".xml";
- File fileXMLF = new File(fileXML);
- if( fileXMLF.exists() ){
- // richiesta modifica
- // elimino vecchia definizione Porta di Dominio
- try{
- if(fileXMLF.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per il ruolo ["+fileXMLF.getAbsolutePath()+"] non riuscita");
- }
- }catch(Exception io){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per il ruolo ["+nome+ "] non riuscita: "+io.toString());
- }
- }
- // Definizione ruolo
- org.openspcoop2.core.registry.RegistroServizi registroXML = new org.openspcoop2.core.registry.RegistroServizi();
- // generazione XML
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(ruolo);
- registroXML.addRuolo(ruolo);
- JaxbUtils.objToXml(fileXML,org.openspcoop2.core.registry.RegistroServizi.class,registroXML);
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'elaborazione XML del ruolo ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa dell'eliminazione del ruolo dal repository.
- *
- * @param nome Nome del ruolo da eliminare
- */
- public void deleteRuolo(String nome) throws DriverRegistroServiziException {
- try {
- String fileXML = this.pathPrefix + CostantiXMLRepository.RUOLI + File.separator + nome + ".xml";
-
- // Elimino ruolo
- File ruolo = new File(fileXML);
- if(ruolo.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML del ruolo ["+nome+"] non riuscta");
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLlib] Riscontrato errore durante l'eliminazione XML del ruolo ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Lista dei ruoli registrati
- *
- * @return lista dei ruoli registrati
- *
- */
- public Ruolo[] getRuoli()throws DriverRegistroServiziException{
- Ruolo [] ruoliRegistrate = null;
- try {
- File dir = new File(this.pathPrefix + CostantiXMLRepository.RUOLI);
- if(dir.exists()==false)
- return null;
- File[] ruoli = dir.listFiles();
- int numRuoli = 0;
- if(ruoli!=null){
- for(int i=0; i<ruoli.length;i++){
- if(ruoli[i].isFile()){
- numRuoli++;
- }
- }
- }
- if(numRuoli>0){
- ruoliRegistrate = new Ruolo[numRuoli];
- for(int i=0,index=0; i<ruoli.length;i++){
- if(ruoli[i].isFile()){
- org.openspcoop2.core.registry.RegistroServizi r =
- (org.openspcoop2.core.registry.RegistroServizi) JaxbUtils.xmlToObj(ruoli[i].getAbsolutePath(),
- org.openspcoop2.core.registry.RegistroServizi.class);
- ruoliRegistrate[index] = r.getRuolo(0);
- index++;
- }
- }
- }
- return ruoliRegistrate;
- }catch(Exception e){
- e.printStackTrace(System.err);
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca dei ruoli: "+e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
-
-
-
-
-
- /* ---------------- GENERAZIONE XML SCOPE ------------------------- */
- /**
- * Metodo che controlla se il scope risulta gia' registrato
- *
- * @param nome Nome del scope da creare/modificare
- * @return true se il scope risulta registrato, false altrimenti.
- *
- */
- public boolean existsScope(String nome)throws DriverRegistroServiziException{
- try {
- File fileXML = new File(this.pathPrefix + CostantiXMLRepository.SCOPE + File.separator + nome + ".xml");
- if( (fileXML.exists()==false) ){
- return false;
- }else
- return true;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca ("+CostantiXMLRepository.SCOPE+") ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa della generazione/modifica di un file XML a partire da un scope
- * Sono richiesti interattivamente i parametri che identificano il file XML da generare.
- *
- * @param nome Nome del scope da creare/modificare
- * @param scope Dati del scope da trasformare in XML.
- *
- */
- public void createScope(String nome,Scope scope) throws DriverRegistroServiziException{
- try {
- String scopeDir = this.pathPrefix + CostantiXMLRepository.SCOPE + File.separator;
-
- // Controllo esistenza per modifica
- String fileXML = scopeDir + nome + ".xml";
- File fileXMLF = new File(fileXML);
- if( fileXMLF.exists() ){
- // richiesta modifica
- // elimino vecchia definizione Porta di Dominio
- try{
- if(fileXMLF.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per il scope ["+fileXMLF.getAbsolutePath()+"] non riuscita");
- }
- }catch(Exception io){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per il scope ["+nome+ "] non riuscita: "+io.toString());
- }
- }
- // Definizione scope
- org.openspcoop2.core.registry.RegistroServizi registroXML = new org.openspcoop2.core.registry.RegistroServizi();
- // generazione XML
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(scope);
- registroXML.addScope(scope);
- JaxbUtils.objToXml(fileXML,org.openspcoop2.core.registry.RegistroServizi.class,registroXML);
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'elaborazione XML del scope ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa dell'eliminazione del scope dal repository.
- *
- * @param nome Nome del scope da eliminare
- */
- public void deleteScope(String nome) throws DriverRegistroServiziException {
- try {
- String fileXML = this.pathPrefix + CostantiXMLRepository.SCOPE + File.separator + nome + ".xml";
-
- // Elimino scope
- File scope = new File(fileXML);
- if(scope.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML del scope ["+nome+"] non riuscta");
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLlib] Riscontrato errore durante l'eliminazione XML del scope ["+nome+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Lista dei scope registrati
- *
- * @return lista dei scope registrati
- *
- */
- public Scope[] getScope()throws DriverRegistroServiziException{
- Scope [] scopeRegistrate = null;
- try {
- File dir = new File(this.pathPrefix + CostantiXMLRepository.SCOPE);
- if(dir.exists()==false)
- return null;
- File[] scope = dir.listFiles();
- int numScope = 0;
- if(scope!=null){
- for(int i=0; i<scope.length;i++){
- if(scope[i].isFile()){
- numScope++;
- }
- }
- }
- if(numScope>0){
- scopeRegistrate = new Scope[numScope];
- for(int i=0,index=0; i<scope.length;i++){
- if(scope[i].isFile()){
- org.openspcoop2.core.registry.RegistroServizi r =
- (org.openspcoop2.core.registry.RegistroServizi) JaxbUtils.xmlToObj(scope[i].getAbsolutePath(),
- org.openspcoop2.core.registry.RegistroServizi.class);
- scopeRegistrate[index] = r.getScope(0);
- index++;
- }
- }
- }
- return scopeRegistrate;
- }catch(Exception e){
- e.printStackTrace(System.err);
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca dei scope: "+e.getMessage(),e);
- }
- }
-
-
-
-
-
-
-
- /* ---------------- GENERAZIONE XML SOGGETTO ------------------------- */
- /**
- * Metodo che controlla se il soggetto risulta gia' registrato
- *
- * @param idSogg id del soggetto
- * @return true se il soggetto risulta registrato, false altrimenti.
- */
- public boolean existsSoggetto(IDSoggetto idSogg) throws DriverRegistroServiziException{
- if(idSogg==null)
- throw new DriverRegistroServiziException("Alcuni parametri sono null");
- String idSoggetto = idSogg.getTipo() + idSogg.getNome();
- try {
- File dirSoggetto = new File(this.pathPrefix+idSoggetto);
- return dirSoggetto.exists();
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca del soggetto ["+idSoggetto+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa della generazione di un file XML a partire da un soggetto.
- * Sono richiesti interattivamente i parametri che identificano il file XML da generare.
- *
- * @param idSogg id del soggetto da creare/modificare
- * @param soggetto Dati del Soggetto da trasformare in XML.
- */
- public void createSoggetto(IDSoggetto idSogg,Soggetto soggetto) throws DriverRegistroServiziException{
- if(idSogg==null || soggetto==null)
- throw new DriverRegistroServiziException("Alcuni parametri sono null");
- String idSoggettoOLD = idSogg.getTipo() + idSogg.getNome();
- String idSoggettoNEW = soggetto.getTipo() + soggetto.getNome();
- try {
- // Creazione/Controllo Esistenza directory soggetto
- if(idSoggettoOLD.equals(idSoggettoNEW)){
- // Controllo esistenza o creazione
- File dir = new File(this.pathPrefix+idSoggettoNEW);
- if(dir.exists() == false){
- try{
- if(dir.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per il soggetto ["+dir.getAbsolutePath()+"] non riuscita");
- }
- }catch(Exception io){
- throw new DriverRegistroServiziException("Creazione della directory per il soggetto ["+dir.getAbsolutePath()+"] non riuscita: "+io.toString());
- }
- }
- }else{
- // esiste gia deve essere rinominato.
- // Controllo esistenza o creazione
- File dir = new File(this.pathPrefix+idSoggettoOLD);
- if(dir.exists() == false){
- throw new DriverRegistroServiziException("Modifica di un soggetto non registrato ["+dir.getAbsolutePath()+"] non riuscita");
- }
- else{
- File newdir = new File(this.pathPrefix+idSoggettoNEW);
- try{
- // Rinomina directory
- if(dir.renameTo(newdir)==false){
- throw new DriverRegistroServiziException("Rinominazione della directory per il soggetto ["+dir.getAbsolutePath()+"] in ["+newdir.getAbsolutePath()+"] non riuscita");
- }
- // elimino vecchia definizione
- File oldXML = new File(this.pathPrefix+idSoggettoNEW+File.separator+idSoggettoOLD+".xml");
- if(oldXML.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per il soggetto ["+oldXML.getAbsolutePath()+"] non riuscita");
- }
- }catch(Exception io){
- throw new DriverRegistroServiziException("Rinominazione della directory per il soggetto ["+dir.getAbsolutePath()+"] in ["+newdir.getAbsolutePath()+"] non riuscita: "+io.toString());
- }
- }
- }
- String dirSoggetto = this.pathPrefix + idSoggettoNEW + File.separator;
- // Creazione directory servizio
- String serviceDir = dirSoggetto + CostantiXMLRepository.SERVIZI;
- File dirS = new File(serviceDir);
- if(dirS.exists() == false){
- try{
- if(dirS.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per i servizi del soggetto ["+dirS.getAbsolutePath()+"] non riuscita");
- }
- }catch(Exception io){
- throw new DriverRegistroServiziException("Creazione della directory per i servizi del soggetto ["+dirS.getAbsolutePath()+"] non riuscita: "+io.toString());
- }
- }
- String fileXML = dirSoggetto + idSoggettoNEW + ".xml";
- // Definizione soggetto
- org.openspcoop2.core.registry.RegistroServizi registroXML = new org.openspcoop2.core.registry.RegistroServizi();
- // generazione XML
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(soggetto);
- registroXML.addSoggetto(soggetto);
- JaxbUtils.objToXml(fileXML,org.openspcoop2.core.registry.RegistroServizi.class,registroXML);
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'elaborazione XML del soggetto ["+idSoggettoOLD+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa dell'eliminazione del soggetto dal repository.
- *
- * @param idSogg id del soggetto da eliminare
- */
- public void deleteSoggetto(IDSoggetto idSogg) throws DriverRegistroServiziException{
- if(idSogg==null)
- throw new DriverRegistroServiziException("Alcuni parametri sono null");
- String idSoggetto = idSogg.getTipo() + idSogg.getNome();
- try {
- String dirSoggetto = this.pathPrefix + idSoggetto + File.separator;
- // Elimino servizi del soggetto
- File dirS = new File(dirSoggetto + CostantiXMLRepository.SERVIZI);
- File[] dirSserv = dirS.listFiles();
- if(dirSserv!=null) {
- for(int i=0; i<dirSserv.length;i++){
- if(dirSserv[i].delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML del soggetto ["+idSoggetto+"] (eliminazione definizione servizio ["+dirSserv[i].getAbsolutePath()+"]) non riuscita");
- }
- }
- }
- // Elimino directory servizio
- if(dirS.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML del soggetto ["+idSoggetto+"] (eliminazione directory servizi ["+dirS.getAbsolutePath()+"]) non riuscita");
- }
- // Elimino definizione soggetto
- File defSoggetto = new File(dirSoggetto + idSoggetto + ".xml");
- if(defSoggetto.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML del soggetto ["+idSoggetto+"] (eliminazione xml soggetto ["+defSoggetto.getAbsolutePath()+"]) non riuscita");
- }
- // Elimino directory soggetto
- File dir = new File(this.pathPrefix+idSoggetto);
- if(dir.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML del soggetto ["+idSoggetto+"] (eliminazione directory soggetto ["+dir.getAbsolutePath()+"]) non riuscita");
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'eliminazione XML del soggetto ["+idSoggetto+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Lista di Soggetti registrati
- *
- * @return lista di soggetti registrati.
- *
- */
- public Soggetto[] getSoggetti()throws DriverRegistroServiziException{
- Soggetto [] soggettiRegistrati = null;
- try {
- File dir = new File(this.pathPrefix);
- if(dir.exists()==false)
- return null;
- File[] soggetti = dir.listFiles();
- int numSoggetti = 0;
- if(soggetti!=null){
- for(int i=0; i<soggetti.length;i++){
- if(soggetti[i].isDirectory() &&
- !CostantiXMLRepository.ACCORDI_DI_SERVIZIO.equalsIgnoreCase(soggetti[i].getName()) &&
- !CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE.equalsIgnoreCase(soggetti[i].getName()) &&
- !CostantiXMLRepository.PORTE_DI_DOMINIO.equalsIgnoreCase(soggetti[i].getName())){
- numSoggetti++;
- }
- }
- }
- if(numSoggetti>0){
- soggettiRegistrati = new Soggetto[numSoggetti];
- for(int i=0,index=0; i<soggetti.length;i++){
- if(soggetti[i].isDirectory() &&
- !CostantiXMLRepository.ACCORDI_DI_SERVIZIO.equalsIgnoreCase(soggetti[i].getName()) &&
- !CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE.equalsIgnoreCase(soggetti[i].getName()) &&
- !CostantiXMLRepository.PORTE_DI_DOMINIO.equalsIgnoreCase(soggetti[i].getName())){
- File[] fs = soggetti[i].listFiles();
- if(fs!=null) {
- for(int j=0; j<fs.length;j++){
- if(fs[j].isFile()){
- org.openspcoop2.core.registry.RegistroServizi r =
- (org.openspcoop2.core.registry.RegistroServizi) JaxbUtils.xmlToObj(fs[j].getAbsolutePath(),
- org.openspcoop2.core.registry.RegistroServizi.class);
- soggettiRegistrati[index] = r.getSoggetto(0);
- index++;
- break;
- }
- }
- }
- }
- }
- }
- return soggettiRegistrati;
- }catch(Exception e){
- e.printStackTrace(System.err);
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca dei soggetti: "+e.getMessage(),e);
- }
- }
- /* ---------------- GENERAZIONE XML SERVIZIO ------------------------- */
- /**
- * Metodo che controlla se il servizio risulta gia' registrato
- *
- * @param idServ Identificativo del Servizio
- * @return true se il servizio risulta registrato, false altrimenti.
- */
- public boolean existsAccordoServizioParteSpecifica(IDServizio idServ) throws DriverRegistroServiziException{
- if(idServ==null || idServ.getSoggettoErogatore()==null)
- throw new DriverRegistroServiziException("Alcuni parametri sono null");
- String idSoggetto = idServ.getSoggettoErogatore().getTipo()+
- idServ.getSoggettoErogatore().getNome();
- String idServizio = idServ.getTipo()+idServ.getNome()+idServ.getVersione();
- try {
- File definizioneXML = new File(this.pathPrefix+idSoggetto+File.separator+CostantiXMLRepository.SERVIZI
- +File.separator+idServizio+ ".xml");
- File dirWSDL = new File(this.pathPrefix + idSoggetto+File.separator+CostantiXMLRepository.SERVIZI
- +File.separator+CostantiXMLRepository.WSDL_DIR +idServizio);
- if( (definizioneXML.exists()==false) || (dirWSDL.exists()==false)){
- return false;
- }else
- return true;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca del servizio ["+idServizio+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa della generazione di un file XML a partire da un servizio.
- * Sono richiesti interattivamente i parametri che identificano il file XML da generare.
- *
- * @param idServ Identificativo del Servizio
- * @param asps Dati del Servizio da trasformare in XML.
- */
- public void createAccordoServizioParteSpecifica(IDServizio idServ,AccordoServizioParteSpecifica asps) throws DriverRegistroServiziException{
- if(idServ==null || idServ.getSoggettoErogatore()==null || asps==null)
- throw new DriverRegistroServiziException("Alcuni parametri sono null");
- String idSoggetto = idServ.getSoggettoErogatore().getTipo()+
- idServ.getSoggettoErogatore().getNome();
- String idServizioOLD = idServ.getTipo()+idServ.getNome()+idServ.getVersione();
- String idServizioNEW = asps.getTipo() + asps.getNome() + asps.getVersione();
- String dirSoggetto = this.pathPrefix+idSoggetto+File.separator;
- String dirServiziSoggetto = dirSoggetto + CostantiXMLRepository.SERVIZI + File.separator;
- try {
- // contenuto index dei servizi
- List<IDServizio> nID = new ArrayList<IDServizio>();
- if(this.existsIndexServizi(dirServiziSoggetto)){
- // elimino vecchia definizione
- IDServizio [] oldImage = this.readIndexServiziFromFile(dirServiziSoggetto);
- for(int i=0; i< oldImage.length; i++){
- if( !(oldImage[i].getTipo().equals(idServ.getTipo()) &&
- oldImage[i].getNome().equals(idServ.getNome()) &&
- oldImage[i].getVersione().intValue() == idServ.getVersione().intValue()) ){
- nID.add(oldImage[i]);
- }
- }
- }
-
-
- // esiste gia deve essere rinominato, eliminando il vecchio.
- if(idServizioOLD.equals(idServizioNEW) == false){
-
- // Esiste gia' deve essere modificato il nome.
- // Controllo esistenza servizio per modifica
- File definizioneXML = new File(dirServiziSoggetto+idServizioOLD+ ".xml");
- File dirWSDL = new File(dirServiziSoggetto + CostantiXMLRepository.WSDL_DIR + idServizioOLD);
- File dirAllegati = new File(dirServiziSoggetto + CostantiXMLRepository.ALLEGATI_DIR + idServizioOLD);
- File dirSpecificheSemiformali = new File(dirServiziSoggetto + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + idServizioOLD);
- File dirSpecificheSicurezza = new File(dirServiziSoggetto + CostantiXMLRepository.SPECIFICHE_SICUREZZA_DIR + idServizioOLD);
- File dirSpecificheLivelliServizio = new File(dirServiziSoggetto + CostantiXMLRepository.SPECIFICHE_LIVELLI_SERVIZIO_DIR + idServizioOLD);
-
- if( (definizioneXML.exists()==false) || (dirWSDL.exists()==false) || (dirAllegati.exists()==false) || (dirSpecificheSemiformali.exists()==false) || (dirSpecificheSicurezza.exists()==false) || (dirSpecificheLivelliServizio.exists()==false)){
- throw new DriverRegistroServiziException("Modifica di un servizio non registrato ["+idServizioOLD + "] non riuscita");
- }
- else{
- try{
- // Controllo esistenza o creazione
- if(definizioneXML.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della vecchia definizione per il servizio ["+definizioneXML.getAbsolutePath()+"] non riuscita");
- }
- // Elimino vecchi WSDL
- String[]listWSDL = dirWSDL.list();
- if(listWSDL!=null) {
- for(int j=0; j<listWSDL.length;j++){
- File fileInterno = new File(dirWSDL.getAbsolutePath() + File.separator +listWSDL[j]);
- if(fileInterno.isDirectory()){
- // wsdl-implementativo fruitore-servizio
- String[]listFruitoreWSDL = fileInterno.list();
- if(listFruitoreWSDL!=null) {
- for(int k=0; k<listFruitoreWSDL.length;k++){
- File fileWsdlFruitore = new File(fileInterno.getAbsolutePath() + File.separator +listFruitoreWSDL[k]);
- if(fileWsdlFruitore.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file wsdl ["+ fileWsdlFruitore.getAbsolutePath() +"] per il servizio [" + idServizioOLD + "] non riuscita");
- }
- }
- }
- }
- if(fileInterno.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file wsdl ["+ fileInterno.getAbsolutePath() +"] per il servizio [" + idServizioOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory dei WSDL
- if(dirWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per i WSDL del servizio ["+idServizioOLD + "] non riuscita");
- }
- // Elimino vecchi allegati
- String[]listAllegati = dirAllegati.list();
- if(listAllegati!=null) {
- for(int j=0; j<listAllegati.length;j++){
- File fileAllegati = new File(dirAllegati.getAbsolutePath() + File.separator +listAllegati[j]);
- if(fileAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione dell'allegato ["+ fileAllegati.getAbsolutePath() +"] per l'accordo [" + idServizioOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory degli allegati
- if(dirAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per gli allegati dell'accordo ["+idServizioOLD + "] non riuscita");
- }
- // Elimino vecche specificheSemiformali
- String[]listSpecificheSemiformali = dirSpecificheSemiformali.list();
- if(listSpecificheSemiformali!=null) {
- for(int j=0; j<listSpecificheSemiformali.length;j++){
- File fileSpecificheSemiformali = new File(dirSpecificheSemiformali.getAbsolutePath() + File.separator +listSpecificheSemiformali[j]);
- if(fileSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica semiformale ["+ fileSpecificheSemiformali.getAbsolutePath() +"] per l'accordo [" + idServizioOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche semiformali
- if(dirSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche semiformali dell'accordo ["+idServizioOLD + "] non riuscita");
- }
- // Elimino vecchie specificheSicurezza
- String[]listSpecificheSicurezza = dirSpecificheSicurezza.list();
- if(listSpecificheSicurezza!=null) {
- for(int j=0; j<listSpecificheSicurezza.length;j++){
- File fileSpecificheSicurezza = new File(dirSpecificheSicurezza.getAbsolutePath() + File.separator +listSpecificheSicurezza[j]);
- if(fileSpecificheSicurezza.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica di sicurezza ["+ fileSpecificheSicurezza.getAbsolutePath() +"] per l'accordo [" + idServizioOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche di sicurezza
- if(dirSpecificheSicurezza.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche di sicurezza dell'accordo ["+idServizioOLD + "] non riuscita");
- }
- // Elimino vecchie specificheLivelliServizio
- String[]listSpecificheLivelliServizio = dirSpecificheLivelliServizio.list();
- if(listSpecificheLivelliServizio!=null) {
- for(int j=0; j<listSpecificheLivelliServizio.length;j++){
- File fileSpecificheLivelliServizio = new File(dirSpecificheLivelliServizio.getAbsolutePath() + File.separator +listSpecificheLivelliServizio[j]);
- if(fileSpecificheLivelliServizio.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica dei livelli di servizio ["+ fileSpecificheLivelliServizio.getAbsolutePath() +"] per l'accordo [" + idServizioOLD + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche dei livelli di servizio
- if(dirSpecificheLivelliServizio.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche dei livelli di servizio dell'accordo ["+idServizioOLD + "] non riuscita");
- }
-
- }catch(Exception io){
- throw new DriverRegistroServiziException("Eliminazione del servizio ["+idServizioOLD +"] non riuscita: "+io.toString());
- }
- }
- }
- // Crea directory dei WSDL
- File dirWSDL = new File(dirServiziSoggetto + CostantiXMLRepository.WSDL_DIR +idServizioNEW);
- File dirAllegati = new File(dirServiziSoggetto + CostantiXMLRepository.ALLEGATI_DIR + idServizioNEW);
- File dirSpecificheSemiformali = new File(dirServiziSoggetto + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + idServizioNEW);
- File dirSpecificheSicurezza = new File(dirServiziSoggetto + CostantiXMLRepository.SPECIFICHE_SICUREZZA_DIR + idServizioNEW);
- File dirSpecificheLivelliServizio = new File(dirServiziSoggetto + CostantiXMLRepository.SPECIFICHE_LIVELLI_SERVIZIO_DIR + idServizioNEW);
- String prefixUrlWSDL = this.urlPrefix + idSoggetto + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SERVIZI + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.WSDL_DIR +idServizioNEW+ CostantiXMLRepository.URL_SEPARATOR;
- String prefixUrlAllegato = this.urlPrefix + idSoggetto + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SERVIZI + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.ALLEGATI_DIR + idServizioNEW + CostantiXMLRepository.URL_SEPARATOR;
- String prefixUrlSpecificaSemiformale = this.urlPrefix + idSoggetto + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SERVIZI + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + idServizioNEW + CostantiXMLRepository.URL_SEPARATOR;
- String prefixUrlSpecificaSicurezza = this.urlPrefix + idSoggetto + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SERVIZI + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SPECIFICHE_SICUREZZA_DIR + idServizioNEW + CostantiXMLRepository.URL_SEPARATOR;
- String prefixUrlSpecificaLivelliServizio = this.urlPrefix + idSoggetto + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SERVIZI + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SPECIFICHE_LIVELLI_SERVIZIO_DIR + idServizioNEW + CostantiXMLRepository.URL_SEPARATOR;
- if(dirWSDL.exists()==false){
- if(dirWSDL.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per i WSDL del servizio ["+idServizioNEW + "]");
- }
- } else {
- // elimino vecchi wsdl
- // implementativoErogatore
- String implementativoErogatorePath = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_EROGATORE;
- File implementativoErogatoreWSDL = new File(implementativoErogatorePath);
- if(implementativoErogatoreWSDL.exists()){
- if(implementativoErogatoreWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione WSDL implementativo Erogatore del servizio ["+implementativoErogatorePath+ "] non riuscita");
- }
- }
- // implementativoFruitore
- String implementativoFruitorePath = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_FRUITORE;
- File implementativoFruitoreWSDL = new File(implementativoFruitorePath);
- if(implementativoFruitoreWSDL.exists()){
- if(implementativoFruitoreWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione WSDL implementativo Fruitore del servizio ["+implementativoFruitorePath+ "] non riuscita");
- }
- }
- }
- // Gestione Allegati
- if(dirAllegati.exists()==false){
- if(dirAllegati.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per gli allegati dell'accordo ["+idServizioNEW + "] non riuscita");
- }
- } else {
- // elimino vecchi allegati
- String [] files = dirAllegati.list();
- if(files!=null){
- for(int i=0; i<files.length; i++){
- File file = new File(files[i]);
- if(file.exists()){
- if(file.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione allegato ["+files[i]+ "] non riuscita");
- }
- }
- }
- }
- }
- // Gestione SpecificheSemiformali
- if(dirSpecificheSemiformali.exists()==false){
- if(dirSpecificheSemiformali.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per le specifiche semiformali dell'accordo ["+idServizioNEW + "] non riuscita");
- }
- } else {
- // elimino vecche specifiche semiformali
- String [] files = dirSpecificheSemiformali.list();
- if(files!=null){
- for(int i=0; i<files.length; i++){
- File file = new File(files[i]);
- if(file.exists()){
- if(file.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione spacifica semiformale ["+files[i]+ "] non riuscita");
- }
- }
- }
- }
- }
- // Gestione SpecificheSicurezza
- if(dirSpecificheSicurezza.exists()==false){
- if(dirSpecificheSicurezza.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per le specifiche di sicurezza dell'accordo ["+idServizioNEW + "] non riuscita");
- }
- } else {
- // elimino vecche specifiche di sicurezza
- String [] files = dirSpecificheSicurezza.list();
- if(files!=null){
- for(int i=0; i<files.length; i++){
- File file = new File(files[i]);
- if(file.exists()){
- if(file.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione spacifica di sicurezza ["+files[i]+ "] non riuscita");
- }
- }
- }
- }
- }
- // Gestione SpecificheLivelliServizio
- if(dirSpecificheLivelliServizio.exists()==false){
- if(dirSpecificheLivelliServizio.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per le specifiche dei livelli di servizio dell'accordo ["+idServizioNEW + "] non riuscita");
- }
- } else {
- // elimino vecche specifiche dei livelli di servizio
- String [] files = dirSpecificheLivelliServizio.list();
- if(files!=null){
- for(int i=0; i<files.length; i++){
- File file = new File(files[i]);
- if(file.exists()){
- if(file.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione spacifica del livello di servizio ["+files[i]+ "] non riuscita");
- }
- }
- }
- }
- }
- // check directory dei WSDL dei fruitori
- String[]listWSDLFruitori = dirWSDL.list();
- if(listWSDLFruitori!=null) {
- for(int j=0; j<listWSDLFruitori.length;j++){
- File fileInterno = new File(dirWSDL.getAbsolutePath() + File.separator +listWSDLFruitori[j]);
-
- // Se e' una directory potra' contenere i wsdl di un fruitore
- if(fileInterno.isDirectory()){
- boolean definizioneTrovata = false;
- for(int h=0; h<asps.sizeFruitoreList(); h++){
- String idFruitore = asps.getFruitore(h).getTipo()+asps.getFruitore(h).getNome();
- if(idFruitore.equals(fileInterno.getName())){
- definizioneTrovata = true;
- break;
- }
- }
-
- // elimino i wsdl dei fruitori.
- String[]listWSDLFruitoreEliminato = fileInterno.list();
- if(listWSDLFruitoreEliminato!=null) {
- for(int n=0; n<listWSDLFruitoreEliminato.length;n++){
- File fileWsdlFruitoreEliminato = new File(fileInterno.getAbsolutePath() + File.separator +listWSDLFruitoreEliminato[n]);
- if(fileWsdlFruitoreEliminato.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file wsdl ["+ fileWsdlFruitoreEliminato.getAbsolutePath() +"] per il servizio [" + idServizioNEW + "] (Fruitore) non riuscita");
- }
- }
- }
-
- // Elimino le directory dei fruitori che non sono piu' contenuti nel servizio.
- if(definizioneTrovata == false){
- if(fileInterno.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file wsdl ["+ fileInterno.getAbsolutePath() +"] per il servizio [" + idServizioNEW + "] (Fruitore) non riuscita");
- }
- }
- }
- }
- }
- // aggiungo nuova definizione all'indice dei servizi
- IDServizio [] newImage = new IDServizio[nID.size()+1];
- int imageIndex = 0;
- for(; imageIndex<nID.size(); imageIndex++)
- newImage[imageIndex] = nID.get(imageIndex);
- IDServizio newImageS = this.idServizioFactory.getIDServizioFromAccordo(asps);
- newImage[imageIndex] = newImageS;
- this.setContenutoIndexServizi(dirServiziSoggetto,newImage);
-
-
- String fileXML = dirServiziSoggetto+idServizioNEW+ ".xml";
- org.openspcoop2.core.registry.RegistroServizi registroXML = new org.openspcoop2.core.registry.RegistroServizi();
- org.openspcoop2.core.registry.Soggetto soggXML = new org.openspcoop2.core.registry.Soggetto();
- soggXML.setTipo(asps.getTipoSoggettoErogatore());
- soggXML.setNome(asps.getNomeSoggettoErogatore());
- // WSDL implementativo Erogatore
- if( asps.getByteWsdlImplementativoErogatore() == null )
- asps.setWsdlImplementativoErogatore(CostantiXMLRepository.WSDL_UNDEFINED);
- else{
- String path = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_EROGATORE;
- generaFile(asps.getByteWsdlImplementativoErogatore(),path);
- String url = prefixUrlWSDL + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_EROGATORE;
- asps.setWsdlImplementativoErogatore(url);
- }
- // WSDL implementativo Fruitore
- if( (asps.getByteWsdlImplementativoFruitore() == null))
- asps.setWsdlImplementativoFruitore(CostantiXMLRepository.WSDL_UNDEFINED);
- else{
- String path = dirWSDL.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_FRUITORE;
- generaFile(asps.getByteWsdlImplementativoFruitore(),path);
- String url = prefixUrlWSDL + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_FRUITORE;
- asps.setWsdlImplementativoFruitore(url);
- }
- // Allegati
- for(int i=0; i<asps.sizeAllegatoList();i++){
- String path = null;
- if(asps.getAllegato(i).getFile().startsWith(prefixUrlAllegato)){
- path = dirAllegati.getAbsolutePath() + File.separator + asps.getAllegato(i).getFile().substring(prefixUrlAllegato.length());
- }else{
- path = dirAllegati.getAbsolutePath() + File.separator + asps.getAllegato(i).getFile();
- }
- generaFile(asps.getAllegato(i).getByteContenuto(),path);
- String url = prefixUrlAllegato + asps.getAllegato(i).getFile();
- asps.getAllegato(i).setFile(url);
- }
-
- // SpecificheSemiformali
- for(int i=0; i<asps.sizeSpecificaSemiformaleList();i++){
- String path = null;
- if(asps.getSpecificaSemiformale(i).getFile().startsWith(prefixUrlSpecificaSemiformale)){
- path = dirSpecificheSemiformali.getAbsolutePath() + File.separator + asps.getSpecificaSemiformale(i).getFile().substring(prefixUrlSpecificaSemiformale.length());
- }else{
- path = dirSpecificheSemiformali.getAbsolutePath() + File.separator + asps.getSpecificaSemiformale(i).getFile();
- }
- generaFile(asps.getSpecificaSemiformale(i).getByteContenuto(),path);
- String url = prefixUrlSpecificaSemiformale + asps.getSpecificaSemiformale(i).getFile();
- asps.getSpecificaSemiformale(i).setFile(url);
- }
-
- // SpecificheSicurezza
- for(int i=0; i<asps.sizeSpecificaSicurezzaList();i++){
- String path = null;
- if(asps.getSpecificaSicurezza(i).getFile().startsWith(prefixUrlSpecificaSicurezza)){
- path = dirSpecificheSicurezza.getAbsolutePath() + File.separator + asps.getSpecificaSicurezza(i).getFile().substring(prefixUrlSpecificaSicurezza.length());
- }else{
- path = dirSpecificheSicurezza.getAbsolutePath() + File.separator + asps.getSpecificaSicurezza(i).getFile();
- }
- generaFile(asps.getSpecificaSicurezza(i).getByteContenuto(),path);
- String url = prefixUrlSpecificaSicurezza + asps.getSpecificaSicurezza(i).getFile();
- asps.getSpecificaSicurezza(i).setFile(url);
- }
-
- // SpecificheLivelliServizio
- for(int i=0; i<asps.sizeSpecificaLivelloServizioList();i++){
- String path = null;
- if(asps.getSpecificaLivelloServizio(i).getFile().startsWith(prefixUrlSpecificaLivelliServizio)){
- path = dirSpecificheLivelliServizio.getAbsolutePath() + File.separator + asps.getSpecificaLivelloServizio(i).getFile().substring(prefixUrlSpecificaLivelliServizio.length());
- }else{
- path = dirSpecificheLivelliServizio.getAbsolutePath() + File.separator + asps.getSpecificaLivelloServizio(i).getFile();
- }
- generaFile(asps.getSpecificaLivelloServizio(i).getByteContenuto(),path);
- String url = prefixUrlSpecificaLivelliServizio + asps.getSpecificaLivelloServizio(i).getFile();
- asps.getSpecificaLivelloServizio(i).setFile(url);
- }
-
- // Fruitori
- for(int i=0;i<asps.sizeFruitoreList();i++){
- Fruitore fr = asps.getFruitore(i);
- String idFruitore = fr.getTipo() + fr.getNome();
- File dirWSDLFruitore = new File(dirServiziSoggetto + CostantiXMLRepository.WSDL_DIR +idServizioNEW + File.separator + idFruitore);
- String prefixUrlWSDLFruitore = this.urlPrefix + idSoggetto + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.SERVIZI + CostantiXMLRepository.URL_SEPARATOR + CostantiXMLRepository.WSDL_DIR +idServizioNEW+ CostantiXMLRepository.URL_SEPARATOR + idFruitore + CostantiXMLRepository.URL_SEPARATOR;
- // WSDL Fruitore
- if(fr.getByteWsdlImplementativoErogatore()!=null || fr.getByteWsdlImplementativoFruitore()!=null){
- // Crea directory dei WSDL
- if(dirWSDLFruitore.exists()==false){
- if(dirWSDLFruitore.mkdir()==false){
- throw new DriverRegistroServiziException("Creazione della directory per i WSDL del servizio (Fruitore "+idFruitore+") ["+idServizioNEW + "] fallita");
- }
- }
- }
- // WSDL implementativo Erogatore
- if( fr.getByteWsdlImplementativoErogatore() == null )
- asps.getFruitore(i).setWsdlImplementativoErogatore(CostantiXMLRepository.WSDL_UNDEFINED);
- else{
- String path = dirWSDLFruitore.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_EROGATORE;
- generaFile(fr.getByteWsdlImplementativoErogatore(),path);
- String url = prefixUrlWSDLFruitore + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_EROGATORE;
- asps.getFruitore(i).setWsdlImplementativoErogatore(url);
- }
- // WSDL implementativo Fruitore
- if( (fr.getByteWsdlImplementativoFruitore() == null))
- asps.getFruitore(i).setWsdlImplementativoFruitore(CostantiXMLRepository.WSDL_UNDEFINED);
- else{
- String path = dirWSDLFruitore.getAbsolutePath() + File.separator + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_FRUITORE;
- generaFile(fr.getByteWsdlImplementativoFruitore(),path);
- String url = prefixUrlWSDLFruitore + CostantiXMLRepository.WSDL_IMPLEMENTATIVO_FRUITORE;
- asps.getFruitore(i).setWsdlImplementativoFruitore(url);
- }
- }
- // generazione XML
- this.cleanerOpenSPCoop2ExtensionsRegistry.clean(asps); // NOTA: vengono eliminati anche tutti i campi contenenti bytes. Comunque li ho letti prima
- soggXML.addAccordoServizioParteSpecifica(asps);
- registroXML.addSoggetto(soggXML);
- JaxbUtils.objToXml(fileXML,org.openspcoop2.core.registry.RegistroServizi.class,registroXML);
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'elaborazione XML del servizio ["+idServizioOLD+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Metodo che si occupa dell'eliminazione del servizio dal repository.
- *
- * @param idServ Identificativo del Servizio
- */
- public void deleteAccordoServizioParteSpecifica(IDServizio idServ) throws DriverRegistroServiziException{
- if(idServ==null || idServ.getSoggettoErogatore()==null)
- throw new DriverRegistroServiziException("Alcuni parametri sono null");
- String idSoggetto = idServ.getSoggettoErogatore().getTipo()+
- idServ.getSoggettoErogatore().getNome();
- String idServizio = idServ.getTipo()+idServ.getNome()+idServ.getVersione();
- try {
- String dirSoggetto = this.pathPrefix+idSoggetto+File.separator;
- String dirServiziSoggetto = dirSoggetto + CostantiXMLRepository.SERVIZI + File.separator;
- // Elimino eventuale file di index
- if(this.existsIndexServizi(dirServiziSoggetto)){
- IDServizio[]index = this.readIndexServiziFromFile(dirServiziSoggetto);
- if(index!=null){
- if(index.length==1){
- this.deleteIndexServizi(dirServiziSoggetto);
- }else{
- IDServizio [] newImage = new IDServizio[index.length-1];
- int j=0;
- for(int i=0; i< index.length; i++){
- if( !(index[i].getTipo().equals(idServ.getTipo()) &&
- index[i].getNome().equals(idServ.getNome()) &&
- index[i].getVersione().intValue() == idServ.getVersione().intValue()) ){
- newImage[j]=index[i];
- j++;
- }
- }
- this.setContenutoIndexServizi(dirServiziSoggetto,newImage);
- }
- }
- }
- // Elimino servizi del soggetto
- File definizioneXML = new File(dirServiziSoggetto+idServizio+".xml");
- if(definizioneXML.delete() == false){
- throw new DriverRegistroServiziException("Eliminazione XML del servizio ["+idServizio+"] erogato dal soggetto ["+
- idSoggetto+"] non riuscita");
- }
- File dirWSDL = new File(dirServiziSoggetto + CostantiXMLRepository.WSDL_DIR + idServizio);
- File dirAllegati = new File(dirServiziSoggetto + CostantiXMLRepository.ALLEGATI_DIR + idServizio);
- File dirSpecificheSemiformali = new File(dirServiziSoggetto + CostantiXMLRepository.SPECIFICHE_SEMIFORMALI_DIR + idServizio);
- File dirSpecificheSicurezza = new File(dirServiziSoggetto + CostantiXMLRepository.SPECIFICHE_SICUREZZA_DIR + idServizio);
- File dirSpecificheLivelliServizio = new File(dirServiziSoggetto + CostantiXMLRepository.SPECIFICHE_LIVELLI_SERVIZIO_DIR + idServizio);
-
- // Elimino vecchi WSDL
- String[]listWSDL = dirWSDL.list();
- if(listWSDL!=null) {
- for(int j=0; j<listWSDL.length;j++){
- File fileInterno = new File(dirWSDL.getAbsolutePath() + File.separator +listWSDL[j]);
- if(fileInterno.isDirectory()){
- // wsdl-implementativo fruitore-servizio
- String[]listFruitoreWSDL = fileInterno.list();
- if(listFruitoreWSDL!=null) {
- for(int k=0; k<listFruitoreWSDL.length;k++){
- File fileWsdlFruitore = new File(fileInterno.getAbsolutePath() + File.separator +listFruitoreWSDL[k]);
- if(fileWsdlFruitore.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file wsdl ["+ fileWsdlFruitore.getAbsolutePath() +"] per il servizio [" + idServizio + "] non riuscita");
- }
- }
- }
- }
- if(fileInterno.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione del file wsdl ["+ fileInterno.getAbsolutePath() +"] per il servizio [" + idServizio + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory dei WSDL
- if(dirWSDL.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per i WSDL del servizio ["+idServizio + "] non riuscita");
- }
-
- // Elimino vecchi allegati
- String[]listAllegati = dirAllegati.list();
- if(listAllegati!=null) {
- for(int j=0; j<listAllegati.length;j++){
- File fileAllegati = new File(dirAllegati.getAbsolutePath() + File.separator +listAllegati[j]);
- if(fileAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione dell'allegato ["+ fileAllegati.getAbsolutePath() +"] per l'accordo [" + idServizio + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory degli allegati
- if(dirAllegati.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per gli allegati dell'accordo ["+idServizio + "] non riuscita");
- }
- // Elimino vecche specificheSemiformali
- String[]listSpecificheSemiformali = dirSpecificheSemiformali.list();
- if(listSpecificheSemiformali!=null) {
- for(int j=0; j<listSpecificheSemiformali.length;j++){
- File fileSpecificheSemiformali = new File(dirSpecificheSemiformali.getAbsolutePath() + File.separator +listSpecificheSemiformali[j]);
- if(fileSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica semiformale ["+ fileSpecificheSemiformali.getAbsolutePath() +"] per l'accordo [" + idServizio + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche semiformali
- if(dirSpecificheSemiformali.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche semiformali dell'accordo ["+idServizio + "] non riuscita");
- }
- // Elimino vecchie specificheSicurezza
- String[]listSpecificheSicurezza = dirSpecificheSicurezza.list();
- if(listSpecificheSicurezza!=null) {
- for(int j=0; j<listSpecificheSicurezza.length;j++){
- File fileSpecificheSicurezza = new File(dirSpecificheSicurezza.getAbsolutePath() + File.separator +listSpecificheSicurezza[j]);
- if(fileSpecificheSicurezza.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica di sicurezza ["+ fileSpecificheSicurezza.getAbsolutePath() +"] per l'accordo [" + idServizio + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche di sicurezza
- if(dirSpecificheSicurezza.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche di sicurezza dell'accordo ["+idServizio + "] non riuscita");
- }
- // Elimino vecchie specificheLivelliServizio
- String[]listSpecificheLivelliServizio = dirSpecificheLivelliServizio.list();
- if(listSpecificheLivelliServizio!=null) {
- for(int j=0; j<listSpecificheLivelliServizio.length;j++){
- File fileSpecificheLivelliServizio = new File(dirSpecificheLivelliServizio.getAbsolutePath() + File.separator +listSpecificheLivelliServizio[j]);
- if(fileSpecificheLivelliServizio.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della specifica dei livelli di servizio ["+ fileSpecificheLivelliServizio.getAbsolutePath() +"] per l'accordo [" + idServizio + "] non riuscita");
- }
- }
- }
- // Elimina vecchia directory delle specifiche dei livelli di servizio
- if(dirSpecificheLivelliServizio.delete()==false){
- throw new DriverRegistroServiziException("Eliminazione della directory per le specifiche dei livelli di servizio dell'accordo ["+idServizio + "] non riuscita");
- }
- }catch(DriverRegistroServiziException e){
- throw e;
- }catch(Exception e){
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante l'eliminazione XML del servizio ["+idServizio+"] erogato dal soggetto ["+
- idSoggetto+"]: "+e.getMessage(),e);
- }
- }
- /**
- * Lista di Servizi registrati
- *
- * @return lista di servizi registrati.
- *
- */
- public AccordoServizioParteSpecifica[] getAccordiServiziParteSpecifica()throws DriverRegistroServiziException{
- AccordoServizioParteSpecifica [] serviziRegistrati = null;
- try {
- // Prendo prima i soggetti
- Soggetto [] soggettiRegistrati = this.getSoggetti();
- // Prendo dopodiche i servizi
- File dir = new File(this.pathPrefix);
- File[] soggetti = dir.listFiles();
- List<AccordoServizioParteSpecifica> servizi = new ArrayList<AccordoServizioParteSpecifica>();
- int indexSoggetto = 0;
- if(soggetti!=null){
- for(int i=0; i<soggetti.length;i++){
- if(soggetti[i].isDirectory() &&
- !CostantiXMLRepository.ACCORDI_DI_SERVIZIO.equalsIgnoreCase(soggetti[i].getName()) &&
- !CostantiXMLRepository.ACCORDI_DI_COOPERAZIONE.equalsIgnoreCase(soggetti[i].getName()) &&
- !CostantiXMLRepository.PORTE_DI_DOMINIO.equalsIgnoreCase(soggetti[i].getName())){
- File dirServiziSoggetto = new File(soggetti[i].getAbsoluteFile() + File.separator +CostantiXMLRepository.SERVIZI);
- File[] serviziSoggetto = dirServiziSoggetto.listFiles();
- if(serviziSoggetto!=null){
- for(int k=0; k<serviziSoggetto.length;k++){
- if(serviziSoggetto[k].isFile() && (this.isIndexServizi(serviziSoggetto[k])==false) ){
- org.openspcoop2.core.registry.RegistroServizi r =
- (org.openspcoop2.core.registry.RegistroServizi) JaxbUtils.xmlToObj(serviziSoggetto[k].getAbsolutePath(),
- org.openspcoop2.core.registry.RegistroServizi.class);
- if(r.getSoggetto(0).sizeAccordoServizioParteSpecificaList()>0){
- AccordoServizioParteSpecifica s = r.getSoggetto(0).getAccordoServizioParteSpecifica(0);
- s.setTipoSoggettoErogatore(soggettiRegistrati[indexSoggetto].getTipo());
- s.setNomeSoggettoErogatore(soggettiRegistrati[indexSoggetto].getNome());
- servizi.add(s);
- }
- }
- }
- }
- indexSoggetto++;
- }
- }
- }
- if(servizi.size()>0){
- serviziRegistrati = new AccordoServizioParteSpecifica[1];
- serviziRegistrati = servizi.toArray(serviziRegistrati);
- }
- return serviziRegistrati;
- }catch(Exception e){
- e.printStackTrace(System.err);
- throw new DriverRegistroServiziException("[XMLLib] Riscontrato errore durante la ricerca dei soggetti: "+e.getMessage(),e);
- }
- }
- }