Subversion Repositories Integrator Subversion

Rev

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

package br.gov.al.saude.rhd.model.view;

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

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.annotations.ForeignKey;

import br.gov.al.saude.framework.core.generic.identidade.Identidade;
import br.gov.al.saude.scg.model.view.PessoaFisicaView;

@Entity
@Table(name = "vw_servidor", schema = "sc_srv")
public class ServidorView implements Serializable, Identidade, Comparable<ServidorView> {

        private static final long serialVersionUID = 1L;

        private PessoaFisicaView pessoa;

        private String nome;
        private String cpf;
        private String sexo;
        private Date dataNascimento;
        private String email;
        private String nacionalidade;
        private String tipoGrauInstrucao;
       
        private Set<ServidorDadoFuncionalView> listaDadosFuncionaisView;
        private Set<QualificacaoServidorView> listaQualificacoesView;
       
        public ServidorView() {
                listaDadosFuncionaisView = new HashSet<ServidorDadoFuncionalView>();
                listaQualificacoesView = new HashSet<QualificacaoServidorView>();
        }

        public ServidorView(String nomeServidor, Long sequencialPessoa) {
                this.nome = nomeServidor;
                pessoa = new PessoaFisicaView();
                pessoa.setSequencialPessoa(sequencialPessoa);
                pessoa.setNomePessoa(nomeServidor);
        }

        @Id
        @OneToOne
        @ForeignKey(name="fk_servidor_pessoa")
        @JoinColumn(name="seq_pessoa_servidor", referencedColumnName="seq_pessoa")
        public PessoaFisicaView getPessoa() {
                return pessoa;
        }

        public void setPessoa(PessoaFisicaView pessoa) {
                this.pessoa = pessoa;
        }

        @Column(name="nom_pessoa")
        public String getNome() {
                return nome;
        }

        public void setNome(String nome) {
                this.nome = nome;
        }
       
        @Column(name="num_cpf")
        public String getCpf() {
                return cpf;
        }

        public void setCpf(String cpf) {
                this.cpf = cpf;
        }
       
        @Column(name="tip_sexo")
        public String getSexo() {
                return sexo;
        }

        public void setSexo(String sexo) {
                this.sexo = sexo;
        }

        @Temporal(TemporalType.DATE)
        @Column(name="dat_nascimento")
        public Date getDataNascimento() {
                return dataNascimento;
        }

        public void setDataNascimento(Date dataNascimento) {
                this.dataNascimento = dataNascimento;
        }
       
        @Column(name="dsc_email")
        public String getEmail() {
                return email;
        }

        public void setEmail(String email) {
                this.email = email;
        }
       
        @Column(name="dsc_nacionalidade")
        public String getNacionalidade() {
                return nacionalidade;
        }

        public void setNacionalidade(String nacionalidade) {
                this.nacionalidade = nacionalidade;
        }
       
        @Column(name="tip_grau_instrucao")
        public String getTipoGrauInstrucao() {
                return tipoGrauInstrucao;
        }

        public void setTipoGrauInstrucao(String tipoGrauInstrucao) {
                this.tipoGrauInstrucao = tipoGrauInstrucao;
        }

        @OneToMany(mappedBy="servidorView", cascade=CascadeType.ALL)
        public Set<ServidorDadoFuncionalView> getListaDadosFuncionaisView() {
                return listaDadosFuncionaisView;
        }

        public void setListaDadosFuncionaisView(Set<ServidorDadoFuncionalView> listaDadosFuncionaisView) {
                this.listaDadosFuncionaisView = listaDadosFuncionaisView;
        }
       
        @OneToMany(mappedBy="servidorView", cascade=CascadeType.ALL)
        public Set<QualificacaoServidorView> getListaQualificacoesView() {
                return listaQualificacoesView;
        }
       
        public void setListaQualificacoesView(Set<QualificacaoServidorView> listaQualificacoesView) {
                this.listaQualificacoesView = listaQualificacoesView;
        }
       
        @Override
        @Transient
        public Object getId() {
                return pessoa.getId();
        }

        @Override
        public void setId(Object id) {
                this.pessoa.setId((Long) id);
        }
       
        @Transient
        public String getSexoPorExtenso() {
                if("M".equals(sexo))
                        return "Masculino";
                if("F".equals(sexo))
                        return "Feminino";
                return null;
        }
       
        @Transient
        public Long getSequencialDaPessoa() {
                return pessoa != null ? pessoa.getSequencialPessoa() : null;
        }
       
        @Transient
        public String getMatriculas() {
                StringBuilder matriculas = new StringBuilder("");
                for (ServidorDadoFuncionalView dadoFuncional : listaDadosFuncionaisView) {
                        matriculas.append(dadoFuncional.getNumeroMatricula());
                        matriculas.append(", ");
                }
                matriculas.append(".");
                return matriculas.toString().replace(", .", "");
        }
       
        @Transient
        public ServidorDadoFuncionalView getPrimeiroDadoFuncional() {
                for (ServidorDadoFuncionalView dadoFuncional : listaDadosFuncionaisView) {
                        return dadoFuncional;
                }
                return null;
        }
       
        @Transient
        public UnidadeView getUnidadeDoPrimeiroDadoFuncional() {
                return getPrimeiroDadoFuncional() != null ? getPrimeiroDadoFuncional().getUnidadeExercicio() : null;
        }
       
        @Transient
        public Long getSequencialDaUnidadeDoPrimeiroDadoFuncional() {
                return getUnidadeDoPrimeiroDadoFuncional() != null ? getUnidadeDoPrimeiroDadoFuncional().getSequencial() : null;
        }

        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + ((getId() == null) ? 0 : getId().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;
                ServidorView other = (ServidorView) obj;
                if (getId() == null) {
                        if (other.getId() != null)
                                return false;
                } else if (!getId().equals(other.getId()))
                        return false;
                return true;
        }

        @Override
        public int compareTo(ServidorView o) {
                return getNome().compareToIgnoreCase(o.getNome());
        }

}