package br.gov.mj.sislegis.app.model;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name = "notificacao")
//@formatter:off
@NamedQueries({
@NamedQuery(
name="getAllNotificacaoByUsuario",
query= "SELECT t FROM Notificacao t WHERE t.usuario.id = :idUsuario order by t.criadaEm"
),
@NamedQuery(
name="getCategoriaNotificacaoByUsuario",
query= "SELECT t FROM Notificacao t WHERE t.usuario.id = :idUsuario and t.categoria=:categoria order by t.criadaEm"
),
@NamedQuery(
name="getByCategoriaEntidade",
query= "SELECT t FROM Notificacao t WHERE t.identificacaoEntidade = :identificacaoEntidade and t.categoria=:categoria"
)
})
//@formatter:on
public class Notificacao extends AbstractEntity {
private static final long serialVersionUID = -806063711060116952L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@Column(name = "identificacao_entidade", length = 10)
private String identificacaoEntidade;
@Column(name = "descricao", length = 128)
private String descricao;
@Column(length = 30)
private String categoria;
@Column(name = "criada_em")
@Temporal(TemporalType.TIMESTAMP)
private Date criadaEm;
@Column(name = "vista_em", nullable = true)
@Temporal(TemporalType.TIMESTAMP)
private Date vistaEm;
@ManyToOne(fetch = FetchType.EAGER)
private Usuario usuario;
Notificacao() {
criadaEm = new Date();
}
public Notificacao(Usuario usuario, String descricao, String identificacaoEntidade, String categoria) {
this();
this.usuario = usuario;
this.categoria = categoria;
this.descricao = descricao;
this.identificacaoEntidade = identificacaoEntidade;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
@Override
public Number getId() {
return id;
}
public boolean isVisualizada() {
return vistaEm != null;
}
public void setVisualizada() {
this.vistaEm = new Date();
}
public String getIdentificacaoEntidade() {
return identificacaoEntidade;
}
public void setIdentificacaoEntidade(String identificacaoEntidade) {
this.identificacaoEntidade = identificacaoEntidade;
}
public String getCategoria() {
return categoria;
}
public void setCategoria(String categoria) {
this.categoria = categoria;
}
public Date getCriadaEm() {
return criadaEm;
}
public Date getVistaEm() {
return vistaEm;
}
public void setVistaEm(Date vistaEm) {
this.vistaEm = vistaEm;
}
public Usuario getUsuario() {
return usuario;
}
}