|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.util.Dictionary<K,V>
java.util.Hashtable<java.lang.Object,java.lang.Object>
java.util.Properties
ec.util.ParameterDatabase
public class ParameterDatabase
This extension of the Properties class allows you to set, get, and delete Parameters in a hierarchical tree-like database. The database consists of a list of Parameters, plus an array of "parent databases" which it falls back on when it can't find the Parameter you're looking for. Parents may also have arrays of parents, and so on..
The parameters are loaded from a Java property-list file, which is basically a collection of parameter=value pairs, one per line. Empty lines and lines beginning with # are ignored. These parameters and their values are case-sensitive , and whitespace is trimmed I believe.
An optional set of parameters, "parent. n ", where n are consecutive integers starting at 0, define the filenames of the database's parents.
An optional set of parameters, "print-params", specifies whether or not parameters should be printed as they are used (through one of the get(...) methods). If print-params is unset, or set to false or FALSE, nothing is printed. If set to non-false, then the parameters are printed prepended with a "P:" when their values are requested, "E:" when their existence is tested. Prior to the "P:" or "E:" you may see a "!" (meaning that the parameter isn't in the database), or a "<" (meaning that the parameter was a default parameter which was never looked up because the primary parameter contained the value).
When you create a ParameterDatabase using new ParameterDatabase(), it is created thus:
| DATABASE: | database |
| FROM: | (empty) |
When you create a ParameterDatabase using new ParameterDatabase( file ), it is created by loading the database file, and its parent file tree, thus:
| DATABASE: | database | -> | parent0 | +-> | parent0 | +-> | parent0 | +-> | .... |
| FROM: | (empty) | (file) | | | (parent.0) | | | (parent.0) | .... | ||
| | | +-> | parent1 | +-> | .... | |||||
| | | | | (parent.1) | |||||||
| | | .... | ||||||||
| | | |||||||||
| +-> | parent1 | +-> | .... | ||||||
| | | (parent.1) | ||||||||
| .... |
When you create a ParameterDatabase using new ParameterDatabase( file,argv ), the preferred way, it is created thus:
| DATABASE: | database | -> | parent0 | +-> | parent0 | +-> | parent0 | +-> | parent0 | +-> | .... |
| FROM: | (empty) | (argv) | (file) | | | (parent.0) | | | (parent.0) | .... | |||
| | | +-> | parent1 | +-> | .... | |||||||
| | | | | (parent.1) | |||||||||
| | | .... | ||||||||||
| | | |||||||||||
| +-> | parent1 | +-> | .... | ||||||||
| | | (parent.1) | ||||||||||
| .... |
...that is, the actual top database is empty, and stores parameters added programmatically; its parent is a database formed from arguments passed in on the command line; its parent is the parameter database which actually loads from foo. This allows you to programmatically add parameters which override those in foo, then delete them, thus bringing foo's parameters back in view.
Once a parameter database is loaded, you query it with the get methods. The database, then its parents, are searched until a match is found for your parameter. The search rules are thus: (1) the root database is searched first. (2) If a database being searched doesn't contain the data, it searches its parents recursively, starting with parent 0, then moving up, until all searches are exhausted or something was found. (3) No database is searched twice.
The various get methods all take two parameters. The first parameter is fetched and retrieved first. If that fails, the second one (known as the default parameter) is fetched and retrieved. You can pass in null for the default parameter if you don't have one.
You can test a parameter for existence with the exists methods.
You can set a parameter (in the topmost database only with the set command. The remove command removes a parameter from the topmost database only. The removeDeeply command removes that parameter from every database.
The values stored in a parameter database must not contain "#", "=", non-ascii values, or whitespace.
Note for JDK 1.1 . Finally recovering from stupendous idiocy, JDK 1.2 included parseDouble() and parseFloat() commands; now you can READ A FLOAT FROM A STRING without having to create a Float object first! Anyway, you will need to modify the getFloat() method below if you're running on JDK 1.1, but understand that large numbers of calls to the method may be inefficient. Sample JDK 1.1 code is given with those methods, but is commented out.
| Field Summary | |
|---|---|
int |
printState
|
| Fields inherited from class java.util.Properties |
|---|
defaults |
| Fields inherited from interface ec.util.IParameterDatabase |
|---|
C_HERE, PRINT_PARAMS, PS_NONE, PS_PRINT_PARAMS, PS_UNKNOWN, UNKNOWN_VALUE |
| Constructor Summary | |
|---|---|
ParameterDatabase()
Creates an empty parameter database. |
|
ParameterDatabase(java.util.Dictionary map)
Creates a new parameter database from the given Dictionary. |
|
ParameterDatabase(java.io.File filename)
Creates a new parameter database tree from a given database file and its parent files. |
|
ParameterDatabase(java.io.File filename,
java.lang.String[] args)
Creates a new parameter database from a given database file and argv list. |
|
ParameterDatabase(java.io.InputStream stream)
Creates a new parameter database loaded from the given stream. |
|
ParameterDatabase(java.lang.String pathNameInJar,
java.lang.Class jarResourceLocation)
Creates a new parameter database loaded from the given string describing a file in a jar, in the context of a resource location (a class). |
|
| Method Summary | |
|---|---|
void |
addListener(ParameterDatabaseListener l)
|
javax.swing.tree.TreeModel |
buildTreeModel()
Builds a TreeModel from the available property keys. |
java.io.File |
directoryFor(Parameter parameter)
Searches down through databases to find the directory for the database which holds a given parameter. |
boolean |
exists(Parameter parameter)
Returns true if parameter exist in the database |
boolean |
exists(Parameter parameter,
Parameter defaultParameter)
Returns true if either parameter or defaultParameter exists in the database |
java.io.File |
fileFor(Parameter parameter)
Searches down through databases to find the parameter file which holds a given parameter. |
void |
fireParameterAccessed(Parameter parameter,
java.lang.String value)
Fires a parameter accessed event. |
void |
fireParameterSet(Parameter parameter,
java.lang.String value)
Fires a parameter set event. |
boolean |
getBoolean(Parameter parameter,
Parameter defaultParameter,
boolean defaultValue)
Searches down through databases to find a given parameter; If the parameter does not exist, defaultValue is returned. |
java.lang.Class |
getClassForParameter(Parameter parameter,
Parameter defaultParameter,
java.lang.Class mustCastTosuperclass)
Searches down through databases to find a given parameter. |
double |
getDouble(Parameter parameter,
Parameter defaultParameter,
double minValue)
Searches down through databases to find a given parameter, whose value must be a double >= minValue. |
double |
getDouble(Parameter parameter,
Parameter defaultParameter,
double minValue,
double maxValue)
Searches down through databases to find a given parameter, whose value must be a double >= minValue and <= maxValue. |
double |
getDoubleWithDefault(Parameter parameter,
Parameter defaultParameter,
double defaultValue)
Searches down through databases to find a given parameter, which must be a float. |
java.io.File |
getFile(Parameter parameter,
Parameter defaultParameter)
Searches down through the databases to find a given parameter, whose value must be an absolute or relative path name. |
float |
getFloat(Parameter parameter,
Parameter defaultParameter,
double minValue)
Searches down through databases to find a given parameter, whose value must be a float >= minValue. |
float |
getFloat(Parameter parameter,
Parameter defaultParameter,
double minValue,
double maxValue)
Searches down through databases to find a given parameter, whose value must be a float >= minValue and <= maxValue. |
float |
getFloatWithDefault(Parameter parameter,
Parameter defaultParameter,
double defaultValue)
Searches down through databases to find a given parameter, which must be a float. |
java.io.InputStream |
getInputStream(Parameter parameter,
Parameter defaultParameter)
|
java.lang.Object |
getInstanceForParameter(Parameter parameter,
Parameter defaultParameter,
java.lang.Class mustCastTosuperclass)
Searches down through databases to find a given parameter, whose value must be a full Class name, and the class must be a descendent of but not equal to mustCastTosuperclass . |
java.lang.Object |
getInstanceForParameterEq(Parameter parameter,
Parameter defaultParameter,
java.lang.Class mustCastTosuperclass)
Searches down through databases to find a given parameter, whose value must be a full Class name, and the class must be a descendent, or equal to, mustCastTosuperclass . |
int |
getInt(Parameter parameter,
Parameter defaultParameter)
Searches down through databases to find a given parameter, whose value must be an integer. |
int |
getInt(Parameter parameter,
Parameter defaultParameter,
int minValue)
Searches down through databases to find a given parameter, whose value must be an integer >= minValue. |
int |
getIntWithDefault(Parameter parameter,
Parameter defaultParameter,
int defaultValue)
Searches down through databases to find a given parameter, which must be an integer. |
int |
getIntWithMax(Parameter parameter,
Parameter defaultParameter,
int minValue,
int maxValue)
Searches down through databases to find a given parameter, whose value must be an integer >= minValue and <= maxValue. |
long |
getLong(Parameter parameter,
Parameter defaultParameter)
Searches down through databases to find a given parameter, whose value must be a long. |
long |
getLong(Parameter parameter,
Parameter defaultParameter,
long minValue)
Searches down through databases to find a given parameter, whose value must be a long >= minValue. |
long |
getLong(Parameter parameter,
Parameter defaultParameter,
long minValue,
long maxValue)
Deprecated. |
long |
getLongWithDefault(Parameter parameter,
Parameter defaultParameter,
long defaultValue)
Searches down through databases to find a given parameter, which must be a long. |
long |
getLongWithMax(Parameter parameter,
Parameter defaultParameter,
long minValue,
long maxValue)
Searches down through databases to find a given parameter, whose value must be a long >= minValue and = < maxValue. |
java.util.Set |
getShadowedValues(Parameter parameter)
|
java.lang.String |
getString(Parameter parameter,
Parameter defaultParameter)
Searches down through databases to find a given parameter. |
java.lang.String |
getStringWithDefault(Parameter parameter,
Parameter defaultParameter,
java.lang.String defaultValue)
Searches down through databases to find a given parameter. |
void |
list(java.io.PrintStream p)
Prints out all the parameters in the database, but not shadowed parameters. |
void |
list(java.io.PrintStream p,
boolean listShadowed)
Prints out all the parameters in the database. |
void |
list(java.io.PrintWriter p)
Prints out all the parameters in the database, but not shadowed parameters. |
void |
list(java.io.PrintWriter p,
boolean listShadowed)
Prints out all the parameters in the database. |
void |
listAccessed(java.io.PrintWriter p)
Prints out all the parameters marked as accessed ("gotten" by some getFoo(...) method), plus their values. |
void |
listGotten(java.io.PrintWriter p)
Prints out all the parameters marked as used, plus their values. |
void |
listNotAccessed(java.io.PrintWriter p)
Prints out all the parameters NOT marked as used, plus their values. |
void |
listNotGotten(java.io.PrintWriter p)
Prints out all the parameters NOT marked as used, plus their values. |
static void |
main(java.lang.String[] args)
Test the ParameterDatabase |
java.util.Set<java.lang.String> |
parameterNameSet()
|
void |
remove(Parameter parameter)
Removes a parameter from the topmost database. |
void |
removeDeeply(Parameter parameter)
Removes a parameter from the database and all its parent databases. |
void |
removeListener(ParameterDatabaseListener l)
|
void |
set(Parameter parameter,
java.lang.String value)
Sets a parameter in the topmost database to a given value, trimmed of whitespace. |
void |
setObject(Parameter parameter,
java.lang.Object value)
|
java.lang.String |
toString()
|
| Methods inherited from class java.util.Properties |
|---|
getProperty, getProperty, load, loadFromXML, propertyNames, save, setProperty, store, storeToXML, storeToXML |
| Methods inherited from class java.util.Hashtable |
|---|
clear, clone, contains, containsKey, containsValue, elements, entrySet, equals, get, hashCode, isEmpty, keys, keySet, put, putAll, rehash, remove, size, values |
| Methods inherited from class java.lang.Object |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
public int printState
| Constructor Detail |
|---|
public ParameterDatabase()
public ParameterDatabase(java.util.Dictionary map)
throws java.io.FileNotFoundException,
java.io.IOException
java.io.FileNotFoundException
java.io.IOException
public ParameterDatabase(java.lang.String pathNameInJar,
java.lang.Class jarResourceLocation)
throws java.io.FileNotFoundException,
java.io.IOException
java.io.FileNotFoundException
java.io.IOException
public ParameterDatabase(java.io.InputStream stream)
throws java.io.FileNotFoundException,
java.io.IOException
java.io.FileNotFoundException
java.io.IOException
public ParameterDatabase(java.io.File filename)
throws java.io.FileNotFoundException,
java.io.IOException
java.io.FileNotFoundException
java.io.IOException
public ParameterDatabase(java.io.File filename,
java.lang.String[] args)
throws java.io.FileNotFoundException,
java.io.IOException
java.io.FileNotFoundException
java.io.IOException| Method Detail |
|---|
public java.lang.Object getInstanceForParameter(Parameter parameter,
Parameter defaultParameter,
java.lang.Class mustCastTosuperclass)
throws ParamClassLoadException
getInstanceForParameter in interface IParameterDatabaseParamClassLoadException
public java.lang.Object getInstanceForParameterEq(Parameter parameter,
Parameter defaultParameter,
java.lang.Class mustCastTosuperclass)
throws ParamClassLoadException
getInstanceForParameterEq in interface IParameterDatabaseParamClassLoadException
public java.lang.Class getClassForParameter(Parameter parameter,
Parameter defaultParameter,
java.lang.Class mustCastTosuperclass)
throws ParamClassLoadException
getClassForParameter in interface IParameterDatabaseParamClassLoadException
public boolean getBoolean(Parameter parameter,
Parameter defaultParameter,
boolean defaultValue)
getBoolean in interface IParameterDatabase
public int getInt(Parameter parameter,
Parameter defaultParameter)
throws java.lang.NumberFormatException
getInt in interface IParameterDatabasejava.lang.NumberFormatException
public int getInt(Parameter parameter,
Parameter defaultParameter,
int minValue)
getInt in interface IParameterDatabase
public int getIntWithDefault(Parameter parameter,
Parameter defaultParameter,
int defaultValue)
getIntWithDefault in interface IParameterDatabase
public int getIntWithMax(Parameter parameter,
Parameter defaultParameter,
int minValue,
int maxValue)
getIntWithMax in interface IParameterDatabase
public float getFloat(Parameter parameter,
Parameter defaultParameter,
double minValue)
getFloat in interface IParameterDatabaseparameter - Primary parameterdefaultParameter - Default parameter
minValue-1 if the parameter doesn't exist or is out of
range.
public float getFloatWithDefault(Parameter parameter,
Parameter defaultParameter,
double defaultValue)
getFloatWithDefault in interface IParameterDatabase
public float getFloat(Parameter parameter,
Parameter defaultParameter,
double minValue,
double maxValue)
getFloat in interface IParameterDatabase
public double getDouble(Parameter parameter,
Parameter defaultParameter,
double minValue)
getDouble in interface IParameterDatabase
public double getDouble(Parameter parameter,
Parameter defaultParameter,
double minValue,
double maxValue)
getDouble in interface IParameterDatabase
public double getDoubleWithDefault(Parameter parameter,
Parameter defaultParameter,
double defaultValue)
getDoubleWithDefault in interface IParameterDatabase
public long getLong(Parameter parameter,
Parameter defaultParameter)
throws java.lang.NumberFormatException
getLong in interface IParameterDatabasejava.lang.NumberFormatException
public long getLong(Parameter parameter,
Parameter defaultParameter,
long minValue)
getLong in interface IParameterDatabase
public long getLongWithDefault(Parameter parameter,
Parameter defaultParameter,
long defaultValue)
getLongWithDefault in interface IParameterDatabase
public long getLongWithMax(Parameter parameter,
Parameter defaultParameter,
long minValue,
long maxValue)
getLongWithMax in interface IParameterDatabase
public long getLong(Parameter parameter,
Parameter defaultParameter,
long minValue,
long maxValue)
getLong in interface IParameterDatabase
public java.io.File getFile(Parameter parameter,
Parameter defaultParameter)
getFile in interface IParameterDatabase
public java.io.InputStream getInputStream(Parameter parameter,
Parameter defaultParameter)
getInputStream in interface IParameterDatabase
public java.lang.String getString(Parameter parameter,
Parameter defaultParameter)
getString in interface IParameterDatabase
public java.lang.String getStringWithDefault(Parameter parameter,
Parameter defaultParameter,
java.lang.String defaultValue)
getStringWithDefault in interface IParameterDatabasepublic void addListener(ParameterDatabaseListener l)
l - public void removeListener(ParameterDatabaseListener l)
l -
public void fireParameterSet(Parameter parameter,
java.lang.String value)
parameter - value -
public void fireParameterAccessed(Parameter parameter,
java.lang.String value)
parameter - value -
public void set(Parameter parameter,
java.lang.String value)
set in interface IParameterDatabase
public void setObject(Parameter parameter,
java.lang.Object value)
setObject in interface IParameterDatabasepublic void listGotten(java.io.PrintWriter p)
listGotten in interface IParameterDatabasepublic void listNotGotten(java.io.PrintWriter p)
listNotGotten in interface IParameterDatabasepublic void listNotAccessed(java.io.PrintWriter p)
listNotAccessed in interface IParameterDatabasepublic void listAccessed(java.io.PrintWriter p)
listAccessed in interface IParameterDatabasepublic boolean exists(Parameter parameter)
exists in interface IParameterDatabase
public boolean exists(Parameter parameter,
Parameter defaultParameter)
exists in interface IParameterDatabasepublic java.util.Set getShadowedValues(Parameter parameter)
public java.io.File directoryFor(Parameter parameter)
directoryFor in interface IParameterDatabasepublic java.io.File fileFor(Parameter parameter)
fileFor in interface IParameterDatabasepublic void remove(Parameter parameter)
remove in interface IParameterDatabasepublic void removeDeeply(Parameter parameter)
public java.util.Set<java.lang.String> parameterNameSet()
parameterNameSet in interface IParameterDatabase
public void list(java.io.PrintStream p,
boolean listShadowed)
list in interface IParameterDatabasepublic void list(java.io.PrintStream p)
list in interface IParameterDatabaselist in class java.util.Propertiespublic void list(java.io.PrintWriter p)
list in interface IParameterDatabaselist in class java.util.Properties
public void list(java.io.PrintWriter p,
boolean listShadowed)
list in interface IParameterDatabasepublic java.lang.String toString()
toString in class java.util.Hashtable<java.lang.Object,java.lang.Object>public javax.swing.tree.TreeModel buildTreeModel()
public static void main(java.lang.String[] args)
throws java.io.FileNotFoundException,
java.io.IOException
java.io.FileNotFoundException
java.io.IOException
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||