Rev 703 |
Blame |
Compare with Previous |
Last modification |
View Log
| Download
| RSS feed
package br.com.ec.domain.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.persistence.CascadeType;
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.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import org.hibernate.annotations.ForeignKey;
import br.com.ec.core.interfaces.Alterar;
import br.com.ec.core.interfaces.Cadastrar;
import br.com.ec.core.util.VerificadorUtil;
@
Entity
@Table
(name=
"sec_avaliacao", schema=
"sc_sec")
public class Avaliacao
implements Serializable {
private static final long serialVersionUID = 1L
;
private Long sequencial
;
private Vigencia vigencia
;
private Date dataInicioResultado
;
private Date dataFimResultado
;
private Set<AvaliacaoFuncionario
> participantes
;
private Set<AvaliacaoLoja
> lojasParticipantes
;
public Avaliacao
() {
participantes =
new HashSet<AvaliacaoFuncionario
>();
lojasParticipantes =
new HashSet<AvaliacaoLoja
>();
}
public Avaliacao
(Long sequencial
) {
this.
sequencial = sequencial
;
lojasParticipantes =
new HashSet<AvaliacaoLoja
>();
}
@Id
@SequenceGenerator
(name =
"sq_avaliacao")
@GeneratedValue
(strategy = GenerationType.
IDENTITY)
@Column
(name=
"seq_avaliacao", nullable=
false)
public Long getSequencial
() {
return sequencial
;
}
public void setSequencial
(Long sequencial
) {
this.
sequencial = sequencial
;
}
@ManyToOne
@ForeignKey
(name=
"fk_avaliacao_vigencia")
@NotNull
(message =
"Parâmetro obrigatório não preenchido: Vigência", groups =
{Cadastrar.
class, Alterar.
class})
@JoinColumn
(name =
"seq_vigencia", referencedColumnName=
"seq_vigencia", nullable=
true)
public Vigencia getVigencia
() {
return vigencia
;
}
public void setVigencia
(Vigencia vigencia
) {
this.
vigencia = vigencia
;
}
@Column
(name=
"dth_inicio_resultado", nullable=
false)
public Date getDataInicioResultado
() {
return dataInicioResultado
;
}
public void setDataInicioResultado
(Date dataInicioResultado
) {
this.
dataInicioResultado = dataInicioResultado
;
}
@Column
(name=
"dth_fim_resultado", nullable=
false)
public Date getDataFimResultado
() {
return dataFimResultado
;
}
public void setDataFimResultado
(Date dataFimResultado
) {
this.
dataFimResultado = dataFimResultado
;
}
@OneToMany
(mappedBy=
"avaliacao", cascade=CascadeType.
ALL, orphanRemoval=
true)
public Set<AvaliacaoFuncionario
> getParticipantes
() {
return participantes
;
}
public void setParticipantes
(Set<AvaliacaoFuncionario
> participantes
) {
this.
participantes = participantes
;
}
@OneToMany
(mappedBy=
"avaliacao", cascade=CascadeType.
ALL, orphanRemoval=
true)
public Set<AvaliacaoLoja
> getLojasParticipantes
() {
return lojasParticipantes
;
}
public void setLojasParticipantes
(Set<AvaliacaoLoja
> lojasParticipantes
) {
this.
lojasParticipantes = lojasParticipantes
;
}
@
Override
public int hashCode
() {
final int prime =
31;
int result =
1;
result = prime
* result +
((sequencial ==
null) ? 0 : sequencial.
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;
Avaliacao other =
(Avaliacao
) obj
;
if (sequencial ==
null) {
if (other.
sequencial !=
null) {
return false;
} else {return false;}
} else if (!sequencial.
equals(other.
sequencial))
return false;
return true;
}
@Transient
public Long getSequencialDaVigencia
() {
return VerificadorUtil.
naoEstaNulo(getVigencia
())? getVigencia
().
getSequencial() :
null;
}
@Transient
public String getDescricaoDaVigencia
() {
return VerificadorUtil.
naoEstaNulo(getVigencia
())? getVigencia
().
getDescricao() :
null;
}
@Transient
public Date getDataInicioDaVigencia
() {
return VerificadorUtil.
naoEstaNulo(getVigencia
())? getVigencia
().
getDataInicio() :
null;
}
@Transient
public Date getDataFimDaVigencia
() {
return VerificadorUtil.
naoEstaNulo(getVigencia
())? getVigencia
().
getDataFim() :
null;
}
@Transient
public List<AvaliacaoFuncionario
> getParticipantesOrdenados
() {
List<AvaliacaoFuncionario
> participantesOrdenados =
null;
if (VerificadorUtil.
naoEstaNulo(getParticipantes
())) {
participantesOrdenados =
new ArrayList<AvaliacaoFuncionario
>(getParticipantes
());
Collections.
sort(participantesOrdenados,
new Comparator<AvaliacaoFuncionario
>() {
public int compare
(AvaliacaoFuncionario p1, AvaliacaoFuncionario p2
) {
return p1.
getFuncionario().
getNomeDaPessoa().
compareTo(p2.
getFuncionario().
getNomeDaPessoa());
};
});
}
return participantesOrdenados
;
}
@Transient
public List<AvaliacaoLoja
> getLojasParticipantesOrdenadas
() {
List<AvaliacaoLoja
> lojasOrdenadas =
null;
if (VerificadorUtil.
naoEstaNulo(getLojasParticipantes
())) {
lojasOrdenadas =
new ArrayList<AvaliacaoLoja
>(getLojasParticipantes
());
Collections.
sort(lojasOrdenadas,
new Comparator<AvaliacaoLoja
>() {
public int compare
(AvaliacaoLoja p1, AvaliacaoLoja p2
) {
return p1.
getLoja().
getDescricao().
compareTo(p2.
getLoja().
getDescricao());
};
});
}
return lojasOrdenadas
;
}
}