-/*
+/* 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;
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";
}
}