RichiestaApplicativa.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.pdd.config;

import java.util.Map;

import org.openspcoop2.core.id.IDAccordo;
import org.openspcoop2.core.id.IDPortaApplicativa;
import org.openspcoop2.core.id.IDServizio;
import org.openspcoop2.core.id.IDSoggetto;
import org.openspcoop2.pdd.core.IntegrationContext;
import org.openspcoop2.pdd.core.ProtocolContext;
import org.openspcoop2.utils.beans.BaseBean;

/**
 * Classe contenente i dati di una richiesta applicativa. 
 *
 *
 * @author Poli Andrea (apoli@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 */

public class RichiestaApplicativa extends BaseBean 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  ******** */

	/** Identificatore del Soggetto che sta' richiedendo il servizio */
	private IDSoggetto soggettoFruitore;
	/** IDAccordo */
	private IDAccordo idAccordo;
	/** IDServizio */
	private IDServizio idServizio;
	/** Identificatore della PortaApplicativa */
	private IDPortaApplicativa idPortaApplicativa;
	/** Nome del Servizio Applicativo che eroga il servizio */
	private String servizioApplicativo;
	/** Identificatore del modulo OpenSPCoop che ha gestito la richiesta, e che sta aspettando una risposta */
	private String idModuloInAttesa;
	/** Dominio di gestione */
	private IDSoggetto dominio;
	/** Indica il tipo di scenario di cooperazione da intraprendere. */
	private String scenario;
	/** Indica se deve essere attesa o meno una ricevuta asincrona, in caso di profili asincroni */
	private boolean ricevutaAsincrona;
	/** Filtri per identificazione PA */
	private Map<String, String> filtroProprietaPorteApplicative;
	 /** Profilo di Gestione */
	private String profiloGestione = null;
	/** Nome del Servizio Applicativo che sta' richiedendo il servizio */
	private String identitaServizioApplicativoFruitore;
	/** ID di CorrelazioneApplicativa */
	private String idCorrelazioneApplicativa;
	/** ID di CorrelazioneApplicativaRisposta */
	private String idCorrelazioneApplicativaRisposta;
	/** LocalForward */
	private boolean localForward;
	
	/** Informazioni protocollo */
	private ProtocolContext protocol;
	/** Informazioni di integrazione */
	private IntegrationContext integrazione;



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

	public RichiestaApplicativa(IDSoggetto sog,String idModulo, IDSoggetto dominio, IDPortaApplicativa idPA){
		this(sog, idModulo, dominio, idPA.getIdentificativiErogazione().getIdServizio());
		this.idPortaApplicativa = idPA;
	}
	public RichiestaApplicativa(IDSoggetto sog,IDSoggetto dominio, IDPortaApplicativa idPA){
		this(sog, null, dominio, idPA.getIdentificativiErogazione().getIdServizio());
		this.idPortaApplicativa = idPA;
	}
	public RichiestaApplicativa(IDSoggetto sog,String idModulo,IDSoggetto dominio, IDServizio idServizio){
		this.soggettoFruitore = sog;
		this.idServizio = idServizio;
		this.idModuloInAttesa = idModulo;
		this.dominio = dominio;
	}




	/* ********  S E T T E R   ******** */
	/**
	 * Imposta l'identificatore del Soggetto che sta' richiedendo il servizio
	 *
	 * @param idSoggetto Identificatore del Soggetto.
	 * 
	 */
	public void setSoggettoFruitore(IDSoggetto idSoggetto){
		this.soggettoFruitore = idSoggetto;
	}
	/**
	 * Imposta il nome del Servizio Applicativo che eroga il servizio
	 *
	 * @param idServizio Nome del Servizio Applicativo.
	 * 
	 */
	public void setServizioApplicativo(String idServizio){
		this.servizioApplicativo = idServizio;
	} 
	/**
	 * Identificatore del modulo OpenSPCoop che ha gestito la richiesta, 
	 * e che sta aspettando una risposta.
	 *
	 * @param idModulo Identificatore del modulo OpenSPCoop che sta aspettando una risposta.
	 * 
	 */
	public void setIdModuloInAttesa(String idModulo){
		this.idModuloInAttesa = idModulo;
	} 
	/**
	 * Imposta il dominio di gestione
	 * 
	 * @param dominio Dominio di gestione
	 * 
	 */
	public void setDominio(IDSoggetto dominio) {
		this.dominio = dominio;
	}
	/**
	 * Imposta il tipo di scenario di cooperazione da intraprendere
	 * 
	 * @param scenario tipo di scenario di cooperazione da intraprendere
	 * 
	 */
	public void setScenario(String scenario) {
		this.scenario = scenario;
	}
	/**
	 * Indicazione sull'attesa di una ricevuta asincrona
	 * 
	 * @param ricevutaAsincrona Indicazione  sull'attesa di una ricevuta asincrona
	 */
	public void setRicevutaAsincrona(boolean ricevutaAsincrona) {
		this.ricevutaAsincrona = ricevutaAsincrona;
	}
	
	public void setProfiloGestione(String profiloGestione) {
		this.profiloGestione = profiloGestione;
	}
	
	

	/* ********  G E T T E R   ******** */
	/**
	 * Ritorna l'identificatore del Soggetto che sta' richiedendo il servizio
	 *
	 * @return Identificatore del Soggetto.
	 * 
	 */
	public IDSoggetto getSoggettoFruitore(){
		return this.soggettoFruitore;
	}
	/**
	 * Ritorna l'identificativo del servizio all'interno del registro dei servizi.
	 *
	 * @return Identificativo del servizio
	 * 
	 */
	public IDServizio getIDServizio(){
		return this.idServizio;
	}

	public void updateIDServizio(IDServizio idServizio) {
		this.idServizio = idServizio;
	}
	
	// Metodi che servono per il clone
	public IDServizio getIdServizio() {
		return this.idServizio;
	}
	public void setIdServizio(IDServizio idServizio) {
		this.idServizio = idServizio;
	}
	
	/**
	 * Ritorna il nome del Servizio Applicativo che eroga il servizio
	 *
	 * @return Nome del Servizio Applicativo.
	 * 
	 */
	public String getServizioApplicativo(){
		return this.servizioApplicativo;
	} 
	/**
	 * Ritorna l'identificatore del modulo OpenSPCoop che ha gestito la richiesta, 
	 * e che sta aspettando una risposta.
	 *
	 * @return Identificatore del modulo OpenSPCoop che sta aspettando una risposta.
	 * 
	 */
	public String getIdModuloInAttesa(){
		return this.idModuloInAttesa;
	}
	/**
	 *  Ritorna il dominio di gestione
	 *  
	 * @return dominio di gestione.
	 * 
	 */
	public IDSoggetto getDominio() {
		return this.dominio;
	}
	/**
	 * Ritorna il tipo di scenario di cooperazione da intraprendere
	 * 
	 * @return tipo di scenario di cooperazione da intraprendere
	 * 
	 */
	public String getScenario() {
		return this.scenario;
	}
	/**
	 * Indicazione sull'attesa di una ricevuta asincrona
	 * 
	 * @return Indicazione  sull'attesa di una ricevuta asincrona
	 */
	public boolean isRicevutaAsincrona() {
		return this.ricevutaAsincrona;
	}

	// Metodo che serve per clone
	public boolean getRicevutaAsincrona() {
		return this.ricevutaAsincrona;
	}
	
	public Map<String, String> getFiltroProprietaPorteApplicative() {
		return this.filtroProprietaPorteApplicative;
	}
	public void setFiltroProprietaPorteApplicative(
			Map<String, String> filtroProprietaPorteApplicative) {
		this.filtroProprietaPorteApplicative = filtroProprietaPorteApplicative;
	}
	
	public String getProfiloGestione() {
		return this.profiloGestione;
	}
	public String getIdentitaServizioApplicativoFruitore() {
		return this.identitaServizioApplicativoFruitore;
	}
	public void setIdentitaServizioApplicativoFruitore(
			String identitaServizioApplicativoFruitore) {
		this.identitaServizioApplicativoFruitore = identitaServizioApplicativoFruitore;
	}
	public String getIdCorrelazioneApplicativa() {
		return this.idCorrelazioneApplicativa;
	}
	public void setIdCorrelazioneApplicativa(String idCorrelazioneApplicativa) {
		this.idCorrelazioneApplicativa = idCorrelazioneApplicativa;
	}
	

	public IDAccordo getIdAccordo() {
		return this.idAccordo;
	}

	public void setIdAccordo(IDAccordo idAccordo) {
		this.idAccordo = idAccordo;
	}
	
	public String getIdCorrelazioneApplicativaRisposta() {
		return this.idCorrelazioneApplicativaRisposta;
	}
	public void setIdCorrelazioneApplicativaRisposta(
			String idCorrelazioneApplicativaRisposta) {
		this.idCorrelazioneApplicativaRisposta = idCorrelazioneApplicativaRisposta;
	}
	
	public boolean isLocalForward() {
		return this.localForward;
	}
	public void setLocalForward(boolean localForward) {
		this.localForward = localForward;
	}
	// metodo che serve per clone
	public boolean getLocalForward() {
		return this.localForward;
	}
	
	public IDPortaApplicativa getIdPortaApplicativa() {
		return this.idPortaApplicativa;
	}
	public void setIdPortaApplicativa(IDPortaApplicativa idPortaApplicativa) {
		this.idPortaApplicativa = idPortaApplicativa;
	}

	public ProtocolContext getProtocol() {
		return this.protocol;
	}
	public void setProtocol(ProtocolContext protocol) {
		this.protocol = protocol;
	}
	
	public IntegrationContext getIntegrazione() {
		return this.integrazione;
	}
	public void setIntegrazione(IntegrationContext integrazione) {
		this.integrazione = integrazione;
	}
}