From 6ab93ed9d57bc772790d6b39c6d95dcde3bb6a1d Mon Sep 17 00:00:00 2001 From: Jeremie Panzer Date: Wed, 27 Mar 2013 11:32:22 +0100 Subject: [PATCH] queries tweaking --- .../java/com/commafeed/backend/dao/GenericDAO.java | 10 ++++------ src/main/java/com/commafeed/backend/model/Feed.java | 11 +++++++++++ .../com/commafeed/backend/model/FeedCategory.java | 11 +++++++++++ .../frontend/rest/resources/EntriesREST.java | 12 +++++++----- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/commafeed/backend/dao/GenericDAO.java b/src/main/java/com/commafeed/backend/dao/GenericDAO.java index 3ac37547..e36db677 100644 --- a/src/main/java/com/commafeed/backend/dao/GenericDAO.java +++ b/src/main/java/com/commafeed/backend/dao/GenericDAO.java @@ -17,8 +17,7 @@ import com.uaihebert.factory.EasyCriteriaFactory; import com.uaihebert.model.EasyCriteria; @SuppressWarnings("serial") -public abstract class GenericDAO implements - Serializable { +public abstract class GenericDAO implements Serializable { private TypeToken type = new TypeToken(getClass()) { }; @@ -88,8 +87,7 @@ public abstract class GenericDAO implements } public List findByField(String field, Object value) { - EasyCriteria criteria = EasyCriteriaFactory.createQueryCriteria(em, - getType()); + EasyCriteria criteria = createCriteria(); criteria.andEquals(field, value); return criteria.getResultList(); } @@ -98,8 +96,8 @@ public abstract class GenericDAO implements protected Class getType() { return (Class) type.getRawType(); } - - public EasyCriteria createCriteria(){ + + public EasyCriteria createCriteria() { return EasyCriteriaFactory.createQueryCriteria(em, getType()); } diff --git a/src/main/java/com/commafeed/backend/model/Feed.java b/src/main/java/com/commafeed/backend/model/Feed.java index 59d4f107..f75626bf 100644 --- a/src/main/java/com/commafeed/backend/model/Feed.java +++ b/src/main/java/com/commafeed/backend/model/Feed.java @@ -29,6 +29,9 @@ public class Feed extends AbstractModel { @OneToMany(mappedBy = "feed") private Set entries = Sets.newHashSet(); + @OneToMany(mappedBy = "feed") + private Set subscriptions; + public Feed() { } @@ -69,4 +72,12 @@ public class Feed extends AbstractModel { this.message = message; } + public Set getSubscriptions() { + return subscriptions; + } + + public void setSubscriptions(Set subscriptions) { + this.subscriptions = subscriptions; + } + } diff --git a/src/main/java/com/commafeed/backend/model/FeedCategory.java b/src/main/java/com/commafeed/backend/model/FeedCategory.java index 8ecb0967..e670c0a8 100644 --- a/src/main/java/com/commafeed/backend/model/FeedCategory.java +++ b/src/main/java/com/commafeed/backend/model/FeedCategory.java @@ -24,6 +24,9 @@ public class FeedCategory extends AbstractModel { @ManyToOne private FeedCategory parent; + @OneToMany(mappedBy = "parent") + private Set children; + @OneToMany(mappedBy = "category") private Set subscriptions; @@ -62,4 +65,12 @@ public class FeedCategory extends AbstractModel { this.subscriptions = subscriptions; } + public Set getChildren() { + return children; + } + + public void setChildren(Set children) { + this.children = children; + } + } diff --git a/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java b/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java index e8f7df20..67785220 100644 --- a/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java +++ b/src/main/java/com/commafeed/frontend/rest/resources/EntriesREST.java @@ -61,13 +61,15 @@ public class EntriesREST extends AbstractREST { } else { FeedCategory feedCategory = null; if (!ALL.equals(id)) { - feedCategory = feedCategoryService.findById(getUser(), Long.valueOf(id)); + feedCategory = feedCategoryService.findById(getUser(), + Long.valueOf(id)); } List childrenCategories = feedCategoryService .findAllChildrenCategories(getUser(), feedCategory); - Map subMapping = Maps.uniqueIndex( - feedSubscriptionService.findAll(getUser()), + List subs = feedSubscriptionService + .findAll(getUser()); + Map subMapping = Maps.uniqueIndex(subs, new Function() { public Long apply(FeedSubscription sub) { return sub.getFeed().getId(); @@ -104,8 +106,8 @@ public class EntriesREST extends AbstractREST { List unreadEntries = feedEntryService.getEntries( categories, getUser(), unreadOnly, offset, limit); for (FeedEntryWithStatus feedEntry : unreadEntries) { - entries.add(populateEntry(buildEntry(feedEntry), - subMapping.get(feedEntry.getEntry().getFeed().getId()))); + Long id = feedEntry.getEntry().getFeed().getId(); + entries.add(populateEntry(buildEntry(feedEntry), subMapping.get(id))); } return entries;