diff --git a/src/main/java/com/commafeed/backend/dao/FeedDAO.java b/src/main/java/com/commafeed/backend/dao/FeedDAO.java index dd44d1cf..eb031403 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedDAO.java @@ -18,12 +18,13 @@ import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.FeedPushInfo; import com.commafeed.backend.model.Feed_; import com.google.common.collect.Iterables; +import com.google.common.collect.Lists; import com.uaihebert.model.EasyCriteria; @Stateless public class FeedDAO extends GenericDAO { - private Predicate[] getUpdatablePredicates(Root root) { + private List getUpdatablePredicates(Root root) { Date now = Calendar.getInstance().getTime(); Predicate hasSubscriptions = builder.isNotEmpty(root @@ -38,9 +39,9 @@ public class FeedDAO extends GenericDAO { Predicate disabledDateIsInPast = builder.lessThan( root.get(Feed_.disabledUntil), now); - return new Predicate[] { hasSubscriptions, + return Lists.newArrayList(hasSubscriptions, builder.or(neverUpdated, updatedBeforeThreshold), - builder.or(disabledDateIsNull, disabledDateIsInPast) }; + builder.or(disabledDateIsNull, disabledDateIsInPast)); } public Long getUpdatableCount() { @@ -48,7 +49,10 @@ public class FeedDAO extends GenericDAO { Root root = query.from(getType()); query.select(builder.count(root)); - query.where(getUpdatablePredicates(root)); + + List preds = getUpdatablePredicates(root); + preds.add(builder.lessThanOrEqualTo(root.get(Feed_.errorCount), 10)); + query.where(preds.toArray(new Predicate[0])); TypedQuery q = em.createQuery(query); return q.getSingleResult(); @@ -58,7 +62,7 @@ public class FeedDAO extends GenericDAO { CriteriaQuery query = builder.createQuery(getType()); Root root = query.from(getType()); - query.where(getUpdatablePredicates(root)); + query.where(getUpdatablePredicates(root).toArray(new Predicate[0])); query.orderBy(builder.asc(root.get(Feed_.lastUpdated))); TypedQuery q = em.createQuery(query);