From 5b847d1ba9fc94f6bc759162e7b2892dd24fd86a Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 24 May 2013 12:42:18 +0200 Subject: [PATCH] display backlog in metrics --- .../com/commafeed/backend/dao/FeedDAO.java | 29 ++++++++++++++----- .../frontend/rest/resources/AdminREST.java | 6 ++-- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/src/main/java/com/commafeed/backend/dao/FeedDAO.java index a5af6eb8..dd44d1cf 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedDAO.java @@ -23,10 +23,7 @@ import com.uaihebert.model.EasyCriteria; @Stateless public class FeedDAO extends GenericDAO { - public List findNextUpdatable(int count) { - CriteriaQuery query = builder.createQuery(getType()); - Root root = query.from(getType()); - + private Predicate[] getUpdatablePredicates(Root root) { Date now = Calendar.getInstance().getTime(); Predicate hasSubscriptions = builder.isNotEmpty(root @@ -41,14 +38,32 @@ public class FeedDAO extends GenericDAO { Predicate disabledDateIsInPast = builder.lessThan( root.get(Feed_.disabledUntil), now); - query.where(hasSubscriptions, + return new Predicate[] { hasSubscriptions, builder.or(neverUpdated, updatedBeforeThreshold), - builder.or(disabledDateIsNull, disabledDateIsInPast)); + builder.or(disabledDateIsNull, disabledDateIsInPast) }; + } + + public Long getUpdatableCount() { + CriteriaQuery query = builder.createQuery(Long.class); + Root root = query.from(getType()); + + query.select(builder.count(root)); + query.where(getUpdatablePredicates(root)); + + TypedQuery q = em.createQuery(query); + return q.getSingleResult(); + } + + public List findNextUpdatable(int count) { + CriteriaQuery query = builder.createQuery(getType()); + Root root = query.from(getType()); + + query.where(getUpdatablePredicates(root)); query.orderBy(builder.asc(root.get(Feed_.lastUpdated))); TypedQuery q = em.createQuery(query); q.setMaxResults(count); - + List feeds = q.getResultList(); for (Feed feed : feeds) { FeedPushInfo info = feed.getPushInfo(); diff --git a/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java b/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java index e2213b13..4f6f402f 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java @@ -12,7 +12,6 @@ import javax.ws.rs.core.Response.Status; import org.apache.commons.lang.StringUtils; -import com.commafeed.backend.MetricsBean.Metric; import com.commafeed.backend.StartupBean; import com.commafeed.backend.model.ApplicationSettings; import com.commafeed.backend.model.User; @@ -177,9 +176,10 @@ public class AdminREST extends AbstractResourceREST { @Path("/metrics") @GET public Response getMetrics() { - Map map = ImmutableMap.of("lastMinute", + Map map = ImmutableMap.of("lastMinute", metricsBean.getLastMinute(), "lastHour", - metricsBean.getLastHour()); + metricsBean.getLastHour(), "backlog", + feedDAO.getUpdatableCount()); return Response.ok(map).build(); } }