package br.com.caelum.guj.controller;
import java.util.ArrayList;
import java.util.List;
import net.jforum.DBConnection;
import net.jforum.JForumExecutionContext;
import net.jforum.dao.generic.GenericTopicDAO;
import br.com.caelum.guj.feeds.TopicJsonFeed;
import br.com.caelum.guj.uri.BookmarkableURIBuilder;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.view.Results;
@Resource
public class JsonFeedController {
private static final int INTERNAL_FORUM = 16;
private static final int MAX_RESULTS = 20;
private final Result result;
private final BookmarkableURIBuilder uriBuilder;
public JsonFeedController(Result result, BookmarkableURIBuilder uriBuilder) {
this.result = result;
this.uriBuilder = uriBuilder;
}
@Path("jsonfeed/forum/{forumId}")
public void topics(Integer forumId) {
List<TopicJsonFeed> topics = new ArrayList<TopicJsonFeed>();
if (forumId != INTERNAL_FORUM) {
JForumExecutionContext context = null;
try {
context = JForumExecutionContext.get();
context.setConnection(DBConnection.getImplementation().getConnection());
JForumExecutionContext.set(context);
GenericTopicDAO dao = new GenericTopicDAO();
topics = dao.selectRecentFromForum(forumId, MAX_RESULTS, uriBuilder);
}catch (Exception e) {
} finally {
JForumExecutionContext.finish();
}
}
result.use(Results.jsonp()).withCallback("callback").withoutRoot().from(topics).recursive().serialize();
}
}