method to merge feeds

This commit is contained in:
Athou
2013-07-02 14:57:00 +02:00
parent f230ad74b1
commit a7f5f9ee00
2 changed files with 23 additions and 2 deletions

View File

@@ -1,5 +1,7 @@
package com.commafeed.backend.services;
import java.util.List;
import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.Singleton;
@@ -8,8 +10,10 @@ import javax.inject.Inject;
import org.apache.commons.codec.digest.DigestUtils;
import com.commafeed.backend.dao.FeedDAO;
import com.commafeed.backend.dao.FeedSubscriptionDAO;
import com.commafeed.backend.feeds.FeedUtils;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedSubscription;
@Singleton
public class FeedService {
@@ -17,6 +21,9 @@ public class FeedService {
@Inject
FeedDAO feedDAO;
@Inject
FeedSubscriptionDAO feedSubscriptionDAO;
@Lock(LockType.WRITE)
public Feed findOrCreate(String url) {
Feed feed = feedDAO.findByUrl(url);
@@ -32,4 +39,19 @@ public class FeedService {
return feed;
}
public void mergeFeeds(Feed into, Feed... feeds) {
for (Feed feed : feeds) {
if (into.getId().equals(feed.getId())) {
continue;
}
List<FeedSubscription> subs = feedSubscriptionDAO.findByFeed(feed);
for (FeedSubscription sub : subs) {
sub.setFeed(into);
}
feedSubscriptionDAO.saveOrUpdate(subs);
feedDAO.delete(feed);
}
feedDAO.saveOrUpdate(into);
}
}