filter out old entries

This commit is contained in:
Athou
2013-05-30 13:51:18 +02:00
parent a79cfeef16
commit 2ba1614f1d

View File

@@ -14,7 +14,6 @@ import javax.annotation.PreDestroy;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -119,7 +118,8 @@ public class FeedRefreshUpdater {
@Override @Override
public void run() { public void run() {
boolean ok = true; boolean ok = true;
if (CollectionUtils.isNotEmpty(entries) && hasWork()) { filterOldEntries();
if (entries.isEmpty() == false) {
List<FeedSubscription> subscriptions = feedSubscriptionDAO List<FeedSubscription> subscriptions = feedSubscriptionDAO
.findByFeed(feed); .findByFeed(feed);
for (FeedEntry entry : entries) { for (FeedEntry entry : entries) {
@@ -137,26 +137,30 @@ public class FeedRefreshUpdater {
taskGiver.giveBack(feed); taskGiver.giveBack(feed);
} }
private boolean hasWork() { private void filterOldEntries() {
boolean hasWork = false; List<FeedEntry> keep = Lists.newArrayList();
if (entries != null) {
List<String> guids = Lists.newArrayList(); List<String> guids = Lists.newArrayList();
for (FeedEntry entry : entries) { for (FeedEntry entry : entries) {
guids.add(entry.getGuid()); guids.add(entry.getGuid());
} }
List<FeedEntry> existingEntries = feedEntryDAO.findByGuids(guids); List<FeedEntry> existingEntries = feedEntryDAO
.findByGuids(guids);
for (FeedEntry entry : entries) { for (FeedEntry entry : entries) {
FeedEntry foundEntry = FeedUtils.findEntry(existingEntries, FeedEntry found = FeedUtils.findEntry(existingEntries,
entry); entry);
if (foundEntry == null if (found == null
|| FeedUtils.findFeed(foundEntry.getFeeds(), feed) == null) { || FeedUtils.findFeed(found.getFeeds(), feed) == null) {
hasWork = true; keep.add(entry);
break;
} }
} }
return hasWork;
} }
entries = keep;
}
} }
private boolean updateEntry(final Feed feed, final FeedEntry entry, private boolean updateEntry(final Feed feed, final FeedEntry entry,