package models; import java.util.Date; import java.util.List; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.Id; import com.avaje.ebean.Page; import play.data.validation.Constraints.Required; import play.db.ebean.Model; import play.utils.cache.CachedFinder; @Entity @SuppressWarnings("serial") public class Task extends Model { public static final int PAGE_SIZE = 10; @Id private Long key; @Basic private String title; @Required private String owner; @Basic private Date dueDate; public static CachedFinder<Long, Task> find = new CachedFinder<Long, Task>( Long.class, Task.class); /** * @return all tasks from the cache */ public static List<Task> all() { return find.all(); } /** * @param page * the page number * @return page of all tasks from the cache */ public static Page<Task> page(int page) { return find.page(page, PAGE_SIZE, "dueDate desc"); } /** * @param page * the page number * @param owner * results will be filtered (exact match) for this owner value * @return page of all tasks from the cache with the specified owner */ public static Page<Task> page(int page, String owner) { return find.page(page, PAGE_SIZE, "dueDate desc", "owner", owner); } public static void create(Task task) { task.save(); find.put(task.getKey(), task); } public static void remove(Long key) { find.ref(key).delete(); find.clean(key); } public static Task get(Long key) { return find.byId(key); } public static void update(Long key, Task task) { task.update(key); find.put(task.getKey(), task); } public Long getKey() { return key; } public void setKey(Long key) { this.key = key; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getOwner() { return owner; } public void setOwner(String owner) { this.owner = owner; } public Date getDueDate() { return dueDate; } public void setDueDate(Date dueDate) { this.dueDate = dueDate; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Task [key=").append(key).append(", title=") .append(title).append(", owner=").append(owner) .append(", dueDate=").append(dueDate).append("]"); return builder.toString(); } }