IDServizio.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.id;
import org.openspcoop2.core.constants.TipologiaServizio;
import org.openspcoop2.utils.Utilities;
/**
* Classe utilizzata per rappresentare un identificatore di un Servizio nel registro dei servizi
*
* @author Poli Andrea (apoli@link.it)
* @author Nardi Lorenzo (nardi@link.it)
* @author $Author$
* @version $Rev$, $Date$
*/
public class IDServizio implements java.io.Serializable, Cloneable {
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
/* ******** F I E L D S P R I V A T I ******** */
protected String tipo;
protected String nome;
protected Integer versione = 1;
protected IDSoggetto soggettoErogatore;
// Campi opzionali
protected String portType;
protected String azione;
protected String uriAccordoServizioParteComune;
protected TipologiaServizio tipologia;
public String getTipo() {
return this.tipo;
}
public String getNome() {
return this.nome;
}
public Integer getVersione() {
return this.versione;
}
public IDSoggetto getSoggettoErogatore() {
return this.soggettoErogatore;
}
@Deprecated
public void setTipo(String tipo) {
this.tipo = tipo;
}
@Deprecated
public void setNome(String nome) {
this.nome = nome;
}
@Deprecated
public void setVersione(Integer versione) {
this.versione = versione;
}
@Deprecated
public void setSoggettoErogatore(IDSoggetto erogatore) {
this.soggettoErogatore = erogatore;
}
// Campi opzionali
public String getPortType() {
return this.portType;
}
public void setPortType(String portType) {
this.portType = portType;
}
public String getAzione() {
return this.azione;
}
public void setAzione(String azione) {
this.azione = azione;
}
public String getUriAccordoServizioParteComune() {
return this.uriAccordoServizioParteComune;
}
public void setUriAccordoServizioParteComune(String uriAccordoServizioParteComune) {
this.uriAccordoServizioParteComune = uriAccordoServizioParteComune;
}
public TipologiaServizio getTipologia() {
return this.tipologia;
}
public void setTipologia(TipologiaServizio tipologia) {
this.tipologia = tipologia;
}
@Override
public String toString(){
return this.toString(true);
}
public String toString(boolean printAzione){
StringBuilder bf = new StringBuilder();
if(this.soggettoErogatore!=null){
bf.append(this.soggettoErogatore.getTipo());
bf.append("/");
bf.append(this.soggettoErogatore.getNome());
bf.append(":");
}
bf.append(this.tipo);
bf.append("/");
bf.append(this.nome);
bf.append(":");
bf.append(this.versione);
if(printAzione && this.azione!=null){
bf.append(":");
bf.append(this.azione);
}
return bf.toString();
}
@Override
public boolean equals(Object object){
if(object==null)
return false;
if(!Utilities.equalsClass(object,this))
return false;
IDServizio id = (IDServizio) object;
return this.equals(id, true);
}
public boolean equals(IDServizio id, boolean checkAzione){
// TIPO
if(this.getTipo()==null){
if(id.getTipo()!=null)
return false;
}else{
if(this.getTipo().equals(id.getTipo())==false)
return false;
}
// NOME
if(this.getNome()==null){
if(id.getNome()!=null)
return false;
}else{
if(this.getNome().equals(id.getNome())==false)
return false;
}
// VERSIONE
if(this.getVersione()==null) {
if(id.getVersione()!=null) {
return false;
}
}
else {
if(id.getVersione()==null) {
return false;
}
if(this.getVersione().intValue()!=id.getVersione().intValue()){
return false;
}
}
// AZIONE
if(checkAzione) {
if(this.getAzione()==null){
if(id.getAzione()!=null)
return false;
}else{
if(this.getAzione().equals(id.getAzione())==false)
return false;
}
}
// Soggetto EROGATORE
if(this.getSoggettoErogatore()==null){
if(id.getSoggettoErogatore()!=null)
return false;
}else{
if(this.getSoggettoErogatore().equals(id.getSoggettoErogatore())==false)
return false;
}
return true;
}
// Utile per usare l'oggetto in hashtable come chiave
@Override
public int hashCode(){
return this.toString().hashCode();
}
@Override
public IDServizio clone(){
IDServizio s = null;
try {
s = (IDServizio) super.clone();
}catch(Throwable t) {
s = new IDServizio();
}
if(this.soggettoErogatore!=null){
IDSoggetto sogg = this.soggettoErogatore.clone();
s.setSoggettoErogatore(sogg);
}
if(this.tipo!=null)
s.setTipo(new String(this.tipo));
if(this.nome!=null)
s.setNome(new String(this.nome));
s.setVersione(this.versione);
if(this.portType!=null)
s.setPortType(new String(this.portType));
if(this.azione!=null)
s.setAzione(new String(this.azione));
if(this.tipologia!=null)
s.setTipologia(this.tipologia);
if(this.uriAccordoServizioParteComune!=null)
s.setUriAccordoServizioParteComune(new String(this.uriAccordoServizioParteComune));
return s;
}
public String toFormatString(){
StringBuilder sb = new StringBuilder();
sb.append(this.soggettoErogatore.getTipo());
sb.append("/");
sb.append(this.soggettoErogatore.getNome());
sb.append("/");
sb.append(this.tipo);
sb.append("/");
sb.append(this.nome);
sb.append("/");
sb.append(this.versione);
return sb.toString();
}
public static IDServizio toIDServizio(String formatString) throws Exception {
String [] tmp = formatString.split("/");
if(tmp.length!=5) {
throw new Exception("Formato non supportato, attesi 5 valori, trovati "+tmp.length);
}
String tipoSoggettoErogatore = tmp[0];
String nomeSoggettoErogatore = tmp[1];
String tipo = tmp[2];
String nome = tmp[3];
String versioneS = tmp[4];
int versione = Integer.valueOf(versioneS);
IDServizio idServizio = new IDServizio();
idServizio.soggettoErogatore = new IDSoggetto(tipoSoggettoErogatore, nomeSoggettoErogatore);
idServizio.tipo=tipo;
idServizio.nome=nome;
idServizio.versione=versione;
return idServizio;
}
}