fix unread count

This commit is contained in:
Jeremie Panzer
2013-03-22 11:42:25 +01:00
parent 25f0871195
commit bb3431a510
7 changed files with 50 additions and 45 deletions

View File

@@ -52,8 +52,15 @@ public class StartupBean {
salt));
userService.save(user);
Feed feed = new Feed("http://feed.dilbert.com/dilbert/daily_strip");
feedService.save(feed);
Feed dilbert = new Feed(
"http://feed.dilbert.com/dilbert/daily_strip");
feedService.save(dilbert);
Feed engadget = new Feed("http://www.engadget.com/rss.xml");
feedService.save(engadget);
Feed frandroid = new Feed("http://feeds.feedburner.com/frandroid");
feedService.save(frandroid);
FeedCategory newsCategory = new FeedCategory();
newsCategory.setName("News");
@@ -66,13 +73,32 @@ public class StartupBean {
comicsCategory.setParent(newsCategory);
feedCategoryService.save(comicsCategory);
FeedCategory techCategory = new FeedCategory();
techCategory.setName("Tech");
techCategory.setUser(user);
techCategory.setParent(newsCategory);
feedCategoryService.save(techCategory);
FeedSubscription sub = new FeedSubscription();
sub.setCategory(comicsCategory);
sub.setFeed(feed);
sub.setFeed(dilbert);
sub.setTitle("Dilbert - Strips");
sub.setUser(user);
feedSubscriptionService.save(sub);
FeedSubscription sub2 = new FeedSubscription();
sub2.setCategory(techCategory);
sub2.setFeed(engadget);
sub2.setTitle("Engadget");
sub2.setUser(user);
feedSubscriptionService.save(sub2);
FeedSubscription sub3 = new FeedSubscription();
sub3.setFeed(frandroid);
sub3.setTitle("Frandroid");
sub3.setUser(user);
feedSubscriptionService.save(sub3);
}
}

View File

@@ -32,7 +32,7 @@ public class FeedEntryService extends GenericDAO<FeedEntry, String> {
}
public List<FeedEntry> getUnreadEntries(Feed feed, User user) {
String query = "select entry from FeedEntry entry where entry.feed = :feed and not in (select status.entry from FeedEntryStatus status where status.user = :user and status.read = true)";
String query = "select e from FeedEntry e where e.feed=:feed and not exists (select s from FeedEntryStatus s where s.entry = e and s.user =:user and s.read = true)";
TypedQuery<FeedEntry> typedQuery = em.createQuery(query,
FeedEntry.class);
typedQuery.setParameter("feed", feed);

View File

@@ -8,6 +8,8 @@ import com.commafeed.frontend.utils.ModelFactory.MF;
import com.commafeed.model.FeedCategory;
import com.commafeed.model.FeedSubscription;
import com.commafeed.model.User;
import com.uaihebert.factory.EasyCriteriaFactory;
import com.uaihebert.model.EasyCriteria;
@Stateless
public class FeedSubscriptionService extends GenericDAO<FeedSubscription, Long> {
@@ -15,4 +17,12 @@ public class FeedSubscriptionService extends GenericDAO<FeedSubscription, Long>
public List<FeedSubscription> findAll(User user) {
return findByField(MF.i(MF.p(FeedCategory.class).getUser()), user);
}
public List<FeedSubscription> findWithoutCategories(User user) {
EasyCriteria<FeedSubscription> criteria = EasyCriteriaFactory.createQueryCriteria(em, getType());
criteria.andEquals("user", user);
criteria.andEquals("category", null);
return criteria.getResultList();
}
}

View File

@@ -45,7 +45,7 @@ public class CommaFeedSession extends AuthenticatedWebSession {
@Override
public boolean authenticate(String userName, String password) {
User user = userService.login(userName, password);
setUser(user);
this.user = user;
return user != null;
}

View File

@@ -11,7 +11,6 @@ import com.commafeed.backend.dao.FeedEntryService;
import com.commafeed.backend.dao.FeedSubscriptionService;
import com.commafeed.frontend.CommaFeedSession;
import com.commafeed.frontend.pages.JSONPage;
import com.commafeed.frontend.utils.ModelFactory.MF;
import com.commafeed.model.FeedCategory;
import com.commafeed.model.FeedSubscription;
import com.commafeed.model.User;
@@ -24,21 +23,19 @@ public class FeedSubscriptionsREST extends JSONPage {
FeedSubscriptionService feedSubscriptionService;
@Inject
FeedCategoryService FeedCategoryService;
FeedCategoryService feedCategoryService;
@Inject
FeedEntryService feedEntryService;
User user = CommaFeedSession.get().getUser();
@Override
protected Object getObject() {
List<FeedCategory> categories = FeedCategoryService.findAll(user);
User user = CommaFeedSession.get().getUser();
List<FeedCategory> categories = feedCategoryService.findAll(user);
Category root = new Category();
addChildren(categories, root);
for (FeedSubscription subscription : feedSubscriptionService
.findByField(MF.i(MF.p(FeedSubscription.class).getCategory()),
null)) {
.findWithoutCategories(user)) {
Subscription sub = new Subscription();
sub.setId(subscription.getId());
sub.setName(subscription.getTitle());
@@ -65,7 +62,8 @@ public class FeedSubscriptionsREST extends JSONPage {
sub.setId(subscription.getId());
sub.setName(subscription.getTitle());
int size = feedEntryService.getUnreadEntries(
subscription.getFeed(), user).size();
subscription.getFeed(),
CommaFeedSession.get().getUser()).size();
sub.setUnread(size);
child.getFeeds().add(sub);
}