/**
 * ÀÌ ¼Ò½º´Â Spring ÇÁ·¹ÀÓ¿öÅ© ¿öÅ©ºÏ¿¡¼­ »ç¿ëÇÑ ¿¹Á¦ ¼Ò½ºÀÔ´Ï´Ù. 
 * ÀÌ ¼Ò½º´Â ¸ðµç °³¹ßÀÚµéÀÌ ÀÚÀ¯·Ó°Ô ¼öÁ¤ ¹× ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. 
 * ´Ü, ÀÌ ¼Ò½º¸¦ ±â¹ÝÀ¸·Î »õ·Î¿î ¾ÖÇÃ¸®ÄÉÀÌ¼ÇÀ» °³¹ßÇÒ °æ¿ì ÃâÃ³¸¦ ¸í½ÃÇØ ÁÖ½Ã¸é µË´Ï´Ù. 
 */
package net.javajigi.board.web;

import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.javajigi.board.model.Board;
import net.javajigi.board.service.BoardService;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.validation.BindException;
import org.springframework.web.bind.RequestUtils;
import org.springframework.web.servlet.ModelAndView;

/**
 * ÁÖ¼®À» ³Ö¾î ÁÖ¼¼¿ä. ¹è°¡ °íÆÄ¿ä.
 * 
 * @author ¹ÚÀç¼º(ÀÚ¹ÙÁö±â, javajigi@gmail.com)
 */
public class BoardFormController extends BaseBoardFormController {
    protected static final Log logger = LogFactory
            .getLog(BoardFormController.class);

    private BoardService boardService = null;

    public void setBoardService(BoardService boardService) {
        this.boardService = boardService;
    }

    public BoardFormController() {
        setCommandName("board");
        setCommandClass(Board.class);
    }

    protected Object formBackingObject(HttpServletRequest request)
            throws ServletException {
        if (logger.isDebugEnabled()) {
            logger.debug("entering 'formBackingObject' method...");
        }
        
        int boardNo = RequestUtils.getIntParameter(request, "boardNo", 0);
        
        if (logger.isDebugEnabled()) {
            logger.debug("received boardNo : " + boardNo);
        }

        if ( boardNo != 0 ) {
            Board board = boardService.findBoard(boardNo);

            if (board == null) {
                return new Board();
            }

            return board;
        } else {
            return new Board();
        }
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(java.lang.Object,
     *      org.springframework.validation.BindException)
     */
    protected ModelAndView onSubmit(HttpServletRequest request,
            HttpServletResponse response, Object command,
            BindException exception) throws Exception {
        if (logger.isDebugEnabled()) {
            logger.debug("entering 'onSubmit' method...");
            logger.debug("Board : " + command);
        }

        Board board = (Board)command;
        List boardFileList = getBoardFileList(request);
        board.setBoardFiles(boardFileList);
        
		if (request.getParameter("add") != null) {
			if (logger.isDebugEnabled()) {
				logger.debug("executing 'add Board' method...");
			}
			
			boardService.addBoard(board);
		} else {
			if (logger.isDebugEnabled()) {
				logger.debug("executing 'update Board' method...");
			}
			
			boardService.updateBoard(board);
		}
        
        return new ModelAndView(getSuccessView());
    }

}
