package com.john.springinaction.domain; import org.codehaus.jackson.annotate.JsonIgnore; import javax.persistence.*; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import java.io.Serializable; import java.util.Date; import java.util.List; import static java.util.Arrays.asList; import static javax.persistence.GenerationType.AUTO; import static org.apache.commons.lang.builder.EqualsBuilder.reflectionEquals; import static org.apache.commons.lang.builder.HashCodeBuilder.reflectionHashCode; import static org.apache.commons.lang.builder.ToStringBuilder.reflectionToString; @SuppressWarnings("restriction") @Entity @Table(name="spitter") @XmlRootElement public class Spitter implements Serializable { private static final long serialVersionUID = 1L; private Long id; //<start id="java_SpitterValidated" /> @Size(min=3, max=20, message= "Username must be between 3 and 20 characters long.") //<co id="co_enforceSize"/> @Pattern(regexp="^[a-zA-Z0-9]+$", message="Username must be alphanumeric with no spaces") //<co id="co_noSpaces"/> private String username; @Size(min=6, max=20, message="The password must be at least 6 characters long.") //<co id="co_enforceSize"/> private String password; @Size(min=3, max=50, message= "Your full name must be between 3 and 50 characters long.") //<co id="co_enforceSize"/> private String fullName; @Pattern(regexp="[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}", message="Invalid email address.") //<co id="co_emailPattern"/> private String email; //<end id="java_SpitterValidated" /> private boolean updateByEmail; @Id @GeneratedValue(strategy = AUTO) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name="username", unique=true) public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } @Column(name="password") public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } public void setFullName(String fullName) { this.fullName = fullName; } @Column(name="fullname") public String getFullName() { return fullName; } public void setEmail(String email) { this.email = email; } @Column(name="email") public String getEmail() { return email; } public void setUpdateByEmail(boolean updateByEmail) { this.updateByEmail = updateByEmail; } @Column(name="update_by_email") public boolean isUpdateByEmail() { return updateByEmail; } @Transient @JsonIgnore public List<Spittle> getRecentSpittles() { Spittle spittle = new Spittle(); spittle.setId(999L); spittle.setSpitter(this); spittle.setText("TEST SPITTLE #99"); spittle.setWhen(new Date()); return asList(spittle); } // 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); } }