/* Copyright 2006 by Sean Luke Licensed under the Academic Free License version 3.0 See the file "LICENSE" for more information */ package ec.util; import java.io.Serializable; /* * Parameter.java * Created: Sat Aug 7 12:06:49 1999 */ /** * *
A Parameter is an object which the ParameterDatabase class * uses as a key to associate with strings, forming a key-value pair. * Parameters are designed to be hierarchical in nature, consisting * of "path items" separated by a path separator. * Parameters are created either from a single path item, from an array * of path items, or both. For example, a parameter with the path * foo.bar.baz might be created from * new Parameter(new String[] {"foo","bar","baz"}) * *
Parameters are not mutable -- but once a parameter is created, path * items may be pushed an popped from it, forming a new parameter. * For example, if a parameter p consists of the path foo.bar.baz, * p.pop() results in a new parameter whose path is foo.bar * This pushing and popping isn't cheap, so be sparing. * *
Because this system internally uses "." as its path separator, you should * not use that character in parts of the path that you provide; however * if you need some other path separator, you can change the delimiter in * the code trivially. * In fact, you can create a new Parameter with a path foo.bar.baz simply * by calling new Parameter("foo.bar.baz") but you'd better know * what you're doing. * *
Additionally, parameters must not contain "#", "=", non-ascii values,
* or whitespace. Yes, a parameter path item may be empty.
*
* @author Sean Luke
* @version 1.0
*/
public class Parameter implements Serializable
{
public String param;
public static final char delimiter = '.';
/** Creates a new parameter by joining the path items in s into a single path. */
public Parameter(String[] s) throws ec.util.BadParameterException
{
if (s.length==0)
throw new BadParameterException("Parameter created with length 0");
for (int x=0;x