package flapjack.entity; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import com.google.common.base.Objects; import flapjack.auth.Role; /** * Represents a happy user of our wonderful system * * @author Ray Vanderborght */ @Entity(name="person") @NamedQueries({ @NamedQuery( name="Person.findByEmail", query="from person where email = :email" ) }) public class Person implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue @Column(name="person_id") private Long id; @Column private String name; @Column(nullable=false) private String email; @Column(nullable=false) @Enumerated(EnumType.STRING) private Role role; public Person() { } public Person(String email) { this.email = email; } @Override public int hashCode() { return Objects.hashCode(email); } @Override public boolean equals(Object obj) { if (obj == this) return true; if (obj == null) return false; if (getClass().equals(obj.getClass())) { Person other = (Person) obj; return Objects.equal(this.email, other.getEmail()); } return false; } @Override public String toString() { return Objects.toStringHelper(this) .add("email", email) .add("name", name) .add("role", role) .toString(); } public Long getId() { return this.id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public Role getRole() { return role; } public void setRole(Role role) { this.role = role; } }