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

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.nodeinfo.NodeInfoDAO;
import com.eactive.eai.batch.rule.nodeinfo.NodeInfoManager;
import com.eactive.eai.batch.rule.nodeinfo.NodeInfoVO;
import com.eactive.eai.common.dao.DAOFactory;
import com.eactive.eai.common.util.Logger;

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

	public UpdateNodeInfoCommand(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+"]");

            NodeInfoDAO dao = (NodeInfoDAO)DAOFactory.newInstance().create(NodeInfoDAO.class);
            HashMap<String, ArrayList<NodeInfoVO>> map = dao.getAllNodeInfo();
            ArrayList<NodeInfoVO> al  =            map.get(strRuleCode);
            if (al == null) {
                String errMsg = this.name + ":  error >> RuleCode [" + strRuleCode + "] not found in DBMS";
                logger.error(errMsg);
                return errMsg;
            }
            NodeInfoManager.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);
        }
    }
}
