package com.john.springinaction.domain;
import static javax.persistence.GenerationType.*;
import static org.apache.commons.lang.builder.EqualsBuilder.*;
import static org.apache.commons.lang.builder.HashCodeBuilder.*;
import static org.apache.commons.lang.builder.ToStringBuilder.*;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.springframework.format.annotation.DateTimeFormat;
@Entity
@Table(name="spittle")
public class Spittle implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private Spitter spitter;
private String text;
@DateTimeFormat(pattern="hh:mma MMM d, YYYY")
private Date when;
public Spittle() {
this.spitter = new Spitter(); // HARD-CODED FOR NOW
this.spitter.setId((long)1);
}
@Id
@GeneratedValue(strategy = AUTO)
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name="spittleText")
@NotNull
@Size(min=1, max=140)
public String getText() {
return this.text;
}
public void setText(String text) {
this.text = text;
}
@Column(name="postedTime")
public Date getWhen() {
return this.when;
}
public void setWhen(Date when) {
this.when = when;
}
@ManyToOne
@JoinColumn(name="spitter_id")
public Spitter getSpitter() {
return this.spitter;
}
public void setSpitter(Spitter spitter) {
this.spitter = spitter;
}
// plumbing
@Override
public boolean equals(Object obj) {
return reflectionEquals(this, obj);
}
@Override
public int hashCode() {
return reflectionHashCode(this);
}
@Override
public String toString() {
return reflectionToString(this);
}
}