package com.eactive.eai.agent.telegram;

import com.eactive.eai.agent.command.Command;
import com.eactive.eai.agent.command.CommandException;
import com.eactive.eai.batch.common.StringUtil;
import com.eactive.eai.batch.telegram.TelegramManager;
import com.eactive.eai.common.util.Logger;

/**
* 1. 기능 : Running중인 EAI Server의 메모리에 로딩된 전문을 삭제
* 2. 처리 개요 : TelegramManager를 이용하여 입력된 전문 Key에 해당하는 HashMap의 객체를 삭제
* 3. 주의사항
*
* @author
* @version  v 1.0.0
* @see  관련 기능을 참조
* @since
*/
public class RemoveTelegramCommand extends Command
{

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
    * 1. 기능 : AddFlowRuleCommand 생성자
    * 2. 처리 개요 :
    * 3. 주의사항
    *
    * @param
    * @return
    * @exception
    **/
    public RemoveTelegramCommand(String name) {
        super(name);
    }

    /**
    * 1. 기능 :  FlowRule 추가
    * 2. 처리 개요 :
    * 3. 주의사항
    *
    * @param
    * @return
    * @exception    CommandException
    **/
    public Object execute() throws CommandException
    {
        Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
        logger.info(this.name + " Agent 가 호출되었습니다.");

        TelegramManager telegramManager = TelegramManager.getInstance();

        try
        {
            // 입력값(parameter가 없으면 에러를 발생한다.
            if(args == null) throw new Exception("[RemoveFlowPhaseCommand] 입력 파라미터가 없습니다.");

            // 파라미터 확인
            if( !(args instanceof String) ) {
                String rspErrorCode = "BECEAICAG001";
                String msg = makeException(rspErrorCode, null);
                logger.error(msg);
                throw new CommandException(msg);
            }

            String telegramKey = StringUtil.nvlTrim((String)args);


            // TelegramManager를 이용하여 새로운 Rule을 등록한다.
            boolean result = telegramManager.removeTelegram(telegramKey);

            logger.debug("RemoveTelegram 이용한 전문 삭제 결과 : " + result);

			logger.info(this.name + " Agent 가 성공적으로 완료되었습니다.");
            return "success";

        } catch (Exception ex) {
            String msg = makeException("BECEAICAG002", ex);
            logger.error(msg, ex);
            throw new CommandException(msg);
        }
    }
}
