package tudu.domain.model;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/**
* A Todo List.
*
* @author Julien Dubois
*/
@Entity
@Table(name = "todo_list")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class TodoList implements Serializable, Comparable<TodoList> {
/**
* The serialVersionUID.
*/
private static final long serialVersionUID = 4048798961366546485L;
@Id
@Column(name = "id")
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String listId;
private String name;
private boolean rssAllowed;
private Date lastUpdate;
@OneToMany(mappedBy = "todoList")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private Set<Todo> todos = new HashSet<Todo>();
@ManyToMany(mappedBy = "todoLists")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
private Set<User> users = new HashSet<User>();
public String getListId() {
return listId;
}
public void setListId(String listId) {
this.listId = listId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isRssAllowed() {
return rssAllowed;
}
public void setRssAllowed(boolean rssAllowed) {
this.rssAllowed = rssAllowed;
}
public Date getLastUpdate() {
return lastUpdate;
}
public void setLastUpdate(Date lastUpdate) {
this.lastUpdate = lastUpdate;
}
public Set<Todo> getTodos() {
return todos;
}
public void setTodos(Set<Todo> todos) {
this.todos = todos;
}
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
public int compareTo(TodoList that) {
return (this.getName().toLowerCase() + this.getListId()).compareTo(that
.getName().toLowerCase()
+ that.getListId());
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof TodoList)) {
return false;
}
final TodoList todoList = (TodoList) o;
if (listId != null ? !listId.equals(todoList.listId)
: todoList.listId != null) {
return false;
}
return true;
}
@Override
public int hashCode() {
return (listId != null ? listId.hashCode() : 0);
}
}