diff --git a/src/main/java/com/commafeed/backend/FixedSizeSortedSet.java b/src/main/java/com/commafeed/backend/FixedSizeSortedSet.java index de5391bd..f0a597ee 100644 --- a/src/main/java/com/commafeed/backend/FixedSizeSortedSet.java +++ b/src/main/java/com/commafeed/backend/FixedSizeSortedSet.java @@ -24,7 +24,7 @@ public class FixedSizeSortedSet extends TreeSet { @Override public boolean add(E e) { - if (size() == maxSize) { + if (isFull()) { E last = last(); int comparison = comparator.compare(e, last); if (comparison < 0) { @@ -50,6 +50,10 @@ public class FixedSizeSortedSet extends TreeSet { } return success; } + + public boolean isFull() { + return size() == maxSize; + } @SuppressWarnings("unchecked") public List asList() { diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java index ec288f08..6c77740e 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java @@ -161,7 +161,7 @@ public class FeedEntryStatusDAO extends GenericDAO { predicates.add(builder.or(content, title)); } - if (order != null && !set.isEmpty()) { + if (order != null && !set.isEmpty() && set.isFull()) { Predicate filter = null; FeedEntry last = set.last(); if (order == ReadingOrder.desc) { @@ -230,7 +230,7 @@ public class FeedEntryStatusDAO extends GenericDAO { root.get(FeedEntryStatus_.entryInserted), newerThan)); } - if (order != null && !set.isEmpty()) { + if (order != null && !set.isEmpty() && set.isFull()) { Predicate filter = null; FeedEntryStatus last = set.last(); if (order == ReadingOrder.desc) {