OSDN Git Service

とりあえずslf4jに対応。
[rabbit-bts/RabbitBTS.git] / src / jp / sourceforge / rabbitBTS / controllers / BbsController.java
index 29150fa..c22419f 100644 (file)
@@ -1,4 +1,5 @@
-/*
+/* vim:set ts=4 sts=4 sw=4 noet fenc=utf-8:
+
    Copyright 2009 senju@users.sourceforge.jp
 
    Licensed under the Apache License, Version 2.0 (the "License");
 
 package jp.sourceforge.rabbitBTS.controllers;
 
-import java.util.Date;
-import java.util.List;
-
-import javax.jdo.PersistenceManager;
 import javax.servlet.http.HttpServletRequest;
 
-import jp.sourceforge.rabbitBTS.PMF;
 import jp.sourceforge.rabbitBTS.Sht;
 import jp.sourceforge.rabbitBTS.models.Account;
 import jp.sourceforge.rabbitBTS.models.BbsPost;
+import jp.sourceforge.rabbitBTS.services.AccountService;
+import jp.sourceforge.rabbitBTS.services.BbsService;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -36,54 +34,41 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
 @Controller
-public class BbsController implements IController {
+public final class BbsController extends BaseController {
        @Autowired
        private Validator validator;
 
+       @Autowired
+       private AccountService accountService;
+
+       @Autowired
+       private BbsService bbsService;
+
        @RequestMapping(method = RequestMethod.GET)
        public void index(ModelMap model, HttpServletRequest req) {
-               Sht.log(this).finest("index called");
                final BbsPost g = new BbsPost();
                model.addAttribute(g);
-               model.addAttribute("loginurl", Sht.loginUrl(req));
-               model.addAttribute("logouturl", Sht.logoutUrl(req));
-               model.addAttribute("posts", fetchBbsPosts());
+               model.addAttribute("posts", this.bbsService.fetchPosts());
        }
 
        @RequestMapping(method = RequestMethod.POST)
-       public String postEdit(BbsPost g, BindingResult result,
-                       HttpServletRequest req) {
-               Sht.log(this).finest("submit called");
-               final Account acc = (Account) req.getAttribute("account");
-               g.setAuthorId(acc.getAccountId());
-               g.setDate(new Date());
-
-               this.validator.validate(g, result);
-               if (result.hasErrors()) {
-                       Sht.log(this).finest("content is empty.");
+       public String postEdit(BbsPost post, BindingResult result,
+                       HttpServletRequest req, ModelMap map) {
+               if (!this.isCsrfSafe(result)) {
                        return null;
                }
-               final PersistenceManager pm = PMF.get().getPersistenceManager();
-               try {
-                       pm.makePersistent(g);
-               } finally {
-                       pm.close();
+
+               this.validator.validate(post, result);
+               if (result.hasErrors()) {
+                       Sht.log(this).trace("BBS Post Validate fail.");
+                       return null;
                }
 
-               return "redirect:index.html";
-       }
+               final Account acc = this.accountService.getCurrentAccount();
+               this.bbsService.addNewPost(post, acc);
 
-       @SuppressWarnings("unchecked")
-       private List<BbsPost> fetchBbsPosts() {
-               final PersistenceManager pm = PMF.get().getPersistenceManager();
-               final List<BbsPost> posts = (List<BbsPost>) pm.newQuery(BbsPost.class)
-                               .execute();
-               for (final BbsPost bbsPost : posts) {
-                       final Account acc = pm.getObjectById(Account.class, bbsPost
-                                       .getAuthorId());
-                       bbsPost.setAuthor(acc);
-               }
-               return posts;
+               // TODO:メッセージ
+               return "redirect:index.html";
        }
 
 }