Person.java
package ejava.jpa.example.validation;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
/**
* This class provides an example of several of the pre-defined constraints
* supplied within the validation API
*/
@Entity
@Table(name="VALIDATION_PERSON")
public class Person {
@Id @GeneratedValue
private int id;
@Column(name="FIRST_NAME", length=12, nullable=false)
//@NotNull
//@Size(min=1,max=12)
//@Pattern(regexp="^[a-zA-Z\\ \\-]+$", message="invalid characters in name")
@ValidName(min=1, max=12, regexp="^[a-zA-Z\\ \\-]+$", message="invalid first name")
private String firstName;
@Column(name="LAST_NAME", length=20, nullable=false)
//@NotNull
//@Size(min=1,max=20)
//@Pattern(regexp="^[a-zA-Z\\ \\-]+$", message="invalid characters in name")
@ValidName(min=1, max=20, regexp="^[a-zA-Z\\ \\-]+$", message="invalid last name")
private String lastName;
@Temporal(TemporalType.DATE)
@NotNull(groups={Drivers.class, POCs.class})
@Past(groups=Drivers.class)
@MinAge.List({
@MinAge(age=18, groups=POCs.class),
@MinAge(age=16, groups=Drivers.class)
})
private Date birthDate;
@Column(name="EMAIL", length=50)
@NotNull(groups=POCs.class)
@Size(min=7,max=50)
@Pattern(regexp="^.+@.+\\..+$")
private String email;
public int getId() { return id; }
public String getFirstName() { return firstName; }
public Person setFirstName(String firstName) {
this.firstName = firstName;
return this;
}
public String getLastName() { return lastName; }
public Person setLastName(String lastName) {
this.lastName = lastName;
return this;
}
public Date getBirthDate() { return birthDate; }
public Person setBirthDate(Date birthDate) {
this.birthDate = birthDate;
return this;
}
public String getEmail() { return email; }
public Person setEmail(String email) {
this.email = email;
return this;
}
@Override
public String toString() {
DateFormat df = new SimpleDateFormat("YYYY");
return (firstName==null ? "null" : firstName) +
(lastName==null ? ", null" : ", " + lastName) +
(birthDate==null ? ", null dob" : ", " + df.format(birthDate)) +
(email==null ? ", null email" : ", " + email)
;
}
}