/src/main/java/com/ingenieux/nullweblog/web/FeedServlet.java
https://bitbucket.org/aldrinleal/nullweblog · Java · 94 lines · 72 code · 22 blank · 0 comment · 7 complexity · edf4f2e8334b17dff540c11c084ce9ad MD5 · raw file
- package com.ingenieux.nullweblog.web;
-
- import java.io.IOException;
- import java.util.Collection;
- import java.util.Date;
-
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import org.apache.abdera.Abdera;
- import org.apache.abdera.factory.Factory;
- import org.apache.abdera.model.Document;
- import org.apache.abdera.model.Entry;
- import org.apache.abdera.model.Feed;
- import org.apache.commons.lang.StringUtils;
-
- import com.google.inject.Inject;
- import com.google.inject.Singleton;
- import com.ingenieux.nullweblog.model.Post;
- import com.ingenieux.nullweblog.model.Usuario;
- import com.ingenieux.nullweblog.server.PostDao;
- import com.ingenieux.nullweblog.server.UsuarioDao;
-
- @Singleton
- public class FeedServlet extends HttpServlet {
- private static final long serialVersionUID = 1124037781342748204L;
-
- @Inject
- PostDao postDao;
-
- @Inject
- UsuarioDao usuarioDao;
-
- @Override
- protected void service(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- String synthLogin = (String) req.getAttribute("synthLogin");
- Long postId = Long.valueOf(StringUtils.defaultString(
- (String) req.getAttribute("postId"), "0"));
-
- Usuario usuario = usuarioDao.findBySynthLogin(synthLogin);
-
- if (null == usuario) {
- resp.sendError(440, "User not found");
- return;
- }
-
- if (0 != postId) {
- Post post = postDao.findByAutorAndId(usuario, postId);
-
- resp.getWriter().write(post.getContent());
- } else {
- Document<Feed> doc = getFeed(usuario);
-
- doc.writeTo(resp.getOutputStream());
- }
- }
-
- public Document<Feed> getFeed(Usuario usuario) {
- Collection<Post> posts = postDao.findByAutor(usuario.getId());
- Factory abderaFactory = new Abdera().getFactory();
- Feed feedObj = abderaFactory.newFeed();
-
- feedObj.setId("nullweblog:2010:" + usuario.getId());
- feedObj.setTitle("Feed for "
- + StringUtils.defaultString(usuario.getNome(),
- usuario.getLogin()));
-
- Date lastUpdated = usuario.getCreated();
-
- for (Post post : posts) {
- Entry entryObj = abderaFactory.newEntry();
-
- entryObj.setId("nullweblog:2010:" + usuario.getId() + ":"
- + post.getId());
- entryObj.setTitle(post.getTitle());
- entryObj.setContent(post.getContent());
- entryObj.setPublished(post.getCreated());
- entryObj.setUpdated(post.getLastUpdated());
-
- if (lastUpdated.before(post.getLastUpdated()))
- lastUpdated = post.getLastUpdated();
-
- feedObj.addEntry(entryObj);
- }
-
- feedObj.setUpdated(lastUpdated);
-
- Document<Feed> doc = feedObj.getDocument();
- return doc;
- }
- }