UDDILib.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.core.registry.driver.uddi;
import java.util.Vector;
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.driver.DriverRegistroServiziException;
import org.openspcoop2.core.registry.driver.DriverRegistroServiziNotFound;
import org.openspcoop2.core.registry.driver.IDAccordoCooperazioneFactory;
import org.openspcoop2.core.registry.driver.IDAccordoFactory;
import org.uddi4j.UDDIException;
import org.uddi4j.client.UDDIProxy;
import org.uddi4j.datatype.Name;
import org.uddi4j.datatype.OverviewDoc;
import org.uddi4j.datatype.OverviewURL;
import org.uddi4j.datatype.binding.AccessPoint;
import org.uddi4j.datatype.binding.BindingTemplate;
import org.uddi4j.datatype.binding.BindingTemplates;
import org.uddi4j.datatype.binding.TModelInstanceDetails;
import org.uddi4j.datatype.binding.TModelInstanceInfo;
import org.uddi4j.datatype.business.BusinessEntity;
import org.uddi4j.datatype.service.BusinessService;
import org.uddi4j.datatype.service.BusinessServices;
import org.uddi4j.datatype.tmodel.TModel;
import org.uddi4j.response.AuthToken;
import org.uddi4j.response.BindingDetail;
import org.uddi4j.response.BusinessDetail;
import org.uddi4j.response.BusinessInfo;
import org.uddi4j.response.BusinessList;
import org.uddi4j.response.ServiceDetail;
import org.uddi4j.response.ServiceInfo;
import org.uddi4j.response.ServiceList;
import org.uddi4j.response.TModelDetail;
import org.uddi4j.response.TModelInfo;
import org.uddi4j.response.TModelList;
import org.uddi4j.transport.TransportException;
import org.uddi4j.util.CategoryBag;
import org.uddi4j.util.FindQualifier;
import org.uddi4j.util.FindQualifiers;
import org.uddi4j.util.IdentifierBag;
import org.uddi4j.util.KeyedReference;
import org.uddi4j.util.TModelBag;
import org.uddi4j.util.TModelKey;
/**
* Classe utilizzata per interagire con un registro UDDI che implementa le specifiche SICA.
*
* @author Anedda Valentino
* @author Poli Andrea (apoli@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class UDDILib
{
/* ******** F I E L D S P R I V A T I ******** */
/** Dichiarazione delle chiavi di tassonomia*/
protected String tmkID="uuid:b6ba2f0c-b4e5-40c4-a4f4-6212aa8d389f";//chiave di tassonomia per identificazione
/** Numero massimo di oggetti da ritornare */
private static int MAX_SEARCH = Integer.MAX_VALUE;
/** UDDI Proxy */
protected UDDIProxy proxy=null;
/** Username */
protected String username;
/** Password */
protected String password;
/** Indicazione di una corretta creazione */
public boolean create = false;
/** Motivo di errore di una scorretta creazione */
protected String error;
/** TModel di OpenSPCoop */
public static final String TMODEL_OPENSPCOOP = "OpenSPCoop:SPCoopIdentifier";
public static final String ACCORDO_SERVIZIO = "AccordoServizio";
public static final String PORTA_DOMINIO = "PortaDominio";
public static final String PORTA_DOMINIO_PREFIX = "PdD@";
public static final String GRUPPO = "Gruppo";
public static final String GRUPPO_PREFIX = "Gruppo@";
public static final String RUOLO = "Ruolo";
public static final String RUOLO_PREFIX = "Ruolo@";
public static final String SCOPE = "Scope";
public static final String SCOPE_PREFIX = "Scope@";
public static final String ACCORDO_COOPERAZIONE = "AccordoCooperazione";
public static final String ACCORDO_COOPERAZIONE_PREFIX = "AccordoCooperazione@";
// Factory
private IDAccordoFactory idAccordoFactory = IDAccordoFactory.getInstance();
private IDAccordoCooperazioneFactory idAccordoCooperazioneFactory = IDAccordoCooperazioneFactory.getInstance();
/**
* In caso di avvenuto errore nel costruttore, questo metodo ritorna il motivo dell'errore.
*
* @return motivo dell'errore (se avvenuto in fase di consegna).
*
*/
public String getErrore(){
return this.error;
}
/* ******** C O S T R U T T O R E ******** */
/**
* Costruttore.
*
* @param inquiry URL utilizzata per interrogare il registro UDDI.
* @param publish URL utilizzata per pubblicare sul registro UDDI.
* @param user UserID necessaria per l'autorizzazione della pubblicazione
* @param password Password necessaria per l'autorizzazione della pubblicazione
*/
public UDDILib(String inquiry, String publish, String user, String password){
try{
this.proxy = new UDDIProxy();
if(inquiry != null)
this.proxy.setInquiryURL(inquiry);
if(publish != null)
this.proxy.setPublishURL(publish);
this.username = user;
this.password = password;
// per verificare il corretto funzionamento
//this.create = checkProxy();
this.create = true;
}
catch (java.net.MalformedURLException e){
this.error = e.getMessage();
this.create = false;
}
catch (Exception e){
this.error = e.getMessage();
this.create = false;
}
}
/**
* Costruttore.
*
* @param inquiry URL utilizzata per interrogare il registro UDDI.
* @param user UserID necessaria per l'autorizzazione della pubblicazione
* @param password Password necessaria per l'autorizzazione della pubblicazione
*/
public UDDILib(String inquiry, String user, String password){
this(inquiry,null,user,password);
}
/**
* Costruttore.
*
* @param inquiry URL utilizzata per interrogare il registro UDDI.
*/
public UDDILib(String inquiry){
this(inquiry,null,null,null);
}
/* ******** UTILITY GENERICHE ******** */
protected TModel getTModel(String tipoOggetto,String nome) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.getTModel("+tipoOggetto+")]: Alcuni parametri non definiti");
TModel tm=null;
try{
// Filtro per nome esatto della TModel
FindQualifiers findQualifiers = new FindQualifiers();
Vector<FindQualifier> qualifier = new Vector<FindQualifier>();
qualifier.add(new FindQualifier(FindQualifier.exactNameMatch));
qualifier.add(new FindQualifier(FindQualifier.caseSensitiveMatch));
findQualifiers.setFindQualifierVector(qualifier);
TModelList tmodelList = this.proxy.find_tModel(nome,null,null,findQualifiers,1);
if(tmodelList.getTModelInfos()==null || tmodelList.getTModelInfos().size()==0)
throw new DriverRegistroServiziNotFound("TModel("+tipoOggetto+") non trovata");
Vector<?> tmodelInfoVector = tmodelList.getTModelInfos().getTModelInfoVector();
TModelInfo tmodelInfo=(TModelInfo) tmodelInfoVector.elementAt(0);
TModelDetail tmd = this.proxy.get_tModelDetail(tmodelInfo.getTModelKey());
Vector<?> tmv = tmd.getTModelVector();
tm = (TModel) tmv.elementAt(0);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.getTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.getTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
return tm;
}
private TModel[] getTModelByFilter(String tipoOggetto,String searchNome,String urlRepository,boolean ricercaEsatta) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try{
String nomeRicerca = null;
if(searchNome!=null)
nomeRicerca = searchNome;
else
nomeRicerca = "%";
// Filtro per nome esatto della TModel
FindQualifiers findQualifiers = null;
if( ricercaEsatta && nomeRicerca.equals("%")==false){
findQualifiers = new FindQualifiers();
Vector<FindQualifier> qualifier = new Vector<FindQualifier>();
qualifier.add(new FindQualifier(FindQualifier.exactNameMatch));
qualifier.add(new FindQualifier(FindQualifier.caseSensitiveMatch));
findQualifiers.setFindQualifierVector(qualifier);
}
TModelList tmodelList = this.proxy.find_tModel(nomeRicerca,null,null,findQualifiers,UDDILib.MAX_SEARCH);
Vector<TModel> tmodels = new Vector<TModel>();
// TModel vector lista.
if(tmodelList.getTModelInfos()!=null){
Vector<?> tmodelInfoVector = tmodelList.getTModelInfos().getTModelInfoVector();
for(int i=0; i<tmodelInfoVector.size(); i++){
TModelInfo tmodelInfo=(TModelInfo) tmodelInfoVector.elementAt(i);
TModelDetail tmd = this.proxy.get_tModelDetail(tmodelInfo.getTModelKey());
Vector<?> tmv = tmd.getTModelVector();
TModel t = (TModel) tmv.elementAt(0);
// Filtro le tmodel per il repository
if(urlRepository!=null){
if(t.getOverviewDoc()!=null && t.getOverviewDoc().getOverviewURLString()!=null &&
t.getOverviewDoc().getOverviewURLString().startsWith(urlRepository) ){
if(UDDILib.ACCORDO_SERVIZIO.equals(tipoOggetto)){
if(t.getNameString().startsWith(UDDILib.ACCORDO_COOPERAZIONE_PREFIX)==false && t.getNameString().startsWith(UDDILib.PORTA_DOMINIO_PREFIX)==false){
tmodels.add(t);
}
}else{
tmodels.add(t);
}
}
}else{
if(UDDILib.ACCORDO_SERVIZIO.equals(tipoOggetto)){
if(t.getNameString().startsWith(UDDILib.ACCORDO_COOPERAZIONE_PREFIX)==false && t.getNameString().startsWith(UDDILib.PORTA_DOMINIO_PREFIX)==false){
tmodels.add(t);
}
}else{
tmodels.add(t);
}
}
}
}
if(tmodels.size()>0){
TModel[] tm = new TModel[1];
tm = tmodels.toArray(tm);
return tm;
}else{
throw new DriverRegistroServiziNotFound("Non sono state trovate TModelByFilter("+tipoOggetto+") nel registro UDDI con nome: "+searchNome);
}
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.getTModelByFilter("+tipoOggetto+")]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.getTModelByFilter("+tipoOggetto+")]: "+e.getMessage(),e);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getTModelByFilter("+tipoOggetto+")]: "+e.getMessage(),e);
}
}
private void createTModel(String tipoOggetto,String nome, String url) throws DriverRegistroServiziException{
if ( (nome==null) || (url==null) )
throw new DriverRegistroServiziException("[UDDILib.createTModel("+tipoOggetto+")]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
Vector<TModel> tms = new Vector<TModel>();
TModel tm = new TModel("", nome);
OverviewDoc od = new OverviewDoc();
OverviewURL ou = new OverviewURL();
ou.setText(url);
od.setOverviewURL(ou);
tm.setOverviewDoc(od);
tms.add(tm);
this.proxy.save_tModel(token.getAuthInfoString(),tms);
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.createTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.createTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.createTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
}
private void updateTModel(String tipoOggetto,String nomeOLD,String nomeNEW,String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( (nomeOLD==null) || (url==null) || (nomeNEW==null))
throw new DriverRegistroServiziException("[UDDILib.updateTModel("+tipoOggetto+")]: Alcuni parametri non definiti");
TModel tm=null;
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
tm = getTModel(tipoOggetto, nomeOLD);
OverviewDoc od = tm.getOverviewDoc();
OverviewURL ou = od.getOverviewURL();
ou.setText(url);
od.setOverviewURL(ou);
tm.setOverviewDoc(od);
tm.setName(nomeNEW);
Vector<TModel> tms = new Vector<TModel>();
tms.add(tm);
this.proxy.save_tModel(token.getAuthInfoString(),tms);
}
catch(DriverRegistroServiziNotFound e){
throw e;
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.updateTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.updateTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
}
private void deleteTModel(String tipoOggetto,String nome) throws DriverRegistroServiziException{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.deleteTModel("+tipoOggetto+")]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
// Filtro per nome esatto della TModel
FindQualifiers findQualifiers = new FindQualifiers();
Vector<FindQualifier> qualifier = new Vector<FindQualifier>();
qualifier.add(new FindQualifier(FindQualifier.exactNameMatch));
qualifier.add(new FindQualifier(FindQualifier.caseSensitiveMatch));
findQualifiers.setFindQualifierVector(qualifier);
TModelList tmodelList = this.proxy.find_tModel(nome,null,null,findQualifiers,1);
Vector<?> tmodelInfoVector = tmodelList.getTModelInfos().getTModelInfoVector();
TModelInfo tmodelInfo=(TModelInfo) tmodelInfoVector.elementAt(0);
this.proxy.delete_tModel(token.getAuthInfoString(),tmodelInfo.getTModelKey());
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.deleteTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
}
private void updateUrlXmlTModel(String tipoOggetto,String nome, String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( (nome==null) || (url==null) )
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlTModel("+tipoOggetto+")]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
TModel tm = getTModel(tipoOggetto,nome);
Vector<TModel> tms = new Vector<TModel>();
OverviewDoc od = tm.getOverviewDoc();
OverviewURL ou = od.getOverviewURL();
ou.setText(url);
od.setOverviewURL(ou);
tm.setOverviewDoc(od);
tms.add(tm);
this.proxy.save_tModel(token.getAuthInfoString(),tms);
}catch(DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlTModel("+tipoOggetto+")]: "+e.getMessage(),e);
}
}
/* ******** M E T O D I A C C O R D O D I C O O P E R A Z I O N E ******** */
/**
* Si occupa di recuperare il TModel che registra l'accordo di cooperazione con nome <var>nome</var>
*
* @param idAccordo ID che identifica l'accordo di cooperazione
* @return la TModel che registra l'accordo di cooperazione
*/
public TModel getAccordoCooperazione(IDAccordoCooperazione idAccordo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
String uriAccordo = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordo);
return this.getTModel(UDDILib.ACCORDO_COOPERAZIONE, UDDILib.ACCORDO_COOPERAZIONE_PREFIX+uriAccordo);
}
/**
* Si occupa di recuperare le TModels che soddisfano il filtro
*
* @param urlRepository Url del Repository
* @return una lista di TModel che registra l'accordo di cooperazione
*/
public TModel[] getAccordiCooperazione(String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModelByFilter(UDDILib.ACCORDO_COOPERAZIONE, UDDILib.ACCORDO_COOPERAZIONE_PREFIX, urlRepository,false);
}
/**
* Si occupa di registrare come TModel un'accordo di cooperazione con nome <var>nome</var>
*
* @param idAccordo ID che identifica l'accordo di cooperazione
* @param url url del file XML associato all'accordo di cooperazione
*/
public void createAccordoCooperazione(IDAccordoCooperazione idAccordo, String url) throws DriverRegistroServiziException{
String uriAccordo = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordo);
this.createTModel(UDDILib.ACCORDO_COOPERAZIONE, UDDILib.ACCORDO_COOPERAZIONE_PREFIX+uriAccordo, url);
}
/**
* Il metodo si occupa di verificare se nel registro e' regitrata una TModel identificata dal parametro
*
* @param idAccordo ID dell'accordo di cooperazione
* @return true se la TModel risulta registrata, false altrimenti
*
*/
public boolean existsAccordoCooperazione(IDAccordoCooperazione idAccordo) throws DriverRegistroServiziException{
if ( idAccordo==null )
throw new DriverRegistroServiziException("[UDDILib.existsAccordoCooperazione]: Alcuni parametri non definiti");
String uriAccordo = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordo);
try{
TModel t = getTModel(UDDILib.ACCORDO_COOPERAZIONE,UDDILib.ACCORDO_COOPERAZIONE_PREFIX+uriAccordo);
if(t == null)
throw new Exception("TModel is null");
}catch(DriverRegistroServiziNotFound e){
return false;
}catch(Exception e){
throw new DriverRegistroServiziException(e.getMessage(),e);
}
return true;
}
/**
* Si occupa di modificare il nome della TModel che registra l'accordo di cooperazione con nome <var>nomeOLD</var>
*
* @param idAccordoOLD vecchio id che identifica l'accordo di cooperazione
* @param idAccordoNEW nuovo id che identifica l'accordo di cooperazione
* @param url nuova url del file XML associato all'accordo di cooperazione
*/
public void updateAccordoCooperazione(IDAccordoCooperazione idAccordoOLD,IDAccordoCooperazione idAccordoNEW,String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
String uriAccordoOLD = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordoOLD);
String uriAccordoNEW = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordoNEW);
this.updateTModel(UDDILib.ACCORDO_COOPERAZIONE, UDDILib.ACCORDO_COOPERAZIONE_PREFIX+uriAccordoOLD, UDDILib.ACCORDO_COOPERAZIONE_PREFIX+uriAccordoNEW, url);
}
/**
* Il metodo si occupa di cancellare la TModel identificata dal parametro
*
* @param idAccordo ID che identifica l'accordo di cooperazione
*/
public void deleteAccordoCooperazione(IDAccordoCooperazione idAccordo) throws DriverRegistroServiziException{
String uriAccordo = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordo);
this.deleteTModel(UDDILib.ACCORDO_COOPERAZIONE, UDDILib.ACCORDO_COOPERAZIONE_PREFIX+uriAccordo);
}
/**
* Il metodo si occupa di impostare la url del file XML della TModel
*
* @param idAccordo ID che identifica l'accordo di cooperazione
* @param url url del file XML associato all'accordo di cooperazione
*/
public void updateUrlXmlAccordoCooperazione(IDAccordoCooperazione idAccordo, String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
String uriAccordo = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordo);
this.updateUrlXmlTModel(UDDILib.ACCORDO_COOPERAZIONE, UDDILib.ACCORDO_COOPERAZIONE_PREFIX+uriAccordo, url);
}
/**
* Si occupa di recuperare la URL dell'XML associato all'accordo di cooperazione
* registrato con il nome <var>nome</var>
*
* @param idAccordo ID che identifica l'accordo di cooperazione
* @return la url dell'XML associato all'accordo di cooperazione
*
*/
public String getUrlXmlAccordoCooperazione(IDAccordoCooperazione idAccordo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idAccordo==null )
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlAccordoCooperazione]: Alcuni parametri non definiti");
try{
String uriAccordo = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordo);
TModel tm = getTModel(UDDILib.ACCORDO_COOPERAZIONE, UDDILib.ACCORDO_COOPERAZIONE_PREFIX+uriAccordo);
return tm.getOverviewDoc().getOverviewURLString();
}catch(DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlAccordoCooperazione]: "+e.getMessage(),e);
}
}
/**
* Si occupa di recuperare la URL dell'XML associato all'accordo di cooperazione
* registrato con il nome <var>nome</var>
*
* @param idAccordo ID che identifica l'accordo di cooperazione
* @return la url dell'XML associato all'accordo di cooperazione
*
*/
public String[] getUrlXmlAccordiCooperazione(IDAccordoCooperazione idAccordo,String urlPrefix) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try{
TModel[] tm = null;
if(idAccordo!=null) {
String uriAccordo = this.idAccordoCooperazioneFactory.getUriFromIDAccordo(idAccordo);
tm = getTModelByFilter(UDDILib.ACCORDO_COOPERAZIONE, UDDILib.ACCORDO_COOPERAZIONE_PREFIX+uriAccordo,urlPrefix,true);
}else{
tm = getTModelByFilter(UDDILib.ACCORDO_COOPERAZIONE, UDDILib.ACCORDO_COOPERAZIONE_PREFIX,urlPrefix,false);
}
if(tm!=null){
String[] url = new String[tm.length];
for(int i=0; i<tm.length; i++){
url[i] = tm[i].getOverviewDoc().getOverviewURLString();
}
return url;
}else{
throw new DriverRegistroServiziNotFound("Accordi di Cooperazione (definizione XML) non trovati");
}
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlAccordiCooperazione]: "+e.getMessage(),e);
}
}
/* ******** M E T O D I A C C O R D O D I S E R V I Z I O ******** */
/**
* Si occupa di recuperare il TModel che registra l'accordo di servizio con nome <var>nome</var>
*
* @param idAccordo ID che identifica l'accordo di servizio
* @return la TModel che registra l'accordo di servizio
*/
public TModel getAccordoServizio(IDAccordo idAccordo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
return this.getTModel(UDDILib.ACCORDO_SERVIZIO, uriAccordo);
}
/**
* Si occupa di recuperare le TModels che soddisfano il filtro
*
* @param urlRepository Url del Repository
* @return una lista di TModel che registra l'accordo di servizio
*/
public TModel[] getAccordiServizio(String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModelByFilter(UDDILib.ACCORDO_SERVIZIO, null, urlRepository,false);
}
/**
* Si occupa di registrare come TModel un'accordo di servizio con nome <var>nome</var>
*
* @param idAccordo ID che identifica l'accordo di servizio
* @param url url del file XML associato all'accordo di servizio
*/
public void createAccordoServizio(IDAccordo idAccordo, String url) throws DriverRegistroServiziException{
String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
this.createTModel(UDDILib.ACCORDO_SERVIZIO, uriAccordo, url);
}
/**
* Il metodo si occupa di verificare se nel registro e' regitrata una TModel identificata dal parametro
*
* @param idAccordo ID dell'accordo di servizio
* @return true se la TModel risulta registrata, false altrimenti
*
*/
public boolean existsAccordoServizio(IDAccordo idAccordo) throws DriverRegistroServiziException{
if ( idAccordo==null )
throw new DriverRegistroServiziException("[UDDILib.existsAccordoServizio]: Alcuni parametri non definiti");
String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
try{
TModel t = getTModel(UDDILib.ACCORDO_SERVIZIO,uriAccordo);
if(t == null)
throw new Exception("TModel is null");
}catch(DriverRegistroServiziNotFound e){
return false;
}catch(Exception e){
throw new DriverRegistroServiziException(e.getMessage(),e);
}
return true;
}
/**
* Si occupa di modificare il nome della TModel che registra l'accordo di servizio con nome <var>nomeOLD</var>
*
* @param idAccordoOLD vecchio id che identifica l'accordo di servizio
* @param idAccordoNEW nuovo id che identifica l'accordo di servizio
* @param url nuova url del file XML associato all'accordo di servizio
*/
public void updateAccordoServizio(IDAccordo idAccordoOLD,IDAccordo idAccordoNEW,String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
String uriAccordoOLD = this.idAccordoFactory.getUriFromIDAccordo(idAccordoOLD);
String uriAccordoNEW = this.idAccordoFactory.getUriFromIDAccordo(idAccordoNEW);
this.updateTModel(UDDILib.ACCORDO_SERVIZIO, uriAccordoOLD, uriAccordoNEW, url);
}
/**
* Il metodo si occupa di cancellare la TModel identificata dal parametro
*
* @param idAccordo ID che identifica l'accordo di servizio
*/
public void deleteAccordoServizio(IDAccordo idAccordo) throws DriverRegistroServiziException{
String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
this.deleteTModel(UDDILib.ACCORDO_SERVIZIO, uriAccordo);
}
/**
* Il metodo si occupa di impostare la url del file XML della TModel
*
* @param idAccordo ID che identifica l'accordo di servizio
* @param url url del file XML associato all'accordo di servizio
*/
public void updateUrlXmlAccordoServizio(IDAccordo idAccordo, String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
this.updateUrlXmlTModel(UDDILib.ACCORDO_SERVIZIO, uriAccordo, url);
}
/**
* Si occupa di recuperare la URL dell'XML associato all'accordo di servizio
* registrato con il nome <var>nome</var>
*
* @param idAccordo ID che identifica l'accordo di servizio
* @return la url dell'XML associato all'accordo di servizio
*
*/
public String getUrlXmlAccordoServizio(IDAccordo idAccordo) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idAccordo==null )
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlAccordoServizio]: Alcuni parametri non definiti");
try{
String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
TModel tm = getTModel(UDDILib.ACCORDO_SERVIZIO,uriAccordo);
return tm.getOverviewDoc().getOverviewURLString();
}catch(DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlAccordoServizio]: "+e.getMessage(),e);
}
}
/**
* Si occupa di recuperare la URL dell'XML associato all'accordo di servizio
* registrato con il nome <var>nome</var>
*
* @param idAccordo ID che identifica l'accordo di servizio
* @return la url dell'XML associato all'accordo di servizio
*
*/
public String[] getUrlXmlAccordiServizio(IDAccordo idAccordo,String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try{
TModel[] tm = null;
if(idAccordo!=null) {
String uriAccordo = this.idAccordoFactory.getUriFromIDAccordo(idAccordo);
tm = getTModelByFilter(UDDILib.ACCORDO_SERVIZIO, uriAccordo,urlRepository,true);
}else{
tm = getTModelByFilter(UDDILib.ACCORDO_SERVIZIO, null,urlRepository,false);
}
if(tm!=null){
String[] url = new String[tm.length];
for(int i=0; i<tm.length; i++){
url[i] = tm[i].getOverviewDoc().getOverviewURLString();
}
return url;
}else{
throw new DriverRegistroServiziNotFound("Accordi di Servizio (definizione XML) non trovati");
}
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlAccordoServizio]: "+e.getMessage(),e);
}
}
/* ******** M E T O D I P D D ******** */
/**
* Si occupa di recuperare il TModel che registra la porta di dominio con nome <var>nome</var>
*
* @param nome nome che identifica la porta di dominio
* @return la TModel che registra la porta di dominio
*/
public TModel getPortaDominio(String nome) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModel(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX+nome);
}
/**
* Si occupa di recuperare le TModels che soddisfano il filtro
*
* @param urlRepository Url del Repository
* @return una lista di TModel che registra la porta di dominio
*/
public TModel[] getPorteDominio(String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModelByFilter(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX, urlRepository, false);
}
/**
* Si occupa di registrare come TModel una porta di dominio con nome <var>nome</var>
*
* @param nome Nome che identifica la pdd
* @param url url del file XML associato alla pdd
*/
public void createPortaDominio(String nome, String url) throws DriverRegistroServiziException{
this.createTModel(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX+ nome, url);
}
/**
* Il metodo si occupa di verificare se nel registro e' regitrata una TModel identificata dal parametro
*
* @param nome Nome della porta di dominio
* @return true se la TModel risulta registrata, false altrimenti
*
*/
public boolean existsPortaDominio(String nome) throws DriverRegistroServiziException{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.existsPortaDominio]: Alcuni parametri non definiti");
try{
TModel t = getTModel(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX+nome);
if(t == null)
throw new Exception("TModel is null");
}catch(DriverRegistroServiziNotFound e){
return false;
}catch(Exception e){
throw new DriverRegistroServiziException(e.getMessage(),e);
}
return true;
}
/**
* Si occupa di modificare il nome della TModel che registra la porta di dominio con nome <var>nomeOLD</var>
*
* @param nomeOLD vecchio nome che identifica la porta di dominio
* @param nomeNEW nuovo nome che identifica la porta di dominio
* @param url nuova url del file XML associato all'accordo di servizio
*/
public void updatePortaDominio(String nomeOLD,String nomeNEW,String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
this.updateTModel(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX+nomeOLD, UDDILib.PORTA_DOMINIO_PREFIX+nomeNEW, url);
}
/**
* Il metodo si occupa di cancellare la TModel identificata dal parametro
*
* @param nome nome che identifica la porta di dominio
*/
public void deletePortaDominio(String nome) throws DriverRegistroServiziException{
this.deleteTModel(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX+nome);
}
/**
* Il metodo si occupa di impostare la url del file XML della TModel
*
* @param nome Nome che identifica la porta di dominio
* @param url url del file XML associato alla porta di dominio
*/
public void updateUrlXmlPortaDominio(String nome, String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
this.updateUrlXmlTModel(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX+nome, url);
}
/**
* Si occupa di recuperare la URL dell'XML associato alla porta di dominio
* registrato con il nome <var>nome</var>
*
* @param nome Nome che identifica la porta di dominio
* @return la url dell'XML associato alla porta di dominio
*
*/
public String getUrlXmlPortaDominio(String nome) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlPortaDominio]: Alcuni parametri non definiti");
try{
TModel tm = getTModel(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX+nome);
return tm.getOverviewDoc().getOverviewURLString();
}catch(DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlPortaDominio]: "+e.getMessage(),e);
}
}
/**
* Si occupa di recuperare la URL dell'XML associato alla porta di dominio
* registrata con il nome <var>nome</var>
*
* @param searchNome Nome che identifica la porta di dominio
* @return la url dell'XML associato alla porta di dominio
*
*/
public String[] getUrlXmlPortaDominio(String searchNome,String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try{
TModel[] tm = null;
if(searchNome!=null){
tm = getTModelByFilter(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX+searchNome,urlRepository,true);
}else{
tm = getTModelByFilter(UDDILib.PORTA_DOMINIO, UDDILib.PORTA_DOMINIO_PREFIX,urlRepository,false);
}
/*Vector<TModel> tmFiltratePerPdd = new Vector<TModel>();
for(int i=0; i<tm.length; i++){
if(tm[i].getNameString().startsWith(PORTA_DOMINIO_PREFIX)){
tmFiltratePerPdd.add(tm[i]);
}
}
if(tmFiltratePerPdd.size()<=0){
throw new DriverRegistroServiziNotFound("Porte di dominio non trovate, dopo il filtro per pdd");
}
String[] url = new String[tmFiltratePerPdd.size()];
int i=0;
while(tmFiltratePerPdd.size()>0){
TModel t = tmFiltratePerPdd.remove(0);
url[i] = t.getOverviewDoc().getOverviewURLString();
i++;
}
return url;
*/
if(tm!=null){
String[] url = new String[tm.length];
for(int i=0; i<tm.length; i++){
url[i] = tm[i].getOverviewDoc().getOverviewURLString();
}
return url;
}else{
throw new DriverRegistroServiziNotFound("Porte di Dominio (definizione XML) non trovate");
}
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlPortaDominio]: "+e.getMessage(),e);
}
}
/* ******** M E T O D I G R U P P I ******** */
/**
* Si occupa di recuperare il TModel che registra il gruppo con nome <var>nome</var>
*
* @param nome nome che identifica il gruppo
* @return la TModel che registra il gruppo
*/
public TModel getGruppo(String nome) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModel(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX+nome);
}
/**
* Si occupa di recuperare le TModels che soddisfano il filtro
*
* @param urlRepository Url del Repository
* @return una lista di TModel che registra i gruppi
*/
public TModel[] getGruppi(String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModelByFilter(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX, urlRepository, false);
}
/**
* Si occupa di registrare come TModel un gruppo con nome <var>nome</var>
*
* @param nome Nome che identifica il gruppo
* @param url url del file XML associato al gruppo
*/
public void createGruppo(String nome, String url) throws DriverRegistroServiziException{
this.createTModel(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX+ nome, url);
}
/**
* Il metodo si occupa di verificare se nel registro e' regitrata una TModel identificata dal parametro
*
* @param nome Nome del gruppo
* @return true se la TModel risulta registrata, false altrimenti
*
*/
public boolean existsGruppo(String nome) throws DriverRegistroServiziException{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.existsGruppo]: Alcuni parametri non definiti");
try{
TModel t = getTModel(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX+nome);
if(t == null)
throw new Exception("TModel is null");
}catch(DriverRegistroServiziNotFound e){
return false;
}catch(Exception e){
throw new DriverRegistroServiziException(e.getMessage(),e);
}
return true;
}
/**
* Si occupa di modificare il nome della TModel che registra il gruppo con nome <var>nomeOLD</var>
*
* @param nomeOLD vecchio nome che identifica il gruppo
* @param nomeNEW nuovo nome che identifica il gruppo
* @param url nuova url del file XML associato al gruppo
*/
public void updateGruppo(String nomeOLD,String nomeNEW,String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
this.updateTModel(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX+nomeOLD, UDDILib.GRUPPO_PREFIX+nomeNEW, url);
}
/**
* Il metodo si occupa di cancellare la TModel identificata dal parametro
*
* @param nome nome che identifica il gruppo
*/
public void deleteGruppo(String nome) throws DriverRegistroServiziException{
this.deleteTModel(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX+nome);
}
/**
* Il metodo si occupa di impostare la url del file XML della TModel
*
* @param nome Nome che identifica il gruppo
* @param url url del file XML associato al gruppo
*/
public void updateUrlXmlGruppo(String nome, String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
this.updateUrlXmlTModel(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX+nome, url);
}
/**
* Si occupa di recuperare la URL dell'XML associato al gruppo
* registrato con il nome <var>nome</var>
*
* @param nome Nome che identifica il gruppo
* @return la url dell'XML associato al gruppo
*
*/
public String getUrlXmlGruppo(String nome) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlGruppo]: Alcuni parametri non definiti");
try{
TModel tm = getTModel(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX+nome);
return tm.getOverviewDoc().getOverviewURLString();
}catch(DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlGruppo]: "+e.getMessage(),e);
}
}
/**
* Si occupa di recuperare la URL dell'XML associato al gruppo
* registrata con il nome <var>nome</var>
*
* @param searchNome Nome che identifica il gruppo
* @return la url dell'XML associato al gruppo
*
*/
public String[] getUrlXmlGruppo(String searchNome,String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try{
TModel[] tm = null;
if(searchNome!=null){
tm = getTModelByFilter(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX+searchNome,urlRepository,true);
}else{
tm = getTModelByFilter(UDDILib.GRUPPO, UDDILib.GRUPPO_PREFIX,urlRepository,false);
}
if(tm!=null){
String[] url = new String[tm.length];
for(int i=0; i<tm.length; i++){
url[i] = tm[i].getOverviewDoc().getOverviewURLString();
}
return url;
}else{
throw new DriverRegistroServiziNotFound("Gruppo (definizione XML) non trovate");
}
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlGruppo]: "+e.getMessage(),e);
}
}
/* ******** M E T O D I R U O L I ******** */
/**
* Si occupa di recuperare il TModel che registra il ruolo con nome <var>nome</var>
*
* @param nome nome che identifica il ruolo
* @return la TModel che registra il ruolo
*/
public TModel getRuolo(String nome) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModel(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX+nome);
}
/**
* Si occupa di recuperare le TModels che soddisfano il filtro
*
* @param urlRepository Url del Repository
* @return una lista di TModel che registra i ruoli
*/
public TModel[] getRuoli(String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModelByFilter(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX, urlRepository, false);
}
/**
* Si occupa di registrare come TModel un ruolo con nome <var>nome</var>
*
* @param nome Nome che identifica il ruolo
* @param url url del file XML associato al ruolo
*/
public void createRuolo(String nome, String url) throws DriverRegistroServiziException{
this.createTModel(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX+ nome, url);
}
/**
* Il metodo si occupa di verificare se nel registro e' regitrata una TModel identificata dal parametro
*
* @param nome Nome del ruolo
* @return true se la TModel risulta registrata, false altrimenti
*
*/
public boolean existsRuolo(String nome) throws DriverRegistroServiziException{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.existsRuolo]: Alcuni parametri non definiti");
try{
TModel t = getTModel(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX+nome);
if(t == null)
throw new Exception("TModel is null");
}catch(DriverRegistroServiziNotFound e){
return false;
}catch(Exception e){
throw new DriverRegistroServiziException(e.getMessage(),e);
}
return true;
}
/**
* Si occupa di modificare il nome della TModel che registra il ruolo con nome <var>nomeOLD</var>
*
* @param nomeOLD vecchio nome che identifica il ruolo
* @param nomeNEW nuovo nome che identifica il ruolo
* @param url nuova url del file XML associato al ruolo
*/
public void updateRuolo(String nomeOLD,String nomeNEW,String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
this.updateTModel(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX+nomeOLD, UDDILib.RUOLO_PREFIX+nomeNEW, url);
}
/**
* Il metodo si occupa di cancellare la TModel identificata dal parametro
*
* @param nome nome che identifica il ruolo
*/
public void deleteRuolo(String nome) throws DriverRegistroServiziException{
this.deleteTModel(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX+nome);
}
/**
* Il metodo si occupa di impostare la url del file XML della TModel
*
* @param nome Nome che identifica il ruolo
* @param url url del file XML associato al ruolo
*/
public void updateUrlXmlRuolo(String nome, String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
this.updateUrlXmlTModel(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX+nome, url);
}
/**
* Si occupa di recuperare la URL dell'XML associato al ruolo
* registrato con il nome <var>nome</var>
*
* @param nome Nome che identifica il ruolo
* @return la url dell'XML associato al ruolo
*
*/
public String getUrlXmlRuolo(String nome) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlRuolo]: Alcuni parametri non definiti");
try{
TModel tm = getTModel(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX+nome);
return tm.getOverviewDoc().getOverviewURLString();
}catch(DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlRuolo]: "+e.getMessage(),e);
}
}
/**
* Si occupa di recuperare la URL dell'XML associato al ruolo
* registrata con il nome <var>nome</var>
*
* @param searchNome Nome che identifica il ruolo
* @return la url dell'XML associato al ruolo
*
*/
public String[] getUrlXmlRuolo(String searchNome,String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try{
TModel[] tm = null;
if(searchNome!=null){
tm = getTModelByFilter(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX+searchNome,urlRepository,true);
}else{
tm = getTModelByFilter(UDDILib.RUOLO, UDDILib.RUOLO_PREFIX,urlRepository,false);
}
if(tm!=null){
String[] url = new String[tm.length];
for(int i=0; i<tm.length; i++){
url[i] = tm[i].getOverviewDoc().getOverviewURLString();
}
return url;
}else{
throw new DriverRegistroServiziNotFound("Ruolo (definizione XML) non trovate");
}
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlRuolo]: "+e.getMessage(),e);
}
}
/* ******** M E T O D I S C O P E ******** */
/**
* Si occupa di recuperare il TModel che registra il scope con nome <var>nome</var>
*
* @param nome nome che identifica il scope
* @return la TModel che registra il scope
*/
public TModel getScope(String nome) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModel(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX+nome);
}
/**
* Si occupa di recuperare le TModels che soddisfano il filtro
*
* @param urlRepository Url del Repository
* @return una lista di TModel che registra i scope
*/
public TModel[] getScopes(String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
return this.getTModelByFilter(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX, urlRepository, false);
}
/**
* Si occupa di registrare come TModel un scope con nome <var>nome</var>
*
* @param nome Nome che identifica il scope
* @param url url del file XML associato al scope
*/
public void createScope(String nome, String url) throws DriverRegistroServiziException{
this.createTModel(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX+ nome, url);
}
/**
* Il metodo si occupa di verificare se nel registro e' regitrata una TModel identificata dal parametro
*
* @param nome Nome del scope
* @return true se la TModel risulta registrata, false altrimenti
*
*/
public boolean existsScope(String nome) throws DriverRegistroServiziException{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.existsScope]: Alcuni parametri non definiti");
try{
TModel t = getTModel(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX+nome);
if(t == null)
throw new Exception("TModel is null");
}catch(DriverRegistroServiziNotFound e){
return false;
}catch(Exception e){
throw new DriverRegistroServiziException(e.getMessage(),e);
}
return true;
}
/**
* Si occupa di modificare il nome della TModel che registra il scope con nome <var>nomeOLD</var>
*
* @param nomeOLD vecchio nome che identifica il scope
* @param nomeNEW nuovo nome che identifica il scope
* @param url nuova url del file XML associato al scope
*/
public void updateScope(String nomeOLD,String nomeNEW,String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
this.updateTModel(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX+nomeOLD, UDDILib.SCOPE_PREFIX+nomeNEW, url);
}
/**
* Il metodo si occupa di cancellare la TModel identificata dal parametro
*
* @param nome nome che identifica il scope
*/
public void deleteScope(String nome) throws DriverRegistroServiziException{
this.deleteTModel(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX+nome);
}
/**
* Il metodo si occupa di impostare la url del file XML della TModel
*
* @param nome Nome che identifica il scope
* @param url url del file XML associato al scope
*/
public void updateUrlXmlScope(String nome, String url) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
this.updateUrlXmlTModel(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX+nome, url);
}
/**
* Si occupa di recuperare la URL dell'XML associato al scope
* registrato con il nome <var>nome</var>
*
* @param nome Nome che identifica il scope
* @return la url dell'XML associato al scope
*
*/
public String getUrlXmlScope(String nome) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( nome==null )
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlScope]: Alcuni parametri non definiti");
try{
TModel tm = getTModel(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX+nome);
return tm.getOverviewDoc().getOverviewURLString();
}catch(DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlScope]: "+e.getMessage(),e);
}
}
/**
* Si occupa di recuperare la URL dell'XML associato al scope
* registrata con il nome <var>nome</var>
*
* @param searchNome Nome che identifica il scope
* @return la url dell'XML associato al scope
*
*/
public String[] getUrlXmlScope(String searchNome,String urlRepository) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try{
TModel[] tm = null;
if(searchNome!=null){
tm = getTModelByFilter(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX+searchNome,urlRepository,true);
}else{
tm = getTModelByFilter(UDDILib.SCOPE, UDDILib.SCOPE_PREFIX,urlRepository,false);
}
if(tm!=null){
String[] url = new String[tm.length];
for(int i=0; i<tm.length; i++){
url[i] = tm[i].getOverviewDoc().getOverviewURLString();
}
return url;
}else{
throw new DriverRegistroServiziNotFound("Scope (definizione XML) non trovate");
}
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlScope]: "+e.getMessage(),e);
}
}
/* ------------------- (Business Entity) --------------------- */
/**
* Il metodo si occupa di cercare all'interno del registro le businessEntity che hanno un match con
* i valori passati per parametro.
*
* @param idSogg del Soggetto.
* @return un oggetto BusinessEntity se la ricerca ha successo, null altrimenti.
*/
protected BusinessEntity getBusinessEntity(IDSoggetto idSogg) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( (idSogg==null) || (idSogg.getNome()==null) || (idSogg.getTipo()==null))
throw new DriverRegistroServiziException("[UDDILib.getBusinessEntity]: Alcuni parametri non definiti");
String keyBE = idSogg.getTipo() + "/" + idSogg.getNome();
BusinessEntity be=null;
try{
Vector<Name> names = new Vector<Name>();
names.add(new Name("%"));
IdentifierBag identifierBag= new IdentifierBag();
KeyedReference k1 = new KeyedReference();
k1.setKeyValue(keyBE);
k1.setTModelKey(this.tmkID);
Vector<KeyedReference> keyedReferenceVector = new Vector<KeyedReference>();
keyedReferenceVector.add(k1);
identifierBag.setKeyedReferenceVector(keyedReferenceVector);
BusinessList businessList = this.proxy.find_business(names, null, identifierBag, null, null, null, 1);
if(businessList.getBusinessInfos()==null || businessList.getBusinessInfos().size()==0)
throw new DriverRegistroServiziNotFound("BusinessEntity non trovata");
Vector<?> businessInfoVector = businessList.getBusinessInfos().getBusinessInfoVector();
BusinessInfo bi = (BusinessInfo) businessInfoVector.elementAt(0);
BusinessDetail bd = this.proxy.get_businessDetail(bi.getBusinessKey());
Vector<?> v = bd.getBusinessEntityVector();
be = (BusinessEntity) v.elementAt(0);
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessEntity]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessEntity]: "+e.getMessage(),e);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessEntity]: "+e.getMessage(),e);
}
return be;
}
/**
* Il metodo si occupa di cercare all'interno del registro le businessEntity che hanno un match con
* i valori passati per parametro.
*
* @return un oggetto BusinessEntity se la ricerca ha successo, null altrimenti.
*/
protected BusinessEntity[] getBusinessEntities() throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try{
Vector<Name> names = new Vector<Name>();
names.add(new Name("%"));
Vector<BusinessEntity> bus = new Vector<BusinessEntity>();
BusinessList businessList = this.proxy.find_business(names, null, null, null, null, null, UDDILib.MAX_SEARCH);
if(businessList!=null && businessList.getBusinessInfos()!=null){
Vector<?> businessInfoVector = businessList.getBusinessInfos().getBusinessInfoVector();
for(int i=0; i<businessInfoVector.size(); i++){
BusinessInfo bi = (BusinessInfo) businessInfoVector.elementAt(i);
BusinessDetail bd = this.proxy.get_businessDetail(bi.getBusinessKey());
Vector<?> v = bd.getBusinessEntityVector();
BusinessEntity be = (BusinessEntity) v.elementAt(0);
bus.add(be);
}
}
if(bus.size()>0){
BusinessEntity[] be = new BusinessEntity[1];
be = bus.toArray(be);
return be;
}else{
throw new DriverRegistroServiziNotFound("Non sono state trovate BusinessEntity nel registro UDDI");
}
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessEntity]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessEntity]: "+e.getMessage(),e);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessEntity]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di aggiungere nel registro una nuova BusinessEntity
* con tipo di identificativo 'tipo' e codice identificativo 'codice'.
*
* @param idSogg del Soggetto.
* @return la BusinessEntity inserita, se l'inserimento ha successo
*/
protected BusinessEntity addBusinessEntity(IDSoggetto idSogg)throws DriverRegistroServiziException{
if ( (idSogg==null) || (idSogg.getNome()==null) || (idSogg.getTipo()==null) || (idSogg.getCodicePorta()==null))
throw new DriverRegistroServiziException("[UDDILib.addBusinessEntity]: Alcuni parametri non definiti");
String keyBE = idSogg.getTipo() + "/" + idSogg.getNome();
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
KeyedReference k1 = new KeyedReference();
k1.setKeyName(idSogg.getCodicePorta());
k1.setKeyValue(keyBE);
k1.setTModelKey(this.tmkID);
Vector<KeyedReference> keyedReferenceVector1 = new Vector<KeyedReference>();
keyedReferenceVector1.add(k1);
BusinessEntity be = new BusinessEntity("",keyBE);
IdentifierBag ib = new IdentifierBag();
ib.setKeyedReferenceVector(keyedReferenceVector1);
be.setIdentifierBag(ib);
CategoryBag cb = new CategoryBag();
be.setCategoryBag(cb);
Vector<BusinessEntity> entities = new Vector<BusinessEntity>();
entities.addElement(be);
BusinessDetail bd = this.proxy.save_business(token.getAuthInfoString(),entities);
Vector<?> businessEntities = bd.getBusinessEntityVector();
be = (BusinessEntity) businessEntities.elementAt(0);
return be;
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.addBusinessEntity]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.addBusinessEntity]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.addBusinessEntity]: "+e.getMessage(),e);
}
}
/**
* Si occupa di cancellare la BusinessEntity identificata dai parametri
*
*@param idSogg Identificativo del soggetto
*/
protected void deleteBusinessEntity(IDSoggetto idSogg) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( (idSogg==null) || (idSogg.getNome()==null) || (idSogg.getTipo()==null) )
throw new DriverRegistroServiziException("[UDDILib.deleteBusinessEntity]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
BusinessEntity be = getBusinessEntity(idSogg);
this.proxy.delete_business(token.getAuthInfoString(), be.getBusinessKey());
}catch (DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.deleteBusinessEntity]: "+e.getMessage(),e);
}
}
/**
* Il metodo assegna alla BusinessEntity <var>be</var> la descrizione <var>descrizione</var>
*
* @param be Business Entity
* @param nome Nome da assegnare alla Business Entity
* @return la BusinessEntity modificata, se la modifica ha successo
*/
protected BusinessEntity updateNomeBusinessEntity(BusinessEntity be, String nome)throws DriverRegistroServiziException{
if ( (be==null) || (nome==null) )
throw new DriverRegistroServiziException("[UDDILib.updateNomeBusinessEntity]: Alcuni parametri non definiti");
try{
be.setDefaultName(new Name(nome));
Vector<BusinessEntity> entities = new Vector<BusinessEntity>();
entities.addElement(be);
AuthToken token = this.proxy.get_authToken(this.username,this.password);
this.proxy.save_business(token.getAuthInfoString(),entities);
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.updateDescrizioneBusinessEntity]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.updateDescrizioneBusinessEntity]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateDescrizioneBusinessEntity]: "+e.getMessage(),e);
}
return be;
}
/**
* Il metodo si recuperare il nome della BusinessEntity <var>be</var>.
*
* @param be Business Entity
* @return il nome della BusinessEntity.
*/
protected String getNomeBusinessEntity(BusinessEntity be)throws DriverRegistroServiziException{
if (be==null)
throw new DriverRegistroServiziException("[UDDILib.getNomeBusinessEntity]: Alcuni parametri non definiti");
try{
return be.getDefaultName().getText();
}catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getNomeBusinessEntity]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di aggiungere alla BusinessEntity <var>be</var> una maggiore descrizione
* passata nel parametro <var>descrizione</var>.
* @param be Business Entity
* @param descrizione Descrizione associata al Soggetto
* @return la BusinessEntity modificata se tutto e' andato bene.
*/
protected BusinessEntity updateDescrizioneBusinessEntity(BusinessEntity be, String descrizione)throws DriverRegistroServiziException{
if ( (be==null) || (descrizione==null) )
throw new DriverRegistroServiziException("[UDDILib.updateDescrizioneBusinessEntity]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
be.setDefaultDescriptionString(descrizione);
Vector<BusinessEntity> entities = new Vector<BusinessEntity>();
entities.addElement(be);
this.proxy.save_business(token.getAuthInfoString(),entities);
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.updateDescrizioneBusinessEntity]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.updateDescrizioneBusinessEntity]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateDescrizioneBusinessEntity]: "+e.getMessage(),e);
}
return be;
}
/**
* Il metodo si occupa di settare nella BusinessEntity <var>be</var> una category bag
* contenente come valore la url dell'xml associato al Soggetto.
*
* @param be Business Entity
* @param url url del file XML associato al soggetto.
* @return la BusinessEntity modificata in caso di successo, null altrimenti.
*/
protected BusinessEntity updateUrlXmlBusinessEntity(BusinessEntity be, String url)throws DriverRegistroServiziException{
if ( (be==null) || (url==null))
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlBusinessEntity]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
KeyedReference k1 = new KeyedReference();
k1.setKeyName(org.openspcoop2.utils.Costanti.OPENSPCOOP2);
k1.setKeyValue(url);
Vector<BusinessEntity> entities = new Vector<BusinessEntity>();
CategoryBag ib = be.getCategoryBag();
if(ib == null)
ib = new CategoryBag();
ib.add(k1);
be.setCategoryBag(ib);
entities.addElement(be);
this.proxy.save_business(token.getAuthInfoString(),entities);
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlBusinessEntity]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlBusinessEntity]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlBusinessEntity]: "+e.getMessage(),e);
}
return be;
}
/**
* Il metodo si occupa di impostare il keyName della category bag del soggetto
*
* @param idSogg Identificativo del Soggetto
* @param categoryBagName
*/
protected void updateCategoryBagKeyNameBusinessEntity(IDSoggetto idSogg,String categoryBagName) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( (idSogg==null) || (idSogg.getNome()==null) || (idSogg.getTipo()==null) || (categoryBagName==null))
throw new DriverRegistroServiziException("[UDDILib.updateCategoryBagKeyNameBusinessEntity]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
BusinessEntity be = getBusinessEntity(idSogg);
CategoryBag cb = be.getCategoryBag();
Vector<?> krv = cb.getKeyedReferenceVector();
KeyedReference kr = (KeyedReference) krv.elementAt(0);
kr.setKeyName(categoryBagName);
cb.setKeyedReferenceVector(krv);
be.setCategoryBag(cb);
Vector<BusinessEntity> entities = new Vector<BusinessEntity>();
entities.addElement(be);
this.proxy.save_business(token.getAuthInfoString(),entities);
}catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateCategoryBagKeyNameBusinessEntity]: "+e.getMessage(),e);
}
}
/* --------------- Soggetto -------------------*/
/**
* Il metodo si occupa di aggiungere nel registro un nuovo Soggetto.
*
* @param idSogg Identificativo del soggetto
* @param descrizione Descrizione da assegnare al Soggetto
* @param urlXML url dell'XML associato al Soggetto.
*/
public void createSoggetto(IDSoggetto idSogg,
String descrizione, String urlXML)throws DriverRegistroServiziException{
if ( (idSogg==null) || (idSogg.getNome()==null) || (idSogg.getTipo()==null)||
(descrizione==null) || (idSogg.getCodicePorta()==null) || (urlXML==null)){
throw new DriverRegistroServiziException("[UDDILib.createSoggetto]: Alcuni parametri non definiti");
}
try{
// add BusinessEntity
BusinessEntity be = addBusinessEntity(idSogg);
// set Descrizione in BusinessEntity
try{
be=updateNomeBusinessEntity(be,descrizione);
}catch(Exception e){
try{
//rollback quanto fatto prima
deleteBusinessEntity(idSogg);
}catch(Exception rollbackE){
// ignore
}
throw e; // rilancio l'eccezione
}
// set url XML nella BusinessEntity
try{
updateUrlXmlBusinessEntity(be,urlXML);
}catch(Exception e){
try{
//rollback quanto fatto prima
deleteBusinessEntity(idSogg);
}catch(Exception rollbackE){
// ignore
}
throw e; // rilancio l'eccezione
}
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.createSoggetto]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di verificare se nel registro e' regitrato un Soggetto identificato dai parametri
*
* @param idSogg del Soggetto
* @return true se il Soggetto risulta registrato, false altrimenti
*/
public boolean existsSoggetto(IDSoggetto idSogg)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idSogg==null )
throw new DriverRegistroServiziException("[UDDILib.existsSoggetto]: Alcuni parametri non definiti");
BusinessEntity be = null;
try{
be = getBusinessEntity(idSogg);
if(be == null)
throw new Exception("BusinessEntity is null");
}catch (DriverRegistroServiziNotFound e){
return false;
}
catch(Exception e){
throw new DriverRegistroServiziException(e.getMessage(),e);
}
return true;
}
/**
* Il metodo si occupa di recuperare l'url del file XML del Soggetto.
*
* @param idSogg Identificativo del Soggetto
*/
public String getUrlXmlSoggetto(IDSoggetto idSogg)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idSogg==null )
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlSoggetto]: Alcuni parametri non definiti");
try
{
BusinessEntity be = getBusinessEntity(idSogg);
return be.getCategoryBag().get(0).getKeyValue();
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlSoggetto]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di recuperare l'url del file XML del Soggetto.
*
*/
public String[] getUrlXmlSoggetti()throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try
{
BusinessEntity[] be = getBusinessEntities();
String [] url = new String[be.length];
for(int i=0; i<be.length; i++){
url[i] = be[i].getCategoryBag().get(0).getKeyValue();
}
return url;
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlSoggetto]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di impostare la url del file XML associato al Soggetto
*
* @param idSogg Identificativo del Soggetto
* @param url Url da impostare
*/
public void updateUrlXmlSoggetto(IDSoggetto idSogg,String url)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idSogg==null || url==null)
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlSoggetto]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
BusinessEntity be = getBusinessEntity(idSogg);
CategoryBag cb = be.getCategoryBag();
Vector<?> krv = cb.getKeyedReferenceVector();
KeyedReference kr = (KeyedReference) krv.elementAt(0);
kr.setKeyValue(url);
cb.setKeyedReferenceVector(krv);
be.setCategoryBag(cb);
Vector<BusinessEntity> entities = new Vector<BusinessEntity>();
entities.addElement(be);
this.proxy.save_business(token.getAuthInfoString(),entities);
}catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlSoggetto]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di impostare la descrizione associata al Soggetto
*
* @param idSogg Identificativo del Soggetto
* @param descrizione Descrizione da associare al soggetto
*/
public void updateDescrizioneSoggetto(IDSoggetto idSogg,String descrizione) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idSogg==null || descrizione==null)
throw new DriverRegistroServiziException("[UDDILib.updateDescrizioneSoggetto]: Alcuni parametri non definiti");
try{
BusinessEntity be = getBusinessEntity(idSogg);
updateNomeBusinessEntity(be,descrizione);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateDescrizioneSoggetto]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di modificare il codice tipo/valore associato al Soggetto
*
* @param idSoggOLD Vecchio identificativo del Soggetto
* @param idSoggNEW Nuovo identificativo del Soggetto
*/
public void updateIdSoggetto(IDSoggetto idSoggOLD,IDSoggetto idSoggNEW)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( (idSoggOLD==null) || (idSoggOLD.getNome()==null) || (idSoggOLD.getTipo()==null) ||
(idSoggNEW==null) || (idSoggNEW.getNome()==null) || (idSoggNEW.getTipo()==null))
throw new DriverRegistroServiziException("[UDDILib.updateIdSoggetto]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
BusinessEntity be = getBusinessEntity(idSoggOLD);
IdentifierBag ib = be.getIdentifierBag();
Vector<?> v = ib.getKeyedReferenceVector();
KeyedReference kr = (KeyedReference) v.elementAt(0);
String newValue = idSoggNEW.getTipo() + "/" + idSoggNEW.getNome();
kr.setKeyValue(newValue);
ib.setKeyedReferenceVector(v);
be.setIdentifierBag(ib);
Vector<BusinessEntity> entities = new Vector<BusinessEntity>();
entities.addElement (be);
BusinessDetail bd = this.proxy.save_business(token.getAuthInfoString(),entities);
Vector<?> businessEntities = bd.getBusinessEntityVector();
be = (BusinessEntity) businessEntities.elementAt (0);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateIdSoggetto]: "+e.getMessage(),e);
}
}
/**
* Si occupa di cancellare il Soggetto identificata dai parametri
*
* @param idSogg Identificativo del soggetto
*/
public void deleteSoggetto(IDSoggetto idSogg)throws DriverRegistroServiziException{
if ( idSogg==null )
throw new DriverRegistroServiziException("[UDDILib.deleteSoggetto]: Alcuni parametri non definiti");
try{
deleteBusinessEntity(idSogg);
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.deleteSoggetto]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di impostare il codice della porta di dominio associato al Soggetto
*
* @param idSogg Identificativo del Soggetto
* @param newIdentificativoPorta Nuovo codice di dominio associare al soggetto
*/
public void updateIdentificativoPortaSoggetto(IDSoggetto idSogg,String newIdentificativoPorta)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idSogg==null || newIdentificativoPorta==null)
throw new DriverRegistroServiziException("[UDDILib.updateIdentificativoPortaSoggetto]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
BusinessEntity be = getBusinessEntity(idSogg);
IdentifierBag ib = be.getIdentifierBag();
Vector<?> v = ib.getKeyedReferenceVector();
KeyedReference kr = (KeyedReference) v.elementAt(0);
kr.setKeyName(newIdentificativoPorta);
ib.setKeyedReferenceVector(v);
be.setIdentifierBag(ib);
Vector<BusinessEntity> entities = new Vector<BusinessEntity>();
entities.addElement (be);
BusinessDetail bd = this.proxy.save_business(token.getAuthInfoString(),entities);
Vector<?> businessEntities = bd.getBusinessEntityVector();
be = (BusinessEntity) businessEntities.elementAt (0);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateIdentificativoPortaSoggetto]: Alcuni parametri non definiti");
}
}
/* ******** M E T O D I PRIVATI ******** */
/**
* Il metodo si occupa di cercare all'interno del registro il servizio associato
* ad una BusinessEntity di nome <var>serviceName</var>
* Ritorna null in caso il servizio risulti non registrato.
*
* @param be BusinessEntity.
* @param idServ Identificativo del Servizio
* @return un oggetto BusinessService se la ricerca ha successo
*/
protected BusinessService getBusinessService(BusinessEntity be, IDServizio idServ) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( be==null || idServ==null || idServ.getTipo()==null || idServ.getNome()==null || idServ.getVersione()==null)
throw new DriverRegistroServiziException("[UDDILib.getBusinessService]: Alcuni parametri non definiti");
try{
String keyService = idServ.getTipo() + "/" + idServ.getNome() + ":"+ idServ.getVersione();
BusinessService bs=null;
Name nome = new Name(keyService);
Vector<Name> nomi = new Vector<Name>();
nomi.add(nome);
FindQualifiers findQualifiers = new FindQualifiers();
Vector<FindQualifier> qualifier = new Vector<FindQualifier>();
qualifier.add(new FindQualifier(FindQualifier.exactNameMatch));
qualifier.add(new FindQualifier(FindQualifier.caseSensitiveMatch));
findQualifiers.setFindQualifierVector(qualifier);
ServiceList serviceList = this.proxy.find_service(be.getBusinessKey(), nomi, null, null, findQualifiers, 1);
if(serviceList.getServiceInfos()==null || serviceList.getServiceInfos().size()==0)
throw new DriverRegistroServiziNotFound("BusinessService non trovata");
Vector<?> serviceInfoVector = serviceList.getServiceInfos().getServiceInfoVector();
ServiceInfo serviceInfo = (ServiceInfo) serviceInfoVector.elementAt(0);
ServiceDetail sd = this.proxy.get_serviceDetail(serviceInfo.getServiceKey());
Vector<?> v = sd.getBusinessServiceVector();
bs = (BusinessService) v.elementAt(0);
return bs;
}
catch (DriverRegistroServiziNotFound e){
throw e;
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessService]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessService]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessService]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di aggiungere nel registro una nuovo servizio con nome <var>serviceName</var>
* associandolo alla businessEntity <var>be</var>
* In caso un servizio con lo stesso nome sia gia' registrato non non fa niente e ritorna null.
*
* @param be BusinessEntity.
* @param idServ Identificativo del Servizio
* @return il BusinessService inserito, se l'inserimento ha successo, null altrimenti.
*/
protected BusinessService createBusinessService(BusinessEntity be, IDServizio idServ) throws DriverRegistroServiziException{
if ( be==null || idServ==null || idServ.getTipo()==null || idServ.getNome()==null || idServ.getVersione()==null)
throw new DriverRegistroServiziException("[UDDILib.createBusinessService]: Alcuni parametri non definiti");
BusinessService bs = null;
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
String keyService = idServ.getTipo() + "/" + idServ.getNome()+ ":"+idServ.getVersione();
String businessKey = be.getBusinessKey();
// verifico che non esista gia' un servizio associato a be
try{
bs = getBusinessService(be,idServ);
}catch(DriverRegistroServiziNotFound e){
// ignore
}
/*entro solo se il servizio non e' gia stato registrato*/
if(bs==null){
bs = new BusinessService("");
bs.setDefaultNameString(keyService,null);
bs.setBusinessKey(businessKey);
Vector<BusinessService> services = new Vector<BusinessService>();
services.addElement(bs);
ServiceDetail sd = this.proxy.save_service(token.getAuthInfoString(),services);
Vector<?> businessServices = sd.getBusinessServiceVector();
bs = (BusinessService) businessServices.elementAt(0);
BusinessServices bds = be.getBusinessServices();
bds.add(bs);
be.setBusinessServices(bds);
Vector<BusinessEntity> entities = new Vector<BusinessEntity>();
entities.addElement(be);
this.proxy.save_business(token.getAuthInfoString(),entities);
}
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.createBusinessService]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.createBusinessService]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.createBusinessService]: "+e.getMessage(),e);
}
return bs;
}
/**
* Si occupa di cancellare il servizio <var>servizio</var> registrato nella BusinessEntity
* identificata dai parametri <var>tipo</var> e <var>cod</var>.
*
* @param idServ Identificativo del Servizio
*/
protected void deleteBusinessService(IDServizio idServ) throws DriverRegistroServiziException{
if ( idServ==null || idServ.getTipo()==null || idServ.getNome()==null || idServ.getVersione()==null ||
idServ.getSoggettoErogatore()==null || idServ.getSoggettoErogatore().getTipo()==null || idServ.getSoggettoErogatore().getNome()==null)
throw new DriverRegistroServiziException("[UDDILib.deleteBusinessService]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
FindQualifiers findQualifiers = new FindQualifiers();
Vector<FindQualifier> qualifier = new Vector<FindQualifier>();
qualifier.add(new FindQualifier(FindQualifier.exactNameMatch));
qualifier.add(new FindQualifier(FindQualifier.caseSensitiveMatch));
findQualifiers.setFindQualifierVector(qualifier);
IdentifierBag ib= new IdentifierBag();
KeyedReference k1 = new KeyedReference();
String keyBE = idServ.getSoggettoErogatore().getTipo()+ "/" + idServ.getSoggettoErogatore().getNome();
k1.setKeyValue(keyBE);
k1.setTModelKey(this.tmkID);
Vector<KeyedReference> keyedReferenceVector = new Vector<KeyedReference>();
keyedReferenceVector.add(k1);
ib.setKeyedReferenceVector(keyedReferenceVector);
Vector<Name> names = new Vector<Name>();
String keyService = idServ.getTipo() + "/" + idServ.getNome()+":"+idServ.getVersione();
names.add(new Name(keyService));
BusinessList businessList = this.proxy.find_business(null, null, ib, null, null, null,1);
Vector<?> businessInfoVector = businessList.getBusinessInfos().getBusinessInfoVector();
BusinessInfo businessInfo = (BusinessInfo) businessInfoVector.elementAt(0);
ServiceList serviceList = this.proxy.find_service(businessInfo.getBusinessKey(),names,null,null,findQualifiers,1);
Vector<?> serviceInfoVector = serviceList.getServiceInfos().getServiceInfoVector();
ServiceInfo serviceInfo = (ServiceInfo)serviceInfoVector.elementAt(0);
this.proxy.delete_service(token.getAuthInfoString(), serviceInfo.getServiceKey());
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.deleteBusinessService]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di ritornare il nome del BusinessService <var>bs</var>.
* @param bs BusinessService
* @return il nome del servizio se la ricerca ha successo.
*/
protected String getNomeBusinessService(BusinessService bs)throws DriverRegistroServiziException{
if ( bs==null )
throw new DriverRegistroServiziException("[UDDILib.getNomeBusinessService]: Alcuni parametri non definiti");
try{
return bs.getDefaultName().getText();
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getNomeBusinessService]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di assegnare al servizio <var>bs</var> il nome <var>nome</var>
*
* @param bs BusinessService
* @param idServ Identificativo del Servizio
* @return la BusinessService modificata, se la modifica ha successo, null altrimenti.
*/
protected BusinessService updateNomeBusinessService(BusinessService bs, IDServizio idServ)throws DriverRegistroServiziException{
if (bs==null || idServ==null || idServ.getTipo()==null || idServ.getNome()==null || idServ.getVersione()==null){
throw new DriverRegistroServiziException("[UDDILib.updateNomeBusinessService]: Alcuni parametri non definiti");
}
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
String keyService = idServ.getTipo() + "/" + idServ.getNome() + ":" + idServ.getVersione();
bs.setDefaultName(new Name(keyService));
Vector<BusinessService> services = new Vector<BusinessService>();
services.addElement(bs);
this.proxy.save_service(token.getAuthInfoString(),services);
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.updateNomeBusinessService]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.updateNomeBusinessService]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateNomeBusinessService]: "+e.getMessage(),e);
}
return bs;
}
/**
* Il metodo si occupa di cercare all'interno del registro il bindingTemplate che definisce il servizio <var>bs</var>.
*
* @param bs BusinessService.
* @return un BindingTemplate
*/
protected BindingTemplate getBindingTemplate(BusinessService bs)throws DriverRegistroServiziException{
if ( bs==null )
throw new DriverRegistroServiziException("[UDDILib.getBindingTemplate]: Alcuni parametri non definiti");
BindingTemplate bt=null;
try{
BindingDetail bindingDetailReturned = this.proxy.find_binding(null, bs.getServiceKey(), null, 1);
Vector<?> bindingTemplatesFound = bindingDetailReturned.getBindingTemplateVector();
bt = (BindingTemplate)(bindingTemplatesFound.elementAt(0));
}catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.getBindingTemplate]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getBindingTemplate]: "+e.getMessage(),e);
}
return bt;
}
/**
* Il metodo si occupa di aggiungere nel registro una nuovo bindingTemplate associato al servizio <var>bs</var>
*
* @param bs BusinessService.
* @return il BindingTemplate inserito, se l'inserimento ha successo
*/
protected BindingTemplate createBindingTemplate(BusinessService bs)throws DriverRegistroServiziException{
if ( bs==null )
throw new DriverRegistroServiziException("[UDDILib.createBindingTemplate]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
BindingTemplate bt = null;
//BindingTemplates bts = bs.getBindingTemplates();
BindingTemplates bts = new BindingTemplates();
String serviceKey = bs.getServiceKey();
bt = new BindingTemplate();
bt.setServiceKey(serviceKey);
AccessPoint ap = new AccessPoint();
ap.setText("url di default");
bt.setAccessPoint(ap);
Vector<BindingTemplate> templates = new Vector<BindingTemplate>();
templates.addElement(bt);
BindingDetail bindingDetail = this.proxy.save_binding(token.getAuthInfoString(),templates);
Vector<?> bd = bindingDetail.getBindingTemplateVector();
bt = (BindingTemplate) bd.elementAt(bd.size()-1);
bts.add(bt);
bs.setBindingTemplates(bts);
Vector<BusinessService> services = new Vector<BusinessService>();
services.addElement(bs);
this.proxy.save_service(token.getAuthInfoString(),services);
return bt;
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.createBindingTemplate]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.createBindingTemplate]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.createBindingTemplate]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di cercare all'interno del registro il TModel che definisce il servizio a cui e' associato<var>bt</var>
* @param bt BindingTemplate.
* @return un oggetto Tmodel se la ricerca ha successo
*/
protected TModel getTModel(BindingTemplate bt)throws DriverRegistroServiziException{
if ( bt==null )
throw new DriverRegistroServiziException("[UDDILib.getTModel]: Alcuni parametri non definiti");
TModel tm = null;
try{
TModelInstanceDetails tmid = bt.getTModelInstanceDetails();
TModelInstanceInfo tmii = tmid.get(0);
TModelDetail tmd = this.proxy.get_tModelDetail(tmii.getTModelKey());
Vector<?> v = tmd.getTModelVector();
tm = (TModel) v.elementAt(0);
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.getTModel]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.getTModel]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getTModel]: "+e.getMessage(),e);
}
return tm;
}
/**
* Il metodo si occupa di aggiungere nel registro un TModel associato al bindingTemplate <var>bt</var>
*
* @param bt BindingTemplate.
* @param idAccordo ID dell'accordo di Servizio
*/
protected void createTModelServizio(BindingTemplate bt,IDAccordo idAccordo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( bt==null || (idAccordo==null))
throw new DriverRegistroServiziException("[UDDILib.createTModelServizio]: Alcuni parametri non definiti");
TModel tm = null;
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
tm = getAccordoServizio(idAccordo);
TModelInstanceInfo tmii = new TModelInstanceInfo(tm.getTModelKey());
TModelInstanceDetails tmids = new TModelInstanceDetails();
tmids.add(tmii);
bt.setTModelInstanceDetails(tmids);
Vector<BindingTemplate> templates = new Vector<BindingTemplate>();
templates.addElement(bt);
this.proxy.save_binding(token.getAuthInfoString(),templates);
}
catch(DriverRegistroServiziNotFound e){
throw e;
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.createTModelServizio]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.createTModelServizio]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.createTModelServizio]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di recuperarie l'access point dal BindingTemplate <var>bt</var>.
* @param bt BindingTemplate
* @return una stringa contenente l'url all'XML del Servizio.
*/
protected String getAccessPoint(BindingTemplate bt)throws DriverRegistroServiziException{
if ( bt==null )
throw new DriverRegistroServiziException("[UDDILib.getAccessPoint]: Alcuni parametri non definiti");
try{
return bt.getAccessPoint().getText();
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getAccessPoint]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di settare l'access point specificato nel parametro<var>URL</var>
* nel BindingTemplate <var>bt</var>.
* @param bt BindingTemplate
* @param URL URL dell'XML associato al Servizio
* @return l'oggetto bindingTemplate modificato se tutto e' andato bene.
*/
protected BindingTemplate updateAccessPoint(BindingTemplate bt, String URL)throws DriverRegistroServiziException{
if ( bt==null || (URL==null) )
throw new DriverRegistroServiziException("[UDDILib.updateAccessPoint]: Alcuni parametri non definiti");
try{
AuthToken token = this.proxy.get_authToken(this.username,this.password);
AccessPoint ap = bt.getAccessPoint();
ap.setText(URL);
bt.setAccessPoint(ap);
Vector<BindingTemplate> templates = new Vector<BindingTemplate>();
templates.addElement(bt);
this.proxy.save_binding(token.getAuthInfoString(),templates);
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.updateAccessPoint]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.updateAccessPoint]: "+e.getMessage(),e);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateAccessPoint]: "+e.getMessage(),e);
}
return bt;
}
/**
* Il metodo si occupa di rimuovere l'accessoPoint dal BindingTemplate <var>bt</var> passato per parametro.
* @param bt BindingTemplate
* @return il BindingTemplate modificato
*/
protected BindingTemplate deleteAccessPoint(BindingTemplate bt)throws DriverRegistroServiziException{
if ( bt==null )
throw new DriverRegistroServiziException("[UDDILib.deleteAccessPoint]: Alcuni parametri non definiti");
try{
bt = updateAccessPoint(bt,"");
return bt;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.deleteAccessPoint]: "+e.getMessage(),e);
}
}
/* ******** M E T O D I S E R V I Z I ******** */
/**
* Il metodo si occupa di verificare se alla BusinessEntity identificata dai parametri
* e' stato registrato il servizio <var>servizio</var>.
*
* @param idServ Identificativo del servizio
* @return true se il servizio risulta registrato, false altrimenti
*/
public boolean existsServizio(IDServizio idServ) throws DriverRegistroServiziException{
if ( idServ==null || idServ.getSoggettoErogatore()==null)
throw new DriverRegistroServiziException("[UDDILib.existsServizio]: Alcuni parametri non definiti");
BusinessService bs = null;
try{
BusinessEntity be=getBusinessEntity(idServ.getSoggettoErogatore());
if(be==null)
throw new Exception("BusinessEntity is null");
bs=getBusinessService(be,idServ);
if(bs==null)
throw new Exception("BusinessService is null");
}catch (DriverRegistroServiziNotFound e){
return false;
}
catch(Exception e){
throw new DriverRegistroServiziException(e.getMessage(),e);
}
return true;
}
/**
* Il metodo si occupa di aggiungere nel registro un nuovo Servizio
* associato al soggetto identificato dai parametri <var>tipo</var> e <var>codice</var>.
*
* @param idServ Identificativo del servizio
* @param urlXML url dell'XML associato al Servizio.
* @param idAccordo ID dell'accordo di Servizio
*/
public void createServizio(IDServizio idServ,
String urlXML,IDAccordo idAccordo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idServ==null || idServ.getSoggettoErogatore()==null || (urlXML==null) || (idAccordo==null))
throw new DriverRegistroServiziException("[UDDILib.createServizio]: Alcuni parametri non definiti");
try{
// get Business Enity
BusinessEntity be = getBusinessEntity(idServ.getSoggettoErogatore());
// Add Business Service
BusinessService bs = createBusinessService(be,idServ);
// Add template (url servizio.xml)
BindingTemplate bt = null;
try{
bt = createBindingTemplate(bs);
}catch(Exception e){
// rollback
try{
deleteBusinessService(idServ);
}catch(Exception eRollback){
// ignore
}
throw e; // rilancio
}
// set Template (url servizio.xml)
try{
bt=updateAccessPoint(bt,urlXML);
}catch(Exception e){
// rollback
try{
deleteBusinessService(idServ);
}catch(Exception eRollback){
// ignore
}
throw e; // rilancio
}
// Add TModel per Accordo di Servizio
try{
createTModelServizio(bt,idAccordo);
}catch(Exception e){
// rollback
try{
deleteBusinessService(idServ);
}catch(Exception eRollback){
// ignore
}
throw e; // rilancio
}
}catch (DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.createServizio]: "+e.getMessage(),e);
}
}
/**
* Si occupa di recuperare la URL dell'XML associato alla porta di dominio
* registrata con il codice <var>codice</var>
*
* @param idServ Identificativo del servizio
* @return la url dell'XML associato alla porta di dominio
*/
public String getUrlXmlServizio(IDServizio idServ) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idServ==null || idServ.getSoggettoErogatore()==null )
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlServizio]: Alcuni parametri non definiti");
try{
BusinessEntity be = getBusinessEntity(idServ.getSoggettoErogatore());
BusinessService bs= getBusinessService(be,idServ);
BindingTemplate bt = getBindingTemplate(bs);
return getAccessPoint(bt);
}catch (DriverRegistroServiziNotFound e){
throw e;
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlServizio]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di impostare la url del file XML associato al Servizio
*
* @param idServ Identificativo del servizio
* @param url Url da impostare
*/
public void updateUrlXmlServizio(IDServizio idServ, String url)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( url==null || idServ==null || idServ.getSoggettoErogatore()==null )
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlServizio]: Alcuni parametri non definiti");
try{
BusinessEntity be = getBusinessEntity(idServ.getSoggettoErogatore());
BusinessService bs = getBusinessService(be,idServ);
BindingTemplate bt = getBindingTemplate(bs);
bt=updateAccessPoint(bt,url);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateUrlXmlServizio]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di modificare il nome di un Servizio
*
* @param idServOLD Vecchio Identificativo del Servizio
* @param idServNEW Nuovo Identificativo del Servizio
*/
public void updateIdServizio(IDServizio idServOLD,IDServizio idServNEW)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idServOLD==null || idServOLD.getTipo()==null || idServOLD.getNome()==null || idServOLD.getVersione()==null ||
idServOLD.getSoggettoErogatore()==null || idServOLD.getSoggettoErogatore().getTipo()==null || idServOLD.getSoggettoErogatore().getNome()==null)
throw new DriverRegistroServiziException("[UDDILib.modificaNomeServizio]: Alcuni parametri non definiti");
if ( idServNEW==null || idServNEW.getTipo()==null || idServNEW.getNome()==null || idServNEW.getVersione()==null ||
idServNEW.getSoggettoErogatore()==null || idServNEW.getSoggettoErogatore().getTipo()==null || idServNEW.getSoggettoErogatore().getNome()==null)
throw new DriverRegistroServiziException("[UDDILib.modificaNomeServizio]: Alcuni parametri non definiti");
try{
BusinessEntity be = getBusinessEntity(idServOLD.getSoggettoErogatore());
BusinessService bs = getBusinessService(be, idServOLD);
updateNomeBusinessService(bs,idServNEW);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.modificaNomeServizio]: "+e.getMessage(),e);
}
}
/**
* Si occupa di cancellare il servizio <var>servizio</var> registrato nel registro,
* identificato dai parametri.
*
* @param idServ Identificativo del servizio
*/
public void deleteServizio(IDServizio idServ) throws DriverRegistroServiziException{
if ( idServ==null || idServ.getSoggettoErogatore()==null )
throw new DriverRegistroServiziException("[UDDILib.deleteServizio]: Alcuni parametri non definiti");
try{
deleteBusinessService(idServ);
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.deleteServizio]: "+e.getMessage(),e);
}
}
/**
* Il metodo si occupa di modificare la TModel associata al servizio
*
* @param idServ Identificativo del servizio
* @param newIDAccordoServizio Nuovo accordo di servizio
*/
public void updateAccordoServizio(IDServizio idServ, IDAccordo newIDAccordoServizio)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if ( idServ==null || idServ.getSoggettoErogatore()==null || newIDAccordoServizio==null)
throw new DriverRegistroServiziException("[UDDILib.updateAccordoServizio]: Alcuni parametri non definiti");
try{
BusinessEntity be = getBusinessEntity(idServ.getSoggettoErogatore());
BusinessService bs = getBusinessService(be, idServ);
BindingTemplate bt = getBindingTemplate(bs);
createTModelServizio(bt,newIDAccordoServizio);
}
catch (DriverRegistroServiziNotFound e){
throw e;
}catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.updateAccordoServizio]: "+e.getMessage(),e);
}
}
/**
* Si occupa di recuperare un array di URL che puntano a XML di servizi presente
* nel soggetto identificato dai parametri, che possiedeno l'accordo di servizio <var>accordo</var>.
*
* @param idSogg Identificativo del Soggetto erogatore
* @param idAccordo Accordo di Servizio
* @return Array di url di XML dei servizi
*/
public String[] getUrlXmlServizi(IDSoggetto idSogg, IDAccordo idAccordo)throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
if(idSogg==null || idAccordo==null)
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlServizi]: Alcuni parametri non definiti");
try{
// Soggetto
BusinessEntity be = getBusinessEntity(idSogg);
// Filtro per Accordi
TModelBag bagAccordo = new TModelBag();
TModel accordoS = getAccordoServizio(idAccordo);
bagAccordo.add(new TModelKey(accordoS.getTModelKey()));
FindQualifiers findQualifiers = new FindQualifiers();
Vector<FindQualifier> qualifier = new Vector<FindQualifier>();
qualifier.add(new FindQualifier(FindQualifier.exactNameMatch));
qualifier.add(new FindQualifier(FindQualifier.caseSensitiveMatch));
findQualifiers.setFindQualifierVector(qualifier);
// l'ultimo parametro lo lascerei indefinito.
// Richiede un intero che stabilisce il numero di risultati che la ricerca find_service deve produrre.
// Ma noi a priori non lo possiamo sapere (anche se la ricerca dovrebbe essere sempre 1 o 2).
// Effettuo il filtro per bagAccordo
ServiceList serviceList = this.proxy.find_service(be.getBusinessKey(), null, null, bagAccordo, findQualifiers, -1);
if(serviceList.getServiceInfos()==null || serviceList.getServiceInfos().size()==0)
throw new DriverRegistroServiziNotFound("BusinessServices non trovate");
//questo vettore contiene tutti i servizi della businessEntity
Vector<?> serviceInfoVector = serviceList.getServiceInfos().getServiceInfoVector();
if(serviceInfoVector.size()==0)
throw new Exception("Servizi non trovati");
//e ora vado ad analizzare un servizio alla volta
String[]url = new String[serviceInfoVector.size()];
for (int i=0; i<serviceInfoVector.size(); i++){
ServiceInfo serviceInfo = (ServiceInfo) serviceInfoVector.elementAt(i);
//System.out.println("SERVIZIO ["+serviceInfo.getServiceKey()+"]");
ServiceDetail sd = this.proxy.get_serviceDetail(serviceInfo.getServiceKey());
Vector<?> v = sd.getBusinessServiceVector();
BusinessService bs = (BusinessService) v.elementAt(0);
BindingTemplate bt=getBindingTemplate(bs);
url[i] = getAccessPoint(bt);
if(url[i]==null)
throw new Exception("access point non presente?");
}
return url;
}
catch(DriverRegistroServiziNotFound e){
throw e;
}
catch(TransportException e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlServizi]: "+e.getMessage(),e);
}catch(Exception e){
throw new DriverRegistroServiziException("[UDDILib.getUrlXmlServizi]: "+e.getMessage(),e);
}
}
/**
* @param idAccordo
* @param soggettoErogatore
* @param tipoServizio
* @param nomeServizio
* @return URL XML dei servizi che rispettano la ricerca
* @throws DriverRegistroServiziException
* @throws DriverRegistroServiziNotFound
*/
protected String[] getUrlXMLServiziBySearch(IDAccordo idAccordo,IDSoggetto soggettoErogatore,String tipoServizio,String nomeServizio) throws DriverRegistroServiziException,DriverRegistroServiziNotFound{
try{
// Filtro Soggetto
String businessKey = null;
if(soggettoErogatore!=null && soggettoErogatore.getTipo()!=null && soggettoErogatore.getNome()!=null){
try{
BusinessEntity be = this.getBusinessEntity(soggettoErogatore);
if(be!=null)
businessKey = be.getBusinessKey();
}catch(DriverRegistroServiziNotFound e){
throw new DriverRegistroServiziNotFound("[getBusinessServices] Soggetto ["+soggettoErogatore+"] usato come filtro non presente",e);
}
}
// Filtro accordo
TModelBag bagAccordo = null;
if(idAccordo!=null){
try{
bagAccordo = new TModelBag();
TModel accordoS = getAccordoServizio(idAccordo);
bagAccordo.add(new TModelKey(accordoS.getTModelKey()));
}catch(DriverRegistroServiziNotFound e){
throw new DriverRegistroServiziNotFound("[getBusinessServices] Accordo ["+idAccordo.toString()+"] usato come filtro non presente",e);
}
}
// Filtro Servizio
String keyService = null;
if(tipoServizio!=null && nomeServizio!=null){
keyService = tipoServizio+ "/" + nomeServizio;
}else if(tipoServizio!=null){
keyService = tipoServizio+ "/%";
}else if(nomeServizio!=null){
keyService = "%/"+nomeServizio;
}else{
keyService = "%/%";
}
Name nome = new Name(keyService);
Vector<Name> nomi = new Vector<Name>();
nomi.add(nome);
// FindQualifiers
FindQualifiers findQualifiers = null;
if("%/%".equals(keyService)==false){
findQualifiers = new FindQualifiers();
Vector<FindQualifier> qualifier = new Vector<FindQualifier>();
qualifier.add(new FindQualifier(FindQualifier.exactNameMatch));
qualifier.add(new FindQualifier(FindQualifier.caseSensitiveMatch));
findQualifiers.setFindQualifierVector(qualifier);
}
// l'ultimo parametro lo lascerei indefinito.
// Richiede un intero che stabilisce il numero di risultati che la ricerca find_service deve produrre.
// Ma noi a priori non lo possiamo sapere (anche se la ricerca dovrebbe essere sempre 1 o 2).
// Effettuo il filtro per bagAccordo
ServiceList serviceList = this.proxy.find_service(businessKey, nomi, null, bagAccordo, findQualifiers, UDDILib.MAX_SEARCH);
//questo vettore contiene tutti i servizi della businessEntity
Vector<?> serviceInfoVector = serviceList.getServiceInfos().getServiceInfoVector();
if(serviceInfoVector.size()==0){
throw new DriverRegistroServiziNotFound("Non esistono BusinessService che rispettano il filtro selezionato accordo["+idAccordo+"] soggetto["+soggettoErogatore+"] tipo_servizio["+tipoServizio+"] nome_servizio["+nomeServizio+"]");
}
//e ora vado ad analizzare un servizio alla volta
String[]url = new String[serviceInfoVector.size()];
for (int i=0; i<serviceInfoVector.size(); i++){
ServiceInfo serviceInfo = (ServiceInfo) serviceInfoVector.elementAt(i);
//System.out.println("SERVIZIO ["+serviceInfo.getServiceKey()+"]");
ServiceDetail sd = this.proxy.get_serviceDetail(serviceInfo.getServiceKey());
Vector<?> v = sd.getBusinessServiceVector();
BusinessService bs = (BusinessService) v.elementAt(0);
BindingTemplate bt=getBindingTemplate(bs);
url[i] = getAccessPoint(bt);
if(url[i]==null)
throw new Exception("access point non presente?");
}
return url;
}
catch (UDDIException e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessService]: "+e.getMessage(),e);
}
catch (TransportException e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessService]: "+e.getMessage(),e);
}
catch( DriverRegistroServiziNotFound de){
throw de;
}
catch (Exception e){
throw new DriverRegistroServiziException("[UDDILib.getBusinessService]: "+e.getMessage(),e);
}
}
}