?? abstractconfiguration.java
字號:
*
* QUESTION: getProperty or getPropertyDirect
*/
Object value = getProperty((String) key);
if (value instanceof String)
{
c.addPropertyDirect(newKey, interpolate((String) value));
}
else
{
c.addProperty(newKey, value);
}
}
}
if (validSubset)
{
return c;
}
else
{
return null;
}
}
/**
* Check if the configuration is empty
*
* @return <code>true</code> if Configuration is empty,
* <code>false</code> otherwise.
*/
public abstract boolean isEmpty();
/**
* check if the configuration contains the key
*
* @param key the configuration key
*
* @return <code>true</code> if Configuration contain given key,
* <code>false</code> otherwise.
*/
public abstract boolean containsKey(String key);
/**
* Set a property, this will replace any previously
* set values. Set values is implicitly a call
* to clearProperty(key), addProperty(key,value).
*
* @param key the configuration key
* @param value the property value
*/
public void setProperty(String key, Object value)
{
clearProperty(key);
addProperty(key, value); // QUESTION: or addPropertyDirect?
}
/**
* Clear a property in the configuration.
*
* @param key the key to remove along with corresponding value.
*/
public abstract void clearProperty(String key);
/**
* Get the list of the keys contained in the configuration
* repository.
*
* @return An Iterator.
*/
public abstract Iterator getKeys();
/**
* Get the list of the keys contained in the configuration
* repository that match the specified prefix.
*
* @param prefix The prefix to test against.
*
* @return An Iterator of keys that match the prefix.
*/
public Iterator getKeys(String prefix)
{
Iterator keys = getKeys();
ArrayList matchingKeys = new ArrayList();
while (keys.hasNext())
{
Object key = keys.next();
if (key instanceof String && ((String) key).startsWith(prefix))
{
matchingKeys.add(key);
}
}
return matchingKeys.iterator();
}
/**
* Get a list of properties associated with the given
* configuration key.
*
* @param key The configuration key.
*
* @return The associated properties if key is found.
*
* @throws ClassCastException is thrown if the key maps to an
* object that is not a String/Vector.
* @throws IllegalArgumentException if one of the tokens is
* malformed (does not contain an equals sign).
*
* @see #getProperties(String, Properties)
*/
public Properties getProperties(String key)
{
return getProperties(key, null);
}
/**
* Get a list of properties associated with the given
* configuration key.
*
* @param key The configuration key.
* @param defaults Any default values for the returned
* <code>Properties</code> object. Ignored if <code>null</code>.
*
* @return The associated properties if key is found.
*
* @throws ClassCastException is thrown if the key maps to an
* object that is not a String/Vector of Strings.
* @throws IllegalArgumentException if one of the tokens is
* malformed (does not contain an equals sign).
*/
public Properties getProperties(String key, Properties defaults)
{
/*
* Grab an array of the tokens for this key.
*/
String[] tokens = getStringArray(key);
/*
* Each token is of the form 'key=value'.
*/
Properties props =
(defaults == null ? new Properties() : new Properties(defaults));
for (int i = 0; i < tokens.length; i++)
{
String token = tokens[i];
int equalSign = token.indexOf('=');
if (equalSign > 0)
{
String pkey = token.substring(0, equalSign).trim();
String pvalue = token.substring(equalSign + 1).trim();
props.put(pkey, pvalue);
}
else if (tokens.length == 1 && "".equals(token))
{
// Semantically equivalent to an empty Properties
// object.
break;
}
else
{
throw new IllegalArgumentException(
'\'' + token + "' does not contain an equals sign");
}
}
return props;
}
/**
* Gets a property from the configuration.
*
* @param key property to retrieve
* @return value as object. Will return user value if exists,
* if not then default value if exists, otherwise null
*/
public Object getProperty(String key)
{
// first, try to get from the 'user value' store
Object o = getPropertyDirect(key);
if (o == null)
{
// if there isn't a value there, get it from the defaults if we have
// them
if (defaults != null)
{
o = defaults.getProperty(key);
}
}
//
// We must never give a Container Object out. So if the
// Return Value is a Container, we fix it up to be a
// Vector
//
if (o instanceof Container)
{
o = ((Container) o).asVector();
}
return o;
}
/**
* Get a boolean associated with the given configuration key.
*
* @param key The configuration key.
*
* @return The associated boolean.
*
* @throws NoSuchElementException is thrown if the key doesn't
* map to an existing object.
* @throws ClassCastException is thrown if the key maps to an
* object that is not a Boolean.
*/
public boolean getBoolean(String key)
{
Boolean b = getBoolean(key, (Boolean) null);
if (b != null)
{
return b.booleanValue();
}
else
{
throw new NoSuchElementException(
'\'' + key + "' doesn't map to an existing object");
}
}
/**
* Get a boolean associated with the given configuration key.
*
* @param key The configuration key.
* @param defaultValue The default value.
*
* @return The associated boolean.
*
* @throws ClassCastException is thrown if the key maps to an
* object that is not a Boolean.
*/
public boolean getBoolean(String key, boolean defaultValue)
{
return getBoolean(key, new Boolean(defaultValue)).booleanValue();
}
/**
* Get a boolean associated with the given configuration key.
*
* @param key The configuration key.
* @param defaultValue The default value.
*
* @return The associated boolean if key is found and has valid
* format, default value otherwise.
*
* @throws ClassCastException is thrown if the key maps to an
* object that is not a Boolean.
*/
public Boolean getBoolean(String key, Boolean defaultValue)
{
Object value = resolveContainerStore(key);
if (value instanceof Boolean)
{
return (Boolean) value;
}
else if (value instanceof String)
{
return testBoolean((String) value);
}
else if (value == null)
{
if (defaults != null)
{
return defaults.getBoolean(key, defaultValue);
}
else
{
log.warn("Use Boolean default value for key '" + key + "' (" + defaultValue + ")");
return defaultValue;
}
}
else
{
throw new ClassCastException(
'\'' + key + "' doesn't map to a Boolean object");
}
}
/**
* Get a byte associated with the given configuration key.
*
* @param key The configuration key.
*
* @return The associated byte.
*
* @throws NoSuchElementException is thrown if the key doesn't
* map to an existing object.
* @throws ClassCastException is thrown if the key maps to an
* object that is not a Byte.
* @throws NumberFormatException is thrown if the value mapped
* by the key has not a valid number format.
*/
public byte getByte(String key)
{
Byte b = getByte(key, null);
if (b != null)
{
return b.byteValue();
}
else
{
throw new NoSuchElementException(
'\'' + key + " doesn't map to an existing object");
}
}
/**
* Get a byte associated with the given configuration key.
*
* @param key The configuration key.
* @param defaultValue The default value.
*
* @return The associated byte.
*
* @throws ClassCastException is thrown if the key maps to an
* object that is not a Byte.
* @throws NumberFormatException is thrown if the value mapped
* by the key has not a valid number format.
*/
public byte getByte(String key, byte defaultValue)
{
return getByte(key, new Byte(defaultValue)).byteValue();
}
/**
* Get a byte associated with the given configuration key.
*
* @param key The configuration key.
* @param defaultValue The default value.
*
* @return The associated byte if key is found and has valid format, default
* value otherwise.
*
* @throws ClassCastException is thrown if the key maps to an object that
* is not a Byte.
* @throws NumberFormatException is thrown if the value mapped by the key
* has not a valid number format.
*/
public Byte getByte(String key, Byte defaultValue)
{
Object value = resolveContainerStore(key);
if (value instanceof Byte)
{
return (Byte) value;
}
else if (value instanceof String)
{
Byte b = new Byte((String) value);
return b;
}
else if (value == null)
{
if (defaults != null)
{
return defaults.getByte(key, defaultValue);
}
else
{
log.warn("Use Byte default value for key '" + key + "' (" + defaultValue + ")");
return defaultValue;
}
}
else
{
throw new ClassCastException(
'\'' + key + "' doesn't map to a Byte object");
}
}
/**
* Get a double associated with the given configuration key.
*
* @param key The configuration key.
*
* @return The associated double.
*
* @throws NoSuchElementException is thrown if the key doesn't
* map to an existing object.
* @throws ClassCastException is thrown if the key maps to an
* object that is not a Double.
* @throws NumberFormatException is thrown if the value mapped
* by the key has not a valid number format.
*/
public double getDouble(String key)
{
Double d = getDouble(key, null);
if (d != null)
{
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -