/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.entidad;

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

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Type;

import com.rjconsultores.ventaboletos.enums.TipoIntegracaoTEF;

/**
 * 
 * @author RJ
 */
@Entity
@Table(name = "ESTACION_SITEF")
@SequenceGenerator(name = "ESTACION_SITEF_SEQ", sequenceName = "ESTACION_SITEF_SEQ", allocationSize = 1)
public class EstacionSitef implements Serializable {
	private static final long serialVersionUID = 1L;
	@Id
	@Basic(optional = false)
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "ESTACION_SITEF_SEQ")
	@Column(name = "ESTACIONSITEF_ID")
	private Integer estacionsitefId;
	@Column(name = "NUMEMPRESA")
	private String numempresa;
	@Column(name = "NUMFILIAL")
	private Integer numfilial;
	@Column(name = "NUMPDV")
	private String numpdv;
	@OneToOne
	@JoinColumn(name = "EMPRESA_ID")
	private Empresa empresa;
	@ManyToOne
	@JoinColumn(name = "ESTACION_ID", referencedColumnName = "ESTACION_ID")
	private Estacion estacion;
	@Column(name = "USUARIO_ID")
	private Integer usuarioId;
	@Column(name = "ACTIVO")
	private Boolean activo;
	@Column(name = "FECMODIF")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecmodif;
	@Column(name = "IPSERVIDOR")
	private String ipServidor;
	@Column(name = "SENHA_CONFIG")
	private String senhaConfig;
	
	@Type(type = "com.rjconsultores.ventaboletos.constantes.CustomEnumTypeHibernate", parameters = {
			@Parameter(name = "type", value = "com.rjconsultores.ventaboletos.constantes.CustomEnumTypeHibernate"),
			@Parameter(name = "class", value = "com.rjconsultores.ventaboletos.enums.TipoIntegracaoTEF"), 			
			@Parameter(name = "sqlType", value = "12")/*Types.VARCHAR*/,
			@Parameter(name = "enumName", value = "true")})
	@Column(name = "TIPO_INTEGRACAO")
	private com.rjconsultores.ventaboletos.enums.TipoIntegracaoTEF tipoIntegracao;
	
	@Column(name = "CNPJ")
	private String cnpj;
	
	@Column(name = "NUMERODESERIE")
	private String numeroDeSerie;
	
	@Column(name = "DESCRICAO")
	private String descricao;

	public EstacionSitef() {
	}

	public EstacionSitef(Integer estacionsitefId) {
		this.estacionsitefId = estacionsitefId;
	}

	public Integer getEstacionsitefId() {
		return estacionsitefId;
	}

	public void setEstacionsitefId(Integer estacionsitefId) {
		this.estacionsitefId = estacionsitefId;
	}

	public String getNumempresa() {
		return numempresa;
	}

	public void setNumempresa(String numempresa) {
		this.numempresa = numempresa;
	}

	public Integer getNumfilial() {
		return numfilial;
	}

	public void setNumfilial(Integer numfilial) {
		this.numfilial = numfilial;
	}

	public String getNumpdv() {
		return numpdv;
	}

	public void setNumpdv(String numpdv) {
		this.numpdv = numpdv;
	}

	public Integer getUsuarioId() {
		return usuarioId;
	}

	public void setUsuarioId(Integer usuarioId) {
		this.usuarioId = usuarioId;
	}

	public Boolean getActivo() {
		return activo;
	}

	public void setActivo(Boolean activo) {
		this.activo = activo;
	}

	public Date getFecmodif() {
		return fecmodif;
	}

	public void setFecmodif(Date fecmodif) {
		this.fecmodif = fecmodif;
	}

	@Override
	public int hashCode() {
		int hash = 0;
		hash += (estacionsitefId != null ? estacionsitefId.hashCode() : 0);
		return hash;
	}

	@Override
	public boolean equals(Object object) {
		// TODO: Warning - this method won't work in the case the id fields are
		// not set
		if (!(object instanceof EstacionSitef)) {
			return false;
		}
		EstacionSitef other = (EstacionSitef) object;
		if ((this.estacionsitefId == null && other.estacionsitefId != null) || (this.estacionsitefId != null && !this.estacionsitefId.equals(other.estacionsitefId))) {
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		return "com.rjconsultores.ventaboletos.entidad.EstacionSitef[ estacionsitefId=" + estacionsitefId + " ]";
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public Estacion getEstacion() {
		return estacion;
	}

	public void setEstacion(Estacion estacion) {
		this.estacion = estacion;
	}

	public String getIpServidor() {
		return ipServidor;
	}

	public void setIpServidor(String ipServidor) {
		this.ipServidor = ipServidor;
	}

	public String getCnpj() {
		return cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	public TipoIntegracaoTEF getTipoIntegracao() {
		return tipoIntegracao;
	}

	public void setTipoIntegracao(TipoIntegracaoTEF tipoIntegracao) {
		this.tipoIntegracao = tipoIntegracao;
	}

	public String getSenhaConfig() {
		return senhaConfig;
	}

	public void setSenhaConfig(String senhaConfig) {
		this.senhaConfig = senhaConfig;
	}

	public String getNumeroDeSerie() {
		return numeroDeSerie;
	}

	public void setNumeroDeSerie(String numeroDeSerie) {
		this.numeroDeSerie = numeroDeSerie;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
}
