diff --git a/src/main/java/com/commafeed/backend/dao/FeedEntryService.java b/src/main/java/com/commafeed/backend/dao/FeedEntryService.java index 4b2337cd..9a7cfad8 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedEntryService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedEntryService.java @@ -17,6 +17,7 @@ import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.FeedCategory; import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedEntryStatus; +import com.commafeed.backend.model.FeedSubscription; import com.commafeed.backend.model.User; import com.commafeed.backend.model.extended.FeedEntryWithStatus; import com.commafeed.frontend.utils.ModelFactory.MF; @@ -31,6 +32,9 @@ public class FeedEntryService extends GenericDAO { @Inject FeedService feedService; + @Inject + FeedSubscriptionService feedSubscriptionService; + public void updateEntries(String url, Collection entries) { Feed feed = Iterables.getFirst( feedService.findByField(MF.i(MF.p(Feed.class).getUrl()), url), @@ -51,7 +55,7 @@ public class FeedEntryService extends GenericDAO { } } if (foundEntry == null) { - entry.getFeeds().add(feed); + addFeedToEntry(entry, feed); save(entry); } else { boolean foundFeed = false; @@ -63,7 +67,7 @@ public class FeedEntryService extends GenericDAO { } if (!foundFeed) { - foundEntry.getFeeds().add(feed); + addFeedToEntry(foundEntry, feed); update(foundEntry); } } @@ -74,6 +78,19 @@ public class FeedEntryService extends GenericDAO { feedService.update(feed); } + private void addFeedToEntry(FeedEntry entry, Feed feed) { + entry.getFeeds().add(feed); + List subscriptions = feedSubscriptionService + .findByFeed(feed); + for (FeedSubscription sub : subscriptions) { + FeedEntryStatus status = new FeedEntryStatus(); + status.setEntry(entry); + status.setUser(sub.getUser()); + em.persist(status); + } + + } + public List getByGuids(List guids) { TypedQuery query = em.createNamedQuery("Entry.byGuids", FeedEntry.class); diff --git a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java index e21eab82..bcba38e0 100644 --- a/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java +++ b/src/main/java/com/commafeed/backend/dao/FeedSubscriptionService.java @@ -27,6 +27,12 @@ public class FeedSubscriptionService extends GenericDAO { return Iterables.getFirst(criteria.getResultList(), null); } + public List findByFeed(Feed feed) { + EasyCriteria criteria = createCriteria(); + criteria.andEquals(MF.i(proxy().getFeed()), feed); + return criteria.getResultList(); + } + public FeedSubscription findByFeed(User user, Feed feed) { EasyCriteria criteria = createCriteria(); criteria.andEquals(MF.i(proxy().getUser()), user);