Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.com.sl.domain.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Objects;

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.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;

import org.hibernate.annotations.ForeignKey;
import org.hibernate.validator.constraints.NotEmpty;

import br.com.ec.core.interfaces.Alterar;
import br.com.ec.core.interfaces.Cadastrar;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.sl.domain.model.tipos.TipoSinal;
import br.com.sl.domain.model.tipos.TipoSituacaoSinal;

@Entity
@Table(name="slp_sinal", schema="sc_slp")
public class Sinal implements Serializable {

        private static final long serialVersionUID = 1L;

        private String codigo; // SEQ_ATIVO#DATA#CONTADOR_CANDLE_REF#TIPO_PERIODO EXEMPLO: 1#27112025#32#M1
        private Date dataHoraSinal;
        private String tipoSinal; // C - COMPRAR / V - VENDER
        private String tipoSituacaoSinal; // A - ABERTO / F - FECHADO /
        private Candle candleReferencia;
        private Candle candleGatilho1;
        private Candle candleGatilho2;
        private Candle candleGatilho3;
        private Candle candleGatilho4;
        private BigDecimal valorEntrada1;
        private BigDecimal valorEntrada2;
        private BigDecimal alvo1;
        private BigDecimal alvo2;
        private BigDecimal stop1;
        private BigDecimal stop2;
       
        public Sinal() {}
       
        @Id
        @GeneratedValue(strategy=GenerationType.IDENTITY)
        @Column(name="cod_sinal", nullable=false)
        public String getCodigo() {
                return codigo;
        }
        public void setCodigo(String codigo) {
                this.codigo = codigo;
        }
       
        @Transient
        public String montarCodigo() {
                String codigo = null;
                if  (VerificadorUtil.naoEstaNulo(getCandleReferencia())) {
                        if (VerificadorUtil.naoEstaNulo(getCandleReferencia().getAtivo())) {
                                codigo = codigo + getCandleReferencia().getAtivo().getSequencial() + "#";
                                codigo = codigo + DataUtils.converterDataParaStringNoFormato(getDataHoraSinal(), "ddMMyyyy") + "#";
                                codigo = codigo + getCandleReferencia().getContadorCandle() + "#";
                                codigo = codigo + getCandleReferencia().getTipoPeriodoCandle();
                        }
                }
                return codigo;
        }
       
        @Column(name="dth_sinal")
        @NotNull(message="Obrigatório informar a data e hora do sinal", groups={Cadastrar.class, Alterar.class})
        public Date getDataHoraSinal() {
                return dataHoraSinal;
        }
        public void setDataHoraSinal(Date dataHoraSinal) {
                this.dataHoraSinal = dataHoraSinal;
        }
       
        @Column(name="tip_sinal")
        @NotNull(message = "Parâmetro obrigatório não preenchido: Tipo do sinal", groups = {Cadastrar.class, Alterar.class})
        public String getTipoSinal() {
                return tipoSinal;
        }
        public void setTipoSinal(String tipoSinal) {
                this.tipoSinal = tipoSinal;
        }
       
        @Transient
        public String getDescricaoDoSinal() {
                return VerificadorUtil.naoEstaNulo(getTipoSinal())? TipoSinal.parse(getTipoSinal()).getDescricao() : "";
        }
       
        @Column(name="tip_situacao_sinal")
        @NotNull(message = "Parâmetro obrigatório não preenchido: Tipo da situação do sinal", groups = {Cadastrar.class, Alterar.class})
        public String getTipoSituacaoSinal() {
                return tipoSituacaoSinal;
        }
        public void setTipoSituacaoSinal(String tipoSituacaoSinal) {
                this.tipoSituacaoSinal = tipoSituacaoSinal;
        }
       
        @Transient
        public String getDescricaoDaSituacaoSinal() {
                return VerificadorUtil.naoEstaNulo(getTipoSituacaoSinal())? TipoSituacaoSinal.parse(getTipoSituacaoSinal()).getDescricao() : "";
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_sinal_candleref")
        @JoinColumn(name="seq_candleref", referencedColumnName="seq_candle")
        public Candle getCandleReferencia() {
                return candleReferencia;
        }
        public void setCandleReferencia(Candle candleReferencia) {
                this.candleReferencia = candleReferencia;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_sinal_candleg1")
        @JoinColumn(name="seq_candleg1", referencedColumnName="seq_candle")
        public Candle getCandleGatilho1() {
                return candleGatilho1;
        }
        public void setCandleGatilho1(Candle candleGatilho1) {
                this.candleGatilho1 = candleGatilho1;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_sinal_candleg2")
        @JoinColumn(name="seq_candleg2", referencedColumnName="seq_candle")
        public Candle getCandleGatilho2() {
                return candleGatilho2;
        }
        public void setCandleGatilho2(Candle candleGatilho2) {
                this.candleGatilho2 = candleGatilho2;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_sinal_candleg3")
        @JoinColumn(name="seq_candleg3", referencedColumnName="seq_candle")
        public Candle getCandleGatilho3() {
                return candleGatilho3;
        }
        public void setCandleGatilho3(Candle candleGatilho3) {
                this.candleGatilho3 = candleGatilho3;
        }
       
        @ManyToOne
        @ForeignKey(name = "fk_sinal_candleg4")
        @JoinColumn(name="seq_candleg4", referencedColumnName="seq_candle")
        public Candle getCandleGatilho4() {
                return candleGatilho4;
        }
        public void setCandleGatilho4(Candle candleGatilho4) {
                this.candleGatilho4 = candleGatilho4;
        }
       
        @Column(name="val_entrada1")
        public BigDecimal getValorEntrada1() {
                return valorEntrada1;
        }
        public void setValorEntrada1(BigDecimal valorEntrada1) {
                this.valorEntrada1 = valorEntrada1;
        }
       
        @Column(name="val_entrada2")
        public BigDecimal getValorEntrada2() {
                return valorEntrada2;
        }
        public void setValorEntrada2(BigDecimal valorEntrada2) {
                this.valorEntrada2 = valorEntrada2;
        }
       
        @Column(name="val_alvo1")
        public BigDecimal getAlvo1() {
                return alvo1;
        }
        public void setAlvo1(BigDecimal alvo1) {
                this.alvo1 = alvo1;
        }
       
        @Column(name="val_alvo2")
        public BigDecimal getAlvo2() {
                return alvo2;
        }
        public void setAlvo2(BigDecimal alvo2) {
                this.alvo2 = alvo2;
        }
       
        @Column(name="val_stop1")
        public BigDecimal getStop1() {
                return stop1;
        }
        public void setStop1(BigDecimal stop1) {
                this.stop1 = stop1;
        }
       
        @Column(name="val_stop2")
        public BigDecimal getStop2() {
                return stop2;
        }
        public void setStop2(BigDecimal stop2) {
                this.stop2 = stop2;
        }

        @Override
        public int hashCode() {
                return Objects.hash(codigo);
        }

        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                Sinal other = (Sinal) obj;
                return Objects.equals(codigo, other.codigo);
        }
       
}