package com.ext.eai.agent.stdmessage;

import java.util.Vector;

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;

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

	/** 
    * 1. 기능 : ReloadSTDMessageCommand 생성자 
    * 2. 처리 개요 : 
    * 3. 주의사항 
    *
    * @param 
    * @return 
    * @exception
    **/
    public ReloadSTDMessageListCommand() {
        super("ReloadSTDMessageListCommand");    
    }
    
    /** 
    * 1. 기능 :  STDMessageManager의 데이터를 DB로부터 Reload
    * 2. 처리 개요 : STDMessageManager의 reload메소드를 실행하여 DB로부터 Reload
    * 3. 주의사항 
    *
    * @param 
    * @return 
    * @exception    CommandException
    **/
    public Object execute() throws CommandException
    {
        Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
        if (logger.isInfo()) logger.info(this.name + " is executed");
        
        if( !(args instanceof Vector) ) {
            String rspErrorCode = "RECEAIMCM001";
            String msg = makeException(rspErrorCode, null);
            if (logger.isError()) logger.error(msg);
            throw new CommandException(msg);
        }
        
        try{
        	STDMessageManager manager = STDMessageManager.getInstance();
            
        	Vector messageVt = (Vector)args;
            String key = "";
            for(int i=0; i<messageVt.size(); i++) {
            	key = (String)messageVt.get(i);
	              
	            if(key != null ){
                    manager.reload(key);
                    if(logger.isWarn()) 
                    	logger.warn(this.name + "] "+key+" 에 대한 정보가 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";
    }

//	   public static void main(String args[]) throws Exception {
//	   test();
//}

// private static void test() throws Exception {
//        Command command = new ReloadSTDMessageListCommand();
//        command.setArgs("ALL");
//        AgentUtil.broadcast(command);
//        
//    }
} 
