package com.eactive.eai.rms.client.context;

import java.util.Properties;

import com.eactive.eai.common.server.Keys;
import com.eactive.eai.rms.client.dao.RmsPropertiesDAO;

public interface RmsProperties {

	/** The Constant LOCAL_MBEAN_SERVER_ID. */
	public static final String LOCAL_MBEAN_SERVER_ID = "LOCAL_MBEAN_SERVER_ID";

	/** The Constant LOCAL_MBEAN_SERVER_PASSWORD. */
	public static final String LOCAL_MBEAN_SERVER_PASSWORD = "LOCAL_MBEAN_SERVER_PASSWORD";

	/** The Constant LOCAL_MBEAN_SERVER_PORT. */
	public static final String LOCAL_MBEAN_SERVER_PORT = "LOCAL_MBEAN_SERVER_PORT";

	/** The Constant LOCAL_MBEAN_SERVER_PORT. */
	public static final String LOCAL_MBEAN_SERVER_IP = "LOCAL_MBEAN_SERVER_IP";

	/** The Constant LOCAL_HOST_NAME. */
	public static final String LOCAL_HOST_NAME = "LOCAL_HOST_NAME";

	/** The Constant LOCAL_HOST_IP. */
	public static final String LOCAL_HOST_IP = "LOCAL_HOST_IP";

	/** The Constant SUBJECT_LOGIN. */
	public static final String SUBJECT_LOGIN = "SUBJECT_LOGIN";

	/** The Constant JMS_DISK_SPACE_PATH. */
	public static final String JMS_DISK_SPACE_PATH = "JMS_DISK_SPACE_PATH";

	/** The Constant RMS_SERVER_IP_KEY. RMS UDP SERVER의 접속 아이피 */
	public static final String RMS_SERVER_IP_KEY = "SERVER_IP";

	/** The Constant RMS_SERVER_PORT_KEY. RMS UDP SERVER의 접속 포트 */
	public static final String RMS_SERVER_PORT_KEY = "SERVER_PORT";

	/** The Constant EAI_SERVER_INSTANCE_NAME. */
	public static final String EAI_SERVER_INSTANCE_NAME = Keys.SERVER_KEY;

	/** The Constant DISK_SPACE_PATH. */
	public static final String DISK_SPACE_PATH = "DISK_SPACE_PATH";

	/** The Constant SMS_AGENT_MAXLINE. */
	public static final String SMS_AGENT_MAXLINE = "SMS_AGENT_MAXLINE";

	/** The Constant DEFAULT_LOG_PATH. */
	public static final String DEFAULT_LOG_PATH = "DEFAULT_LOG_PATH";

	/** The Constant SMS_LOG_FILE. */
	public static final String SMS_LOG_FILE = "SMS_LOG_FILE";

	public static final String SMS_LOG_FILE_ENCODE = "SMS_LOG_FILE_ENCODE";

	/** The Constant ITSM_DISK_CMD. */
	public static final String ITSM_DISK_CMD = "ITSM_DISK_CMD";

	/** The Constant ITSM_NET_CMD. */
	public static final String ITSM_NET_CMD = "ITSM_NET_CMD";

	/**
	 * Inits the.
	 * 
	 * @throws Exception the exception
	 */
	public abstract void init() throws Exception;

	/**
	 * Gets the properties.
	 * 
	 * @return the properties
	 */
	public abstract Properties getProperties();

	/**
	 * Refresh.
	 * 
	 * @throws Exception the exception
	 */
	public abstract void refresh() throws Exception;

	/**
	 * Sets the properties.
	 * 
	 * @param properties the new properties
	 */
	public abstract void setProperties(Properties properties);

	/**
	 * Sets the rts context dao.
	 * 
	 * @param rmsPropertiesDAO the new rts context dao
	 */
	public abstract void setRmsPropertiesDao(RmsPropertiesDAO rmsPropertiesDAO);

	/**
	 * Gets the string property.
	 * 
	 * @param propertyName the property name
	 * 
	 * @return String
	 */
	public abstract String getStringProperty(String propertyName);

	/**
	 * Gets the string property.
	 * 
	 * @param propertyName  the property name
	 * @param defaultString the default string
	 * 
	 * @return the string property
	 */
	public abstract String getStringProperty(String propertyName, String defaultString);

	/**
	 * Gets the int property.
	 * 
	 * @param propertyName the property name
	 * 
	 * @return int
	 */
	public abstract int getIntProperty(String propertyName);

	/**
	 * Gets the int property.
	 * 
	 * @param propertyName the property name
	 * @param defaultInt   the default int
	 * 
	 * @return the int property
	 */
	public abstract int getIntProperty(String propertyName, int defaultInt);

	/**
	 * Gets the long property.
	 * 
	 * @param propertyName the property name
	 * 
	 * @return int
	 */
	public abstract long getLongProperty(String propertyName);

	/**
	 * Gets the long property.
	 * 
	 * @param propertyName the property name
	 * @param defaultLong  the default long
	 * 
	 * @return the long property
	 */
	public abstract long getLongProperty(String propertyName, long defaultLong);

	/**
	 * Gets the boolean property.
	 * 
	 * @param propertyName the property name
	 * 
	 * @return boolean
	 */
	public abstract boolean getBooleanProperty(String propertyName);

	/**
	 * Gets the boolean property.
	 * 
	 * @param propertyName   the property name
	 * @param defaultBoolean the default boolean
	 * 
	 * @return the boolean property
	 */
	public abstract boolean getBooleanProperty(String propertyName, boolean defaultBoolean);
}
