package com.eactive.eai.agent.property;

import com.eactive.eai.adapter.wca.util.RuntimeUtil;
import com.eactive.eai.agent.command.Command;
import com.eactive.eai.agent.command.CommandException;
import com.eactive.eai.common.property.PropManager;
import com.eactive.eai.common.util.Logger;

public class RemovePropertyCommand extends Command {

	private static final long serialVersionUID = 1L;

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

	public Object execute() throws CommandException {
		Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
		String SNA_PROP_GROUP_NAME = "SNAAdapter{DEFAULT}";

		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 {
			PropManager manager = PropManager.getInstance();
			String propertyName = null;

			if (args != null) {
				propertyName = (String) args;
				manager.removePropGroupVO(propertyName);

//                System.out.println("RemovePropertyCommand grpName ] "+propertyName);

				/**
				 * SNA Adapter notifyAllSoftlink
				 */
				if (SNA_PROP_GROUP_NAME.equals(propertyName)) {
					RuntimeUtil snaUtil = RuntimeUtil.getInstance();
					snaUtil.notifyAllSoftlink();
				}
			}
		} catch (Exception e) {
			String rspErrorCode = "RECEAIMCM002";
			String msg = makeException(rspErrorCode, e);
			if (logger.isError())
				logger.error(msg, e);
			throw new CommandException(msg);
		}
		return "success";

	}

}
