/**
 * Board 객체 관련 Interface
 */
package org.springframework.samples.kyuriboard.dao;

import java.util.List;

import org.springframework.dao.DataAccessException;
import org.springframework.samples.kyuriboard.domain.Board;

/**
 * @author DAMI(archy712@naver.com)
 *
 */
public interface BoardDao {
	
	
	/**
	 * 주어진 게시물ID로 게시물 객체를 반환한다.
	 * @param boardId 게시물ID
	 * @return Board 게시물 객체
	 * @throws DataAccessException
	 */
	Board getBoardByBoardId(int boardId) throws DataAccessException;
	
	
	/**
	 * 게시물의 총 리스트를 반환한다.
	 * @return java.util.List 게시물 총 리스트
	 * @throws DataAccessException
	 */
	List getBoardList() throws DataAccessException;
	
	
	/**
	 * 주어진 사용자ID에 해당하는 게시물 리스트를 반환한다.
	 * @param userId 사용자ID
	 * @return java.util.List 게시물 리스트
	 * @throws DataAccessException
	 */
	List getBoardListByUserId(String userId) throws DataAccessException;
	
	
	/**
	 * 주어진 사용자명에 해당하는 게시물 리스트를 반환한다.
	 * @param userName 사용자명
	 * @return java.util.List 게시물 리스트
	 * @throws DataAccessException
	 */
	List getBoardListByUserName(String userName) throws DataAccessException;
	
	
	/**
	 * 주어진 제목에 해당하는 게시물 리스트를 반환한다.
	 * @param title 게시물 제목
	 * @return java.util.List 게시물 리스트
	 * @throws DataAccessException
	 */
	List getBoardListByTitle(String title) throws DataAccessException;
	
	
	/**
	 * 주어진 게시물을 입력한다.
	 * @param board 입력할 게시물 객체
	 * @throws DataAccessException
	 */
	void insertBoard(Board board) throws DataAccessException;
	
	
	/**
	 * 주어진 게시물을 수정한다.
	 * @param board 수정할 게시물
	 * @throws DataAccessException
	 */
	void updateBoard(Board board) throws DataAccessException;
	
	
	/**
	 * 주어진 게시물을 삭제한다
	 * @param boardId 삭제할 게시물 ID
	 * @throws DataAccessException
	 */
	void deleteBoard(int boardId) throws DataAccessException;
	
	

}
