package com.izouma.awesomeadmin.util;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class PropertiesFileLoader {

    public static PropertiesFileLoader propertiesFileLoader = new PropertiesFileLoader();


    public PropertiesFileLoader() {

    }


    public static PropertiesFileLoader getInstance() {

        return propertiesFileLoader;
    }


    /**
     * 根据名称为.proerties的文件解析对应的属性值 PropertiesFileLoader.getProperties()<BR>
     * <P>
     * Author : majingyu
     * </P>
     * <P>
     * Date : 2013-5-27
     * </P>
     * 
     * @param fileName 文件名只能为.proerties后缀的，并且传值为classpath相对路径
     * @param propertyName 属性名
     * @return
     */
    public String getProperties(String fileName, String propertyName) {

        return getProperties(fileName, propertyName, "");
    }


    /**
     * 获取默认资源文件属性值
     * <P>
     * Author : lvzhi
     * </P>
     * <P>
     * Date : 2013-9-24
     * </P>
     * 
     * @param propertyName 属性名
     * @return
     */
    public static String getProperties(String propertyName) {

        return getInstance().getProperties("properties/outsidews.properties", propertyName);
    }


    /**
     * 获取默认资源文件属性值
     * <P>
     * Author : lvzhi
     * </P>
     * <P>
     * Date : 2013-9-24
     * </P>
     * 
     * @param propertyName 属性名
     * @param defaultValue 给定默认值（当获取不到内容时返回默认值）
     * @return
     */
    public static String getDefaultProperties(String propertyName, String defaultValue) {

        return getInstance().getProperties("properties/outsidews.properties", propertyName, defaultValue);
    }


    /**
     * 根据名称为.proerties的文件解析对应的属性值 PropertiesFileLoader.getProperties()<BR>
     * <P>
     * Author : lvzhi
     * </P>
     * <P>
     * Date : 2013-9-24
     * </P>
     * 
     * @param fileName 文件名只能为.proerties后缀的，并且传值为classpath相对路径
     * @param propertyName 属性名
     * @param defaultValue 给定默认值（当获取不到内容时返回默认值）
     * @return
     */
    public  String getProperties(String fileName, String propertyName, String defaultValue) {

        InputStream in = null;
        Properties p = new Properties();
        String value = defaultValue;
        try {
            in = getClass().getClassLoader().getResourceAsStream(fileName);
            p.load(in);
            value = p.getProperty(propertyName);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return value;
    }
}
