Subversion Repositories Integrator Subversion

Rev

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

package br.gov.al.saude.srv.model;

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

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

import br.gov.al.saude.framework.core.generic.identidade.Identidade;
import br.gov.al.saude.framework.core.interfaces.Alterar;
import br.gov.al.saude.framework.core.interfaces.Cadastrar;
import br.gov.al.saude.srv.model.enums.TipoQualificacao;

@Entity
@Table(name = "srv_servidor_qualificacao", schema = "sc_srv")
public class ServidorQualificacao implements Serializable, Identidade, Comparable<ServidorQualificacao> {
        private static final long serialVersionUID = 1L;

        private Long sequencial;
        private String descricao;
        private String tipoQualificacao;
        private String instituicao;
        private Date dataInicial;
        private Date dataFinal;
        private Integer cargaHoraria;
        private String observacao;
        private Servidor servidor;
       
       
        @Id
        @Column(name="seq_servidor_qualificacao", nullable=false)
        @GeneratedValue(generator = "SERVIDOR_QUALIFICACAO_GENERATOR", strategy = GenerationType.SEQUENCE)
        @SequenceGenerator(name = "SERVIDOR_QUALIFICACAO_GENERATOR", sequenceName = "sc_srv.sq_servidoqualif", initialValue = 1, allocationSize = 1)
        public Long getSequencial() {
                return sequencial;
        }
        public void setSequencial(Long sequencial) {
                this.sequencial = sequencial;
        }

       
        @Column(name="dsc_qualificacao", length=200, nullable=false)
        @NotNull(message="Obrigatório informar a descrição.", groups={Cadastrar.class, Alterar.class})
        public String getDescricao() {
                return descricao;
        }
        public void setDescricao(String descricao) {
                this.descricao = descricao;
        }
       

        @Column(name="tip_qualificacao", length=1, nullable=false)
        @NotNull(message="Obrigatório informar o tipo da qualificação.", groups={Cadastrar.class, Alterar.class})
        public String getTipoQualificacao() {
                return tipoQualificacao;
        }
        public void setTipoQualificacao(String tipoQualificacao) {
                this.tipoQualificacao = tipoQualificacao;
        }      
        public void setTipoQualificacao(TipoQualificacao tipoQualificacao) {
                this.tipoQualificacao = tipoQualificacao.getValue();
        }
       
        @Transient
        public String getDescricaoTipoQualificacao() {
                return TipoQualificacao.parse(getTipoQualificacao()).getDescricao();
        }
       
        @Column(name="dsc_instituicao", length=200, nullable=false)
        @NotNull(message="Obrigatório informar a instituição.", groups={Cadastrar.class, Alterar.class})
        public String getInstituicao() {
                return instituicao;
        }
        public void setInstituicao(String instituicao) {
                this.instituicao = instituicao;
        }

        @Temporal(TemporalType.DATE)
        @Column(name="dat_inicial", nullable=false)
        @NotNull(message="Obrigatório informar a data inicial.", groups={Cadastrar.class, Alterar.class})
        public Date getDataInicial() {
                return dataInicial;
        }
        public void setDataInicial(Date dataInicial) {
                this.dataInicial = dataInicial;
        }
       
        @Temporal(TemporalType.DATE)
        @Column(name="dat_final", nullable=false)
        @NotNull(message="Obrigatório informar a data final.", groups={Cadastrar.class, Alterar.class})
        public Date getDataFinal() {
                return dataFinal;
        }
        public void setDataFinal(Date dataFinal) {
                this.dataFinal = dataFinal;
        }

        @Column(name="qtd_carga_horaria", nullable=false)
        @NotNull(message="Obrigatório informar a carga horária.", groups={Cadastrar.class, Alterar.class})
        public Integer getCargaHoraria() {
                return cargaHoraria;
        }
        public void setCargaHoraria(Integer cargaHoraria) {
                this.cargaHoraria = cargaHoraria;
        }
       
        @Column(name="dsc_observacao")
        public String getObservacao() {
                return observacao;
        }
        public void setObservacao(String observacao) {
                this.observacao = observacao;
        }
       
        @ManyToOne
        @JoinColumn(name="seq_pessoa_servidor", referencedColumnName="seq_pessoa_servidor", nullable=false)
        public Servidor getServidor() {
                return servidor;
        }
        public void setServidor(Servidor servidor) {
                this.servidor = servidor;
        }

        @Transient
        @Override
        public Object getId() {
                return this.sequencial;
        }
        @Override
        public void setId(Object id) {
                this.sequencial = (Long) id;
        }

       
        @Override
        public int compareTo(ServidorQualificacao servidorQualificacao) {
                return this.dataInicial.compareTo(servidorQualificacao.getDataInicial());
        }
       
        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result
                                + ((cargaHoraria == null) ? 0 : cargaHoraria.hashCode());
                result = prime * result
                                + ((dataFinal == null) ? 0 : dataFinal.hashCode());
                result = prime * result
                                + ((dataInicial == null) ? 0 : dataInicial.hashCode());
                result = prime * result
                                + ((descricao == null) ? 0 : descricao.hashCode());
                result = prime * result
                                + ((instituicao == null) ? 0 : instituicao.hashCode());
                result = prime * result
                                + ((sequencial == null) ? 0 : sequencial.hashCode());
                result = prime
                                * result
                                + ((tipoQualificacao == null) ? 0 : tipoQualificacao.hashCode());
                return result;
        }
       
        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                ServidorQualificacao other = (ServidorQualificacao) obj;
                if (cargaHoraria == null) {
                        if (other.cargaHoraria != null)
                                return false;
                } else if (!cargaHoraria.equals(other.cargaHoraria))
                        return false;
                if (dataFinal == null) {
                        if (other.dataFinal != null)
                                return false;
                } else if (!dataFinal.equals(other.dataFinal))
                        return false;
                if (dataInicial == null) {
                        if (other.dataInicial != null)
                                return false;
                } else if (!dataInicial.equals(other.dataInicial))
                        return false;
                if (descricao == null) {
                        if (other.descricao != null)
                                return false;
                } else if (!descricao.equals(other.descricao))
                        return false;
                if (instituicao == null) {
                        if (other.instituicao != null)
                                return false;
                } else if (!instituicao.equals(other.instituicao))
                        return false;
                if (sequencial == null) {
                        if (other.sequencial != null)
                                return false;
                } else if (!sequencial.equals(other.sequencial))
                        return false;
                if (tipoQualificacao == null) {
                        if (other.tipoQualificacao != null)
                                return false;
                } else if (!tipoQualificacao.equals(other.tipoQualificacao))
                        return false;
                return true;
        }

}