package com.eactive.eai.adapter.wca.command; 

import com.eactive.eai.adapter.wca.cfg.LUInfoDataEx;
import com.eactive.eai.adapter.wca.cfg.SNAAdapterManager;
import com.eactive.eai.adapter.wca.global.WCADefine;
import com.eactive.eai.agent.command.Command;
import com.eactive.eai.agent.command.CommandException;
import com.eactive.eai.common.util.Logger;

/** 
* 1. 기능 : EAI 서버에 실시간 LU 정보 수정
* 2. 처리 개요 : 
*       - SNAAdapterManager 클래스에 loadLUInfos, setLUGroupTranModes 함수 실행
*       - softlink에  notify 해준다.
*       - LU별 로그 실시간 적용할 경우, softlink에  로그 정보를 notify 해준다.
* 3. 주의사항 
*
* @author  : 
* @version : 
* @see : 
* @since   :
*/

public class UpdateLUInfoEx extends Command
{
     /** 
    * 1. 기능 :  Default Constructor
    * 2. 처리 개요 : 
    * 3. 주의사항 
    **/
    public UpdateLUInfoEx() {
        super("UpdateLUInfo");   
    }
    
     /** 
    * 1. 기능 :  LU 정보 수정
    * 2. 처리 개요 : 
    * 3. 주의사항
    * 
    * @exception CommandException	command  실행 시 발생하는 예외 상황
    **/
    public Object execute() throws CommandException
    {   
        Logger adapter_logger = Logger.getLogger(WCADefine.ADAPTER_LOGGER_NAME);
//        Logger trc_logger = Logger.getLogger(Logger.LOGGER_ADAPTER);
        
        // 20080527 Start
        /*
        if(adapter_logger.isInfo())  adapter_logger.info(this.name + " is executed");        
        */
        if(adapter_logger.isWarn())  adapter_logger.warn(this.name + " is executed");
        // 20080527 End
        
        if( !(args instanceof LUInfoDataEx) ) {
            String rspErrorCode = "RECEAIMCM001";
            String msg = makeException(rspErrorCode, null);
            if(adapter_logger.isError())  adapter_logger.error(msg);
            throw new CommandException(msg);
        }
        
        SNAAdapterManager manager = SNAAdapterManager.getInstance();
//        LUInfoDataEx lu_data = (LUInfoDataEx)args;
        
        // 20080827 Start
        /*
        if(!MyUtil.isLocalHostName(lu_data.getNodeName()))
        {
            if(trc_logger.isInfo())  trc_logger.info("UpdateLUInfoCommand]적용 Node명이 틀립니다. " +lu_data.getNodeName());
            return;
        }
        */
        // 20080827 End
        
        try {           
            // 1. 메모리 update            
            manager.loadLUInfos();            
            
            /*
            if(adapter_logger.isWarn())  adapter_logger.warn(this.name + " Skip Update Commnad");
            
            // 2. softlink notify      
            RuntimeUtil.getInstance().notifyAllSoftlink();
            */
        }
        catch(Exception e) {
            String rspErrorCode = "RECEAIMCM002";
            String msg = makeException(rspErrorCode, e);
            if(adapter_logger.isError())  adapter_logger.error(msg, e);
//            e.printStackTrace();
            throw new CommandException(msg);
        }
        return "success";
    }
  
}

