/**
 * ÀÌ ¼Ò½º´Â Spring ÇÁ·¹ÀÓ¿öÅ© ¿öÅ©ºÏ¿¡¼­ »ç¿ëÇÑ ¿¹Á¦ ¼Ò½ºÀÔ´Ï´Ù. 
 * ÀÌ ¼Ò½º´Â ¸ðµç °³¹ßÀÚµéÀÌ ÀÚÀ¯·Ó°Ô ¼öÁ¤ ¹× ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. 
 * ´Ü, ÀÌ ¼Ò½º¸¦ ±â¹ÝÀ¸·Î »õ·Î¿î ¾ÖÇÃ¸®ÄÉÀÌ¼ÇÀ» °³¹ßÇÒ °æ¿ì ÃâÃ³¸¦ ¸í½ÃÇØ ÁÖ½Ã¸é µË´Ï´Ù. 
 */
package net.javajigi.board.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import net.javajigi.board.model.Board;
import net.javajigi.common.dao.MyJdbcDaoSupport;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.ResultReader;

public class SpringJDBCBoardDAO extends MyJdbcDaoSupport implements BoardDAO {

	public Board insert(Board board) throws DataAccessException {
		return null;
	}

	public Board update(Board board) throws DataAccessException {
		// TODO Auto-generated method stub
		return null;
	}

	public int delete(int boardNo) throws DataAccessException {
		// TODO Auto-generated method stub
		return 0;
	}

	public Board findBoard(int boardNo) throws DataAccessException {
		// TODO Auto-generated method stub
		return null;
	}

	public List findBoardList(int currentPage, final int countPerPage)
			throws DataAccessException {
		final int start = (currentPage - 1) * countPerPage;

		String sql = getMessageSourceAccessor().getMessage(
				"board.sql.select.list");

		PreparedStatementSetter psSetter = new PreparedStatementSetter() {
			public void setValues(PreparedStatement ps) throws SQLException {
				ps.setInt(1, start);
				ps.setInt(2, countPerPage);
			}
		};

		ResultReader resultReader = new ResultReader() {
			List boardList = new ArrayList();

			public void processRow(ResultSet rs) throws SQLException {
				Board board = new Board();
				board.setBoardNo(rs.getInt("boardNo"));
				board.setTitle(rs.getString("title"));
				board.setName(rs.getString("name"));
				board.setEmail(rs.getString("email"));
				board.setCreateDate(rs.getString("createdate"));
				board.setHitCount(rs.getInt("hitCount"));

				boardList.add(board);
			}

			public List getResults() {
				return boardList;
			}
		};

		List list = getJdbcTemplate().query(sql, psSetter, resultReader);

		return list;
	}

	public int updateHitCount(int boardNo) throws DataAccessException {
		// TODO Auto-generated method stub
		return 0;
	}

	public int getTotalNo() throws DataAccessException {
		// TODO Auto-generated method stub
		return 0;
	}

}
