package com.eactive.eai.agent.flowController;

import com.eactive.eai.agent.command.Command;
import com.eactive.eai.agent.command.CommandException;
import com.eactive.eai.batch.flowController.FlowControllerManager;
import com.eactive.eai.common.util.Logger;

public class RemoveBatchTargetCommand extends Command
{
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

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

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

        if ( args == null || !(args instanceof String[]) ) {
            String msg = makeException("BECEAICAG001", null);
            logger.error(msg);
            throw new CommandException(msg);
        }

        try {
			String[] argArray = (String[]) args;
			String processCode = argArray[0];
			String organCode   = argArray[1];

			FlowControllerManager.getInstance().getTargets().remove(processCode + organCode);

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

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