package com.eactive.eai.batch.job.jobConstant;

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class TelegramKeys
{

    /**
     * 자료구분
     */
    public static final String RPS_HBD_DAT_GBN_TEST   = "T";    //테스트데이터
    public static final String RPS_HBD_DAT_GBN_REAL   = "R";    //실데이터
    public static final String RPS_HBD_DAT_GBN_PASS   = "B";    //ByPass데이터

    public static String getRPS_HDB_DAT_GBN(String s)
    {
        if (s.equals("test"))         // Test Data
            return "T";
        else if (s.equals("real"))    // Real Data
            return "R";
        else if (s.equals("pass"))    // By Pass
            return "B";
        else
            return "E";               // Error: 위의 문자가 아닌 경우
    }

    /**
     * 송수신 Flag (HDB_TRA_FLAG)
     */
    public static final String RPS_HDB_TRA_FLAG_CLIENT = "1"; // Client --> Server 1, Server --> Client 2
    public static final String RPS_HDB_TRA_FLAG_SERVER = "2";

    /**
     * 응답코드 (HDB_RET_CODE), 3자리
     */
    public static final String RPS_HDB_RET_CODE_SUCCESS           = "000";  //정상
    public static final String RPS_HDB_RET_CODE_ALREADY_RECEIVED  = "101";  //기수신완료
    public static final String RPS_HDB_RET_CODE_FORMAT_ERROR      = "201";  //Format오류
    public static final String RPS_HDB_RET_CODE_CODE_ERROR        = "202";  //기관코드오류
    public static final String RPS_HDB_RET_CODE_FILENAME_ERROR    = "203";  //파일명오류
    public static final String RPS_HDB_RET_CODE_UNCOMPLETED_ERROR = "901";  //파일전송미완료
    public static final String RPS_HDB_RET_CODE_OTHER_ERROR       = "999";  //기타오류

    public static String getName_RPS_HDB_RET_CODE(String code) {
        return code==null                                     ? "null"           :
               code.equals(RPS_HDB_RET_CODE_SUCCESS          )? "정상"           :
               code.equals(RPS_HDB_RET_CODE_ALREADY_RECEIVED )? "기수신완료"     :
               code.equals(RPS_HDB_RET_CODE_FORMAT_ERROR     )? "Format오류"     :
               code.equals(RPS_HDB_RET_CODE_CODE_ERROR       )? "기관코드오류"   :
               code.equals(RPS_HDB_RET_CODE_FILENAME_ERROR   )? "파일명오류"     :
               code.equals(RPS_HDB_RET_CODE_UNCOMPLETED_ERROR)? "파일전송미완료" :
               code.equals(RPS_HDB_RET_CODE_OTHER_ERROR      )? "기타오류"       : code;
    }

    /**
     * 응답코드 (KFB_RET_CODE), 3자리
     */
    public static final String KFB_RET_CODE_SUCCESS            = "000";  //정상
    public static final String KFB_RET_CODE_NO_FILE            = "101";  //해당일자 전송자료 없음
    public static final String KFB_RET_CODE_ALREADY_RECEIVED   = "102";  //해당일자 정보 기수신 완료
    public static final String KFB_RET_CODE_ORGN_CODE_ERROR    = "401";  //참가기관코드 Error
    public static final String KFB_RET_CODE_TGRAM_CODE_ERROR   = "402";  //전문종별코드 Error
    public static final String KFB_RET_CODE_TRX_GBN_CODE_ERROR = "403";  //거래구분코드 Error
    public static final String KFB_RET_CODE_SND_RCV_FLAG_ERROR = "404";  //송수신 Flag Error
    public static final String KFB_RET_CODE_FILE_TRANS_NO_END  = "610";  //파일전송 미완료

    public static String getName_KFB_RET_CODE(String code) {
        return code==null                                  ? "null"                   :
               code.equals(KFB_RET_CODE_SUCCESS           )? "정상"                      :
               code.equals(KFB_RET_CODE_NO_FILE           )? "해당일자 전송자료 없음"    :
               code.equals(KFB_RET_CODE_ALREADY_RECEIVED  )? "해당일자 정보 기수신 완료" :
               code.equals(KFB_RET_CODE_ORGN_CODE_ERROR   )? "참가기관코드 Error"        :
               code.equals(KFB_RET_CODE_TGRAM_CODE_ERROR  )? "전문종별코드 Error"        :
               code.equals(KFB_RET_CODE_TRX_GBN_CODE_ERROR)? "거래구분코드 Error"        :
               code.equals(KFB_RET_CODE_SND_RCV_FLAG_ERROR)? "송수신 Flag Error"         :
               code.equals(KFB_RET_CODE_FILE_TRANS_NO_END )? "파일전송 미완료"           : code;
    }

    /**
     * 응답코드 (BOKJJ_RET_CODE), 3자리
     */
    public static final String BOKJJ_RET_CODE_SUCCESS               = "000";  //정상
    public static final String BOKJJ_RET_CODE_PROTO                 = "210";  //전문흐름순서 오류
    public static final String BOKJJ_RET_CODE_ALREADY_RECEIVED      = "220";  //기수신 자료임
    public static final String BOKJJ_RET_CODE_DATE_ERROR            = "230";  //헤더 전문 내 날짜 오류
    public static final String BOKJJ_RET_CODE_REC_COUNT_ERROR       = "240";  //수신건수와 헤더 또는 트레일러건수 불일치
    public static final String BOKJJ_RET_CODE_ID_ERROR              = "310";  //참가기관ID 오류
    public static final String BOKJJ_RET_CODE_PASSWORD_ERROR        = "320";  //비밀번호 오류
    public static final String BOKJJ_RET_CODE_OPCODE_ERROR          = "330";  //업무관리정보 오류
    public static final String BOKJJ_RET_CODE_HDTLER_ERROR          = "340";  //헤더/트레일러 구분 코드 오류
    public static final String BOKJJ_RET_CODE_JOBCODE_ERROR         = "910";  //업무구분코드 오류
    public static final String BOKJJ_RET_CODE_TEL_CODE_ERROR        = "920";  //전문종별코드 오류
    public static final String BOKJJ_RET_CODE_TRX_GBN_CODE_ERROR    = "930";  //거래구분코드 오류
    public static final String BOKJJ_RET_CODE_SND_RCV_FLAG_ERROR    = "940";  //송수신 FLAG 오류
    public static final String BOKJJ_RET_CODE_RTN_CODE_ERROR        = "950";  //응답코드 오류
    public static final String BOKJJ_RET_CODE_SND_RCV_JOBCODE_ERROR = "960";  //송수신 업무구분 코드 오류
    public static final String BOKJJ_RET_CODE_FILE_TRANS_DUP_ERROR  = "630";  //파일중복 수신 오류

    public static String getName_BOKJJ_RET_CODE(String code) {
        return code==null                                ? "null"                       :
               code.equals(BOKJJ_RET_CODE_SUCCESS              )? "정상"                 :
               code.equals(BOKJJ_RET_CODE_PROTO                )? "전문흐름순서 오류                       " :
               code.equals(BOKJJ_RET_CODE_ALREADY_RECEIVED     )? "기수신 자료임                           " :
               code.equals(BOKJJ_RET_CODE_DATE_ERROR           )? "헤더 전문 내 날짜 오류                  " :
               code.equals(BOKJJ_RET_CODE_REC_COUNT_ERROR      )? "수신건수와 헤더 또는 트레일러건수 불일치" :
               code.equals(BOKJJ_RET_CODE_ID_ERROR             )? "참가기관ID 오류                         " :
               code.equals(BOKJJ_RET_CODE_PASSWORD_ERROR       )? "비밀번호 오류                           " :
               code.equals(BOKJJ_RET_CODE_OPCODE_ERROR         )? "업무관리정보 오류                       " :
               code.equals(BOKJJ_RET_CODE_HDTLER_ERROR         )? "헤더/트레일러 구분 코드 오류            " :
               code.equals(BOKJJ_RET_CODE_JOBCODE_ERROR        )? "업무구분코드 오류                       " :
               code.equals(BOKJJ_RET_CODE_TEL_CODE_ERROR       )? "전문종별코드 오류                       " :
               code.equals(BOKJJ_RET_CODE_TRX_GBN_CODE_ERROR   )? "거래구분코드 오류                       " :
               code.equals(BOKJJ_RET_CODE_SND_RCV_FLAG_ERROR   )? "송수신 FLAG 오류                        " :
               code.equals(BOKJJ_RET_CODE_RTN_CODE_ERROR       )? "응답코드 오류                           " :
               code.equals(BOKJJ_RET_CODE_SND_RCV_JOBCODE_ERROR)? "송수신 업무구분 코드 오류               " :
               code.equals(BOKJJ_RET_CODE_FILE_TRANS_DUP_ERROR )? "파일중복 수신 오류                      " : code;
    }
    public static final long BOKJJ_DELAY_MILISEC = 1000;

	/**
     * 응답코드 (BOKNG_RET_CODE), 3자리
     */
    public static final String BOKNG_RET_CODE_000 = "000";  //정상                                    
    public static final String BOKNG_RET_CODE_210 = "210";  //거래구분코드 불일치 오류                   
    public static final String BOKNG_RET_CODE_220 = "220";  //블록번호 오류                         
    public static final String BOKNG_RET_CODE_230 = "230";  //중복수신 오류                         
    public static final String BOKNG_RET_CODE_240 = "240";  //데이터 시퀀스 오류 / 데이터 건수 오류          
    public static final String BOKNG_RET_CODE_250 = "250";  //데이터 수신 Timeout 오류               
    public static final String BOKNG_RET_CODE_260 = "260";  //결번확인 오류                         
    public static final String BOKNG_RET_CODE_270 = "270";  //업무 개시전 오류                       
    public static final String BOKNG_RET_CODE_280 = "280";  //집계 응답전문 미수신(한은망 집계 처리시)           
    public static final String BOKNG_RET_CODE_310 = "310";  //송신자 ID 오류                       
    public static final String BOKNG_RET_CODE_320 = "320";  //송신자 Password 오류                 
    public static final String BOKNG_RET_CODE_330 = "330";  //수신구분 오류                         
    public static final String BOKNG_RET_CODE_340 = "340";  //전문전송일시 오류                       
    public static final String BOKNG_RET_CODE_350 = "350";  //파일명 오류                          
    public static final String BOKNG_RET_CODE_360 = "360";  //Data구분 오류                       
    public static final String BOKNG_RET_CODE_370 = "370";  //처리기준일 오류                        
    public static final String BOKNG_RET_CODE_910 = "910";  //업무코드 오류                         
    public static final String BOKNG_RET_CODE_920 = "920";  //기관코드 오류                         
    public static final String BOKNG_RET_CODE_930 = "930";  //전문종별코드 오류                       
    public static final String BOKNG_RET_CODE_940 = "940";  //수신FLAG 오류                       
    public static final String BOKNG_RET_CODE_950 = "950";  //응답코드 오류                         
    
	public static String getName_BOKNG_RET_CODE(String code) {
		return code==null ? "null" :
			   code.equals(BOKNG_RET_CODE_000)? "정상" :
			   code.equals(BOKNG_RET_CODE_210)? "거래구분코드 불일치 오류" :
			   code.equals(BOKNG_RET_CODE_220)? "블록번호 오류" :
			   code.equals(BOKNG_RET_CODE_230)? "중복수신 오류" :
			   code.equals(BOKNG_RET_CODE_240)? "데이터 시퀀스 오류 / 데이터 건수 오류" :
			   code.equals(BOKNG_RET_CODE_250)? "데이터 수신 Timeout 오류" :
			   code.equals(BOKNG_RET_CODE_260)? "결번확인 오류" :
			   code.equals(BOKNG_RET_CODE_270)? "업무 개시전 오류" :
			   code.equals(BOKNG_RET_CODE_280)? "집계 응답전문 미수신(한은망 집계 처리시)" :
			   code.equals(BOKNG_RET_CODE_310)? "송신자 ID 오류" :
			   code.equals(BOKNG_RET_CODE_320)? "송신자 Password 오류" :
			   code.equals(BOKNG_RET_CODE_330)? "수신구분 오류" :
			   code.equals(BOKNG_RET_CODE_340)? "전문전송일시 오류" :
			   code.equals(BOKNG_RET_CODE_350)? "파일명 오류" :
			   code.equals(BOKNG_RET_CODE_360)? "Data구분 오류" :
			   code.equals(BOKNG_RET_CODE_370)? "처리기준일 오류" :
			   code.equals(BOKNG_RET_CODE_910)? "업무코드 오류" :
			   code.equals(BOKNG_RET_CODE_920)? "기관코드 오류" :
			   code.equals(BOKNG_RET_CODE_930)? "전문종별코드 오류" :
			   code.equals(BOKNG_RET_CODE_940)? "수신FLAG 오류" :
			   code.equals(BOKNG_RET_CODE_950)? "응답코드 오류" : code;
	}
	
	
	  /*******************************************************************************
	   * 금융정보분석원 사용 코드
	   *******************************************************************************/
	  
	  public static final String FIUSC_RES_CODE_SUCESS			= "00"; 		//정상, 시퀀스와 크기 둘다 일치                  
	  public static final String FIUSC_RES_CODE_ERROR			= "11"; 		//오류, 시퀀그와 크기 둘다 불일치     
	  public static final String FIUSC_RES_CODE_ERROR_SEQ		= "01"; 		//오류, 시퀀스 불일치     
	  public static final String FIUSC_RES_CODE_ERROR_SIZE		= "10"; 		//오류, 크기 불일치    
	  
	  public static final String FIUSC_DATA_FLAG_BIN           	= "B";       	//바이너리 모드
	  public static final String FIUSC_RESUME_YN              	= "N";       	//이어받기 사용안함
	  public static final String FIUSC_EAI_CD 	             	= "eai.cd";   	//중계기관코드

    /**
     * 전문전송일 (HDB_SND_DATE): YYYYMMDD 형태의 값을 전달하여야 한다.
     */
    public static String getYYYYMMDD()
    {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
        String curDate = formatter.format(Calendar.getInstance().getTime());
        return curDate;
    }

    /**
     * 전문전송일 (HDB_SND_DATE): YYYYMMDD 형태의 값을 전달하여야 한다.
     */
    public static String getYYYYMMDD( int days )
    {
        Calendar temp = Calendar.getInstance ( );
        StringBuffer sbDate = new StringBuffer ( );
        temp.add ( Calendar.DAY_OF_MONTH, days );
        int nYear = temp.get ( Calendar.YEAR );
        int nMonth = temp.get ( Calendar.MONTH ) + 1;
        int nDay = temp.get ( Calendar.DAY_OF_MONTH );

        sbDate.append ( nYear );
        if ( nMonth < 10 )
            sbDate.append ( "0" );
        sbDate.append ( nMonth );
        if ( nDay < 10 )
            sbDate.append ( "0" );
        sbDate.append ( nDay );

        return sbDate.toString ( );
    }

    /**
     * 전문전송시간 (HDB_SND_TIME): HHMMSS 형태의 값을 전달하여야 한다.
     */
    public static String getHHMMSS()
    {
        SimpleDateFormat formatter = new SimpleDateFormat("hhmmss");
        String curDate = formatter.format(Calendar.getInstance().getTime());
        return curDate;
    }

    /**
     * 수신기관 전문 번호 (HDB_RSV_DOCSEQ) 8자리, 송신측에서는 null이나 0으로 채워서 보낼 수 있다.
     */
    public static final String RPS_HDB_RSV_DOCSEQ = "00000000";

    /**
     * 전체 파일 수 (HDB_TOT_FILE), 사용안함, 여기서는 00으로 세팅
     */
    public static final String RPS_HDB_TOT_FILE = "00";

    /**
     * 현재 파일 순번(HDB_CUR_FILE), 사용안함, 여기서는 00으로 세팅
     */
    public static final String RPS_HDB_CUR_FILE = "00";

    /**
     * 현재 파일명 (HDB_DOC_NAME), 30자리, --> 실행시간에 만들어짐.
     */

    /**
     * 현재파일전체전문수 (HDB_CUR_TOT), 사용안함, 여기서는 00으로 세팅
     */
    public static final String RPS_HDB_CUR_TOT = "00";
    /**
     * 현재파일현재순번 (HDB_CUR_NOW), 사용안함, 여기서는 00으로 세팅
     */
    public static final String RPS_HDB_CUR_NOW = "00";

    /**
     * 전문CASE명 (HDB_DOC_CASE), 사용안함, 여기서는 000000으로 세팅
     */
    public static final String RPS_HDB_DOC_CASE = "000000";

    /**
     * 송신자 추가정의 (HDB_SND_EXT), FILLER, 여기서는 공백으로 채움
     */
    public static final String RPS_HDB_SND_EXT = " ";

    /**
     * 수신자 추가정의 (HDB_RSV_EXT), FILLER, 여기서는 공백으로 채움
     */
    public static final String RPS_HDB_RSV_EXT = " ";

    public static final String CMS_BIZ_GBN = "";

    public static final String CMS_TRA_FLAG_BANK = "";

    /**
     * CMS에서 사용되는 응답코드
     **/
    public static final String RES_CODE_SUCESS              = "000"; //정상
    public static final String RES_CODE_SYSTEM_ERROR        = "090"; //시스템장애
    public static final String RES_CODE_SENDER_NAME_ERROR   = "310"; //송신자명오류
    public static final String RES_CODE_SENDER_PWD_ERROR    = "320"; //송신자암호오류
    public static final String RES_CODE_ALREADY_RECEIVED    = "630"; //기전송 완료
    public static final String RES_CODE_NOT_REGISTERED      = "631"; //해당은행 미등록 업무
    public static final String RES_CODE_FILENAME_ERROR      = "632"; //비정상 화일명
    public static final String RES_CODE_BYTE_ERROR          = "633"; //비정상전문 BYTE수
    public static final String RES_CODE_FILE_ORDER_ERROR    = "634"; //파일 전송 순서 오류
    public static final String RES_CODE_FORMAT_ERROR        = "800"; //FORMAT 오류

    public static String getCmsRetDescription(String code) {
        return code==null                              ? "null"                 :
               code.equals(RES_CODE_SUCESS            )? "정상"                 :
               code.equals(RES_CODE_SYSTEM_ERROR      )? "시스템장애"           :
               code.equals(RES_CODE_SENDER_NAME_ERROR )? "송신자명오류"         :
               code.equals(RES_CODE_SENDER_PWD_ERROR  )? "송신자암호오류"       :
               code.equals(RES_CODE_ALREADY_RECEIVED  )? "기전송 완료"          :
               code.equals(RES_CODE_NOT_REGISTERED    )? "해당은행 미등록 업무" :
               code.equals(RES_CODE_FILENAME_ERROR    )? "비정상 화일명"        :
               code.equals(RES_CODE_BYTE_ERROR        )? "비정상전문 BYTE수"    :
               code.equals(RES_CODE_FILE_ORDER_ERROR  )? "파일 전송 순서 오류"    :
               code.equals(RES_CODE_FORMAT_ERROR      )? "FORMAT 오류"          :code;
}

    /**
    *
    * CMS에서 사용되는 전문 전송 일시 : MMDDhhmmss 형태의 값을 전달하여야 한다.
    */
    public static String getMMddHHmmss()
   {
       SimpleDateFormat formatter = new SimpleDateFormat("MMddHHmmss");
       String curDate = formatter.format(Calendar.getInstance().getTime());
       return curDate;
   }

    /**
    *
    * 신한은망에서 사용되는 전문 전송 일시 : YYYYMMDDhhmmss 형태의 값을 전달하여야 한다.
    */
    public static String getYYYYMMddHHmmss()
    {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
        String curDate = formatter.format(Calendar.getInstance().getTime());
        return curDate;
    }

    /**
    * 1. 기능 : 현재 요일을 숫자로 리턴하는 Method
    * 2. 처리 개요 :
    *    - 현재 요일을 숫자로 리턴하는 Method
    * 3. 주의사항
    *
    * @return 현재 요일 숫자
    * @exception
    **/
    public static int getDayOfWeekNum() {
        Calendar c = Calendar.getInstance();
        return c.get ( Calendar.DAY_OF_WEEK );
    }

    /**
     * 트랜잭션 코드
     */
    public static final String TRANSACTION_CODE = "transaction_code";

    /**
     * 업무구분코드
     */
    public static final String BIZ_GBN = "biz.gbn";

    /**
     * 자료구분코드
     */
    public static final String DAT_GBN = "data.gbn";
    
    /**
     * 은행/센타 코드
     */
    public static final String BANK_CODE    = "bank.code"; //은행코드
    public static final String CENTER_CODE  = "center.code"; //센타코드

    /**
     * 송수신 플래그
     * "C" - 센터에서 전문을 발생할 시, "B" - 은행 및 기관 에서 전문을 발생할 시
     */
    public static final String TRA_FLAG_CENTER = "tra.flag.center";
    public static final String TRA_FLAG_BANK   = "tra.flag.bank";

    public static final String TRA_FLAG_SEND   = "tra.flag.send";
    public static final String TRA_FLAG_RECV   = "tra.flag.recv";
    
    /**
     * 퇴직연금 송신 기관 관련
     * 송신기관 구분 (HDB_SND_CLS) : 1:운영, 2:기록, 3:자산, 4:상품, 5:자산운영
     * 송신기관 코드 (HDB_SND_ID)
     */
    public static final String HDB_SND_CLS     = "send.class";
    public static final String HDB_SND_ID      = "send.id";
    public static final String HDB_RCV_CLS     = "rcv.cls";

    /**
     * CMS 방식의 다양한 TR code, 기관코드, ll 필드등을 위해 다음을 추가함.
     */
    public static final String ORGN_CD_LEN     = "bank.code.len";
    public static final String TRCD_LEN        = "tr.code.len";
    public static final String FILE_NAME_LEN   = "file.name.len";
    public static final String CMS_CIPHER_USE  = "cipher.yn";
    public static final String TRAN_GBN_SEND   = "send.tran.gbn";
    public static final String TRAN_GBN_RECV   = "recv.tran.gbn";
    public static final String SLEEP_TIME      = "sleep.time";
    public static final String SLEEP_TIME_0620 = "sleep.time.0620";
    public static final String SLEEP_TIME_POST = "sleep.time.post";
    public static final String LENGTH_OFFSET   = "length.offset";
    public static final String IGNORE_DATA_LEN = "ignore.data.len";

    public static final String FILLER_LEN_0600 = "fill.len.0600";
    public static final String APPEND_LL_LEN   = "append.ll.len";
    
    public static final String SKIP_LF         = "skip.lf";

    public static final String SKIP_SUMMARY    = "skip.sum";
    public static final String DEBUG           = "debug.yn";

    
    // 여신금융협회
    public static final String BLOCKING_COUNT = "blocking.count";  // 파일별로 블러킹 개수가 정해져 있음
    public static final String PADDING_LEN    = "padding.len";     // 파일별로 블러킹 하고 나서 추가 패딩하는 길이
    public static final String RECV_REC_LEN   = "recv.rec.len";    // 해당 파일의 수신시 레코드 크기

    /**
     * 프로퍼티 그룹을 가져오기 위한 PREFIX
     * 프로퍼티 그룹은 REFIX+배치 업무 코드
     */
    public static final String PROP_GROUP_NAME_PREFIX = "TelegramInfo";

    /**
     * 조건문장
     */
    public final static String BLOCKEND = "BLOCKEND";
    public final static String COMPARE  = "COMPARE";
    public final static String LOSS     = "LOSS";
    public final static String EOF      = "EOF";
    public final static String LOSSEND  = "LOSSEND";
    public final static String TIMEOUT  = "TIMEOUT";
    public final static String ERROR    = "ERROR";
    public final static String SEND     = "SEND";
    public final static String RECV     = "RECV";
    public final static String NOFILE   = "NOFILE";
    public final static String NOBODY   = "NOBODY";
    public final static String DUP      = "DUP";
    public final static String IGNORE   = "IGNORE";

    /**
     * 어음이미지 시스템에서 사용되는 응답코드
     **/
    public static final String BI_RES_CODE_SUCESS              = "000";             //정상
    public static final String BI_RES_CODE_SYSTEM_ERROR        = "090";             //시스템장애
    public static final String BI_RES_CODE_BEFORE_FILE         = "110";             //작업시작파일 처리전 수신요청
    public static final String BI_RES_CODE_AFTER_FILE          = "120";             //작업시작파일 처리후 수신요청
    public static final String BI_RES_CODE_SENDER_NAME_ERROR   = "210";             //송신자명오류
    public static final String BI_RES_CODE_SENDER_PWD_ERROR    = "220";             //송신자암호오류
    public static final String BI_RES_CODE_ALREADY_RECEIVED    = "410";             //기전송 완료
    public static final String BI_RES_CODE_NOT_REGISTERED      = "420";             //해당은행 미등록 업무
    public static final String BI_RES_CODE_FILENAME_ERROR      = "430";             //비정상 화일명
    public static final String BI_RES_CODE_BYTE_ERROR          = "440";             //비정상전문 BYTE수
    public static final String BI_RES_CODE_FILE_SIZE_ERROR     = "710";             //파일 사이즈 오류
    public static final String BI_RES_CODE_FORMAT_ERROR        = "800";             //FORMAT 오류
    public static final String BI_RES_CODE_ETC_ERROR           = "900";             //기타 오류

    public static final String BI_TR_CLASS_RECV                     = "R";
    public static final String BI_TR_CLASS_SEND                     = "S";

    public static String[] BIIMG_RES_CODES ={"000", "101", "102", "401", "402", "403", "404", "610", "800", "900"};
    public static boolean isDefinedBiImgResCode (String code){
        int len = BIIMG_RES_CODES.length;
        for (int i=0; i<len; i++){
            if(BIIMG_RES_CODES[i].equals(code)){
                return true;
            }
        }
        return false;
    }

    public static String getBiImgRetDescription(String code) {
        return code==null                                        ? "null" :
               code.equals(BI_RES_CODE_SUCESS                   )? "정상"            :
               code.equals(BI_RES_CODE_SYSTEM_ERROR             )? "시스템장애"   :
               code.equals(BI_RES_CODE_BEFORE_FILE              )? "작업시작파일 처리전 수신요청" :
               code.equals(BI_RES_CODE_AFTER_FILE               )? "작업시작파일 처리후 수신요청" :
               code.equals(BI_RES_CODE_SENDER_NAME_ERROR        )? "송신자명오류"       :
               code.equals(BI_RES_CODE_SENDER_PWD_ERROR         )? "송신자암호오류"    :
               code.equals(BI_RES_CODE_ALREADY_RECEIVED         )? "기전송 완료"       :
               code.equals(BI_RES_CODE_NOT_REGISTERED           )? "해당은행 미등록 업무"  :
               code.equals(BI_RES_CODE_FILENAME_ERROR           )? "비정상 화일명"      :
               code.equals(BI_RES_CODE_BYTE_ERROR               )? "비정상전문 BYTE수"  :
               code.equals(BI_RES_CODE_FILE_SIZE_ERROR          )? "파일 사이즈 오류"    :
               code.equals(BI_RES_CODE_FORMAT_ERROR             )? "FORMAT 오류"      :
               code.equals(BI_RES_CODE_ETC_ERROR                )? "기타 오류": code;

  }

  /*******************************************************************************
   * KED 사용 코드
   *******************************************************************************/
  public static final String KED_SEND_TRCODE                     = "CB02";
  public static final String KED_RECV_TRCODE                     = "RB02";

  public static final String KED_DATA_OFFSET                     = "data.offset";

  public static final String KED_RES_CODE_SUCESS                = "000";        //정상
  public static final String KED_RES_CODE_NOFILE                = "101";        //해당일자 전송 자료 없음
  public static final String KED_RES_CODE_ALREADY_RECEIVED        = "102";        //기 전송 완료
  public static final String KED_RES_CODE_NOT_REGISTERED          = "401";        //해당회원사 미등록 업무
  public static final String KED_RES_CODE_TELTYPE_ERROR            = "402";        //전문 종별코드 Error
  public static final String KED_RES_CODE_FILENAME_ERROR          = "403";        //비정상 화일명
  public static final String KED_RES_CODE_BYTE_ERROR              = "404";        //비정상전문 BYTE수
  public static final String KED_RES_CODE_NOEND_FILE_RECV        = "610";        //화일 수신 미완료
  public static final String KED_RES_CODE_SYSTEM_ERROR            = "800";        //시스템장애
  public static final String KED_RES_CODE_ETC_ERROR               = "900";           //기타 오류

  /**
     * 정의된 전문종별인지 확인한다.
     */
    public static String[] KED_TELTYPE          = {"0600", "0610", "0700", "0710", "0320", "0620", "0300", "0310", "0720", "0730", "0800", "0810" };
    public static boolean isKedTelType (String code){
        int len = KED_TELTYPE.length;
        for (int i=0; i<len; i++){
            if(KED_TELTYPE[i].equals(code)){
                return true;
            }
        }
        return false;
    }

    /**
     * 정의된 응답코드인지 확인한다.
     **/
    public static String[] KED_RES_CODES ={"000", "101", "102", "401", "402", "403", "404", "610", "800", "900"};
    public static boolean isDefinedKedResCode (String code){
        int len = KED_RES_CODES.length;
        for (int i=0; i<len; i++){
            if(KED_RES_CODES[i].equals(code)){
                return true;
            }
        }
        return false;
    }

      /*******************************************************************************
       * 한은 외환망 사용 코드
       *******************************************************************************/
//    public static final String BOKEX_DATA_FLAG_BIN                = "B";   //바이너리 모드
//    public static final String BOKEX_RESUME_YN                    = "N";   //이어받기 사용안함
    public static final String DATA_FLAG                = "data.flag";   //바이너리 모드
    public static final String RESUME_YN                = "resume.yn";   //이어받기 사용안함

      /*******************************************************************************
       * DACOM MAGIC LINK 프로토콜
       *******************************************************************************/
    public static final int    MAGICLINK_TELEGRAM_LENGTH          = 150;   //전문길이
    public static final String MAGICLINK_NEXT                     = "NXT"; //다음 파일 있음
    public static final String MAGICLINK_END                      = "END"; //다음 파일 없음
    public static final String MAGICLINK_NEW                      = "NEW"; //새로운 파일 전송
    public static final String MAGIC_RES_CODE_SUCESS              = "000"; // 정상
    public static final String MAGIC_RES_CODE_SYSTEM_ERROR        = "001"; // 시스템 장애
    public static final String MAGIC_RES_CODE_USERID_ERROR        = "002"; // USER ID 오류
    public static final String MAGIC_RES_CODE_PASSWD_ERROR        = "003"; // PASSWORD 오류
    public static final String MAGIC_RES_CODE_JOBTYPE_ERROR       = "004"; // JOB TYPE 오류
    public static final String MAGIC_RES_CODE_NO_DATA             = "005"; // 조건에 맞는 자료 없음
    public static final String MAGIC_RES_CODE_TELEGRAM_TYPE_ERROR = "006"; // 전문 종류 오류
    public static final String MAGIC_RES_CODE_SEND_BYTE_ERROR     = "007"; // 전송 Bytes오류
    public static final String MAGIC_RES_CODE_PROTOCOL_ERROR      = "008"; // 전문 형식 오류
    public static final String MAGIC_RES_CODE_PASSWD_CHG_ERROR    = "009"; // PASSWORD Change오류
    public static final String MAGIC_RES_CODE_ETC_ERROR           = "099"; // 기타 오류

    /*******************************************************************************
       * DACOM 매직링크 사용 코드
       *******************************************************************************/
    public static final String MLINK_PROCESS_SEND                 = "SD";        //자료송신
    public static final String MLINK_PROCESS_RECV                 = "RD";        //자료수신
    public static final String MLINK_FILENAME                     = "file.name"; //수신 요청 파일 명
    public static final String MLINK_RECV_FLAG                    = "E";         //수신 플래그
    public static final String MLINK_DOC_RECV_ID                  = "recv.id";   //수신자ID
    public static final int    MLINK_HEADER_LEN                   = 63;          //파일 헤더 길이

    /*******************************************************************************
     * 구 DACOM (KSNET) 사용 코드
     *******************************************************************************/
    public static final int    KSNET_HEADER_LEN                   = 38;          //파일 헤더 길이
    
    /*******************************************************************************
     * 삼성네트웍스 X.25 송수신 사용코드
     *******************************************************************************/
    public static final String SSNET_GROUP_ID                     = "group.id";   //그룹 ID
    public static final String SSNET_USER_ID                      = "user.id";    //USER ID
    public static final String SSNET_DEST_TYPE                    = "D";          //수신자 TYPE
    public static final String SSNET_CODE_CONV_DEFAULT            = "A";          //코드변환여부
    public static final String SSNET_CODE_CONV_OPT                = "code.conv";  //코드변환여부
    public static final String SSNET_MISS_CHK_REQ                 = "Y";          //결번 CHK요구표시
    public static final String SSNET_SEND_MSG_ID                  = "send.msg.id"; //SUBJECT(Msg ID)
    public static final String SSNET_RECV_MSG_ID                  = "recv.msg.id"; //SUBJECT(Msg ID)
    public static final String SSNET_SEND                         = "S";          //송수신 업무구분 (송신)
    public static final String SSNET_MISS_REQ                     = "C";          //결번전문확인 요구 전문
    public static final String SSNET_MISS_RES                     = "E";          //결번 확인 완료(결번이 없을때)
    public static final String SSNET_MISS_RES_CODE                = "001";        //*001 : 최종번호 틀림
    
    


      /*******************************************************************************
       * 한국은행 국고 프로토콜
       *******************************************************************************/
    public static final String BOKGG_RES_CODE_SUCESS              = "000"; // 정상
    public static final String BOKGG_RES_CODE_ERROR               = "009"; // 오류

    public static String getBokGGRetDescription(String code) {
        return code==null                         ? "null" :
               code.equals(BOKGG_RES_CODE_SUCESS )? "정상"  :
               code.equals(BOKGG_RES_CODE_ERROR  )? "오류"  : code;
  }

    /*******************************************************************************
     * 신용회복위원회 프로토콜
     *******************************************************************************/
  public static final String CCRSF_RES_CODE_SUCESS              = "000"; // 정상

  public static String getCCRSFRetDescription(String code) {
      return code==null                         ? "null" :       
          code.equals(CCRSF_RES_CODE_SUCESS )? "정상"  :      
          code.equals( "910" )? "시스템 명칭 오류"  :      
          code.equals( "911" )? "헤더 길이 오류"  :      
          code.equals( "912" )? "전문길이 오류"  :      
          code.equals( "920" )? "전문코드 오류"  :      
          code.equals( "930" )? "업무구분코드 오류"  :      
          code.equals( "940" )? "전문 생성기관 오류"  :      
          code.equals( "950" )? "응답코드 오류"  :      
          code.equals( "960" )? "송수신 구분 오류"  :      
          code.equals( "970" )? "해당 파일 없음"  :      
          code.equals( "990" )? "기타 오류"  :      
          code.equals( "210" )? "전문 흐름순서 오류"  :      
          code.equals( "220" )? "이미 수신한 자료의 중복수신"  :      
          code.equals( "230" )? "헤더 레코드 전문의 날짜 오류"  :      
          code.equals( "240" )? "헤더 및 트레일러에 기록된 데이터 수와 실제 수신한 데이터 수의 불일치"  :      
          code.equals( "330" )? "업무관리정보 오류"  :      
          code.equals( "340" )? "헤더, 데이터, 트레일러 구분 오류"  :      
          code.equals( "350" )? "조회 데이터 없음"  :      
          code.equals( "360" )? "조회조건 오류"  : code;
}
    
//	public static int getLlStart(BatchDoc batchDoc) {
//		try {
//			int llStart = 1;
//	        String propName = PROP_GROUP_NAME_PREFIX + "{" +
//	                          batchDoc.getBatchMsg().getHeader().getProcessCode() + "_" +
//	                          batchDoc.getBatchMsg().getHeader().getInstitutionCode() + "}";
//	        PropManager pmanager = PropManager.getInstance();
//	        llStart = Integer.parseInt(pmanager.getProperties(propName).getProperty("ll.start"));
//			return llStart;
//		} catch (Exception e) {
//			return 1;
//		}
//	}
}