mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
fetch content later, join big tables on foreign keys only
This commit is contained in:
@@ -54,7 +54,6 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public List<FeedEntryStatus> findByKeywords(User user, String keywords,
|
public List<FeedEntryStatus> findByKeywords(User user, String keywords,
|
||||||
int offset, int limit) {
|
int offset, int limit) {
|
||||||
|
|
||||||
@@ -67,14 +66,13 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
|
||||||
|
|
||||||
Join<FeedEntry, FeedEntryContent> contentJoin = (Join<FeedEntry, FeedEntryContent>) entryJoin
|
Join<FeedEntry, FeedEntryContent> contentJoin = entryJoin.join(
|
||||||
.fetch(FeedEntry_.content, JoinType.LEFT);
|
FeedEntry_.content, JoinType.LEFT);
|
||||||
|
|
||||||
predicates
|
predicates
|
||||||
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
||||||
@@ -93,15 +91,14 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
||||||
limit(q, offset, limit);
|
limit(q, offset, limit);
|
||||||
return q.getResultList();
|
return lazyLoadContent(true, q.getResultList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FeedEntryStatus> findStarred(User user,
|
public List<FeedEntryStatus> findStarred(User user, ReadingOrder order,
|
||||||
ReadingOrder order, boolean includeContent) {
|
boolean includeContent) {
|
||||||
return findStarred(user, -1, -1, order, includeContent);
|
return findStarred(user, -1, -1, order, includeContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public List<FeedEntryStatus> findStarred(User user, int offset, int limit,
|
public List<FeedEntryStatus> findStarred(User user, int offset, int limit,
|
||||||
ReadingOrder order, boolean includeContent) {
|
ReadingOrder order, boolean includeContent) {
|
||||||
|
|
||||||
@@ -110,12 +107,11 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
|
||||||
|
|
||||||
predicates
|
predicates
|
||||||
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
||||||
@@ -134,7 +130,6 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
return findAll(user, unreadOnly, -1, -1, order, includeContent);
|
return findAll(user, unreadOnly, -1, -1, order, includeContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public List<FeedEntryStatus> findAll(User user, boolean unreadOnly,
|
public List<FeedEntryStatus> findAll(User user, boolean unreadOnly,
|
||||||
int offset, int limit, ReadingOrder order, boolean includeContent) {
|
int offset, int limit, ReadingOrder order, boolean includeContent) {
|
||||||
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
|
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
|
||||||
@@ -142,11 +137,10 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
|
||||||
|
|
||||||
predicates
|
predicates
|
||||||
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
||||||
@@ -167,7 +161,6 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
return findByFeed(feed, user, unreadOnly, -1, -1, order, includeContent);
|
return findByFeed(feed, user, unreadOnly, -1, -1, order, includeContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public List<FeedEntryStatus> findByFeed(Feed feed, User user,
|
public List<FeedEntryStatus> findByFeed(Feed feed, User user,
|
||||||
boolean unreadOnly, int offset, int limit, ReadingOrder order,
|
boolean unreadOnly, int offset, int limit, ReadingOrder order,
|
||||||
boolean includeContent) {
|
boolean includeContent) {
|
||||||
@@ -177,11 +170,10 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
|
||||||
|
|
||||||
predicates
|
predicates
|
||||||
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
||||||
@@ -207,7 +199,6 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
includeContent);
|
includeContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public List<FeedEntryStatus> findByCategories(
|
public List<FeedEntryStatus> findByCategories(
|
||||||
List<FeedCategory> categories, User user, boolean unreadOnly,
|
List<FeedCategory> categories, User user, boolean unreadOnly,
|
||||||
int offset, int limit, ReadingOrder order, boolean includeContent) {
|
int offset, int limit, ReadingOrder order, boolean includeContent) {
|
||||||
@@ -217,11 +208,10 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
|
|
||||||
List<Predicate> predicates = Lists.newArrayList();
|
List<Predicate> predicates = Lists.newArrayList();
|
||||||
|
|
||||||
Join<FeedEntryStatus, FeedEntry> entryJoin = (Join<FeedEntryStatus, FeedEntry>) root
|
Join<FeedEntryStatus, FeedEntry> entryJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.entry, JoinType.LEFT);
|
FeedEntryStatus_.entry, JoinType.LEFT);
|
||||||
Join<FeedEntryStatus, FeedSubscription> subJoin = (Join<FeedEntryStatus, FeedSubscription>) root
|
Join<FeedEntryStatus, FeedSubscription> subJoin = root.join(
|
||||||
.fetch(FeedEntryStatus_.subscription, JoinType.LEFT);
|
FeedEntryStatus_.subscription, JoinType.LEFT);
|
||||||
subJoin.fetch(FeedSubscription_.feed, JoinType.LEFT);
|
|
||||||
|
|
||||||
predicates
|
predicates
|
||||||
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
.add(builder.equal(subJoin.get(FeedSubscription_.user), user));
|
||||||
@@ -259,6 +249,7 @@ 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();
|
||||||
status.getEntry().getContent().getContent();
|
status.getEntry().getContent().getContent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -289,8 +280,7 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void markStarredEntries(User user, Date olderThan) {
|
public void markStarredEntries(User user, Date olderThan) {
|
||||||
List<FeedEntryStatus> statuses = findStarred(user,
|
List<FeedEntryStatus> statuses = findStarred(user, ReadingOrder.desc,
|
||||||
ReadingOrder.desc,
|
|
||||||
false);
|
false);
|
||||||
update(markList(statuses, olderThan));
|
update(markList(statuses, olderThan));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user