package models.dao; import javax.inject.Inject; import javax.inject.Singleton; import models.Comment; import models.ContentStatus; import play.utils.dao.CachedDAO; import play.utils.dao.TimestampListener; import com.avaje.ebean.Expr; import com.avaje.ebean.Expression; import com.avaje.ebean.Page; @Singleton public class CommentDAO extends CachedDAO<Long, Comment> { @Inject public CommentDAO(OwnerCacheCleaner<Long, Comment> cacheCleaner) { super(Long.class, Comment.class); addListener(new TimestampListener<Long, Comment>()); addListener(cacheCleaner); } /** * Return a page of comments * * @param postKey * post key * @param page * Page to display * @param pageSize * Number of computers per page */ public Page<Comment> page(Long postKey, int page, int pageSize) { String cacheKey = "postKey=" + postKey + ", page=" + page; Expression expr = Expr.and(Expr.eq("postKey", postKey), Expr.ne("status", ContentStatus.REMOVED)); Page<Comment> p = find.page(page, pageSize, "createdOn desc", cacheKey, expr); return p; } public Page<Comment> getCommentsBy(String userKey, int page, int pageSize) { String cacheKey = "userKey=" + userKey + ", page=" + page; Expression expr = Expr.and(Expr.eq("created_by", userKey), Expr.ne("status", ContentStatus.REMOVED)); return find.page(page, pageSize, "createdOn desc", cacheKey, expr); } }