package com.eactive.eai.rms.onl.common.dao;

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

import com.eactive.eai.rms.onl.tracking.vo.DbStaticsVo;

/**
 * <pre>
 * 1. 기능 : 대시보드에서 사용하기 위한 DB Query 서비스
 *          거래로그건수, 타임아웃건수, 에러로그 건수를 조회하여 리턴한다.
 * 2. 처리 개요 :
 *     -
 * 3. 주의사항 :
 * </pre>
 * @author  : 윤영주
 * @version : $Revision: 1.6.6.1 $
 * @since : rts 1.0
 */
public interface DashboardTargetDao {
	/**
	 * 해당 서비스의 DB 로그에서 거래 건수를 조회하여 리턴한다.
	 * @param jndi
	 * @param schema
	 * @param start
	 * @param end
	 * @param inst
	 * @return
	 * @throws Exception
	 */
	public int getProcCount( String start, String end, String inst) throws Exception;
	
	/**
	 * 해당 서비스의 DB TSEAISR01 에서 거래 건수를 조회하여 리턴한다.
	 * @param jndi
	 * @param schema
	 * @param start
	 * @param end
	 * @param host
	 * @return
	 * @throws Exception
	 */
	public HashMap getProcCountWithSR02(String end,String inst) throws Exception;
	
	public List<Map<String, String>> getProcCountDayWithSR02(String searchStart,String searchEnd,String inst) throws Exception;
	
	public List<Map<String, String>> getProcCountDateWithBJ08(String searchStart,String searchEnd,String inst) throws Exception;
	
	public List<Map<String, String>> getProcCountHourWithBJ08(HashMap paramMap) throws Exception;
	
	public List<Map<String, String>> getProcCountDateWithES01(String searchStart,String searchEnd,String inst) throws Exception;
	
	public List<Map<String, String>> getProcCountHourWithES01(HashMap paramMap) throws Exception;
	
	
	public List<Map<String, String>> getItsmErrorLogList(HashMap paramMap) throws Exception;  
	
	
	/**
	 * 해당 서비스의 DB TSEAISR01 에서 거래 건수를 조회하여 리턴한다.
	 * @param jndi
	 * @param schema
	 * @param start
	 * @param end
	 * @param host
	 * @return
	 * @throws Exception
	 */
	public List<Map<String, String>> getHourProcCountWithSR02(HashMap paramMap) throws Exception;
	
	
	/**
	 * 해당 서비스의 DB 로그에서 타임아웃 에러 건수를 조회하여 리턴한다.
	 * @param jndi
	 * @param schema
	 * @param start
	 * @param end
	 * @param inst
	 * @return
	 * @throws Exception
	 */
	public int getTimeoutCount( String start, String end, String inst) throws Exception;

	/**
	 * 해당 서비스의 DB 로그에서 에러 건수를 조회하여 리턴한다.
	 * @param jndi
	 * @param schema
	 * @param start
	 * @param end
	 * @param inst
	 * @return
	 * @throws Exception
	 */
	public int getErrorCount( String start, String end, String inst) throws Exception;
	
	public void updatePeakTps(  String key, String val ) throws Exception;
	
	public void insertPeakTpsHistory(HashMap<String,Object> paramMap) throws Exception;
	
	public HashMap<String, Integer> getBatchProcCountByDate( String date ) throws Exception;
	public HashMap<String, Integer> getEaiBatchProcCountByDate( String date ) throws Exception;
	
	/**
	 * 배치거래 건수 를 조회하여 리턴한다. - 대시보드 메인 화면의 배치건수를 표시하기 위함.
	 * @param jndi
	 * @param schema
	 * @return
	 * @throws Exception
	 */
	public HashMap<String, Integer> getBatchProcCount( ) throws Exception;
	public HashMap<String, Integer> getEaiBatchProcCount( ) throws Exception;
	
	/**
	 * 해당 서비스의 DB 로그에서 거래 건수를 조회하여 리턴한다.
	 * ( 전지점 거래테스트 - 2009.10.24 - 를 위해 만든 임시함수.)
	 * serviceNum    1:내부, 2:대외, 3:공동망
	 * @param jndi
	 * @param schema
	 * @param start
	 * @param end
	 * @param inst
	 * @return
	 * @throws Exception
	 */
	public int getProcCountBranchTest( String start, String end, String serviceNum, String inst, String commDiv) throws Exception;

	/** 해당 서비스의 DB 로그에서 타임아웃 에러 건수를 조회하여 리턴한다.
	 * ( 전지점 거래테스트 - 2009.10.24 - 를 위해 만든 임시함수.)
	 * serviceNum   1:내부, 2:대외, 3:공동망
	 * @param jndi
	 * @param schema
	 * @param start
	 * @param end
	 * @param inst
	 * @return
	 * @throws Exception
	 */
	public int getTimeoutCountBranchTest( String start, 
			           String end, String serviceNum, String inst, String commDiv) throws Exception;
	
	
	/**
	 * 해당 서비스의 DB 로그에서 에러 건수를 조회하여 리턴한다.
	 * ( 전지점 거래테스트 - 2009.10.24 - 를 위해 만든 임시함수.)
	 * serviceNum = 1:내부, 2:대외, 3:공동
	 * @param jndi
	 * @param schema
	 * @param start
	 * @param end
	 * @param inst
	 * @return
	 * @throws Exception
	 */
	public int getErrorCountBranchTest( String start, 
			                 String end, String serviceNum, String inst, String commDiv) throws Exception;

	/**
	 * 거래 통계 집계 테이블에서 최대,최소 일자를 구한다.
	 * @param jndi
	 * @param schema
	 * @param hostName
	 * @return
	 * @throws Exception
	 */
	 public HashMap<String, String> getMinMaxDate( String hostName ) throws Exception;
	 
	 /**
	  * 거래 통계 집계 테이블에서 최대,최소 시간을 구한다.
	  * @param jndi
	  * @param schema
	  * @param baseDate
	  * @param hostName
	  * @return
	  * @throws Exception
	  */
	 public HashMap<String, String> getMinMaxTime( String baseDate, String hostName ) throws Exception;
	 
	 /**
	  * 거래 통계 집계 테이블에 데이터를 추가한다.
	  * @param jndi
	  * @param schema
	  * @param vo
	  * @return
	  * @throws Exception
	  */
	 public int insertTradeStatics(  final DbStaticsVo vo ) throws Exception;
	 
	 public HashMap<String, String> sumTradeStatics( String eaiMoniJobDstcd , String eaiMoniSvcDstcd, String statcYmd, String hostName ) throws Exception;

	 /**
	  * 대시보드 에서 사용하는 거래통계 집계 테이블 데이터를 0으로 초기화 함으로써, 대시보드의 거래건수를 0으로 초기화 한다.
	  * @param jndi
	  * @param schema
	  * @param statcYmd
	  * @param statcHMS
	  * @throws Exception
	  */
	 public void resetTradeStatics(String statcYmd, String statcHMS ) throws Exception;
	 
	 
	 public HashMap<String,String> selectEAISevrDstcd() throws Exception;

	 public List<HashMap<String, String>> getEaiBatchErrorList(HashMap<String, String> paramMap);

	 public List<HashMap<String, String>> getFepBatchErrorList(HashMap<String, String> paramMap);
	 
//	 /**
//	  * 일괄전송의 IP, PORT 정보를 리턴한다.
//	  * @return
//	  */
//	 public Map<String, String> getEaiBatchServerIpList( String schemaName );

}
