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

@@ -4,7 +4,6 @@ import java.util.Date;
import java.util.Set;
import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ManyToMany;
@@ -111,7 +110,7 @@ public class Feed extends AbstractModel {
@Column(length = 40)
private String lastContentHash;
@ManyToMany(mappedBy = "feeds", cascade = CascadeType.REMOVE)
@ManyToMany(mappedBy = "feeds")
private Set<FeedEntry> entries = Sets.newHashSet();
@OneToMany(mappedBy = "feed")

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);
}
}