183 lines
5.2 KiB
Plaintext
Executable File
183 lines
5.2 KiB
Plaintext
Executable File
package com.fp.general.helper;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
import java.util.Map;
|
|
import java.util.Properties;
|
|
import java.util.StringTokenizer;
|
|
|
|
|
|
|
|
|
|
//Referenced classes of package org.hibernate.util:
|
|
// StringHelper, ArrayHelper
|
|
|
|
public final class PropertiesHelper
|
|
{
|
|
|
|
private static final String PLACEHOLDER_START = "${";
|
|
|
|
private PropertiesHelper()
|
|
{
|
|
}
|
|
|
|
public static String getString(String propertyName, Properties properties, String defaultValue)
|
|
{
|
|
String value = extractPropertyValue(propertyName, properties);
|
|
return value != null ? value : defaultValue;
|
|
}
|
|
|
|
public static String extractPropertyValue(String propertyName, Properties properties)
|
|
{
|
|
String value = properties.getProperty(propertyName);
|
|
if(value == null)
|
|
{
|
|
return null;
|
|
}
|
|
value = value.trim();
|
|
if(StringHelper.isEmpty(value))
|
|
{
|
|
return null;
|
|
} else
|
|
{
|
|
return value;
|
|
}
|
|
}
|
|
|
|
public static boolean getBoolean(String propertyName, Properties properties)
|
|
{
|
|
return getBoolean(propertyName, properties, false);
|
|
}
|
|
|
|
public static boolean getBoolean(String propertyName, Properties properties, boolean defaultValue)
|
|
{
|
|
String value = extractPropertyValue(propertyName, properties);
|
|
return value != null ? Boolean.valueOf(value).booleanValue() : defaultValue;
|
|
}
|
|
|
|
public static int getInt(String propertyName, Properties properties, int defaultValue)
|
|
{
|
|
String value = extractPropertyValue(propertyName, properties);
|
|
return value != null ? Integer.parseInt(value) : defaultValue;
|
|
}
|
|
|
|
public static Integer getInteger(String propertyName, Properties properties)
|
|
{
|
|
String value = extractPropertyValue(propertyName, properties);
|
|
return value != null ? Integer.valueOf(value) : null;
|
|
}
|
|
|
|
public static Map toMap(String propertyName, String delim, Properties properties)
|
|
{
|
|
Map map = new HashMap();
|
|
String value = extractPropertyValue(propertyName, properties);
|
|
if(value != null)
|
|
{
|
|
for(StringTokenizer tokens = new StringTokenizer(value, delim); tokens.hasMoreTokens(); map.put(tokens.nextToken(), tokens.hasMoreElements() ? ((Object) (tokens.nextToken())) : "")) { }
|
|
}
|
|
return map;
|
|
}
|
|
|
|
public static String[] toStringArray(String propertyName, String delim, Properties properties)
|
|
{
|
|
return toStringArray(extractPropertyValue(propertyName, properties), delim);
|
|
}
|
|
|
|
public static String[] toStringArray(String stringForm, String delim)
|
|
{
|
|
if(stringForm != null)
|
|
{
|
|
return StringHelper.split(delim, stringForm);
|
|
} else
|
|
{
|
|
return ArrayHelper.EMPTY_STRING_ARRAY;
|
|
}
|
|
}
|
|
|
|
public static Properties maskOut(Properties props, String key)
|
|
{
|
|
Properties clone = (Properties)props.clone();
|
|
if(clone.get(key) != null)
|
|
{
|
|
clone.setProperty(key, "****");
|
|
}
|
|
return clone;
|
|
}
|
|
|
|
public static void resolvePlaceHolders(Properties properties)
|
|
{
|
|
Iterator itr = properties.entrySet().iterator();
|
|
do
|
|
{
|
|
if(!itr.hasNext())
|
|
{
|
|
break;
|
|
}
|
|
java.util.Map.Entry entry = (java.util.Map.Entry)itr.next();
|
|
Object value = entry.getValue();
|
|
if(value != null && String.class.isInstance(value))
|
|
{
|
|
String resolved = resolvePlaceHolder((String)value);
|
|
if(!value.equals(resolved))
|
|
{
|
|
if(resolved == null)
|
|
{
|
|
itr.remove();
|
|
} else
|
|
{
|
|
entry.setValue(resolved);
|
|
}
|
|
}
|
|
}
|
|
} while(true);
|
|
}
|
|
|
|
public static String resolvePlaceHolder(String property)
|
|
{
|
|
if(property.indexOf("${") < 0)
|
|
{
|
|
return property;
|
|
}
|
|
StringBuffer buff = new StringBuffer();
|
|
char chars[] = property.toCharArray();
|
|
for(int pos = 0; pos < chars.length; pos++)
|
|
{
|
|
if(chars[pos] == '$' && chars[pos + 1] == '{')
|
|
{
|
|
String systemPropertyName = "";
|
|
int x;
|
|
for(x = pos + 2; x < chars.length && chars[x] != '}'; x++)
|
|
{
|
|
systemPropertyName = (new StringBuilder()).append(systemPropertyName).append(chars[x]).toString();
|
|
if(x == chars.length - 1)
|
|
{
|
|
throw new IllegalArgumentException((new StringBuilder()).append("unmatched placeholder start [").append(property).append("]").toString());
|
|
}
|
|
}
|
|
|
|
String systemProperty = extractFromSystem(systemPropertyName);
|
|
buff.append(systemProperty != null ? systemProperty : "");
|
|
pos = x + 1;
|
|
if(pos >= chars.length)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
buff.append(chars[pos]);
|
|
}
|
|
|
|
String rtn = buff.toString();
|
|
return StringHelper.isEmpty(rtn) ? null : rtn;
|
|
}
|
|
|
|
|
|
private static String extractFromSystem(String systemPropertyName) {
|
|
try {
|
|
return System.getProperty( systemPropertyName );
|
|
}
|
|
catch( Throwable t ) {
|
|
return null;
|
|
}
|
|
}
|
|
}
|