mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
method to merge feeds
This commit is contained in:
@@ -4,7 +4,6 @@ import java.util.Date;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.persistence.Cacheable;
|
import javax.persistence.Cacheable;
|
||||||
import javax.persistence.CascadeType;
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.ManyToMany;
|
import javax.persistence.ManyToMany;
|
||||||
@@ -111,7 +110,7 @@ public class Feed extends AbstractModel {
|
|||||||
@Column(length = 40)
|
@Column(length = 40)
|
||||||
private String lastContentHash;
|
private String lastContentHash;
|
||||||
|
|
||||||
@ManyToMany(mappedBy = "feeds", cascade = CascadeType.REMOVE)
|
@ManyToMany(mappedBy = "feeds")
|
||||||
private Set<FeedEntry> entries = Sets.newHashSet();
|
private Set<FeedEntry> entries = Sets.newHashSet();
|
||||||
|
|
||||||
@OneToMany(mappedBy = "feed")
|
@OneToMany(mappedBy = "feed")
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.commafeed.backend.services;
|
package com.commafeed.backend.services;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.ejb.Lock;
|
import javax.ejb.Lock;
|
||||||
import javax.ejb.LockType;
|
import javax.ejb.LockType;
|
||||||
import javax.ejb.Singleton;
|
import javax.ejb.Singleton;
|
||||||
@@ -8,8 +10,10 @@ import javax.inject.Inject;
|
|||||||
import org.apache.commons.codec.digest.DigestUtils;
|
import org.apache.commons.codec.digest.DigestUtils;
|
||||||
|
|
||||||
import com.commafeed.backend.dao.FeedDAO;
|
import com.commafeed.backend.dao.FeedDAO;
|
||||||
|
import com.commafeed.backend.dao.FeedSubscriptionDAO;
|
||||||
import com.commafeed.backend.feeds.FeedUtils;
|
import com.commafeed.backend.feeds.FeedUtils;
|
||||||
import com.commafeed.backend.model.Feed;
|
import com.commafeed.backend.model.Feed;
|
||||||
|
import com.commafeed.backend.model.FeedSubscription;
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class FeedService {
|
public class FeedService {
|
||||||
@@ -17,6 +21,9 @@ public class FeedService {
|
|||||||
@Inject
|
@Inject
|
||||||
FeedDAO feedDAO;
|
FeedDAO feedDAO;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
FeedSubscriptionDAO feedSubscriptionDAO;
|
||||||
|
|
||||||
@Lock(LockType.WRITE)
|
@Lock(LockType.WRITE)
|
||||||
public Feed findOrCreate(String url) {
|
public Feed findOrCreate(String url) {
|
||||||
Feed feed = feedDAO.findByUrl(url);
|
Feed feed = feedDAO.findByUrl(url);
|
||||||
@@ -32,4 +39,19 @@ public class FeedService {
|
|||||||
return feed;
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user