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

import com.eactive.eai.adapter.wca.global.WCADefine;

import java.io.Serializable;

/** 
* 1. 기능 : LU 정보 Object 클래스
* 2. 처리 개요 : LU 정보를 Get/Set 한다.
* 3. 주의사항 
*
* @author  : 
* @version : v 1.0.0
* @see     : Serializable
* @since   :
*/
public class LUInfoDataEx implements Serializable
{  
   /**
    * 노드 정보 (SNA 어댑터가 구동하는 서버 이름)
    */
    private String      nodeName;       
   /**
    * EAI 어댑터 그룹 이름
    */
    private String      adpterGroupName;
    /**
    * LU 그룹 이름
    */
    private String      groupName;
   /**
    * PU 이름
    */
    private String      puName;
    /**
    * LU 이름
    */
    private String      luName;
   /**
    *  송수신 모드 : RR(‘1’)/Dedicated(’2’)/ RNR-Send(‘3’)/RNR-Recv(‘4’)
    */
    private String      tranMode;
   /**
    * LU 세션을 ACTIVE하기 위해 Connection Point로 사용하는 HOST측 Application을 의미하는 ID값
    */
    private String      applyID;
    
    /**
    * 백업  LU 여부 
    */
    private String      backupLUYN;   
    /**
     * 로그 기록 여부
     */
    private String      logYN;
    /**
     * 로그 레벨
     */
    private String      StringlogLevel; 
    /**
     * 로그 사이즈 (단위 : M)
     */
    private int         logSize;
    
     // 20080527 Start
     /**
     * 원격 LU 여부 
     */
     private String      rmtLUYN;
     // 20080527 Start     
     
    /** 
    * 1. 기능 :  Defualt Constructor
    * 2. 처리 개요 : 
    * 3. 주의사항 
    **/
    public LUInfoDataEx() {
    }
    
    /** 
    * 1. 기능 : Constructor
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sNodName 노드이름
    **/
    public LUInfoDataEx(String sNodName) {
        this.nodeName = sNodName;        
    }
    
   /** 
    * 1. 기능 : 노드 이름 설정 
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sNodName 노드이름
    **/  
    public void setNodeName(String sNodName) {
        if (sNodName == null) { sNodName = ""; }
        this.nodeName = sNodName.trim();   
    }
    
    /** 
    * 1. 기능 :  노드 이름 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    노드이름
    **/
    public String getNodeName() {
        return this.nodeName; 
    }
    
   /** 
    * 1. 기능 : 어댑터 그룹 이름 설정 
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sAdapterGroupName 어댑터 그룹 이름
    **/  
    public void setAdapterGroupName(String sAdapterGroupName) {
        if (sAdapterGroupName == null) { sAdapterGroupName = ""; }
        this.adpterGroupName = sAdapterGroupName.trim();   
    }
    
   /** 
    * 1. 기능 :  어댑터 그룹 이름 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    어댑터 그룹 이름
    **/
    public String getAdapterGroupName() {
        return this.adpterGroupName;   
    }
    
   /** 
    * 1. 기능 : LU 그룹 이름 설정 
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sGroupName LU 그룹 이름
    **/  
    public void setGroupName(String sGroupName) {
        if (sGroupName == null) { sGroupName = ""; }
        this.groupName = sGroupName.trim();   
    }
    
    /** 
    * 1. 기능 :  LU 그룹 이름 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    LU 그룹 이름
    **/
    public String getGroupName() {
        return this.groupName;   
    }
    
    /** 
    * 1. 기능 : PU 이름 설정 
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sPUName PU 이름
    **/  
    public void setPUName(String sPUName) {
        if (sPUName == null) { sPUName = ""; }
        this.puName = sPUName.trim();   
    }
    
    /** 
    * 1. 기능 :  PU 이름 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    PU 이름
    **/
    public String getPUName() {
        return this.puName; 
    }
    
   /** 
    * 1. 기능 : LU 이름 설정 
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sLUName LU 이름
    **/  
    public void setLUName(String sLUName) {
        if (sLUName == null) { sLUName = ""; }
        this.luName = sLUName.trim();   
    }
    
   /** 
    * 1. 기능 :  LU 이름 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    LU 이름
    **/
    public String getLUName() {
        return this.luName; 
    }
    
    /** 
    * 1. 기능 : 송수신 모드 설정 
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sTranMode 송수신 모드
    **/  
    public void setTranMode(String sTranMode) {
        if (sTranMode == null) { sTranMode = ""; }
        this.tranMode = sTranMode.trim();   
    }
    
   /** 
    * 1. 기능 :  송수신 모드 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    송수신 모드
    **/
    public String getTranMode() {
        return this.tranMode; 
    }
    
    /** 
    * 1. 기능 :  송신 가능 여부 반환
    * 2. 처리 개요 : RECV_ONLY 모드가 아닌경우 true 반환
    * 3. 주의사항 
    * 
    * @return    송신가능 여부
    **/
    public boolean isSendable() {
        if (!tranMode.equals(WCADefine.LU_TRAN_MODE_RECV_ONLY)) {
            return true;
        }
        else {
        	return false;
        }
    }
    
   /** 
    * 1. 기능 : Application ID 설정 
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sApplyID  Application ID
    **/  
    public void setApplyID(String sApplyID) {
        if (sApplyID == null) { sApplyID = ""; }
        this.applyID = sApplyID.trim();   
    }
    
   /** 
    * 1. 기능 :  Application ID 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    Application ID
    **/
    public String getApplyID() {
        return this.applyID; 
    }
    
   
    
   /** 
    * 1. 기능 : 로그 기록 여부 설정
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sLogYN  로그 기록 여부
    **/  
    public void setLogYN(String sLogYN) {
        if (sLogYN == null) { sLogYN = WCADefine.DEFAULT_WCA_LOG; }        
        logYN = sLogYN;
    }

    /** 
    * 1. 기능 :  로그 기록 여부 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    로그 기록 여부
    **/
    public String getLogYN() {
        return this.logYN;   
    }
    
    /** 
    * 1. 기능 : 로그 기록 여부 설정
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sLogYN  로그 기록 여부
    **/  
    public void setBackupLUYN(String sBackupLUYN) {
        if (sBackupLUYN == null) { sBackupLUYN = WCADefine.DEFAULT_BACKUP_LU_NO; }
        backupLUYN = sBackupLUYN;
    }

    /** 
    * 1. 기능 :  백업 LU 여부
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    백업 LU 여부
    **/
    public String getBackupLUYN() {
        return this.backupLUYN;   
    }
    
    // 20080527 Start
    /** 
     * 1. 기능 : 원격 LU 여부 설정
     * 2. 처리 개요 : 
     * 3. 주의사항 
     * 
     * @param sRmtLUYN  원격 LU 여부
     **/  
     public void setRmtLUYN(String sRmtLUYN) {
         if (sRmtLUYN == null) { sRmtLUYN = WCADefine.DEFAULT_REMOTE_LU_NO; }
         rmtLUYN = sRmtLUYN;
     }

     /** 
     * 1. 기능 :  원격 LU 여부
     * 2. 처리 개요 : 
     * 3. 주의사항 
     * 
     * @return    원격 LU 여부
     **/
     public String getRmtLUYN() {
         return this.rmtLUYN;   
     }
     // 20080527 End
    
   /** 
    * 1. 기능 : 로그 레벨 설정
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sLogLevel  로그 레벨
    **/  
    public void setLogLevel(String sLogLevel) {
        if (sLogLevel == null) { sLogLevel = WCADefine.DEFAULT_WCA_STRING_LOG_LEVEL; }
        StringlogLevel = sLogLevel;
    }

    /** 
    * 1. 기능 :  로그 레벨 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    로그 레벨
    **/
    public String getStringLogLevel() {
        return this.StringlogLevel;   
    }
    
   /** 
    * 1. 기능 : 로그 사이즈 설정
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @param sLogLevel  로그 레벨사이즈
    **/  
    public void setLogSize(String sLogSize) {
        try {
            if (sLogSize == null) { sLogSize = String.valueOf(WCADefine.DEFAULT_WCA_LOG_SIZE); }
            if (sLogSize!=null && sLogSize.equals("")) { sLogSize = String.valueOf(WCADefine.DEFAULT_WCA_LOG_SIZE); }
            this.logSize = Integer.parseInt(sLogSize.trim());
        }
        catch (Exception e) {
            this.logSize = WCADefine.DEFAULT_WCA_LOG_SIZE;
        }
    }
    
    /** 
    * 1. 기능 :  로그 사이즈 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    * 
    * @return    로그 사이즈
    **/
    public int getLogSize() {
        return this.logSize;   
    }
    
    /** 
    * 1. 기능 :  LU 정보 반환
    * 2. 처리 개요 : 
    * 3. 주의사항 
    *
    * @return LU 정보
    **/
    public String toString() {
        StringBuffer sb = new StringBuffer();
        sb.append("LUInfoData[ 노드 =").append(nodeName);
        sb.append(", 어댑터 그룹 이름 =").append(adpterGroupName);
        sb.append(", LU 그룹 이름 =").append(groupName);
        sb.append(", PU 이름 =").append(puName);
        sb.append(", LU 이름 =").append(luName);
        sb.append(", 송수신 모드 =").append(tranMode);
        sb.append(", Application ID =").append(applyID);
        sb.append(", 백업 LU 여부 =").append(backupLUYN);
        sb.append(", 로그 기록 여부 =").append(logYN);
        sb.append(", 로그 레벨 =").append(StringlogLevel);
        sb.append(", 로그 사이즈 =").append(logSize);
        sb.append(" ]");
        return sb.toString();   
    }
}
