2013-03-20 20:33:42 +01:00
|
|
|
package com.commafeed.backend.dao;
|
|
|
|
|
|
|
|
|
|
import java.util.Calendar;
|
|
|
|
|
import java.util.Collection;
|
2013-03-22 09:29:30 +01:00
|
|
|
import java.util.List;
|
2013-03-20 20:33:42 +01:00
|
|
|
|
|
|
|
|
import javax.ejb.Stateless;
|
|
|
|
|
import javax.inject.Inject;
|
2013-03-22 09:29:30 +01:00
|
|
|
import javax.persistence.TypedQuery;
|
2013-03-20 20:33:42 +01:00
|
|
|
|
2013-03-23 16:17:19 +01:00
|
|
|
import com.commafeed.backend.model.Feed;
|
|
|
|
|
import com.commafeed.backend.model.FeedEntry;
|
|
|
|
|
import com.commafeed.backend.model.User;
|
2013-03-23 01:49:39 +01:00
|
|
|
import com.commafeed.frontend.utils.ModelFactory.MF;
|
|
|
|
|
import com.google.common.collect.Iterables;
|
2013-03-20 20:33:42 +01:00
|
|
|
|
|
|
|
|
@Stateless
|
2013-03-25 12:24:00 +01:00
|
|
|
@SuppressWarnings("serial")
|
2013-03-23 01:49:39 +01:00
|
|
|
public class FeedEntryService extends GenericDAO<FeedEntry, Long> {
|
2013-03-20 20:33:42 +01:00
|
|
|
|
|
|
|
|
@Inject
|
|
|
|
|
FeedService feedService;
|
|
|
|
|
|
|
|
|
|
public void updateEntries(String url, Collection<FeedEntry> entries) {
|
2013-03-23 01:49:39 +01:00
|
|
|
Feed feed = Iterables.getFirst(
|
|
|
|
|
feedService.findByField(MF.i(MF.p(Feed.class).getUrl()), url),
|
|
|
|
|
null);
|
2013-03-20 20:33:42 +01:00
|
|
|
for (FeedEntry entry : entries) {
|
2013-03-23 01:49:39 +01:00
|
|
|
FeedEntry existing = Iterables.getFirst(
|
|
|
|
|
findByField(MF.i(MF.p(getType()).getGuid()),
|
|
|
|
|
entry.getGuid()), null);
|
2013-03-20 20:33:42 +01:00
|
|
|
if (existing == null) {
|
|
|
|
|
entry.setFeed(feed);
|
|
|
|
|
save(entry);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
feed.setLastUpdated(Calendar.getInstance().getTime());
|
2013-03-25 12:24:00 +01:00
|
|
|
feed.setMessage(null);
|
2013-03-20 20:33:42 +01:00
|
|
|
em.merge(feed);
|
|
|
|
|
}
|
|
|
|
|
|
2013-03-25 23:15:52 +01:00
|
|
|
public List<FeedEntry> getEntries(Feed feed, User user, boolean read) {
|
|
|
|
|
return getEntries(feed, user, read, -1, -1);
|
2013-03-25 13:52:02 +01:00
|
|
|
}
|
|
|
|
|
|
2013-03-25 23:15:52 +01:00
|
|
|
public List<FeedEntry> getEntries(Feed feed, User user, boolean read,
|
|
|
|
|
int offset, int limit) {
|
|
|
|
|
String queryName = null;
|
|
|
|
|
if (read) {
|
|
|
|
|
queryName = "Entry.readByFeed";
|
|
|
|
|
} else {
|
|
|
|
|
queryName = "Entry.unreadByFeed";
|
|
|
|
|
}
|
|
|
|
|
TypedQuery<FeedEntry> query = em.createNamedQuery(queryName,
|
2013-03-23 15:52:26 +01:00
|
|
|
FeedEntry.class);
|
2013-03-25 23:15:52 +01:00
|
|
|
query.setParameter("feed", feed);
|
|
|
|
|
query.setParameter("user", user);
|
|
|
|
|
if (offset > -1) {
|
|
|
|
|
query.setFirstResult(offset);
|
|
|
|
|
}
|
|
|
|
|
if (limit > -1) {
|
|
|
|
|
query.setMaxResults(limit);
|
|
|
|
|
}
|
|
|
|
|
return query.getResultList();
|
2013-03-25 13:52:02 +01:00
|
|
|
}
|
2013-03-20 20:33:42 +01:00
|
|
|
}
|