package br.gov.mj.sislegis.app.model; import java.util.Date; import javax.persistence.CascadeType; 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.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.xml.bind.annotation.XmlRootElement; import br.gov.mj.sislegis.app.rest.serializers.CompactProposicaoSerializer; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @Entity @XmlRootElement @JsonIgnoreProperties({ "idProposicao" }) public class EncaminhamentoProposicao extends AbstractEntity { private static final long serialVersionUID = 7949894944142814382L; @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id", updatable = false, nullable = false) private Long id; private String detalhes; @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) private Comentario comentario; @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) private Comentario comentarioFinalizacao; @OneToOne(fetch = FetchType.EAGER) @JoinColumn(name = "tipo_encaminhamento_id") private TipoEncaminhamento tipoEncaminhamento; @ManyToOne(fetch = FetchType.EAGER) private Proposicao proposicao; @OneToOne(fetch = FetchType.EAGER) private Usuario responsavel; @Column @Temporal(TemporalType.TIMESTAMP) private Date dataHoraLimite; private Boolean finalizado; public Comentario getComentario() { return comentario; } public void setComentario(Comentario comentario) { this.comentario = comentario; } public Comentario getComentarioFinalizacao() { return comentarioFinalizacao; } public void setComentarioFinalizacao(Comentario comentarioFinalizacao) { this.comentarioFinalizacao = comentarioFinalizacao; } public TipoEncaminhamento getTipoEncaminhamento() { return tipoEncaminhamento; } public void setTipoEncaminhamento(TipoEncaminhamento tipoEncaminhamento) { this.tipoEncaminhamento = tipoEncaminhamento; } public void setId(Long id) { this.id = id; } @Override public Long getId() { return id; } public String getDetalhes() { return detalhes; } public void setDetalhes(String descricao) { this.detalhes = descricao; } @JsonSerialize(using = CompactProposicaoSerializer.class) public Proposicao getProposicao() { return proposicao; } public void setProposicao(Proposicao proposicao) { this.proposicao = proposicao; } public Usuario getResponsavel() { return responsavel; } public void setResponsavel(Usuario responsavel) { this.responsavel = responsavel; } public Date getDataHoraLimite() { return dataHoraLimite; } public void setDataHoraLimite(Date dataHoraLimite) { this.dataHoraLimite = dataHoraLimite; } @Override public String toString() { String result = getClass().getSimpleName() + " "; if (id != null) result += "id: " + id; if (comentario != null) result += ", comentario: " + comentario; if (tipoEncaminhamento != null) result += ", tipoEncaminhamento: " + tipoEncaminhamento; if (proposicao != null) result += ", proposicao: " + proposicao; if (responsavel != null) result += ", responsavel: " + responsavel; if (dataHoraLimite != null) result += ", dataHoraLimite: " + dataHoraLimite; return result; } public Boolean isFinalizado() { return finalizado; } public void setFinalizado(Boolean finalizado) { this.finalizado = finalizado; } }