diff --git a/src/main/java/com/commafeed/backend/DatabaseCleaner.java b/src/main/java/com/commafeed/backend/DatabaseCleaner.java index 30311c61..b853eabf 100644 --- a/src/main/java/com/commafeed/backend/DatabaseCleaner.java +++ b/src/main/java/com/commafeed/backend/DatabaseCleaner.java @@ -1,6 +1,7 @@ package com.commafeed.backend; import java.util.Calendar; +import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; @@ -12,6 +13,7 @@ import org.slf4j.LoggerFactory; import com.commafeed.backend.dao.FeedDAO; import com.commafeed.backend.dao.FeedEntryContentDAO; import com.commafeed.backend.dao.FeedEntryDAO; +import com.commafeed.backend.dao.FeedEntryStatusDAO; import com.commafeed.backend.dao.FeedSubscriptionDAO; import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.FeedSubscription; @@ -33,6 +35,9 @@ public class DatabaseCleaner { @Inject FeedEntryContentDAO feedEntryContentDAO; + @Inject + FeedEntryStatusDAO feedEntryStatusDAO; + @Inject ApplicationSettingsService applicationSettingsService; @@ -92,4 +97,10 @@ public class DatabaseCleaner { } feedDAO.saveOrUpdate(into); } + + public void cleanStatusesOlderThan(Date olderThan) { + log.info("cleaning old read statuses"); + int deleted = feedEntryStatusDAO.deleteOldStatuses(olderThan); + log.info("cleaned {} read statuses", deleted); + } } diff --git a/src/main/java/com/commafeed/backend/services/CleaningService.java b/src/main/java/com/commafeed/backend/ScheduledTasks.java similarity index 52% rename from src/main/java/com/commafeed/backend/services/CleaningService.java rename to src/main/java/com/commafeed/backend/ScheduledTasks.java index 396aa2f8..d9e58680 100644 --- a/src/main/java/com/commafeed/backend/services/CleaningService.java +++ b/src/main/java/com/commafeed/backend/ScheduledTasks.java @@ -1,4 +1,4 @@ -package com.commafeed.backend.services; +package com.commafeed.backend; import java.util.Date; @@ -7,32 +7,31 @@ import javax.ejb.Stateless; import javax.inject.Inject; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; -import javax.persistence.Query; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -@Stateless -public class CleaningService { +import com.commafeed.backend.services.ApplicationSettingsService; - protected final static Logger log = LoggerFactory.getLogger(CleaningService.class); +@Stateless +public class ScheduledTasks { + protected final static Logger log = LoggerFactory.getLogger(ScheduledTasks.class); @Inject ApplicationSettingsService applicationSettingsService; + @Inject + DatabaseCleaner cleaner; + @PersistenceContext EntityManager em; // every day at midnight @Schedule(hour = "0", persistent = false) - private void cleanOldStatuses() { + private void cleanupOldStatuses() { Date threshold = applicationSettingsService.get().getUnreadThreshold(); if (threshold != null) { - log.info("cleaning old read statuses"); - Query query = em.createNamedQuery("Statuses.deleteOld"); - query.setParameter("date", threshold); - int deleted = query.executeUpdate(); - log.info("cleaned {} read statuses", deleted); + cleaner.cleanStatusesOlderThan(threshold); } } } diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java index e03a62b9..a4ea8155 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java @@ -266,4 +266,10 @@ public class FeedEntryStatusDAO extends GenericDAO { setTimeout(query, applicationSettingsService.get().getQueryTimeout()); } + public int deleteOldStatuses(Date olderThan) { + Query query = em.createNamedQuery("Statuses.deleteOld"); + query.setParameter("date", olderThan); + return query.executeUpdate(); + } + } 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 e3568d1c..638a9039 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/AdminREST.java @@ -262,7 +262,7 @@ public class AdminREST extends AbstractResourceREST { @ApiOperation(value = "Entries cleanup", notes = "Delete entries older than given date") public Response cleanupEntries(@QueryParam("days") @DefaultValue("30") int days) { Map map = Maps.newHashMap(); - map.put("old entries", cleaner.cleanEntriesOlderThan(days, TimeUnit.DAYS)); + map.put("old_entries", cleaner.cleanEntriesOlderThan(days, TimeUnit.DAYS)); return Response.ok(map).build(); }