/** 
 * BaseCommentService.java
 * @author 임새미 
 * @since 2016. 10. 26.
 *
 *  	 수정일                     수정자                                       수정내용
 *  -------------	--------	---------------------------
 *  2016. 10. 26. 	    임새미				       최초생성
 * 
 */
package kcg.faics.cmmn.bbs;

import java.util.HashMap;
import java.util.List;

/** 
 * BaseCommentService.java
 * @author 임새미 
 * @since 2016. 10. 26.
 *
 *  	 수정일                     수정자                                       수정내용
 *  -------------	--------	---------------------------
 *  2016. 10. 26. 	    임새미				       최초생성
 * 
 */
public interface BaseCommentService<T> {
	/**
	 * 댓글 정보를 반환한다.
	 * 
	 * @param commentVO
	 *            제네릭 타입의 댓글 관련 VO
	 * @return 제네릭 타입의 댓글 정보
	 * @throws Exception
	 *             기본 예외 처리
	 */
	T select(T commentVO) throws Exception;

	/**
	 * 댓글 목록을 반환한다.
	 * 
	 * @param commentVO
	 *            제네릭 타입의 댓글 관련 VO
	 * @return 제네릭 타입의 댓글 목록
	 * @throws Exception
	 *             기본 예외 처리
	 */
	List<T> selectList(T commentVO) throws Exception;

	/**
	 * 댓글 정보를 입력한다.
	 * 
	 * @param commentVO
	 *            제네릭 타입의 댓글 관련 VO
	 * @return map 형태의 결과. result : 1-성공, 0-실패, seq : 추가된 댓글 아이디
	 * @throws Exception
	 *             기본 예외 처리
	 */
	HashMap<String, Object> insert(T commentVO) throws Exception;

	/**
	 * 댓글 정보를 삭제한다.
	 * 
	 * @param commentVO
	 *            제네릭 타입의 File 관련 VO
	 * @return 1-성공, 0-실패
	 * @throws Exception
	 *             기본 예외 처리
	 */
	int delete(T commentVO) throws Exception;

	/**
	 * commentVO의 parentSeq인 모든 댓글을 삭제한다.
	 * 
	 * @param commentVO
	 *            제네릭 타입의 File 관련 VO
	 * @return 1-성공, 0-실패
	 * @throws Exception
	 *             기본 예외 처리
	 */
	int deleteAll(T commentVO) throws Exception;
}
