package com.eactive.eai.adapter.wca;

import com.eactive.eai.adapter.wca.global.WCADefine;
import com.eactive.eai.adapter.wca.log.InsertErrorLog;
import com.eactive.eai.common.util.Logger;

import java.util.Properties;

public class ClientUtil implements SNAProperties
{ 
    /**
     * SNAAdapter critical한 정보 로깅을 위한 logger 
     */
    Logger adapter_logger = Logger.getLogger(WCADefine.ADAPTER_LOGGER_NAME);
    
    public static ClientUtil	clientUtil   = new ClientUtil();
    
    /** 
    * 1. 기능 :  ClientUtil Singleton Object 반환
    * 2. 처리 개요 : ClientUtil Singleton Object 반환한다.
    * 3. 주의사항 
    *
    * @return   ClientUtil Singleton object
    **/
    public static ClientUtil getInstance(){
		return clientUtil;
    }
    
     /** 
    * 1. 기능 : 트랜잭션 에러 로그 추가
    * 2. 처리 개요 : TSSSNA001 추가 (세션이 끊겼을 경우, 가용한 WCA 세션이 없을 경우 , LU 가 없을 경우)
    * 3. 주의사항 
    *
    **/  
    public void insertErrorLog(String sAdapterGrpName, String sGroupCode, String sLUName, 
                                String sDataType, String sKey, String sErrCode)
    {
        try {
            // 로그 추가                 
            InsertErrorLog log = new  InsertErrorLog();
            // 우선 제거
            log.insertErrorLog(sAdapterGrpName, sGroupCode, sLUName, sDataType, sKey, sErrCode);
        } catch(Exception e) {
            if(adapter_logger.isError())  adapter_logger.error("에러 로그 추가시 에러 발생  : "  + e.toString());
        }
    }
    
   /** 
    * 1. 기능 : DATA TYPE으로 property 설정
    * 2. 처리 개요 : 
    * 3. 주의사항 
    *
    **/  
    public void setDataTypeProperty(String sDataType, Properties prop)
    {
        if (sDataType.substring(0,1).equals(DATA_TYPE_DFS_PREFIX))
            prop.setProperty(DATA_TYPE, DATA_TYPE_DFS);
        else if (sDataType.substring(0,1).equals(DATA_TYPE_NORMAL_PREFIX))
            prop.setProperty(DATA_TYPE, DATA_TYPE_NORMAL);
        else if (sDataType.substring(0,1).equals(DATA_TYPE_TIMEOUT_PREFIX))
            prop.setProperty(DATA_TYPE, DATA_TYPE_TIMEOUT);
        else 
            prop.setProperty(DATA_TYPE, sDataType);
    }
} 
