package com.eactive.eai.batch.code;

/**
* 1. 기능 : 메시지 코드 Rule 정보에 대한 Utility 기능을 제공하는 클래스
* 2. 처리 개요 : 코드에 대한 메시지를 얻거나 생성한다.
* *     -
* 3. 주의사항
*
* @author  :
* @version : v 1.0.0
* @see : 관련 기능을 참조
* @since   :
*/
public class CodeMessageHandler
{
    /**
    * 1. 기능 :  Default Constructor
    * 2. 처리 개요 : Default Constructor
    *     -
    * 3. 주의사항
    *
    **/
    private CodeMessageHandler() {
    }

    /**
    * 1. 기능 :  코드에 대한 메시지 텍스트를 찾아 반환하는 메서드
    * 2. 처리 개요 : 코드에 대한 메시지 텍스트를 찾아 반환한다.
    *     -
    * 3. 주의사항
    *
    * @param    code     메시지 코드
    * @return   메시지 텍스트
    **/
    public static String getMessage(String code) {
        return CodeMessageManager.getInstance().getMessage(code);
    }

    /**
    * 1. 기능 :  코드에 대한 메시지 텍스트를 찾아 반환하는 메서드
    * 2. 처리 개요 : 코드에 대한 메시지 텍스트를 찾아 반환한다.
    *     -
    * 3. 주의사항
    *
    * @param    code     메시지 코드
    * @param    args     메시지 텍스트를 만들기 위한 인수 리스트
    * @return   메시지 텍스트
    **/
    public static String getMessage(String code, String[] args) {
        String msg = CodeMessageManager.getInstance().getMessage(code);
        return makeMessage(msg,args);
    }

    /**
    * 1. 기능 :
    * 2. 처리 개요 :
    *     -
    * 3. 주의사항
    *
    * @param
    * @return
    * @exception
    **/
    private static String makeMessage(String msg, String[] args) {
        String keyword = null, head = null, tail = null;
        int idx = -1;
        for(int i=0;i<args.length;i++) {
            keyword = "{"+(i+1)+"}";
            idx = msg.indexOf(keyword);
            if(idx == -1) {
                continue;
            }

            head = msg.substring(0,idx);
            tail = msg.substring(idx+keyword.length());
            msg = head+args[i]+tail;
        }

        return msg;
    }
}
