Package org.nutz.ioc.impl

Source Code of org.nutz.ioc.impl.PropertiesProxy

package org.nutz.ioc.impl;

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

import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
import org.nutz.lang.util.MultiLineProperties;
import org.nutz.resource.NutResource;
import org.nutz.resource.Scans;

/**
* 代理Properties文件,以便直接在Ioc配置文件中使用
*
* @author wendal(wendal1985@gmail.com)
* @author zozoh(zozohtnt@gmail.com)
*
* @since 1.b.37
*/
public class PropertiesProxy {

  // 是否为UTF8格式的Properties文件
  private boolean utf8;

  private MultiLineProperties mp;

  public PropertiesProxy() {
    this(true);
  }

  public PropertiesProxy(boolean utf8) {
    this.utf8 = utf8;
  }

  /**
   * 加载指定文件/文件夹的Properties文件,合并成一个Properties对象
   * <p>
   * <b style=color:red>如果有重复的key,请务必注意加载的顺序!!<b/>
   *
   * @param paths
   *            需要加载的Properties文件路径
   */
  public void setPaths(String... paths) {
    mp = new MultiLineProperties();
    List<NutResource> list = Scans.me().loadResource("^.+[.]properties$", paths);
    try {
      if (utf8)
        for (NutResource nr : list)
          mp.load(nr.getReader());
      else {
        Properties p = new Properties();
        for (NutResource nr : list) {
          p.load(nr.getInputStream());
        }
        mp.putAll(p);
      }
    }
    catch (IOException e) {
      throw Lang.wrapThrow(e);
    }
  }

  public void put(String key, String value) {
    mp.put(key, value);
  }

  public String get(String key) {
    return mp.get(key);
  }

  public String get(String key, String defaultValue) {
    return Strings.sNull(mp.get(key), defaultValue);
  }

  public int getInt(String key) {
    return getInt(key, -1);
  }

  public int getInt(String key, int defaultValue) {
    try {
      return Integer.parseInt(key);
    }
    catch (NumberFormatException e) {
      return defaultValue;
    }
  }

  public String getTrim(String key) {
    return Strings.trim(get(key));
  }

  public String getTrim(String key, String defaultValue) {
    return Strings.trim(get(key, defaultValue));
  }
}
TOP

Related Classes of org.nutz.ioc.impl.PropertiesProxy

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.