📄 valueparser.java
字号:
/**
* @param key the desired parameter's key
* @param alternate The alternate Number
* @return a Number for the specified key or the specified
* alternate if no matching parameter is found
*/
public Number getNumber(String key, Number alternate)
{
Number n = getNumber(key);
return (n != null) ? n : alternate;
}
/**
* @param key the desired parameter's key
* @param alternate The alternate int value
* @return the int value for the specified key or the specified
* alternate value if no matching parameter is found
*/
public int getInt(String key, int alternate)
{
Number n = getNumber(key);
return (n != null) ? n.intValue() : alternate;
}
/**
* @param key the desired parameter's key
* @param alternate The alternate double value
* @return the double value for the specified key or the specified
* alternate value if no matching parameter is found
*/
public double getDouble(String key, double alternate)
{
Number n = getNumber(key);
return (n != null) ? n.doubleValue() : alternate;
}
/**
* @param key the desired parameter's key
* @param alternate The alternate Locale
* @return a Locale for the specified key or the specified
* alternate if no matching parameter is found
*/
public Locale getLocale(String key, Locale alternate)
{
Locale l = getLocale(key);
return (l != null) ? l : alternate;
}
/**
* @param key the key for the desired parameter
* @return an array of String objects containing all of the values
* associated with the given key, or <code>null</code>
* if the no values are associated with the given key
*/
public String[] getStrings(String key)
{
Object value = getSource().get(key);
if (value == null)
{
return null;
}
String[] strings = null;
if (value instanceof Collection)
{
Collection values = (Collection)value;
if (!values.isEmpty())
{
strings = new String[values.size()];
int index = 0;
for (Iterator i = values.iterator(); i.hasNext(); )
{
strings[index++] = String.valueOf(i.next());
}
}
}
else if (value.getClass().isArray())
{
strings = new String[Array.getLength(value)];
for (int i=0; i < strings.length; i++)
{
strings[i] = String.valueOf(Array.get(value, i));
}
}
else
{
strings = parseStringList(String.valueOf(value));
}
return strings;
}
/**
* @param key the key for the desired parameter
* @return an array of Boolean objects associated with the given key.
*/
public Boolean[] getBooleans(String key)
{
String[] strings = getStrings(key);
if (strings == null)
{
return null;
}
Boolean[] bools = new Boolean[strings.length];
for (int i=0; i<strings.length; i++)
{
if (strings[i] != null && strings[i].length() > 0)
{
bools[i] = parseBoolean(strings[i]);
}
}
return bools;
}
/**
* @param key the key for the desired parameter
* @return an array of Number objects associated with the given key,
* or <code>null</code> if Numbers are not associated with it.
*/
public Number[] getNumbers(String key)
{
String[] strings = getStrings(key);
if (strings == null)
{
return null;
}
Number[] nums = new Number[strings.length];
try
{
for (int i=0; i<nums.length; i++)
{
if (strings[i] != null && strings[i].length() > 0)
{
nums[i] = parseNumber(strings[i]);
}
}
}
catch (NumberFormatException nfe)
{
return null;
}
return nums;
}
/**
* @param key the key for the desired parameter
* @return an array of int values associated with the given key,
* or <code>null</code> if numbers are not associated with it.
*/
public int[] getInts(String key)
{
String[] strings = getStrings(key);
if (strings == null)
{
return null;
}
int[] ints = new int[strings.length];
try
{
for (int i=0; i<ints.length; i++)
{
if (strings[i] != null && strings[i].length() > 0)
{
ints[i] = parseNumber(strings[i]).intValue();
}
}
}
catch (NumberFormatException nfe)
{
return null;
}
return ints;
}
/**
* @param key the key for the desired parameter
* @return an array of double values associated with the given key,
* or <code>null</code> if numbers are not associated with it.
*/
public double[] getDoubles(String key)
{
String[] strings = getStrings(key);
if (strings == null)
{
return null;
}
double[] doubles = new double[strings.length];
try
{
for (int i=0; i<doubles.length; i++)
{
if (strings[i] != null && strings[i].length() > 0)
{
doubles[i] = parseNumber(strings[i]).doubleValue();
}
}
}
catch (NumberFormatException nfe)
{
return null;
}
return doubles;
}
/**
* @param key the key for the desired parameter
* @return an array of Locale objects associated with the given key,
* or <code>null</code> if Locales are not associated with it.
*/
public Locale[] getLocales(String key)
{
String[] strings = getStrings(key);
if (strings == null)
{
return null;
}
Locale[] locs = new Locale[strings.length];
for (int i=0; i<locs.length; i++)
{
if (strings[i] != null && strings[i].length() > 0)
{
locs[i] = parseLocale(strings[i]);
}
}
return locs;
}
// --------------------------- protected methods ------------------
/**
* Converts a parameter value into a {@link Number}
* This is used as the base for all numeric parsing methods. So,
* sub-classes can override to allow for customized number parsing.
* (e.g. to handle fractions, compound numbers, etc.)
*
* @param value the string to be parsed
* @return the value as a {@link Number}
*/
protected Number parseNumber(String value) throws NumberFormatException
{
if (value.indexOf('.') >= 0)
{
return new Double(value);
}
return new Long(value);
}
/**
* Converts a parameter value into a {@link Boolean}
* Sub-classes can override to allow for customized boolean parsing.
* (e.g. to handle "Yes/No" or "T/F")
*
* @param value the string to be parsed
* @return the value as a {@link Boolean}
*/
protected Boolean parseBoolean(String value)
{
return Boolean.valueOf(value);
}
/**
* Converts a single String value into an array of Strings by splitting
* it on the tool's set delimiter. The default delimiter is a comma.
*
* @since VelocityTools 1.3
*/
protected String[] parseStringList(String value)
{
if (value.indexOf(this.delimiter) < 0)
{
return new String[] { value };
}
return value.split(this.delimiter);
}
/**
* Converts a String value into a Locale.
*
* @since VelocityTools 1.3
*/
protected Locale parseLocale(String value)
{
if (value.indexOf("_") < 0)
{
return new Locale(value);
}
String[] params = value.split("_");
if (params.length == 2)
{
return new Locale(params[0], params[1]);
}
else if (params.length == 3)
{
return new Locale(params[0], params[1], params[2]);
}
else
{
// there's only 3 possible params, so this must be invalid
return null;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -