package com.ext.eai.agent.stdmessage; 

import com.eactive.eai.agent.command.Command;
import com.eactive.eai.agent.command.CommandException;
import com.eactive.eai.common.stdmessage.STDMessageManager;
import com.eactive.eai.common.util.Logger;

/** 
* 1. 기능 : Running중인 EAI Server의 메모리에 로딩된 STDMessageManager의 정보 변경
* 2. 처리 개요 : STDMessageManager에서 해당 STDMessage를 제거
* 3. 주의사항 
*
* @author  
* @version  v 1.0.0
* @see 관련 기능을 참조
* @since   
*/
public class RemoveSTDMessageCommand extends Command
{ 
    
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/** 
    * 1. 기능 : RemoveSTDMessageCommand 생성자 
    * 2. 처리 개요 : 
    * 3. 주의사항 
    *
    **/
    public RemoveSTDMessageCommand() {
        super("RemoveSTDMessageCommand");    
    }
    
    /** 
    * 1. 기능 :  STDMessageManager에서 해당 STDMessage를 제거
    * 2. 처리 개요 : STDMessageManager에서 해당 STDMessage를 제거
    * 3. 주의사항 
    *
    * @exception    CommandException	Argument Type이 다르거나 Command 수행중 Excpetion이 발생할 경우
    **/
    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{
            
            String             bwkSvcKey   = null;
            STDMessageManager   manager     = STDMessageManager.getInstance();
        
            bwkSvcKey      = (String) args;
            if(bwkSvcKey != null){
                manager.removeSTDMessage(bwkSvcKey);
            }
               
        }catch (Exception e){
            String rspErrorCode = "RECEAIMCM002";
            String msg = makeException(rspErrorCode, e);
            if (logger.isError()) logger.error(msg, e);            
            throw new CommandException(msg);
        }
        return "success";
    }
    

} 
