MisurazioniTransazione.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.controllo_traffico.beans;

import java.io.Serializable;
import java.util.Date;

import org.openspcoop2.core.constants.TipoPdD;

/**
 * MisurazioniTransazione 
 *
 * @author Andrea Poli (poli@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 */
public class MisurazioniTransazione implements Serializable , Cloneable {

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

	private TipoPdD tipoPdD;
	private String protocollo;
	
	private java.util.Date dataIngressoRichiesta;
	private java.util.Date dataUscitaRichiesta;
	private java.util.Date dataIngressoRisposta;
	private java.util.Date dataUscitaRisposta;

	private java.lang.Long richiestaIngressoBytes;
	private java.lang.Long richiestaUscitaBytes;
	private java.lang.Long rispostaIngressoBytes;
	private java.lang.Long rispostaUscitaBytes;
	
	private int esitoTransazione;

	public String getProtocollo() {
		return this.protocollo;
	}
	public void setProtocollo(String protocollo) {
		this.protocollo = protocollo;
	}
	public int getEsitoTransazione() {
		return this.esitoTransazione;
	}
	public void setEsitoTransazione(int esitoTransazione) {
		this.esitoTransazione = esitoTransazione;
	}
	public TipoPdD getTipoPdD() {
		return this.tipoPdD;
	}
	public void setTipoPdD(TipoPdD tipoPdD) {
		this.tipoPdD = tipoPdD;
	}
	
	public java.util.Date getDataIngressoRichiesta() {
		return this.dataIngressoRichiesta;
	}
	public void setDataIngressoRichiesta(java.util.Date dataIngressoRichiesta) {
		this.dataIngressoRichiesta = dataIngressoRichiesta;
	}
	public java.util.Date getDataUscitaRichiesta() {
		return this.dataUscitaRichiesta;
	}
	public void setDataUscitaRichiesta(java.util.Date dataUscitaRichiesta) {
		this.dataUscitaRichiesta = dataUscitaRichiesta;
	}
	public java.util.Date getDataIngressoRisposta() {
		return this.dataIngressoRisposta;
	}
	public void setDataIngressoRisposta(java.util.Date dataIngressoRisposta) {
		this.dataIngressoRisposta = dataIngressoRisposta;
	}
	public java.util.Date getDataUscitaRisposta() {
		return this.dataUscitaRisposta;
	}
	public void setDataUscitaRisposta(java.util.Date dataUscitaRisposta) {
		this.dataUscitaRisposta = dataUscitaRisposta;
	}
	public java.lang.Long getRichiestaIngressoBytes() {
		return this.richiestaIngressoBytes;
	}
	public void setRichiestaIngressoBytes(java.lang.Long richiestaIngressoBytes) {
		this.richiestaIngressoBytes = richiestaIngressoBytes;
	}
	public java.lang.Long getRichiestaUscitaBytes() {
		return this.richiestaUscitaBytes;
	}
	public void setRichiestaUscitaBytes(java.lang.Long richiestaUscitaBytes) {
		this.richiestaUscitaBytes = richiestaUscitaBytes;
	}
	public java.lang.Long getRispostaIngressoBytes() {
		return this.rispostaIngressoBytes;
	}
	public void setRispostaIngressoBytes(java.lang.Long rispostaIngressoBytes) {
		this.rispostaIngressoBytes = rispostaIngressoBytes;
	}
	public java.lang.Long getRispostaUscitaBytes() {
		return this.rispostaUscitaBytes;
	}
	public void setRispostaUscitaBytes(java.lang.Long rispostaUscitaBytes) {
		this.rispostaUscitaBytes = rispostaUscitaBytes;
	}
	
	
	
	// **** UTILITIES ****
	
	public static String serialize(MisurazioniTransazione misurazione){
		StringBuilder bf = new StringBuilder();
		
		
		if(misurazione.tipoPdD!=null){
			bf.append(misurazione.tipoPdD.getTipo());
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		if(misurazione.protocollo!=null){
			bf.append(misurazione.protocollo);
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		if(misurazione.dataIngressoRichiesta!=null){
			bf.append(misurazione.dataIngressoRichiesta.getTime());
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		if(misurazione.dataUscitaRichiesta!=null){
			bf.append(misurazione.dataUscitaRichiesta.getTime());
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		if(misurazione.dataIngressoRisposta!=null){
			bf.append(misurazione.dataIngressoRisposta.getTime());
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		if(misurazione.dataUscitaRisposta!=null){
			bf.append(misurazione.dataUscitaRisposta.getTime());
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		if(misurazione.richiestaIngressoBytes!=null){
			bf.append(misurazione.richiestaIngressoBytes);
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		if(misurazione.richiestaUscitaBytes!=null){
			bf.append(misurazione.richiestaUscitaBytes);
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		if(misurazione.rispostaIngressoBytes!=null){
			bf.append(misurazione.rispostaIngressoBytes);
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		if(misurazione.rispostaUscitaBytes!=null){
			bf.append(misurazione.rispostaUscitaBytes);
		}
		else{
			bf.append("-");
		}
		bf.append("\n");
		
		bf.append(misurazione.esitoTransazione);
		
		return bf.toString();
	}
	
	public static MisurazioniTransazione deserialize(String s) throws Exception{
		MisurazioniTransazione misurazioni = new MisurazioniTransazione();
		String [] tmp = s.split("\n");
		if(tmp==null){
			throw new Exception("Wrong Format");
		}
		if(tmp.length!=11){
			throw new Exception("Wrong Format (size: "+tmp.length+")");
		}
		for (int i = 0; i < tmp.length; i++) {
			if(i==0){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.tipoPdD = TipoPdD.toTipoPdD(tmpValue);
				}
			}
			else if(i==1){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.protocollo = tmpValue;
				}
			}
			else if(i==2){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.dataIngressoRichiesta = new Date(Long.parseLong(tmpValue));
				}
			}
			else if(i==3){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.dataUscitaRichiesta = new Date(Long.parseLong(tmpValue));
				}
			}
			else if(i==4){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.dataIngressoRisposta = new Date(Long.parseLong(tmpValue));
				}
			}
			else if(i==5){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.dataUscitaRisposta = new Date(Long.parseLong(tmpValue));
				}
			}
			else if(i==6){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.richiestaIngressoBytes = Long.parseLong(tmpValue);
				}
			}
			else if(i==7){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.richiestaUscitaBytes = Long.parseLong(tmpValue);
				}
			}
			else if(i==8){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.rispostaIngressoBytes = Long.parseLong(tmpValue);
				}
			}
			else if(i==9){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.rispostaUscitaBytes = Long.parseLong(tmpValue);
				}
			}
			else if(i==10){
				String tmpValue = tmp[i].trim();
				if(tmpValue!=null && !"-".equals(tmpValue)){
					misurazioni.esitoTransazione = Integer.parseInt(tmpValue);
				}
			}
		}
		
		return misurazioni;
	}
}