package net.kldp.logviewer.common.config;

import net.kldp.logviewer.common.cache.SimpleCache;
import net.kldp.logviewer.common.log.LogViews;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.log4j.Logger;


/**
 * <PRE>
 * 		Title : 환경정보 파일을 정의하고 관리 하는 클래스 이다.
 * 
 * 		Comment : 
 * 
 * 		History : 	
 * 				
 * </PRE>
 * 
 * @version  0.1, 2005. 7. 27.
 * @author 	Henry
 */
public class CommonConfig {
	/**
	 * Logger for this class
	 */
	private static final Logger logger = LogViews.getLogger(CommonConfig.class);

	/**
	 * 환경 파일이 있는 파일
	 */
	protected static String propName = "main.properties";
	
	/**
	 * 환경정보에서 인자의 이름에 해당하는 키를 넘겨준다.
	 * 
	 * @param name
	 * @return
	 */
	public static String getWentProp(String name) {
		String value = "";
		
		try {
		    SimpleCache _simpleCache = SimpleCache.getCache();
			
		    // SimpleCache에 정보가 있으면?
		    value = _simpleCache.getPropBox(name);
			
		    // SimpleCache에 정보가 없으면 Cache에 설정하고 관리한다.
			if(value.equals("")) {
				PropertiesConfiguration config = new PropertiesConfiguration();				
				config.load(CommonConfig.class.getResourceAsStream(propName));
				
				value = config.getString(name);
				
				// cache에 환경저보를 설정한다.
				_simpleCache.setPropBox(name, value);
			}
		} catch (ConfigurationException cf) {
			cf.printStackTrace();
			logger.error("CommonConfig에서 정보를 가져오는중에 에러", cf);
		}
		
		return value;
	}
	
	/**
	 * 환경정보의 리턴 타입을 boolean형으로 반환한다.
	 * @param name
	 * @return
	 */
	public static boolean getWentPropBool(String name) {
		return new Boolean(getWentProp(name)).booleanValue();		
	}
	
	/**
	 * 환경정보의 리턴 타입을 int형으로 반환한다.
	 * @param name
	 * @return
	 */
	public static int getWentPropInt(String name) {
		return new Integer(getWentProp(name)).intValue();		
	}
	
	
	
}
