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