mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
refactored the way entries and statuses are fetched
This commit is contained in:
@@ -12,8 +12,10 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
|
||||
|
||||
import com.commafeed.backend.dao.FeedCategoryDAO;
|
||||
import com.commafeed.backend.dao.FeedEntryStatusDAO;
|
||||
import com.commafeed.backend.dao.FeedSubscriptionDAO;
|
||||
import com.commafeed.backend.model.FeedCategory;
|
||||
import com.commafeed.backend.model.FeedEntryStatus;
|
||||
import com.commafeed.backend.model.FeedSubscription;
|
||||
import com.commafeed.backend.model.User;
|
||||
import com.commafeed.backend.model.UserRole.Role;
|
||||
import com.commafeed.backend.model.UserSettings.ReadingOrder;
|
||||
@@ -35,13 +37,16 @@ public class NextUnreadRedirectPage extends WebPage {
|
||||
@Inject
|
||||
FeedEntryStatusDAO feedEntryStatusDAO;
|
||||
|
||||
@Inject
|
||||
FeedSubscriptionDAO feedSubscriptionDAO;
|
||||
|
||||
public NextUnreadRedirectPage(PageParameters params) {
|
||||
String categoryId = params.get(PARAM_CATEGORYID).toString();
|
||||
String orderParam = params.get(PARAM_READINGORDER).toString();
|
||||
|
||||
|
||||
User user = CommaFeedSession.get().getUser();
|
||||
ReadingOrder order = ReadingOrder.desc;
|
||||
|
||||
|
||||
if (StringUtils.equals(orderParam, "asc")) {
|
||||
order = ReadingOrder.asc;
|
||||
}
|
||||
@@ -49,16 +54,20 @@ public class NextUnreadRedirectPage extends WebPage {
|
||||
List<FeedEntryStatus> statuses = null;
|
||||
if (StringUtils.isBlank(categoryId)
|
||||
|| CategoryREST.ALL.equals(categoryId)) {
|
||||
statuses = feedEntryStatusDAO.findAllUnread(user, null, 0, 1,
|
||||
order, true);
|
||||
List<FeedSubscription> subscriptions = feedSubscriptionDAO
|
||||
.findAll(user);
|
||||
statuses = feedEntryStatusDAO.findBySubscriptions(subscriptions,
|
||||
null, null, 0, 1, order, true);
|
||||
} else {
|
||||
FeedCategory category = feedCategoryDAO.findById(user,
|
||||
Long.valueOf(categoryId));
|
||||
if (category != null) {
|
||||
List<FeedCategory> children = feedCategoryDAO
|
||||
.findAllChildrenCategories(user, category);
|
||||
statuses = feedEntryStatusDAO.findUnreadByCategories(children,
|
||||
null, 0, 1, order, true);
|
||||
List<FeedSubscription> subscriptions = feedSubscriptionDAO
|
||||
.findByCategories(user, children);
|
||||
statuses = feedEntryStatusDAO.findUnreadBySubscriptions(
|
||||
subscriptions, null, 0, 1, order, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -107,12 +107,15 @@ public class CategoryREST extends AbstractResourceREST {
|
||||
if (ALL.equals(id)) {
|
||||
entries.setName("All");
|
||||
List<FeedEntryStatus> list = null;
|
||||
List<FeedSubscription> subscriptions = feedSubscriptionDAO
|
||||
.findAll(getUser());
|
||||
if (unreadOnly) {
|
||||
list = feedEntryStatusDAO.findAllUnread(getUser(),
|
||||
newerThanDate, offset, limit + 1, order, true);
|
||||
list = feedEntryStatusDAO.findUnreadBySubscriptions(
|
||||
subscriptions, newerThanDate, offset, limit + 1, order,
|
||||
true);
|
||||
} else {
|
||||
list = feedEntryStatusDAO.findAll(getUser(), newerThanDate,
|
||||
offset, limit + 1, order, true);
|
||||
list = feedEntryStatusDAO.findBySubscriptions(subscriptions,
|
||||
null, newerThanDate, offset, limit + 1, order, true);
|
||||
}
|
||||
for (FeedEntryStatus status : list) {
|
||||
entries.getEntries().add(
|
||||
@@ -132,20 +135,20 @@ public class CategoryREST extends AbstractResourceREST {
|
||||
.get().isImageProxyEnabled()));
|
||||
}
|
||||
} else {
|
||||
FeedCategory feedCategory = feedCategoryDAO.findById(getUser(),
|
||||
FeedCategory parent = feedCategoryDAO.findById(getUser(),
|
||||
Long.valueOf(id));
|
||||
if (feedCategory != null) {
|
||||
List<FeedCategory> childrenCategories = feedCategoryDAO
|
||||
.findAllChildrenCategories(getUser(), feedCategory);
|
||||
if (parent != null) {
|
||||
List<FeedCategory> categories = feedCategoryDAO
|
||||
.findAllChildrenCategories(getUser(), parent);
|
||||
List<FeedSubscription> subs = feedSubscriptionDAO
|
||||
.findByCategories(getUser(), categories);
|
||||
List<FeedEntryStatus> list = null;
|
||||
if (unreadOnly) {
|
||||
list = feedEntryStatusDAO.findUnreadByCategories(
|
||||
childrenCategories, newerThanDate, offset,
|
||||
limit + 1, order, true);
|
||||
list = feedEntryStatusDAO.findUnreadBySubscriptions(subs,
|
||||
newerThanDate, offset, limit + 1, order, true);
|
||||
} else {
|
||||
list = feedEntryStatusDAO.findByCategories(
|
||||
childrenCategories, newerThanDate, offset,
|
||||
limit + 1, order, true);
|
||||
list = feedEntryStatusDAO.findBySubscriptions(subs, null,
|
||||
newerThanDate, offset, limit + 1, order, true);
|
||||
}
|
||||
for (FeedEntryStatus status : list) {
|
||||
entries.getEntries().add(
|
||||
@@ -154,7 +157,7 @@ public class CategoryREST extends AbstractResourceREST {
|
||||
applicationSettingsService.get()
|
||||
.isImageProxyEnabled()));
|
||||
}
|
||||
entries.setName(feedCategory.getName());
|
||||
entries.setName(parent.getName());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -223,17 +226,20 @@ public class CategoryREST extends AbstractResourceREST {
|
||||
req.getOlderThan());
|
||||
|
||||
if (ALL.equals(req.getId())) {
|
||||
feedEntryStatusDAO.markAllEntries(getUser(), olderThan);
|
||||
List<FeedSubscription> subscriptions = feedSubscriptionDAO
|
||||
.findAll(getUser());
|
||||
feedEntryStatusDAO
|
||||
.markSubscriptionEntries(subscriptions, olderThan);
|
||||
} else if (STARRED.equals(req.getId())) {
|
||||
feedEntryStatusDAO.markStarredEntries(getUser(), olderThan);
|
||||
} else {
|
||||
FeedCategory parent = feedCategoryDAO.findById(getUser(),
|
||||
Long.valueOf(req.getId()));
|
||||
List<FeedCategory> categories = feedCategoryDAO
|
||||
.findAllChildrenCategories(
|
||||
getUser(),
|
||||
feedCategoryDAO.findById(getUser(),
|
||||
Long.valueOf(req.getId())));
|
||||
feedEntryStatusDAO.markCategoryEntries(getUser(), categories,
|
||||
olderThan);
|
||||
.findAllChildrenCategories(getUser(), parent);
|
||||
List<FeedSubscription> subs = feedSubscriptionDAO.findByCategories(
|
||||
getUser(), categories);
|
||||
feedEntryStatusDAO.markSubscriptionEntries(subs, olderThan);
|
||||
}
|
||||
cache.invalidateUserData(getUser());
|
||||
return Response.ok(Status.OK).build();
|
||||
|
||||
@@ -15,7 +15,10 @@ import org.apache.commons.lang.StringUtils;
|
||||
|
||||
import com.commafeed.backend.cache.CacheService;
|
||||
import com.commafeed.backend.dao.FeedEntryStatusDAO;
|
||||
import com.commafeed.backend.dao.FeedSubscriptionDAO;
|
||||
import com.commafeed.backend.model.FeedEntryStatus;
|
||||
import com.commafeed.backend.model.FeedSubscription;
|
||||
import com.commafeed.backend.model.UserSettings.ReadingOrder;
|
||||
import com.commafeed.backend.services.FeedEntryService;
|
||||
import com.commafeed.frontend.model.Entries;
|
||||
import com.commafeed.frontend.model.Entry;
|
||||
@@ -38,6 +41,9 @@ public class EntryREST extends AbstractResourceREST {
|
||||
@Inject
|
||||
FeedEntryStatusDAO feedEntryStatusDAO;
|
||||
|
||||
@Inject
|
||||
FeedSubscriptionDAO feedSubscriptionDAO;
|
||||
|
||||
@Inject
|
||||
CacheService cache;
|
||||
|
||||
@@ -67,7 +73,7 @@ public class EntryREST extends AbstractResourceREST {
|
||||
for (MarkRequest r : req.getRequests()) {
|
||||
markFeedEntry(r);
|
||||
}
|
||||
|
||||
|
||||
return Response.ok(Status.OK).build();
|
||||
}
|
||||
|
||||
@@ -100,8 +106,10 @@ public class EntryREST extends AbstractResourceREST {
|
||||
Entries entries = new Entries();
|
||||
|
||||
List<Entry> list = Lists.newArrayList();
|
||||
List<FeedSubscription> subs = feedSubscriptionDAO.findAll(getUser());
|
||||
List<FeedEntryStatus> entriesStatus = feedEntryStatusDAO
|
||||
.findByKeywords(getUser(), keywords, offset, limit);
|
||||
.findBySubscriptions(subs, keywords, null, offset, limit,
|
||||
ReadingOrder.desc, true);
|
||||
for (FeedEntryStatus status : entriesStatus) {
|
||||
list.add(Entry.build(status, applicationSettingsService.get()
|
||||
.getPublicUrl(), applicationSettingsService.get()
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.commafeed.frontend.rest.resources;
|
||||
|
||||
import java.io.StringWriter;
|
||||
import java.net.URI;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
@@ -153,12 +154,13 @@ public class FeedREST extends AbstractResourceREST {
|
||||
|
||||
List<FeedEntryStatus> list = null;
|
||||
if (unreadOnly) {
|
||||
list = feedEntryStatusDAO.findUnreadBySubscription(
|
||||
subscription, newerThanDate, offset, limit + 1, order,
|
||||
true);
|
||||
list = feedEntryStatusDAO.findUnreadBySubscriptions(
|
||||
Arrays.asList(subscription), newerThanDate, offset,
|
||||
limit + 1, order, true);
|
||||
} else {
|
||||
list = feedEntryStatusDAO.findBySubscription(subscription,
|
||||
newerThanDate, offset, limit + 1, order, true);
|
||||
list = feedEntryStatusDAO.findBySubscriptions(
|
||||
Arrays.asList(subscription), null, newerThanDate,
|
||||
offset, limit + 1, order, true);
|
||||
}
|
||||
|
||||
for (FeedEntryStatus status : list) {
|
||||
@@ -292,7 +294,8 @@ public class FeedREST extends AbstractResourceREST {
|
||||
FeedSubscription subscription = feedSubscriptionDAO.findById(getUser(),
|
||||
Long.valueOf(req.getId()));
|
||||
if (subscription != null) {
|
||||
feedEntryStatusDAO.markSubscriptionEntries(subscription, olderThan);
|
||||
feedEntryStatusDAO.markSubscriptionEntries(
|
||||
Arrays.asList(subscription), olderThan);
|
||||
}
|
||||
cache.invalidateUserData(getUser());
|
||||
return Response.ok(Status.OK).build();
|
||||
|
||||
Reference in New Issue
Block a user