Blame |
Last modification |
View Log
| Download
| RSS feed
package br.gov.al.saude.rhd.model;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import javax.validation.Valid;
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.framework.core.util.DataUtils;
@
Entity
@Table
(name =
"rhd_cronograma_etapa", schema =
"sc_rhd")
public class CronogramaEtapa
implements Serializable, Identidade,
Comparable<CronogramaEtapa
> {
private static final long serialVersionUID = 1L
;
private CronogramaEtapaId cronogramaEtapaId =
new CronogramaEtapaId
();
private Etapa etapa =
new Etapa
();
private Cronograma cronograma =
new Cronograma
();
private Date dataInicialEtapa
;
private Date dataFinalEtapa
;
@Valid
@EmbeddedId
public CronogramaEtapaId getCronogramaEtapaId
() {
return cronogramaEtapaId
;
}
public void setCronogramaEtapaId
(CronogramaEtapaId cronogramaEtapaId
) {
this.
cronogramaEtapaId = cronogramaEtapaId
;
}
@ManyToOne
@JoinColumn
(name =
"cod_etapa", referencedColumnName =
"cod_etapa", insertable =
false, updatable =
false, nullable =
false)
public Etapa getEtapa
() {
return etapa
;
}
public void setEtapa
(Etapa etapa
) {
this.
etapa = etapa
;
}
@ManyToOne
@JoinColumn
(name =
"num_ano", referencedColumnName =
"num_ano", insertable =
false, updatable =
false, nullable =
false)
public Cronograma getCronograma
() {
return cronograma
;
}
public void setCronograma
(Cronograma cronograma
) {
this.
cronograma = cronograma
;
}
@Temporal
(TemporalType.
DATE)
@NotNull
(message=
"Obrigatório informar a data inicial da etapa.", groups=
{Cadastrar.
class, Alterar.
class})
@Column
(name=
"dat_inicial_etapa", nullable=
false)
public Date getDataInicialEtapa
() {
return dataInicialEtapa
;
}
public void setDataInicialEtapa
(Date dataInicialEtapa
) {
this.
dataInicialEtapa = dataInicialEtapa
;
}
@Temporal
(TemporalType.
DATE)
@NotNull
(message=
"Obrigatório informar a data final da etapa.", groups=
{Cadastrar.
class, Alterar.
class})
@Column
(name=
"dat_final_etapa", nullable=
false)
public Date getDataFinalEtapa
() {
return dataFinalEtapa
;
}
public void setDataFinalEtapa
(Date dataFinalEtapa
) {
this.
dataFinalEtapa = dataFinalEtapa
;
}
@
Override
@Transient
public Object getId
() {
return cronogramaEtapaId
;
}
@
Override
public void setId
(Object id
) {
this.
cronogramaEtapaId =
(CronogramaEtapaId
) id
;
}
@
Override
public int hashCode
() {
final int prime =
31;
int result =
1;
result = prime
* result
+
((cronogramaEtapaId ==
null) ? 0 : cronogramaEtapaId.
hashCode());
result = prime
* result
+
((dataFinalEtapa ==
null) ? 0 : dataFinalEtapa.
hashCode());
result = prime
* result
+
((dataInicialEtapa ==
null) ? 0 : dataInicialEtapa.
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;
CronogramaEtapa other =
(CronogramaEtapa
) obj
;
if (cronogramaEtapaId ==
null) {
if (other.
cronogramaEtapaId !=
null)
return false;
} else if (!cronogramaEtapaId.
equals(other.
cronogramaEtapaId))
return false;
if (dataFinalEtapa ==
null) {
if (other.
dataFinalEtapa !=
null)
return false;
} else if (!dataFinalEtapa.
equals(other.
dataFinalEtapa))
return false;
if (dataInicialEtapa ==
null) {
if (other.
dataInicialEtapa !=
null)
return false;
} else if (!dataInicialEtapa.
equals(other.
dataInicialEtapa))
return false;
return true;
}
@
Override
public int compareTo
(CronogramaEtapa cronogramaEtapa
) {
return this.
dataInicialEtapa.
compareTo(cronogramaEtapa.
getDataInicialEtapa());
}
@Transient
private Date recuperarDataAtual
() {
return DataUtils.
converterStringParaData(DataUtils.
converterDataParaString(new Date()));
}
@Transient
public Boolean isDataEtapaConcluida
() {
return isDataEstaVigente
().
equals(Boolean.
FALSE) && this.
getDataFinalEtapa().
before(recuperarDataAtual
());
}
@Transient
public Boolean isDataEtapaFutura
() {
return isDataEstaVigente
().
equals(Boolean.
FALSE) && this.
getDataInicialEtapa().
after(recuperarDataAtual
());
}
@Transient
public Boolean isDataEstaVigente
() {
Date dataAtual = recuperarDataAtual
();
return (this.
getDataInicialEtapa().
before(dataAtual
) ||
this.
getDataInicialEtapa().
equals(dataAtual
)) &&
(this.
getDataFinalEtapa().
after(dataAtual
) ||
this.
getDataFinalEtapa().
equals(dataAtual
));
}
}