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.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
/**
* Registro de uma alteracao de uma proposicao
*
* @author rafael.coutinho
*
*/
@Entity
@XmlRootElement
@JsonIgnoreProperties(ignoreUnknown = true)
public class AlteracaoProposicao extends AbstractEntity implements Comparable<AlteracaoProposicao> {
private static final long serialVersionUID = 7949894944142814382L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
private Proposicao proposicao;
@Column(length = 2000)
private String descricaoAlteracao;
@Column
@Temporal(TemporalType.TIMESTAMP)
private Date data;
AlteracaoProposicao() {
}
public AlteracaoProposicao(Proposicao proposicao, String descricaoAlteracao, Date data) {
super();
this.proposicao = proposicao;
this.descricaoAlteracao = descricaoAlteracao;
if (descricaoAlteracao.length() > 2000) {
this.descricaoAlteracao = descricaoAlteracao.substring(0, 1999);
}
this.data = data;
}
@Override
public Number getId() {
return id;
}
public Proposicao getProposicao() {
return proposicao;
}
public String getDescricaoAlteracao() {
return descricaoAlteracao;
}
public Date getData() {
return data;
}
public void setProposicao(Proposicao proposicao) {
this.proposicao = proposicao;
}
@Override
public int compareTo(AlteracaoProposicao o) {
if (data == null) {
return -1;
} else if (o.data == null) {
return 1;
}
return data.compareTo(o.data);
}
}