@Override
  public Page processRequest(HttpServletRequest request) {
    Page result = this;

    if ("new".equals(request.getParameter("action"))) {
      Member member = (Member) request.getSession().getAttribute("user");

      result = new TopicEdit(this, new Topic(member));
    } else if ("previous".equals(request.getParameter("action"))) {
      if (page > 1) {
        page--;
      }
    } else if ("next".equals(request.getParameter("action"))) {
      if (page < getNumberOfPages()) {
        page++;
      }
    } else if (isAction("edit")) {
      long id = Long.parseLong(request.getParameter("actionValue"));

      result = new TopicEdit(this, dao.find(id));
    } else if (isAction("remove")) {
      long topicId = Long.parseLong(request.getParameter("actionValue"));

      Topic topic = dao.find(topicId);

      CommentDao commentDao = new CommentDao();

      for (Comment comment : topic.getComments()) {
        commentDao.remove(comment);
      }

      dao.remove(topicId);
    }

    return result;
  }