package com.eactive.eai.agent.rule.phaseinfo;

import java.util.ArrayList;
import java.util.HashMap;

import com.eactive.eai.agent.command.Command;
import com.eactive.eai.agent.command.CommandException;
import com.eactive.eai.batch.rule.phaseinfo.PhaseInfoDAO;
import com.eactive.eai.batch.rule.phaseinfo.PhaseInfoManager;
import com.eactive.eai.batch.rule.phaseinfo.PhaseInfoVO;
import com.eactive.eai.common.dao.DAOFactory;
import com.eactive.eai.common.util.Logger;

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

	public UpdatePhaseInfoCommand(String name) {
        super(name);
    }

    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(this.name+" "+ msg);
            throw new CommandException(msg);
        }

        try {
            String strRuleCode = (String)args;
            logger.info(this.name +": (Agent Argument) RuleCode=["+strRuleCode+"]");

            PhaseInfoDAO dao = (PhaseInfoDAO)DAOFactory.newInstance().create(PhaseInfoDAO.class);
            HashMap<String, ArrayList<PhaseInfoVO>> map = dao.getAllPhaseInfos();
            ArrayList<PhaseInfoVO>                  al  = map.get(strRuleCode);
            if (al == null) {
                String errMsg = this.name + ":  error >> RuleCode [" + strRuleCode + "] not found in DBMS";
                logger.error(errMsg);
                return errMsg;
            }
            PhaseInfoManager.getInstance().setRuleCodeArray(strRuleCode, al);

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

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