OpenSPCoopStateless.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.core.state;

import java.io.Serializable;

import org.openspcoop2.message.OpenSPCoop2Message;
import org.openspcoop2.pdd.core.DimensioneMessaggiAttraversamentoPdD;
import org.openspcoop2.pdd.core.PdDContext;
import org.openspcoop2.pdd.core.TempiAttraversamentoPDD;
import org.openspcoop2.protocol.sdk.Busta;
import org.openspcoop2.protocol.sdk.state.StateMap;
import org.openspcoop2.protocol.sdk.state.StatelessMessage;
import org.openspcoop2.utils.UtilsException;

/**
 * Oggetto che rappresenta lo stato di una richiesta/risposta all'interno della PdD
 *
 * @author Poli Andrea (apoli@link.it)
 * @author Fabio Tronci (tronci@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 */
public class OpenSPCoopStateless extends OpenSPCoopState implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/* ---------- Messaggi  ----------*/
	private OpenSPCoop2Message richiestaMsg = null;
	private OpenSPCoop2Message rispostaMsg = null;
	
	/* ---------- Contiene i proprietari dei messaggi  ----------*/
	private String destinatarioRequestMsgLib;
	private String destinatarioResponseMsgLib;
	
	/* ---------- Contiene i tempi di attraversamento  ----------*/
	private TempiAttraversamentoPDD tempiAttraversamentoPDD = null;
	
	/* ---------- Contiene la dimensione dei messaggi  ----------*/
	private DimensioneMessaggiAttraversamentoPdD dimensioneMessaggiAttraversamentoPDD = null;

	/* ---------- ID di Correlazione Applicativa ------------ */
	private String idCorrelazioneApplicativa = null;
	private String idCorrelazioneApplicativaRisposta = null;

	/* ---------- PdDContext -------------*/
	private PdDContext pddContext = null;
	
	
	
	
	/* ---------- Costruttori  ----------*/
	public OpenSPCoopStateless(StatelessMessage richiesta,OpenSPCoop2Message richiestaMsg,
			StatelessMessage risposta,OpenSPCoop2Message rispostaMsg){
		this.richiestaStato = richiesta;
		this.richiestaMsg = richiestaMsg;
		this.rispostaStato = risposta;
		this.rispostaMsg = rispostaMsg;
		this.useConnection = false;
		this.tempiAttraversamentoPDD = new TempiAttraversamentoPDD();
		this.dimensioneMessaggiAttraversamentoPDD = new DimensioneMessaggiAttraversamentoPdD();
	}
	
	public OpenSPCoopStateless(StatelessMessage richiesta,OpenSPCoop2Message richiestaMsg){
		this.richiestaStato = richiesta;
		this.richiestaMsg = richiestaMsg;
		this.useConnection = false;
		this.tempiAttraversamentoPDD = new TempiAttraversamentoPDD();
		this.dimensioneMessaggiAttraversamentoPDD = new DimensioneMessaggiAttraversamentoPdD();
	}
	
	public OpenSPCoopStateless(){
		this.useConnection = false;
		this.tempiAttraversamentoPDD = new TempiAttraversamentoPDD();
		this.dimensioneMessaggiAttraversamentoPDD = new DimensioneMessaggiAttraversamentoPdD();
	}

	
	
	
	
	
	/* ----------- Init resource ------------*/
	@Override
	public void updateStatoRichiesta() throws UtilsException{
		
		StateMap pstmt = null;
		Busta bustaTmp = null;
		Busta bustaCorrelataTmp = null;
		if(this.richiestaStato!=null){
			if(this.richiestaStato.getPreparedStatement()!=null)
				pstmt = this.richiestaStato.getPreparedStatement();
			StatelessMessage statelessMessage = (StatelessMessage) this.richiestaStato;
			bustaTmp = statelessMessage.getBusta();
			bustaCorrelataTmp = statelessMessage.getBustaCorrelata();
		}
		
		this.richiestaStato = new StatelessMessage(this.connectionDB,this.logger);
		if(pstmt!=null){
			this.richiestaStato.addPreparedStatement(pstmt.getPreparedStatement());
		}
		if(bustaTmp!=null){
			((StatelessMessage) this.richiestaStato).setBusta(bustaTmp);
		}
		if(bustaCorrelataTmp!=null){
			((StatelessMessage) this.richiestaStato).setBustaCorrelata(bustaCorrelataTmp);
		}
		
	}
	@Override
	public void updateStatoRisposta() throws UtilsException{
		
		StateMap pstmt = null;
		Busta bustaTmp = null;
		Busta bustaCorrelataTmp = null;
		if(this.rispostaStato!=null){
			if(this.rispostaStato.getPreparedStatement()!=null)
				pstmt = this.rispostaStato.getPreparedStatement();
			StatelessMessage statelessMessage = (StatelessMessage) this.rispostaStato;
			bustaTmp = statelessMessage.getBusta();
			bustaCorrelataTmp = statelessMessage.getBustaCorrelata();
		}
		
		this.rispostaStato = new StatelessMessage(this.connectionDB,this.logger);
		if(pstmt!=null){
			this.rispostaStato.addPreparedStatement(pstmt.getPreparedStatement());
		}
		if(bustaTmp!=null){
			((StatelessMessage) this.rispostaStato).setBusta(bustaTmp);
		}
		if(bustaCorrelataTmp!=null){
			((StatelessMessage) this.rispostaStato).setBustaCorrelata(bustaCorrelataTmp);
		}

	}
	
	
	
	

	
	

	
	
	
	
	/* ----------- Serializzazione ------------*/

	public OpenSPCoopStateless rendiSerializzabile() {
		OpenSPCoopStateless stato = new OpenSPCoopStateless();
		StatelessMessage statoRichiesta = new StatelessMessage(null, null);
		StatelessMessage statoRisposta = new StatelessMessage(null, null);
		statoRichiesta.setBusta(((StatelessMessage)this.richiestaStato).getBusta());
		statoRisposta.setBusta(((StatelessMessage)this.rispostaStato).getBusta());
		stato.setStatoRichiesta(statoRichiesta);
		stato.setStatoRisposta(statoRisposta);
		stato.setTempiAttraversamentoPDD(this.getTempiAttraversamentoPDD());
		stato.setDimensioneMessaggiAttraversamentoPDD(this.getDimensioneMessaggiAttraversamentoPDD());
		return stato;
	}
	
	
	
	
	
	
	
	
	/* ----------- GET / SET ------------*/
	
	public void setDestinatarioRequestMsgLib(String nextLib) {
		this.destinatarioRequestMsgLib = nextLib;
	}

	public String getDestinatarioRequestMsgLib(){
		return this.destinatarioRequestMsgLib;
	}

	public String getDestinatarioResponseMsgLib() {
		return this.destinatarioResponseMsgLib;
	}

	public void setDestinatarioResponseMsgLib(String destinatarioResponseMsgLib) {
		this.destinatarioResponseMsgLib = destinatarioResponseMsgLib;
	}
	
	public void setRichiestaMsg(OpenSPCoop2Message richiestaMsg) {
		this.richiestaMsg = richiestaMsg;
	}
	
	public OpenSPCoop2Message getRichiestaMsg() {
		return this.richiestaMsg;
	}

	public void setRispostaMsg(OpenSPCoop2Message rispostaMsg) {
		this.rispostaMsg = rispostaMsg;
	}
	
	public OpenSPCoop2Message getRispostaMsg() {
		return this.rispostaMsg;
	}
	
	public TempiAttraversamentoPDD getTempiAttraversamentoPDD() {
		return this.tempiAttraversamentoPDD;
	}
	
	public void setTempiAttraversamentoPDD(TempiAttraversamentoPDD tempiAttraversamentoPDD) {
		this.tempiAttraversamentoPDD = tempiAttraversamentoPDD;
	}
	
	public DimensioneMessaggiAttraversamentoPdD getDimensioneMessaggiAttraversamentoPDD() {
		return this.dimensioneMessaggiAttraversamentoPDD;
	}

	public void setDimensioneMessaggiAttraversamentoPDD(
			DimensioneMessaggiAttraversamentoPdD dimensioneMessaggiAttraversamentoPDD) {
		this.dimensioneMessaggiAttraversamentoPDD = dimensioneMessaggiAttraversamentoPDD;
	}
	
	public String getIDCorrelazioneApplicativa() {
		return this.idCorrelazioneApplicativa;
	}

	public void setIDCorrelazioneApplicativa(String idCorrelazioneApplicativa) {
		this.idCorrelazioneApplicativa = idCorrelazioneApplicativa;
	}

	public PdDContext getPddContext() {
		return this.pddContext;
	}

	public void setPddContext(PdDContext pddContext) {
		this.pddContext = pddContext;
	}

	public String getIDCorrelazioneApplicativaRisposta() {
		return this.idCorrelazioneApplicativaRisposta;
	}

	public void setIDCorrelazioneApplicativaRisposta(
			String idCorrelazioneApplicativaRisposta) {
		this.idCorrelazioneApplicativaRisposta = idCorrelazioneApplicativaRisposta;
	}

}