Servizio.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.protocol.sdk;

import java.util.Date;

import org.openspcoop2.core.id.IDAccordo;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.message.constants.ServiceBinding;
import org.openspcoop2.protocol.sdk.constants.Inoltro;
import org.openspcoop2.protocol.sdk.constants.ProfiloDiCollaborazione;

/**
 * Classe utilizzata per rappresentare un Servizio presente all'interno
 * del Registro dei Servizi.
 *
 *
 * @author Poli Andrea (apoli@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 */

public class Servizio implements java.io.Serializable {

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 1L;

	/* ********  F I E L D S  P R I V A T I  ******** */

	/** Identificatore del Servizio nel registro dei servizi. */
	private IDServizio idServizio;
	/** IDAccordo del servizio */
	private IDAccordo idAccordo;
	private ServiceBinding serviceBinding;
	/** Profilo di Collaborazione. */
	private ProfiloDiCollaborazione profiloDiCollaborazione;
	/** Utilizzo di un ID-Collaborazione. */
	private boolean idCollaborazione;
	/** Utilizzo di per riferimento alla richiesta */
	private boolean idRiferimentoRichiesta;
	/** Consegna in ordine. */
	private boolean ordineConsegna;
	/** Scadenza (null se non presente) */
	private Date scadenza; 
	/** Scadenza */
	private long scadenzaMinuti = -1; 
	/** attributo 'inoltro' del profilo di trasmissione. */
	private Inoltro inoltro;
	/** attributo 'confermaRicezione' del profilo di trasmissione. */
	private boolean confermaRicezione;
	/** Tipo Servizio Correlato associato al servizio */
	private String tipoServizioCorrelato;
	/** Servizio Correlato associato al servizio */
	private String servizioCorrelato;
	/** Versione Servizio Correlato associato al servizio */
	private Integer versioneServizioCorrelato;
	/** Indicazione se e' un servizio correlato */
	private boolean correlato;


	
	
	public Busta convertToBusta(String protocollo,IDSoggetto fruitore){
		Busta busta = new Busta(protocollo);
		if(fruitore!=null){
			busta.setTipoMittente(fruitore.getTipo());
			busta.setMittente(fruitore.getNome());
			busta.setIdentificativoPortaMittente(fruitore.getCodicePorta());
		}
		if(this.idServizio!=null){
			if(this.idServizio.getSoggettoErogatore()!=null){
				busta.setTipoDestinatario(this.idServizio.getSoggettoErogatore().getTipo());
				busta.setDestinatario(this.idServizio.getSoggettoErogatore().getNome());
				busta.setIdentificativoPortaDestinatario(this.idServizio.getSoggettoErogatore().getCodicePorta());
			}
			busta.setTipoServizio(this.idServizio.getTipo());
			busta.setServizio(this.idServizio.getNome());
			busta.setVersioneServizio(this.idServizio.getVersione());
			busta.setAzione(this.idServizio.getAzione());
		}
		busta.setProfiloDiCollaborazione(this.profiloDiCollaborazione);
		busta.setInoltro(this.inoltro);
		busta.setConfermaRicezione(this.confermaRicezione);
		busta.setTipoServizioCorrelato(this.tipoServizioCorrelato);
		busta.setServizioCorrelato(this.servizioCorrelato);
		busta.setVersioneServizioCorrelato(this.versioneServizioCorrelato);

		return busta;
	}
	
	
	
	
	

	/* ********  C O S T R U T T O R E  ******** */

	/**
	 * Costruttore. 
	 *
	 * 
	 */
	public Servizio(){
	}






	/* ********  S E T T E R   ******** */

	/**
	 * Imposta l'identificatore del Servizio nel registro dei servizi.
	 *
	 * @param idServizio Identificatore del Servizio.
	 * 
	 */
	public void setIDServizio(IDServizio idServizio){
		this.idServizio = idServizio;
	} 
	/**
	 * Imposta il profilo di Collaborazione associato al servizio registrato nel Registro dei Servizi.
	 *
	 * @param p Profili di Collaborazione.
	 * 
	 */
	public void setProfiloDiCollaborazione(ProfiloDiCollaborazione p ){
		this.profiloDiCollaborazione = p;
	}
	/**
	 * Imposta la presenza o meno della collaborazione nel servizio registrato nel Registro dei Servizi.
	 *
	 * @param c true se la collaborazione e' presente, false altrimenti.
	 * 
	 */
	public void setCollaborazione(boolean c ){
		this.idCollaborazione = c;
	}
	public void setIdRiferimentoRichiesta(boolean c ){
		this.idRiferimentoRichiesta = c;
	}
	/**
	 * Imposta l'utilizzo della funzionalita' di consegna in ordine nel servizio registrato nel Registro dei Servizi.
	 *
	 * @param s true se la sequenza e' presente, false altrimenti.
	 * 
	 */
	public void setOrdineConsegna(boolean s){
		this.ordineConsegna = s;
	}
	/**
	 * Imposta la scadenza associata al servizio registrato nel Registro dei Servizi.
	 *
	 * @param s null se non e' presente una scadenza, la data di scadenza altrimenti.
	 * 
	 */
	public void setScadenza(Date s){
		this.scadenza = s;
	}
	/**
	 * Imposta il tipo di inoltro del profilo di trasmissione associato al servizio registrato nel Registro dei Servizi.
	 *
	 * @param i tipo di Inoltro.
	 * 
	 */
	public void setInoltro(Inoltro i ){
		this.inoltro = i;
	}
	/**
	 * Imposta la confermaRicezione o meno del profilo di trasmissione associato al servizio registrato nel Registro dei Servizi.
	 *
	 * @param cr true se si desidera una confermaRicezione, false altrimenti.
	 * 
	 */
	public void setConfermaRicezione(boolean cr){
		this.confermaRicezione = cr;
	}

	/**
	 * Imposta il servizio correlato associato al servizio
	 *
	 * @param nome Servizio Correlato
	 * 
	 */
	public void setServizioCorrelato(String nome){
		this.servizioCorrelato = nome;
	} 
	/**
	 * Imposta il tipo di servizio correlato associato al servizio
	 *
	 * @param tipoServizioCorrelato Tipo di Servizio Correlato
	 * 
	 */
	public void setTipoServizioCorrelato(String tipoServizioCorrelato) {
		this.tipoServizioCorrelato = tipoServizioCorrelato;
	} 
	
	public void setVersioneServizioCorrelato(Integer versioneServizioCorrelato) {
		this.versioneServizioCorrelato = versioneServizioCorrelato;
	}
	
	public void setCorrelato(boolean correlato) {
		this.correlato = correlato;
	}
	
	public void setScadenzaMinuti(long scadenzaMinuti) {
		this.scadenzaMinuti = scadenzaMinuti;
	}
	
	



	/* ********  G E T T E R   ******** */

	/**
	 * Ritorna l'identificatore del Servizio nel registro dei servizi.
	 *
	 * @return Identificatore del Servizio.
	 * 
	 */
	public IDServizio getIDServizio(){
		return this.idServizio;
	} 
	/**
	 * Ritorna il profilo di Collaborazione associato al servizio registrato nel Registro dei Servizi.
	 *
	 * @return Profili di Collaborazione.
	 * 
	 */
	public ProfiloDiCollaborazione getProfiloDiCollaborazione(){
		return this.profiloDiCollaborazione;
	}
	/**
	 * Ritorna la presenza o meno della collaborazione nel servizio registrato nel Registro dei Servizi.
	 *
	 * @return true se la collaborazione e' presente, false altrimenti.
	 * 
	 */
	public boolean getCollaborazione(){
		return this.idCollaborazione;
	}
	public boolean getIdRiferimentoRichiesta(){
		return this.idRiferimentoRichiesta;
	}
	/**
	 * Ritorna l'indicazione sull'utilizzo o meno della consegna in ordine nel servizio registrato nel Registro dei Servizi.
	 *
	 * @return true se la sequenza e' presente, false altrimenti.
	 * 
	 */
	public boolean getOrdineConsegna(){
		return this.ordineConsegna;
	}
	/**
	 * Ritorna la scadenza associata al servizio registrato nel Registro dei Servizi.
	 *
	 * @return null se non e' presente una scadenza, la data di scadenza, altrimenti.
	 * 
	 */
	public Date getScadenza(){
		return this.scadenza;
	}
	/**
	 * Ritorna il tipo di inoltro del profilo di trasmissione associato al servizio registrato nel Registro dei Servizi.
	 *
	 * @return tipo di Inoltro.
	 * 
	 */
	public Inoltro getInoltro(){
		return this.inoltro;
	}
	/**
	 * Ritorna la confermaRicezione o meno del profilo di trasmissione associato al servizio registrato nel Registro dei Servizi.
	 *
	 * @return true se si desidera una confermaRicezione, false altrimenti.
	 * 
	 */
	public boolean getConfermaRicezione(){
		return this.confermaRicezione;
	}
	/**
	 * Ritorna il servizio correlato associato al servizio
	 *
	 * @return Servizio Correlato
	 * 
	 */
	public String getServizioCorrelato(){
		return this.servizioCorrelato;
	}
	/**
	 * Ritorna il tipo di servizio correlato associato al servizio
	 *
	 * @return Tipo di Servizio Correlato
	 * 
	 */
	public String getTipoServizioCorrelato() {
		return this.tipoServizioCorrelato;
	}
	
	public Integer getVersioneServizioCorrelato() {
		return this.versioneServizioCorrelato;
	}

	public boolean isCorrelato() {
		return this.correlato;
	}

	public long getScadenzaMinuti() {
		return this.scadenzaMinuti;
	}

	public IDAccordo getIdAccordo() {
		return this.idAccordo;
	}
	
	public void setIdAccordo(IDAccordo idAccordo) {
		this.idAccordo = idAccordo;
	}
	
	public ServiceBinding getServiceBinding() {
		return this.serviceBinding;
	}

	public void setServiceBinding(ServiceBinding serviceBinding) {
		this.serviceBinding = serviceBinding;
	}

}