remove unnecessary join

This commit is contained in:
Athou
2013-06-13 13:15:46 +02:00
parent 6abf16aa97
commit cc1248f350
2 changed files with 20 additions and 21 deletions

View File

@@ -15,8 +15,8 @@ import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root; import javax.persistence.criteria.Root;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.hibernate.Hibernate;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedCategory; import com.commafeed.backend.model.FeedCategory;
import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedEntry;
import com.commafeed.backend.model.FeedEntryContent; import com.commafeed.backend.model.FeedEntryContent;
@@ -173,15 +173,16 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
return lazyLoadContent(includeContent, q.getResultList()); return lazyLoadContent(includeContent, q.getResultList());
} }
public List<FeedEntryStatus> findByFeed(Feed feed, User user, public List<FeedEntryStatus> findBySubscription(
boolean unreadOnly, ReadingOrder order, boolean includeContent) { FeedSubscription subscription, boolean unreadOnly,
return findByFeed(feed, user, unreadOnly, null, -1, -1, order, ReadingOrder order, boolean includeContent) {
includeContent); return findBySubscription(subscription, unreadOnly, null, -1, -1,
order, includeContent);
} }
public List<FeedEntryStatus> findByFeed(Feed feed, User user, public List<FeedEntryStatus> findBySubscription(
boolean unreadOnly, Date newerThan, int offset, int limit, FeedSubscription subscription, boolean unreadOnly, Date newerThan,
ReadingOrder order, boolean includeContent) { int offset, int limit, ReadingOrder order, boolean includeContent) {
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType()); CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
Root<FeedEntryStatus> root = query.from(getType()); Root<FeedEntryStatus> root = query.from(getType());
@@ -190,13 +191,9 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
Join<FeedEntryStatus, FeedEntry> entryJoin = root Join<FeedEntryStatus, FeedEntry> entryJoin = root
.join(FeedEntryStatus_.entry); .join(FeedEntryStatus_.entry);
Join<FeedEntryStatus, FeedSubscription> subJoin = root
.join(FeedEntryStatus_.subscription);
predicates predicates.add(builder.equal(root.get(FeedEntryStatus_.subscription),
.add(builder.equal(subJoin.get(FeedSubscription_.user), user)); subscription));
predicates
.add(builder.equal(subJoin.get(FeedSubscription_.feed), feed));
if (unreadOnly) { if (unreadOnly) {
predicates.add(builder.isFalse(root.get(FeedEntryStatus_.read))); predicates.add(builder.isFalse(root.get(FeedEntryStatus_.read)));
} }
@@ -280,8 +277,8 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
List<FeedEntryStatus> results) { List<FeedEntryStatus> results) {
if (includeContent) { if (includeContent) {
for (FeedEntryStatus status : results) { for (FeedEntryStatus status : results) {
status.getSubscription().getFeed().getUrl(); Hibernate.initialize(status.getSubscription().getFeed());
status.getEntry().getContent().getContent(); Hibernate.initialize(status.getEntry().getContent());
} }
} }
return results; return results;
@@ -301,8 +298,9 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
query.setHint("javax.persistence.query.timeout", 20000); query.setHint("javax.persistence.query.timeout", 20000);
} }
public void markFeedEntries(User user, Feed feed, Date olderThan) { public void markSubscriptionEntries(FeedSubscription subscription,
List<FeedEntryStatus> statuses = findByFeed(feed, user, true, Date olderThan) {
List<FeedEntryStatus> statuses = findBySubscription(subscription, true,
ReadingOrder.desc, false); ReadingOrder.desc, false);
saveOrUpdate(markList(statuses, olderThan)); saveOrUpdate(markList(statuses, olderThan));
} }

View File

@@ -101,7 +101,7 @@ public class FeedREST extends AbstractResourceREST {
entries.setErrorCount(subscription.getFeed().getErrorCount()); entries.setErrorCount(subscription.getFeed().getErrorCount());
List<FeedEntryStatus> unreadEntries = feedEntryStatusDAO List<FeedEntryStatus> unreadEntries = feedEntryStatusDAO
.findByFeed(subscription.getFeed(), getUser(), unreadOnly, .findBySubscription(subscription, unreadOnly,
newerThanDate, offset, limit + 1, order, true); newerThanDate, offset, limit + 1, order, true);
for (FeedEntryStatus status : unreadEntries) { for (FeedEntryStatus status : unreadEntries) {
entries.getEntries().add( entries.getEntries().add(
@@ -227,8 +227,9 @@ public class FeedREST extends AbstractResourceREST {
FeedSubscription subscription = feedSubscriptionDAO.findById(getUser(), FeedSubscription subscription = feedSubscriptionDAO.findById(getUser(),
Long.valueOf(req.getId())); Long.valueOf(req.getId()));
feedEntryStatusDAO.markFeedEntries(getUser(), subscription.getFeed(), if (subscription != null) {
olderThan); feedEntryStatusDAO.markSubscriptionEntries(subscription, olderThan);
}
return Response.ok(Status.OK).build(); return Response.ok(Status.OK).build();
} }