diff --git a/src/main/java/com/commafeed/backend/DatabaseCleaner.java b/src/main/java/com/commafeed/backend/DatabaseCleaner.java index 63ba232f..b8359814 100644 --- a/src/main/java/com/commafeed/backend/DatabaseCleaner.java +++ b/src/main/java/com/commafeed/backend/DatabaseCleaner.java @@ -8,14 +8,14 @@ import javax.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.commafeed.backend.dao.FeedEntryStatusDAO; +import com.commafeed.backend.dao.FeedEntryDAO; public class DatabaseCleaner { private static Logger log = LoggerFactory.getLogger(DatabaseCleaner.class); @Inject - FeedEntryStatusDAO feedEntryStatusDAO; + FeedEntryDAO feedEntryDAO; public long cleanOlderThan(long value, TimeUnit unit) { Calendar cal = Calendar.getInstance(); @@ -24,7 +24,7 @@ public class DatabaseCleaner { long total = 0; int deleted = -1; do { - deleted = feedEntryStatusDAO.delete(cal.getTime(), 100); + deleted = feedEntryDAO.delete(cal.getTime(), 100); total += deleted; log.info("removed {} statuses", total); } 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 783b3274..5f30d5a5 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryDAO.java @@ -1,5 +1,6 @@ package com.commafeed.backend.dao; +import java.util.Date; import java.util.List; import javax.ejb.Stateless; @@ -66,4 +67,18 @@ public class FeedEntryDAO extends GenericDAO { limit(q, offset, limit); return q.getResultList(); } + + 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; + } } diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java index bfe305cb..7b17b3a8 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java @@ -309,33 +309,6 @@ public class FeedEntryStatusDAO extends GenericDAO { query.setHint("javax.persistence.query.timeout", 20000); } - public int delete(Date olderThan, int max) { - CriteriaQuery query = builder.createQuery(Long.class); - Root root = query.from(getType()); - query.select(root.get(FeedEntryStatus_.id)); - - 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 ids = q.getResultList(); - - int deleted = 0; - if (ids.isEmpty() == false) { - Query deleteQuery = em.createNamedQuery("EntryStatus.deleteByIds"); - deleteQuery.setParameter("ids", ids); - deleted = deleteQuery.executeUpdate(); - } - return deleted; - } - public void markSubscriptionEntries(FeedSubscription subscription, Date olderThan) { List statuses = findBySubscription(subscription, true,