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.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.envers.AuditTable;
import org.hibernate.envers.Audited;
import org.hibernate.envers.RelationTargetAuditMode;
import br.gov.al.saude.framework.core.generic.identidade.Identidade;
import br.gov.al.saude.framework.core.util.VerificadorUtil;
import br.gov.al.saude.srv.model.embedded.ProgramacaoFeriasId;

@Audited
@AuditTable(value="srv_hist_programacao_ferias", schema="sc_srv")
@Entity
@Table(name="srv_programacao_ferias", schema="sc_srv")
public class ProgramacaoFerias implements Serializable, Identidade{
       
        private static final long serialVersionUID = 1L;
       
        private ProgramacaoFeriasId programacaoFeriasId = new ProgramacaoFeriasId();
        private Unidade unidade;
        private Long numeroAnoProgramacao;
        private List<ProgramacaoFeriasServidorDadoFuncional> programacoesFeriasServidorDadoFuncional = new ArrayList<ProgramacaoFeriasServidorDadoFuncional>();
       
        @EmbeddedId
        public ProgramacaoFeriasId getProgramacaoFeriasId() {
                return programacaoFeriasId;
        }
       
        public void setProgramacaoFeriasId(ProgramacaoFeriasId programacaoFeriasId) {
                this.programacaoFeriasId = programacaoFeriasId;
        }
       
        @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
        @ManyToOne
        @JoinColumn(name="cod_unidade", referencedColumnName="cod_unidade", nullable=false, insertable=false, updatable=false)
        public Unidade getUnidade() {
                return unidade;
        }
       
        public void setUnidade(Unidade unidade) {
                this.unidade = unidade;
                if(VerificadorUtil.naoEstaNulo(unidade)){
                        programacaoFeriasId.setCodigo(unidade.getCodigo());
                }
        }
       
        @Column(name="num_ano_programacao", nullable=false, insertable=false, updatable=false)
        public Long getNumeroAnoProgramacao() {
                return numeroAnoProgramacao;
        }
       
        public void setNumeroAnoProgramacao(Long numeroAnoProgramacao) {
                this.numeroAnoProgramacao = numeroAnoProgramacao;
                if(VerificadorUtil.naoEstaNulo(numeroAnoProgramacao)){
                        programacaoFeriasId.setNumeroAnoProgramacao(numeroAnoProgramacao);
                }
        }

        @Transient
        public Integer getCodigoUnidade() {
                return VerificadorUtil.naoEstaNulo(unidade)? unidade.getCodigo() : null;
        }
       
        @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
        @OneToMany(mappedBy="programacaoFerias", cascade=CascadeType.ALL, orphanRemoval=true)
        public List<ProgramacaoFeriasServidorDadoFuncional> getProgramacoesFeriasServidorDadoFuncional() {
                return programacoesFeriasServidorDadoFuncional;
        }
       
        public void setProgramacoesFeriasServidorDadoFuncional(List<ProgramacaoFeriasServidorDadoFuncional> programacoesFeriasServidorDadoFuncional) {
                this.programacoesFeriasServidorDadoFuncional = programacoesFeriasServidorDadoFuncional;
        }
       
        @Override
        public void setId(Object id) {
                programacaoFeriasId = (ProgramacaoFeriasId) id;
        }
       
        @Transient
        @Override
        public Object getId() {
                return getProgramacaoFeriasId();
        }
       
        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime
                                * result
                                + ((programacaoFeriasId == null) ? 0 : programacaoFeriasId
                                                .hashCode());
                return result;
        }

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


}