package com.eactive.eai.agent.b2bservice;

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

public class ReloadB2BServiceCommand extends Command {

	private static final long serialVersionUID = 1L;
	private static final Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);

	public ReloadB2BServiceCommand() {
		super("ReloadB2BServiceCommand");
	}

	public Object execute() throws CommandException {

		if (logger.isInfo())
			logger.info(this.name + " is executed");

		if (!(args instanceof String)) {
			String rspErrorCode = "RECEAIMCM001";
			String msg = makeException(rspErrorCode, null);
			if (logger.isError())
				logger.error(msg);
			throw new CommandException(msg);
		}

		try {
			B2BServiceManager manager = B2BServiceManager.getInstance();
			String keyName = (String) args;

			if (keyName != null) {
				if ("ALL".equals(keyName)) {
					manager.reload();
					if (logger.isWarn())
						logger.warn(this.name + "] all rule Reload.");
				} else {
					manager.reload(keyName);
					if (logger.isWarn())
						logger.warn(this.name + "] " + keyName + " Reload.");
				}
			}

		} catch (Exception e) {
			String rspErrorCode = "RECEAIMCM002";
			String msg = makeException(rspErrorCode, e);
			if (logger.isError())
				logger.error(msg, e);
			throw new CommandException(msg);
		}
		return "success";

	}

}
