diff --git a/src/main/java/com/commafeed/backend/DatabaseCleaner.java b/src/main/java/com/commafeed/backend/DatabaseCleaner.java index 655e8007..5a8c1046 100644 --- a/src/main/java/com/commafeed/backend/DatabaseCleaner.java +++ b/src/main/java/com/commafeed/backend/DatabaseCleaner.java @@ -5,12 +5,12 @@ import java.util.concurrent.TimeUnit; import javax.inject.Inject; -import com.commafeed.backend.dao.FeedEntryDAO; +import com.commafeed.backend.dao.FeedEntryStatusDAO; public class DatabaseCleaner { @Inject - FeedEntryDAO feedEntryDAO; + FeedEntryStatusDAO feedEntryStatusDAO; public void cleanOlderThan(long value, TimeUnit unit) { Calendar cal = Calendar.getInstance(); @@ -18,7 +18,7 @@ public class DatabaseCleaner { int deleted = -1; do { - deleted = feedEntryDAO.delete(cal.getTime(), 1000); + deleted = feedEntryStatusDAO.delete(cal.getTime(), 1000); } while (deleted != 0); } diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java index a57ff59c..783b3274 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java @@ -1,6 +1,5 @@ package com.commafeed.backend.dao; -import java.util.Date; import java.util.List; import javax.ejb.Stateless; @@ -56,20 +55,6 @@ public class FeedEntryDAO extends GenericDAO { return list; } - public int delete(Date olderThan, int max) { - CriteriaQuery query = builder.createQuery(getType()); - Root root = query.from(getType()); - query.where(builder.lessThan(root.get(FeedEntry_.inserted), olderThan)); - - TypedQuery q = em.createQuery(query); - q.setMaxResults(max); - - List list = q.getResultList(); - int deleted = list.size(); - delete(list); - return deleted; - } - public List findByFeed(Feed feed, int offset, int limit) { CriteriaQuery query = builder.createQuery(getType()); Root root = query.from(getType()); diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java index 50763bcc..2ae4c13f 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java @@ -307,6 +307,27 @@ public class FeedEntryStatusDAO extends GenericDAO { query.setHint("javax.persistence.query.timeout", 20000); } + public int delete(Date olderThan, int max) { + CriteriaQuery query = builder.createQuery(getType()); + Root root = query.from(getType()); + Join entryJoin = root + .join(FeedEntryStatus_.entry); + + Predicate p1 = builder.lessThan(entryJoin.get(FeedEntry_.inserted), + olderThan); + Predicate p2 = builder.isFalse(root.get(FeedEntryStatus_.starred)); + + query.where(p1, p2); + + TypedQuery q = em.createQuery(query); + q.setMaxResults(max); + + List list = q.getResultList(); + int deleted = list.size(); + delete(list); + return deleted; + } + public void markSubscriptionEntries(FeedSubscription subscription, Date olderThan) { List statuses = findBySubscription(subscription, true,