package cn.org.rapid_framework.generator.util; 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.List; import java.util.Properties; import java.util.Set; import java.util.Map.Entry; import cn.org.rapid_framework.generator.GeneratorProperties; public class PropertiesHelper { boolean isSearchSystemProperty = false; Properties p; public PropertiesHelper(Properties p) { this.p = p; } public PropertiesHelper(Properties p,boolean isSearchSystemProperty) { this.p = 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 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) { p.setProperty(key, value); return this; } public void clear() { p.clear(); } public Set<Entry<Object, Object>> entrySet() { return p.entrySet(); } public Enumeration<?> propertyNames() { return p.propertyNames(); } public static String[] loadAllPropertiesFromClassLoader(Properties properties,String... resourceNames) throws IOException { List successLoadProperties = new ArrayList(); for(String resourceName : resourceNames) { Enumeration urls = GeneratorProperties.class.getClassLoader().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]); } }