package com.eactive.eai.agent.transformer;

import com.eactive.eai.agent.command.Command;
import com.eactive.eai.agent.command.CommandException;
import com.eactive.eai.common.util.Logger;
import com.eactive.eai.transformer.layout.LayoutManager;

public class RemoveLayoutCommand extends Command {
	private static final long serialVersionUID = 1L;

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

	public Object execute() throws CommandException {
		Logger logger = Logger.getLogger(Logger.LOGGER_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 {
			LayoutManager manager = LayoutManager.getManager();

			String layoutName = (String) args;

			if (layoutName != null && layoutName.trim().length() > 0) {
				manager.remove(layoutName);
				if (logger.isWarn())
					logger.warn("ReloadLayoutCommand ] " + layoutName + " 에 대한 Layout 정보가 메모리에서 삭제되었습니다.");
			} else {
				if (logger.isWarn())
					logger.warn("ReloadLayoutCommand ] Layout 명을 확인하세요 [" + layoutName + "]");
			}
		} catch (Exception e) {
			String rspErrorCode = "RECEAIMCM002";
			String msg = makeException(rspErrorCode, e);
			if (logger.isError())
				logger.error(msg, e);
			throw new CommandException(msg);
		}
		return "success";

	}

//    public static void main(String[] args)throws Exception{
//        
//        LayoutManager manager = LayoutManager.getManager();
//        
//        Command command = new RemoveLayoutCommand();
//        command.setArgs("");
//        AgentUtil.broadcast(command);
//        
//    }
}
