package com.rjconsultores.ventaboletos.vo.parada;

import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.PricingConexao;

public class ParadaVOConexionRuta {

	private Long conexionRutaTramoId;
	private Parada paradaOrigem;
	private Parada paradaDestino;
	private Parada paradaOrigemTrecho;
	private Parada paradaDestinoTrecho;
	private Integer rutaId;
	private String numRuta;
	private Short secuencia;
	private boolean valido;
	private Integer grupo;
	private String sentido;
	
	private ConexionCtrlVO conexionCtrl;
	private ConexionRutaCtrlVO conexionRutaCtrl;
	
	private PricingConexao pricingConexao;
	
	public ParadaVOConexionRuta() {
		super();
	}

	public ParadaVOConexionRuta(int grupo, Parada paradaOrigem, Parada paradaDestino, Integer rutaId, String numRuta, Short secuencia,
								boolean valido, Parada paradaOrigemTrecho, Parada paradaDestinoTrecho, ConexionCtrlVO conexionCtrl,
								ConexionRutaCtrlVO conexionRutaCtrl, String sentido) {
		super();
		this.grupo = grupo;
		this.paradaOrigem = paradaOrigem;
		this.paradaDestino = paradaDestino;
		this.rutaId = rutaId;
		this.numRuta = numRuta;
		this.secuencia = secuencia;
		this.valido = valido;
		this.paradaOrigemTrecho = paradaOrigemTrecho;
		this.paradaDestinoTrecho = paradaDestinoTrecho;
		this.conexionCtrl = conexionCtrl;
		this.conexionRutaCtrl = conexionRutaCtrl;
		this.sentido = sentido;
	}

	public Parada getParadaOrigem() {
		return paradaOrigem;
	}

	public void setParadaOrigem(Parada paradaOrigem) {
		this.paradaOrigem = paradaOrigem;
	}

	public Parada getParadaDestino() {
		return paradaDestino;
	}

	public void setParadaDestino(Parada paradaDestino) {
		this.paradaDestino = paradaDestino;
	}

	public Integer getRutaId() {
		return rutaId;
	}

	public void setRutaId(Integer rutaId) {
		this.rutaId = rutaId;
	}

	public Short getSecuencia() {
		return secuencia;
	}

	public void setSecuencia(Short secuencia) {
		this.secuencia = secuencia;
	}

	public boolean isValido() {
		return valido;
	}

	public void setValido(boolean valido) {
		this.valido = valido;
	}

	public Parada getParadaOrigemTrecho() {
		return paradaOrigemTrecho;
	}

	public void setParadaOrigemTrecho(Parada paradaOrigemTrecho) {
		this.paradaOrigemTrecho = paradaOrigemTrecho;
	}

	public Parada getParadaDestinoTrecho() {
		return paradaDestinoTrecho;
	}

	public void setParadaDestinoTrecho(Parada paradaDestinoTrecho) {
		this.paradaDestinoTrecho = paradaDestinoTrecho;
	}

	public String getNumRuta() {
		return numRuta;
	}

	public void setNumRuta(String numRuta) {
		this.numRuta = numRuta;
	}

	public Integer getGrupo() {
		return grupo;
	}

	public void setGrupo(Integer grupo) {
		this.grupo = grupo;
	}

	@Override
	public String toString() {
		return "ParadaVOConexionRuta [paradaOrigem=" + paradaOrigem + ", paradaDestino=" + paradaDestino + ", paradaOrigemTrecho=" + paradaOrigemTrecho + ", paradaDestinoTrecho=" + paradaDestinoTrecho + ", rutaId=" + rutaId + ", numRuta=" + numRuta + ", secuencia=" + secuencia + ", valido=" + valido + "]";
	}

	public ConexionCtrlVO getConexionCtrl() {
		return conexionCtrl;
	}

	public void setConexionCtrl(ConexionCtrlVO conexionCtrl) {
		this.conexionCtrl = conexionCtrl;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((getParadaDestino() == null) ? 0 : getParadaDestino().hashCode());
		result = prime * result + ((getParadaOrigem() == null) ? 0 : getParadaOrigem().hashCode());
		result = prime * result + ((getRutaId() == null) ? 0 : getRutaId().hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof ParadaVOConexionRuta))
			return false;
		ParadaVOConexionRuta other = (ParadaVOConexionRuta) obj;
		if (getParadaDestino() == null) {
			if (other.getParadaDestino() != null)
				return false;
		} else if (!getParadaDestino().equals(other.getParadaDestino()))
			return false;
		if (getParadaOrigem() == null) {
			if (other.getParadaOrigem() != null)
				return false;
		} else if (!getParadaOrigem().equals(other.getParadaOrigem()))
			return false;
		if (getRutaId() == null) {
			if (other.getRutaId() != null)
				return false;
		} else if (!getRutaId().equals(other.getRutaId()))
			return false;
		return true;
	}

	public ConexionRutaCtrlVO getConexionRutaCtrl() {
		return conexionRutaCtrl;
	}

	public void setConexionRutaCtrl(ConexionRutaCtrlVO conexionRutaCtrl) {
		this.conexionRutaCtrl = conexionRutaCtrl;
	}

	public Long getConexionRutaTramoId() {
		return conexionRutaTramoId;
	}

	public void setConexionRutaTramoId(Long conexionRutaTramoId) {
		this.conexionRutaTramoId = conexionRutaTramoId;
	}

	public String getSentido() {
		return sentido;
	}

	public void setSentido(String sentido) {
		this.sentido = sentido;
	}
	
	public String getNumRutaSentido() {
		return numRuta + " - " + sentido;
	}

	public PricingConexao getPricingConexao() {
		return pricingConexao;
	}

	public void setPricingConexao(PricingConexao pricingConexao) {
		this.pricingConexao = pricingConexao;
	}
}