package br.gov.mj.sislegis.app.model.pautacomissao; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.IdClass; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import br.gov.mj.sislegis.app.model.Proposicao; import br.gov.mj.sislegis.app.rest.serializers.CompactPautaReuniaoComissao; import br.gov.mj.sislegis.app.rest.serializers.CompactProposicaoComComentarioSerializer; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @Entity @Table(name = "Proposicao_PautaComissao") @IdClass(PropostaPautaPK.class) public class ProposicaoPautaComissao implements Serializable, Comparable<ProposicaoPautaComissao> { /** * */ private static final long serialVersionUID = 2853814379434569522L; @Id Long proposicaoId; @Id Long pautaReuniaoComissaoId; @Column Integer ordemPauta = 0; @Column String relator; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "proposicaoId", updatable = false, insertable = false, referencedColumnName = "id", nullable = false) Proposicao proposicao; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "pautaReuniaoComissaoId", updatable = false, insertable = false, referencedColumnName = "id", nullable = false) PautaReuniaoComissao pautaReuniaoComissao; @Column String resultado; ProposicaoPautaComissao() { } // isto é o id da tabela de proposicao, e não o idproposicao que vem do WS! public Long getProposicaoId() { return proposicaoId; } public Long getPautaReuniaoComissaoId() { return pautaReuniaoComissaoId; } public ProposicaoPautaComissao(PautaReuniaoComissao pc, Proposicao prop) { setProposicao(prop); setPautaReuniaoComissao(pc); } public String getRelator() { return relator; } public void setRelator(String relator) { this.relator = relator; } @JsonSerialize(using = CompactProposicaoComComentarioSerializer.class) public Proposicao getProposicao() { if (proposicao != null && proposicao.getId() != proposicaoId) { proposicaoId = proposicao.getId(); } return proposicao; } public Integer getOrdemPauta() { return ordemPauta; } public void setOrdemPauta(Integer ordemPauta) { this.ordemPauta = ordemPauta; } @JsonSerialize(using = CompactPautaReuniaoComissao.class) public PautaReuniaoComissao getPautaReuniaoComissao() { if (pautaReuniaoComissao != null && pautaReuniaoComissao.getId() != pautaReuniaoComissaoId) { pautaReuniaoComissaoId = pautaReuniaoComissao.getId(); } return pautaReuniaoComissao; } public void setPautaReuniaoComissao(PautaReuniaoComissao pautaReuniaoComissao) { this.pautaReuniaoComissao = pautaReuniaoComissao; if (pautaReuniaoComissao != null) { pautaReuniaoComissaoId = pautaReuniaoComissao.getId(); } } public void setProposicao(Proposicao proposicao) { this.proposicao = proposicao; if (proposicao != null) { proposicaoId = proposicao.getId(); } } public String getResultado() { return resultado; } public void setResultado(String resultado) { this.resultado = resultado; } @Override public int compareTo(ProposicaoPautaComissao o) { if (o.ordemPauta == null) { return 1; } if (ordemPauta == null) { return -1; } if (o.ordemPauta > ordemPauta) { return -1; } else if (o.ordemPauta < ordemPauta) { return 1; } else { return 0; } } @Override public boolean equals(Object obj) { if (obj == this) { return true; } else { if (obj instanceof ProposicaoPautaComissao) { if (this.proposicao == null || proposicaoId == null) { return false; } if (this.pautaReuniaoComissao == null || pautaReuniaoComissaoId == null) { return false; } if (this.pautaReuniaoComissaoId.equals(((ProposicaoPautaComissao) obj).getPautaReuniaoComissaoId()) && this.proposicaoId.equals(((ProposicaoPautaComissao) obj).getProposicaoId())) { return true; } } } return false; } @Override public String toString() { return proposicaoId + ":" + pautaReuniaoComissaoId + " (" + resultado + ")@" + super.hashCode(); } }