package com.eactive.eai.custom.stderrorcode;

import com.eactive.eai.agent.AgentUtil;
import com.eactive.eai.agent.command.Command;
import com.eactive.eai.agent.command.CommandException;
import com.eactive.eai.common.util.Logger;

/**
 * 1. 기능 : Running중인 EAI Server의 메모리에 로딩된 StdErrorCodeManager의 정보 변경 
 * 2. 처리 개요 : 메모리 전체 정보를 manager에서 reload 
 * 3. 주의사항
 *
 * @author
 * @version v 1.0.0
 * @see 관련 기능을 참조
 * @since
 * 
 */
public class ReloadStdErrorCodeCommand extends Command {
	/**
	 * 1. 기능 : ReloadAdapterGroupCommand 생성자 
	 * 2. 처리 개요 : 
	 * 3. 주의사항
	 *
	 **/
	public ReloadStdErrorCodeCommand() {
		super("ReloadStdErrorCodeCommand");
	}

	/**
	 * 1. 기능 : StdErrorCodeManager에 errorCode를 reload 
	 * 2. 처리 개요 : 
	 * 3. 주의사항 :
	 * 
	 * @exception CommandException Argument Type이 다르거나 Command 수행중 Excpetion이 발생할 경우
	 **/
	public Object execute() throws CommandException {
		Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
		if (logger.isInfo())
			logger.info(this.name + " is executed");

		StdErrorCodeManager manager = StdErrorCodeManager.getInstance();
		try {
			manager.reload();
		} catch (Exception e) {
			String rspErrorCode = "RECEAIMCM002";
			String msg = makeException(rspErrorCode, e);
			if (logger.isError())
				logger.error(msg, e);
			throw new CommandException(msg);
		}

		if (logger.isInfo())
			logger.info(this.name + " is finished");
		return "success";
	}

	public static void main(String[] args) throws Exception {
		Command command = new ReloadChannelErrorCodeCommand();
		AgentUtil.broadcast(command);
	}
}