package com.example.client.shared; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import javax.validation.constraints.Digits; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import javax.validation.constraints.Size; import javax.xml.bind.annotation.XmlRootElement; import org.hibernate.validator.constraints.NotEmpty; import org.jboss.errai.common.client.api.annotations.Portable; /** * This is the main business entity of the Kitchen Sink demo. It has lots of * annotations because it's the subject of four separate annotation-driven * frameworks: * <dl> * <dt>JAXB - The Java API for XML Binding * <dd>{@code @XmlRootElement} indicates that this class can be serialized as XML. * This allows automatic serialization in the JAX-RS resource. * * <dt>JPA - The Java Persistence API * <dd>{@code @Entity} indicates that this class should be persisted to the * server-side relational database. * * <dt>Errai Marshalling * <dd>{@code @Portable} indicates that instances of this class can be sent to clients. * * <dt>Bean Validation * <dd>{@code @NotNull, @NotEmpty, @Email, @Size} specify validation constraints on various properties of this bean. * Both JPA and the GWT client understand these rules, and test instances of this class against them. * </dl> */ @Portable @XmlRootElement @Entity @Table(uniqueConstraints = @UniqueConstraint(columnNames = "email")) public class Member implements Serializable, Comparable<Member> { /** Default value included to remove warning. Remove or modify at will. **/ private static final long serialVersionUID = 1L; @Id @GeneratedValue private Long id; @NotNull @Size(min = 1, max = 25) @Pattern(regexp = "[A-Za-z ]*", message = "must contain only letters and spaces") private String name; @NotNull @NotEmpty @Email private String email; @NotNull @Size(min = 10, max = 12) @Digits(fraction = 0, integer = 12) @Column(name = "phone_number") private String phoneNumber; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } /** * Compares this member to the other member case-insensitive-alphabetically by name. */ @Override public int compareTo(Member o) { if (o == null) { return 1; } if (this.name == null && o.name != null) { return -1; } if (this.name == null && o.name == null) { return 0; } if (this.name != null && o.name == null) { return 1; } return this.name.compareToIgnoreCase(o.name); } }