de.jstacs.parameters
Class ArrayParameterSet

java.lang.Object
  extended by de.jstacs.parameters.ParameterSet
      extended by de.jstacs.parameters.ExpandableParameterSet
          extended by de.jstacs.parameters.ArrayParameterSet
All Implemented Interfaces:
RangeIterator, Storable, Cloneable
Direct Known Subclasses:
AlphabetContainerParameterSet.AlphabetArrayParameterSet

public class ArrayParameterSet
extends ExpandableParameterSet

Class for a ParameterSet that consists of a length-Parameter that defines the length of the array and an array of ParameterSetContainers of this length. Each ParameterSetContainer in the array holds a ParameterSet as defined by a template. The template is cloned in order to obtain the specified number of elements in the array. The class takes care of the consistency of the length-Parameter an the length of the array.

Author:
Jan Grau

Nested Class Summary
 
Nested classes/interfaces inherited from class de.jstacs.parameters.ParameterSet
ParameterSet.ParameterList
 
Field Summary
 
Fields inherited from class de.jstacs.parameters.ExpandableParameterSet
commentTemplate, nameTemplate, template
 
Fields inherited from class de.jstacs.parameters.ParameterSet
alternativeInstanceClass, errorMessage, parameters, parent, ranged
 
Constructor Summary
ArrayParameterSet(Class instanceClass, ParameterSet template, String nameTemplate, String commentTemplate)
          Creates a new ArrayParameterSet from a Class that can be instantiated using this ArrayParameterSet and templates for the ParameterSet in each element of the array, the name and the comment that are displayed for the ParameterSetContainers enclosing the ParameterSets.
ArrayParameterSet(Class instanceClass, ParameterSet template, String nameTemplate, String commentTemplate, String lengthName, String lengthComment, NumberValidator<Integer> allowedLengths)
          Creates a new ArrayParameterSet from a Class that can be instantiated using this ArrayParameterSet and templates for the ParameterSet in each element of the array, the name and the comment that are displayed for the ParameterSetContainers enclosing the ParameterSets.
ArrayParameterSet(StringBuffer representation)
          Creates a new ArrayParameterSet from its XML-representation.
 
Method Summary
protected  void fromXML(StringBuffer representation)
          Parses the instance fields of a ParameterSet from the XML-representation as returned by ParameterSet.toXML().
 int getNumberOfParameters()
          Returns the number of parameters in set
 Parameter getParameterAt(int i)
          Returns the parameter at position i
 boolean hasDefaultOrIsSet()
          Returns true if all parameters in this ParameterSet are either set by the user or have default values.
protected  void loadParameters()
          Loads the parameters for this ParameterSet.
 StringBuffer toXML()
          This method returns an XML-representation of an instance of the implementing class.
 
Methods inherited from class de.jstacs.parameters.ExpandableParameterSet
addParameterToSet, clone, getInstanceComment, getInstanceName, parameterRemovable, removeParameterFromSet, replaceContentWith, replaceParametersWithRangedInstance
 
Methods inherited from class de.jstacs.parameters.ParameterSet
getErrorMessage, getId, getInstance, getInstanceClass, getNumberOfValues, getParent, initParameterList, initParameterList, isAtomic, isRanged, makeRanged, next, parametersLoaded, propagateId, recieveId, reset, resetToFirst, setAlternativeInstanceClass, setParent, simplify, valuesToString
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ArrayParameterSet

public ArrayParameterSet(Class instanceClass,
                         ParameterSet template,
                         String nameTemplate,
                         String commentTemplate,
                         String lengthName,
                         String lengthComment,
                         NumberValidator<Integer> allowedLengths)
Creates a new ArrayParameterSet from a Class that can be instantiated using this ArrayParameterSet and templates for the ParameterSet in each element of the array, the name and the comment that are displayed for the ParameterSetContainers enclosing the ParameterSets.

Parameters:
instanceClass - the Class
template - the template of the ParameterSet
nameTemplate - the name-template
commentTemplate - the comment-template
lengthName - the name of the length-Parameter
lengthComment - the comment of the length-Parameter
allowedLengths - a NumberValidator to set a lower and upper bound on the number of elements in the array

ArrayParameterSet

public ArrayParameterSet(Class instanceClass,
                         ParameterSet template,
                         String nameTemplate,
                         String commentTemplate)
Creates a new ArrayParameterSet from a Class that can be instantiated using this ArrayParameterSet and templates for the ParameterSet in each element of the array, the name and the comment that are displayed for the ParameterSetContainers enclosing the ParameterSets.

Parameters:
instanceClass - the Class
template - the template of the ParameterSet
nameTemplate - the name-template
commentTemplate - the comment-template

ArrayParameterSet

public ArrayParameterSet(StringBuffer representation)
                  throws NonParsableException
Creates a new ArrayParameterSet from its XML-representation.

Parameters:
representation - the XML-representation
Throws:
NonParsableException - is thrown if representation could not be parsed.
Method Detail

loadParameters

protected final void loadParameters()
                             throws Exception
Description copied from class: ParameterSet
Loads the parameters for this ParameterSet. This is in most cases done by simply creating a new ArrayList<Parameter> for the field parameters/code> and filling it with instances of subclasses of Parameter

Overrides:
loadParameters in class ExpandableParameterSet
Throws:
Exception - an Exception is thrown if the parameters could not be loaded
See Also:
ParameterSet.parameters, Parameter

getNumberOfParameters

public int getNumberOfParameters()
Description copied from class: ParameterSet
Returns the number of parameters in set

Overrides:
getNumberOfParameters in class ParameterSet
Returns:
the number of parameters

getParameterAt

public Parameter getParameterAt(int i)
Description copied from class: ParameterSet
Returns the parameter at position i

Overrides:
getParameterAt in class ParameterSet
Parameters:
i - the position
Returns:
the parameter

hasDefaultOrIsSet

public boolean hasDefaultOrIsSet()
Description copied from class: ParameterSet
Returns true if all parameters in this ParameterSet are either set by the user or have default values. If any additional constraints are required on your parameters you should either specifiy some ParameterValidator on these parameters or implement these contraints by overriding this method in your implementation of ParameterSet. It is recommended to specify a useful remark which constraint failed in the member-variable errorMessage, which will be displayed to the user. In the overriding method super.hasDefaultOrIsSet() should be called prior to checking specific constraints.

Overrides:
hasDefaultOrIsSet in class ParameterSet
Returns:
true if all parameters have some allowed value set

fromXML

protected void fromXML(StringBuffer representation)
                throws NonParsableException
Description copied from class: ParameterSet
Parses the instance fields of a ParameterSet from the XML-representation as returned by ParameterSet.toXML().

Overrides:
fromXML in class ExpandableParameterSet
Parameters:
representation - the XML-representation
Throws:
NonParsableException - is thrown if the XML-code could not be parsed

toXML

public StringBuffer toXML()
Description copied from interface: Storable
This method returns an XML-representation of an instance of the implementing class.

Specified by:
toXML in interface Storable
Overrides:
toXML in class ExpandableParameterSet
Returns:
the XML-representation