/* 
    ETRI IntraPMS Project
    전자결재  DBManagerInterface

    
*/

package com.etri.groupware.eda;
import java.util.*;
import java.sql.*;

public interface EDADBManagerInterface {

/*----------------------------------------------------------------- */
/**
 [메소드이름]: init<br>
 [기능]: EDADBManagerInterface를 생성한다.<br>
 [파라미터]: 없음 <br>
 [호출자] : EDAController <br>
 */
/*--------------------------------------------------------------- */	
	public void init();
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: deleteListsDB<br>
 [기능]: 지정 사원에 저장되어 있는 문서를 삭제한다.<br>
 [파라미터]: String docID,String listID, String personID<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public EDAResultStatus deleteListsDB( String docID , String listID , String personID );
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: deliverApprovalDocumentDB<br>
 [기능]: 문서 결재 후 결재 문서를 다음 결재자에게 넘겨주는 함수이다.<br>
 [파라미터]: ApprovalDocument document , Connection con<br>
 [호출자] : this<br>
 */
/*--------------------------------------------------------------- */	
	public EDAResultStatus deliverApprovalDocumentDB( ApprovalDocument document , Connection con);
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: deliverReturnDocumentDB<br>
 [기능]: 문서 반려 후 결재 문서를 상신자에게 돌려주는 함수이다.<br>
 [파라미터]: ApprovalDocument document , Connection con<br>
 [호출자] : this<br>
 */
/*--------------------------------------------------------------- */	
	public EDAResultStatus deliverReturnDocumentDB( ApprovalDocument document, Connection con);
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: getDocumentDB<br>
 [기능]: 시스템에 저장되어 있는 문서를 가져온다.<br>
 [파라미터]: String docID , String personID , String listID<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public ApprovalDocument getDocumentDB( String docID , String personID , String listID ) throws Exception ;
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: getDocumentListsDB<br>
 [기능]: 지정사원의 문서함을 가져온다.<br>
 [파라미터]: String personID , String listID<br>
 [호출자] : EDADController<br>
 */
/*--------------------------------------------------------------- */
	public ApprovalDocument[] getDocumentListsDB( String personID , String listID ) throws Exception;

/*----------------------------------------------------------------- */
/**
 [메소드이름]: getStartPanelDB<br>
 [기능]: 초기 메뉴에서 보여줄 문서를 가져온다.<br>
 [파라미터]: String personID <br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public ApprovalDocument[] getStartPanelDB( String personID ) throws Exception ;

/*----------------------------------------------------------------- */
/**
 [메소드이름]: obtainApprovalDB<br>
 [기능]: 지정 문서를 결재한다.<br>
 [파라미터]: ApprovalDocument document , String personID , String description , Connection con<br>
 [호출자] : this<br>
 */
/*--------------------------------------------------------------- */
	public EDAResultStatus obtainApprovalDB( ApprovalDocument document , String personID , String description , Connection con );
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: returnApprovalDB<br>
 [기능]: 지정 문서를 반려한다.<br>
 [파라미터]: ApprovalDocument document , String personID , String description , Connection con<br>
 [호출자] : this<br>
 */
/*--------------------------------------------------------------- */
	public EDAResultStatus returnApprovalDB( ApprovalDocument document , String personID , String description , Connection con );
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: processAbortApprovalDB<br>
 [기능]: 지정 문서의 상신을 취소한다.<br>
 [파라미터]: ApprovalDocument document , String personID<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public EDAResultStatus processAbortApprovalDB( ApprovalDocument document , String personID );
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: processObtainApprovalDB<br>
 [기능]: 지정 문서를 결재한다.<br>
 [파라미터]: ApprovalDocument document , String personID , String description<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public EDAResultStatus processObtainApprovalDB( ApprovalDocument document , String personID , String description );
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: processRaiseApprovalDB<br>
 [기능]: 새로운 문서를 상신한다.<br>
 [파라미터]: ApprovalDocument document<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public EDAResultStatus processRaiseApprovalDB( ApprovalDocument document );
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: processReturnApprovalDB<br>
 [기능]: 지정 문서를 반려한다.<br>
 [파라미터]: ApprovalDocument document , String personID , String description<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public EDAResultStatus processReturnApprovalDB( ApprovalDocument document , String personID , String description );
	
/*----------------------------------------------------------------- */
/**
 [메소드이름]: saveApprovalCourseDB<br>
 [기능]: 결재 경로를 저장한다.<br>
 [파라미터]: String personID , String courseName , ApprovalCourse[] course<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public EDAResultStatus saveApprovalCourseDB ( String personID , String courseName , ApprovalCourse[] course );

/*----------------------------------------------------------------- */
/**
 [메소드이름]: loadApprovalCourseDB<br>
 [기능]: 해당 이름을 가지는 결재 경로를 가져온다.<br>
 [파라미터]: String personID , String courseName <br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public ApprovalCourse[] loadApprovalCourseDB ( String personID , String courseName )  throws Exception;

/*----------------------------------------------------------------- */
/**
 [메소드이름]: listApprovalCourseDB<br>
 [기능]: 해당 사원이 저장한 모든 결재 경로를 가져온다.<br>
 [파라미터]: String personID <br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */
	public Map listApprovalCourseDB ( String personID ) throws Exception;

/*----------------------------------------------------------------- */
/**
 [메소드이름]: deleteApprovalCourseDB<br>
 [기능]: 지정 결재 경로를 삭제한다.<br>
 [파라미터]: String personID , String courseName , ApprovalCourse[] course<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */	
	public EDAResultStatus deleteApprovalCourseDB( String personID , String courseName , ApprovalCourse[] course );

/*----------------------------------------------------------------- */
/**
 [메소드이름]: searchDocumentListsDB<br>
 [기능]: 문서를 검색한다.<br>
 [파라미터]: SearchCondition searchClass<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */	
	public ApprovalDocument[] searchDocumentListsDB( SearchCondition searchClass) throws Exception;

/*----------------------------------------------------------------- */
/**
 [메소드이름]: saveEDAOptionDB<br>
 [기능]: 문서함 관리를 위한 Option을 설정한다.<br>
 [파라미터]: String personID , EDAOption optionClass<br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */	
	public EDAResultStatus saveEDAOptionDB( String personID , EDAOption optionClass );

/*----------------------------------------------------------------- */
/**
 [메소드이름]: loadEDAOptioDB<br>
 [기능]: 지정 사원의 Option을 가져온다.<br>
 [파라미터]: String personID <br>
 [호출자] : EDAController<br>
 */
/*--------------------------------------------------------------- */		
	public EDAOption loadEDAOptionDB( String personID ) throws Exception ;
}