use backend to populate data

This commit is contained in:
Athou
2013-03-22 20:51:22 +01:00
parent c6ec3c9517
commit f3ff02b476
14 changed files with 239 additions and 126 deletions

View File

@@ -0,0 +1,85 @@
package com.commafeed.frontend.rest;
import java.text.DateFormat;
import java.util.List;
import javax.inject.Inject;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import com.commafeed.backend.dao.FeedEntryService;
import com.commafeed.backend.dao.FeedEntryStatusService;
import com.commafeed.backend.dao.FeedSubscriptionService;
import com.commafeed.frontend.rest.model.Entries;
import com.commafeed.frontend.rest.model.Entry;
import com.commafeed.frontend.utils.ModelFactory.MF;
import com.commafeed.model.FeedEntry;
import com.commafeed.model.FeedEntryStatus;
import com.commafeed.model.FeedSubscription;
import com.google.common.collect.Iterables;
public class FeedEntriesREST extends JSONPage {
public static final String PARAM_TYPE = "type";
public static final String PARAM_ID = "id";
public static final String PARAM_READTYPE = "readtype";
@Inject
FeedEntryService feedEntryService;
@Inject
FeedEntryStatusService feedEntryStatusService;
@Inject
FeedSubscriptionService feedSubscriptionService;
public FeedEntriesREST(PageParameters pageParameters) {
super(pageParameters);
}
@Override
protected Object getObject(PageParameters parameters) {
String type = parameters.get(PARAM_TYPE).toString();
String id = parameters.get(PARAM_ID).toString();
@SuppressWarnings("unused")
String readType = parameters.get(PARAM_READTYPE).toString();
Entries entries = new Entries();
if ("feed".equals(type)) {
FeedSubscription subscription = feedSubscriptionService
.findById(Long.valueOf(id));
List<FeedEntry> feedEntries = feedEntryService.getUnreadEntries(
subscription.getFeed(), getUser());
entries.setName(subscription.getTitle());
for (FeedEntry feedEntry : feedEntries) {
List<FeedEntryStatus> feedEntryStatus = feedEntryStatusService.findByField(MF.i(MF.p(FeedEntryStatus.class).getEntry()), feedEntry);
Entry entry = buildEntry(feedEntry);
entry.setFeedName(subscription.getTitle());
entry.setFeedId(String.valueOf(subscription.getId()));
entry.setRead(feedEntryStatus.isEmpty() ? false : Iterables.getFirst(feedEntryStatus, null).isRead());
entry.setStarred(feedEntryStatus.isEmpty() ? false : Iterables.getFirst(feedEntryStatus, null).isStarred());
entries.getEntries().add(entry);
}
}
return entries;
}
private Entry buildEntry(FeedEntry feedEntry) {
Entry entry = new Entry();
entry.setId(feedEntry.getGuid());
entry.setTitle(feedEntry.getTitle());
entry.setContent(feedEntry.getContent());
entry.setDate(DateFormat.getDateInstance(DateFormat.SHORT, getLocale())
.format(feedEntry.getUpdated()));
entry.setUrl(feedEntry.getUrl());
return entry;
}
}

View File

@@ -5,15 +5,13 @@ import java.util.List;
import javax.inject.Inject;
import org.apache.commons.lang.ObjectUtils;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import com.commafeed.backend.dao.FeedCategoryService;
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.model.FeedCategory;
import com.commafeed.model.FeedSubscription;
import com.commafeed.model.User;
import com.google.common.collect.Lists;
@SuppressWarnings("serial")
@@ -28,19 +26,23 @@ public class FeedSubscriptionsREST extends JSONPage {
@Inject
FeedEntryService feedEntryService;
public FeedSubscriptionsREST(PageParameters pageParameters) {
super(pageParameters);
// TODO Auto-generated constructor stub
}
@Override
protected Object getObject() {
User user = CommaFeedSession.get().getUser();
List<FeedCategory> categories = feedCategoryService.findAll(user);
protected Object getObject(PageParameters parameters) {
List<FeedCategory> categories = feedCategoryService.findAll(getUser());
Category root = new Category();
addChildren(categories, root);
for (FeedSubscription subscription : feedSubscriptionService
.findWithoutCategories(user)) {
.findWithoutCategories(getUser())) {
Subscription sub = new Subscription();
sub.setId(subscription.getId());
sub.setName(subscription.getTitle());
int size = feedEntryService.getUnreadEntries(
subscription.getFeed(), user).size();
subscription.getFeed(), getUser()).size();
sub.setUnread(size);
root.getFeeds().add(sub);
}
@@ -62,8 +64,7 @@ public class FeedSubscriptionsREST extends JSONPage {
sub.setId(subscription.getId());
sub.setName(subscription.getTitle());
int size = feedEntryService.getUnreadEntries(
subscription.getFeed(),
CommaFeedSession.get().getUser()).size();
subscription.getFeed(), getUser()).size();
sub.setUnread(size);
child.getFeeds().add(sub);
}

View File

@@ -0,0 +1,25 @@
package com.commafeed.frontend.rest;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.request.handler.TextRequestHandler;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import com.commafeed.frontend.CommaFeedSession;
import com.commafeed.model.User;
import com.google.gson.Gson;
@SuppressWarnings("serial")
public abstract class JSONPage extends WebPage {
public JSONPage(PageParameters pageParameters) {
getRequestCycle().scheduleRequestHandlerAfterCurrent(
new TextRequestHandler("application/json", "UTF-8", new Gson()
.toJson(getObject(pageParameters))));
}
protected abstract Object getObject(PageParameters parameters);
protected User getUser() {
return CommaFeedSession.get().getUser();
}
}

View File

@@ -2,9 +2,11 @@ package com.commafeed.frontend.rest.model;
import java.util.List;
import com.google.common.collect.Lists;
public class Entries {
private String name;
private List<Entry> entries;
private List<Entry> entries = Lists.newArrayList();
public String getName() {
return name;