Package cn.org.rapid_framework.generator.util

Source Code of cn.org.rapid_framework.generator.util.PropertiesHelper

package cn.org.rapid_framework.generator.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.InvalidPropertiesFormatException;
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.Map.Entry;

import cn.org.rapid_framework.generator.util.PropertyPlaceholderHelper.PropertyPlaceholderConfigurerResolver;

public class PropertiesHelper {
  boolean isSearchSystemProperty = false;
  Properties p;

  public PropertiesHelper(Properties p) {
    this.p = p;
  }

  public PropertiesHelper(Properties p,boolean isSearchSystemProperty) {
    this.p = resolveProperties(p);
    this.isSearchSystemProperty = isSearchSystemProperty;
  }
 
  public Properties getProperties() {
    return p;
  }
 
  public String getProperty(String key, String defaultValue) {
    String value = null;
    if(isSearchSystemProperty) {
      value = System.getProperty(key);
    }
    if(value == null || "".equals(value.trim())) {
      value = getProperties().getProperty(key);
    }
    return value == null || "".equals(value.trim()) ? defaultValue : value;
  }
 
  public String getProperty(String key) {
    return getProperty(key,null);
  }
 
  public String getRequiredProperty(String key) {
    String value = getProperty(key);
    if(value == null || "".equals(value.trim())) {
      throw new IllegalStateException("required property is blank by key="+key);
    }
    return value;
  }
 
  public Integer getInt(String key) {
    if(getProperty(key) == null) {
      return null;
    }
    return Integer.parseInt(getRequiredProperty(key));
  }
 
  public int getInt(String key,int defaultValue) {
    if(getProperty(key) == null) {
      return defaultValue;
    }
    return Integer.parseInt(getRequiredProperty(key));
  }
 
  public int getRequiredInt(String key) {
    return Integer.parseInt(getRequiredProperty(key));
  }
 
  public String[] getStringArray(String key) {
    String v = getProperty(key);
    if(v == null) {
      return new String[0];
    }else {
        return StringHelper.tokenizeToStringArray(v, ", \t\n\r\f");
    }
  }

  public int[] getIntArray(String key) {
    String[] array = getStringArray(key);
    int[] result = new int[array.length];
    for(int i = 0; i < array.length; i++) {
      result[i] = Integer.parseInt(array[i]);
    }
    return result;
  }
 
  public Boolean getBoolean(String key) {
    if(getProperty(key) == null) {
      return null;
    }
    return Boolean.parseBoolean(getRequiredProperty(key));
  }
 
  public boolean getBoolean(String key,boolean defaultValue) {
    if(getProperty(key) == null) {
      return defaultValue;
    }
    return Boolean.parseBoolean(getRequiredProperty(key));
  }
 
  public boolean getRequiredBoolean(String key) {
    return Boolean.parseBoolean(getRequiredProperty(key));
  }
 
  public String getNullIfBlank(String key) {
    String value = getProperty(key);
    if(value == null || "".equals(value.trim())) {
      return null;
    }
    return value;
  }
 
  public PropertiesHelper setProperty(String key,String value) {
    value = resolveProperty(value,getProperties());
    key = resolveProperty(key,getProperties());
    p.setProperty(key, value);
    return this;
  }
 
  public PropertiesHelper putAll(Properties props) {
    p.putAll(resolveProperties(props));
    return this;
  }

  public void clear() {
    p.clear();
  }

  public Set<Entry<Object, Object>> entrySet() {
    return p.entrySet();
  }

  public Enumeration<?> propertyNames() {
    return p.propertyNames();
  }
 
  public static Properties load(String...files) throws InvalidPropertiesFormatException, IOException {
    Properties properties = new Properties();
    for(String f : files) {
      File file = FileHelper.getFile(f);
      InputStream input = new FileInputStream(file);
      try {
        if(file.getPath().endsWith(".xml")){
          properties.loadFromXML(input);
        }else {
          properties.load(input);
        }
        properties.putAll(properties);
      }finally {
        input.close();
      }
    }
    return properties;
  }
 
  public static String[] loadAllPropertiesFromClassLoader(Properties properties,String... resourceNames) throws IOException {
    List successLoadProperties = new ArrayList();
    for(String resourceName : resourceNames) {
      Enumeration urls = ClassHelper.getDefaultClassLoader().getResources(resourceName);
      while (urls.hasMoreElements()) {
        URL url = (URL) urls.nextElement();
        successLoadProperties.add(url.getFile());
        InputStream input = null;
        try {
          URLConnection con = url.openConnection();
          con.setUseCaches(false);
          input = con.getInputStream();
          if(resourceName.endsWith(".xml")){
            properties.loadFromXML(input);
          }else {
            properties.load(input);
          }
        }
        finally {
          if (input != null) {
            input.close();
          }
        }
      }
    }
    return (String[])successLoadProperties.toArray(new String[0]);
  }
 
    private static Properties resolveProperties(Properties props) {
    Properties result = new Properties();
    for(Object s : props.keySet()) {
      String sourceKey = s.toString();
      String key  = resolveProperty(sourceKey,props);
      String value = resolveProperty(props.getProperty(sourceKey),props);
      result.setProperty(key, value);
    }
    return result;
  }
   
  private static String resolveProperty(String v,Properties props) {
    PropertyPlaceholderConfigurerResolver propertyPlaceholderConfigurerResolver = new PropertyPlaceholderConfigurerResolver(props);
    return propertyPlaceholderHelper.replacePlaceholders(v, propertyPlaceholderConfigurerResolver);
  }
  static PropertyPlaceholderHelper propertyPlaceholderHelper = new PropertyPlaceholderHelper("${", "}", ":", false);
}
TOP

Related Classes of cn.org.rapid_framework.generator.util.PropertiesHelper

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.