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;
}
}