package tudu.domain; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; import javax.persistence.*; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.Email; import java.io.Serializable; import java.util.Date; import java.util.HashSet; import java.util.Set; /** * A user. * * @author Julien Dubois */ @Entity @Table(name = "tuser") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) @NamedQueries( { @NamedQuery(name = "User.getNumberOfUsers", query = "SELECT COUNT(user) FROM User user"), @NamedQuery(name = "User.findUsersByLogin", query = "SELECT user FROM User user where user.login LIKE :login") }) public class User implements Serializable, Comparable<User> { /** * The serialVersionUID. */ private static final long serialVersionUID = 4048798961366546485L; @Id @Size(min = 1, max = 50) private String login; @Size(min = 5, max = 50) private String password; @Transient @Size(min = 5, max = 50) private String verifyPassword; @Size(min = 1, max = 60) private String firstName; @Size(min = 1, max = 60) private String lastName; @Size(min = 0, max = 150) @Email private String email; private Date creationDate; private Date lastAccessDate; private boolean enabled; private String dateFormat; @ManyToMany @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) private Set<Role> roles = new HashSet<Role>(); @ManyToMany(fetch = FetchType.EAGER) @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) private Set<TodoList> todoLists = new HashSet<TodoList>(); public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getVerifyPassword() { return verifyPassword; } public void setVerifyPassword(String verifyPassword) { this.verifyPassword = verifyPassword; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getCreationDate() { return creationDate; } public void setCreationDate(Date creationDate) { this.creationDate = creationDate; } public Date getLastAccessDate() { return lastAccessDate; } public void setLastAccessDate(Date lastAccessDate) { this.lastAccessDate = lastAccessDate; } public boolean isEnabled() { return enabled; } public void setEnabled(boolean enabled) { this.enabled = enabled; } public String getDateFormat() { return dateFormat; } public void setDateFormat(String dateFormat) { this.dateFormat = dateFormat; } public Set<Role> getRoles() { return roles; } public void setRoles(Set<Role> roles) { this.roles = roles; } public Set<TodoList> getTodoLists() { return todoLists; } public void setTodoLists(Set<TodoList> todoLists) { this.todoLists = todoLists; } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof User)) { return false; } final User user = (User) o; if (!login.equals(user.login)) { return false; } return true; } @Override public int hashCode() { return login.hashCode(); } public int compareTo(User that) { return this.getLogin().compareTo(that.getLogin()); } @Override public String toString() { return "User{" + "login='" + login + '\'' + ", firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + '}'; } }