forked from Archives/Athou_commafeed
automatic merging of duplicate feeds
This commit is contained in:
@@ -10,6 +10,7 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.commafeed.backend.dao.FeedDAO;
|
import com.commafeed.backend.dao.FeedDAO;
|
||||||
|
import com.commafeed.backend.dao.FeedDAO.FeedCount;
|
||||||
import com.commafeed.backend.dao.FeedEntryDAO;
|
import com.commafeed.backend.dao.FeedEntryDAO;
|
||||||
import com.commafeed.backend.dao.FeedSubscriptionDAO;
|
import com.commafeed.backend.dao.FeedSubscriptionDAO;
|
||||||
import com.commafeed.backend.model.Feed;
|
import com.commafeed.backend.model.Feed;
|
||||||
@@ -69,6 +70,22 @@ public class DatabaseCleaner {
|
|||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long cleanDuplicateFeeds() {
|
||||||
|
long total = 0;
|
||||||
|
int deleted = -1;
|
||||||
|
do {
|
||||||
|
List<FeedCount> fcs = feedDAO.findDuplicates(0, 10, 1);
|
||||||
|
deleted = fcs.size();
|
||||||
|
for (FeedCount fc : fcs) {
|
||||||
|
mergeFeeds(fc.feeds.get(0), fc.feeds);
|
||||||
|
}
|
||||||
|
total += deleted;
|
||||||
|
log.info("merged {} feeds", total);
|
||||||
|
} while (deleted != 0);
|
||||||
|
log.info("cleanup done: {} feeds merged", total);
|
||||||
|
return total;
|
||||||
|
}
|
||||||
|
|
||||||
public void mergeFeeds(Feed into, List<Feed> feeds) {
|
public void mergeFeeds(Feed into, List<Feed> feeds) {
|
||||||
for (Feed feed : feeds) {
|
for (Feed feed : feeds) {
|
||||||
if (into.getId().equals(feed.getId())) {
|
if (into.getId().equals(feed.getId())) {
|
||||||
|
|||||||
@@ -304,4 +304,14 @@ public class AdminREST extends AbstractResourceREST {
|
|||||||
return Response.ok().build();
|
return Response.ok().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Path("/cleanup/automerge")
|
||||||
|
@GET
|
||||||
|
@ApiOperation(value = "Automatically merge feeds", notes = "Merge feeds together")
|
||||||
|
public Response autoMergeFeeds() {
|
||||||
|
Map<String, Long> map = Maps.newHashMap();
|
||||||
|
map.put("merged feeds",
|
||||||
|
cleaner.cleanDuplicateFeeds());
|
||||||
|
return Response.ok(map).build();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user