org.geotoolkit.parameter
Class Parameter<T>

Object
  extended by FormattableObject
      extended by AbstractParameter
          extended by Parameter<T>
Type Parameters:
T - The value type.
All Implemented Interfaces:
Serializable, Cloneable, Formattable, GeneralParameterValue, ParameterValue<T>

public class Parameter<T>
extends AbstractParameter
implements ParameterValue<T>

A parameter value used by an operation method. Most CRS parameter values are numeric and can be obtained by the intValue() or doubleValue() methods. But other types of parameter values are possible and can be handled by the more generic getValue() and setValue(Object) methods. The type and constraints on parameter values are given by the descriptor.

Instances of ParameterValue are created by the ParameterDescriptor.createValue() method. The parameter type can be fetch with the following idiom:

Class<? extends T> valueClass = parameter.getDescriptor().getValueClass();

Since:
2.0
Version:
3.05
Author:
Martin Desruisseaux (IRD), Jody Garnett (Refractions)
See Also:
DefaultParameterDescriptor, ParameterGroup, Serialized Form
Module:
referencing/geotk-referencing (download)    View source code for this class

Field Summary
 
Fields inherited from class FormattableObject
EPSG, GEOTIFF, INTERNAL, OGC, SINGLE_LINE
 
Constructor Summary
Parameter(ParameterDescriptor<T> descriptor)
          Constructs a parameter value from the specified descriptor.
Parameter(ParameterDescriptor<T> descriptor, T value)
          Constructs a parameter value from the specified descriptor and value.
 
Method Summary
 boolean booleanValue()
          Returns the boolean value of an operation parameter.
 Parameter<T> clone()
          Returns a clone of this parameter.
static
<T extends CodeList<T>>
Parameter<T>
create(String name, Class<T> type, T value)
          Constructs a parameter from the specified code list.
static Parameter<Double> create(String name, double value, Unit<?> unit)
          Constructs a parameter from the specified name and value.
static Parameter<Integer> create(String name, int value)
          Constructs a parameter from the specified name and value.
 double doubleValue()
          Returns the numeric value of the coordinate operation parameter with its associated unit of measure.
 double doubleValue(Unit<?> unit)
          Returns the numeric value of the coordinate operation parameter in the specified unit of measure.
 double[] doubleValueList()
          Returns an ordered sequence of two or more numeric values of an operation parameter list, where each value has the same associated unit of measure.
 double[] doubleValueList(Unit<?> unit)
          Returns an ordered sequence of numeric values in the specified unit of measure.
 boolean equals(Object object)
          Compares the specified object with this parameter for equality.
 ParameterDescriptor<T> getDescriptor()
          Returns the abstract definition of this parameter.
 Unit<?> getUnit()
          Returns the unit of measure of the parameter value.
 T getValue()
          Returns the parameter value as an object.
 int hashCode()
          Returns a hash value for this parameter.
 int intValue()
          Returns the positive integer value of an operation parameter, usually used for a count.
 int[] intValueList()
          Returns an ordered sequence of two or more integer values of an operation parameter list, usually used for counts.
 void setValue(boolean value)
          Sets the parameter value as a boolean.
 void setValue(double value)
          Sets the parameter value as a floating point.
 void setValue(double[] values, Unit<?> unit)
          Sets the parameter value as an array of floating point and their associated unit.
 void setValue(double value, Unit<?> unit)
          Sets the parameter value as a floating point and its associated unit.
 void setValue(int value)
          Sets the parameter value as an integer.
 void setValue(Object value)
          Sets the parameter value as an object.
 String stringValue()
          Returns the string value of an operation parameter.
 URI valueFile()
          Returns a reference to a file or a part of a file containing one or more parameter values.
 
Methods inherited from class AbstractParameter
formatWKT, toString, write
 
Methods inherited from class FormattableObject
getDefaultIndentation, print, setDefaultIndentation, toWKT, toWKT, toWKT
 
Methods inherited from class Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Parameter

public Parameter(ParameterDescriptor<T> descriptor)
Constructs a parameter value from the specified descriptor. The value will be initialized to the default value, if any.

Parameters:
descriptor - The abstract definition of this parameter.

Parameter

public Parameter(ParameterDescriptor<T> descriptor,
                 T value)
          throws InvalidParameterValueException
Constructs a parameter value from the specified descriptor and value.

Parameters:
descriptor - The abstract definition of this parameter.
value - The parameter value.
Throws:
InvalidParameterValueException - if the type of value is inappropriate for this parameter, or if the value is illegal for some other reason (for example the value is numeric and out of range).
Method Detail

create

public static Parameter<Integer> create(String name,
                                        int value)
Constructs a parameter from the specified name and value. This convenience constructor creates a DefaultParameterDescriptor object. But if such an object is available, then the preferred way to get a ParameterValue is to invoke ParameterDescriptor.createValue().

Parameters:
name - The parameter name.
value - The parameter value.
Returns:
A new parameter instance for the given name and value.
Since:
2.5

create

public static Parameter<Double> create(String name,
                                       double value,
                                       Unit<?> unit)
Constructs a parameter from the specified name and value. This convenience constructor creates a DefaultParameterDescriptor object. But if such an object is available, then the preferred way to get a ParameterValue is to invoke ParameterDescriptor.createValue().

Parameters:
name - The parameter name.
value - The parameter value.
unit - The unit for the parameter value.
Returns:
A new parameter instance for the given name and value.
Since:
2.5

create

public static <T extends CodeList<T>> Parameter<T> create(String name,
                                                          Class<T> type,
                                                          T value)
Constructs a parameter from the specified code list. This convenience constructor creates a DefaultParameterDescriptor object. But if such an object is available, then the preferred way to get a ParameterValue is to invoke ParameterDescriptor.createValue().

Type Parameters:
T - The parameter type.
Parameters:
name - The parameter name.
type - The parameter type.
value - The parameter value.
Returns:
A new parameter instance for the given name and value.
Since:
2.5

getDescriptor

public ParameterDescriptor<T> getDescriptor()
Returns the abstract definition of this parameter.

Specified by:
getDescriptor in interface GeneralParameterValue
Specified by:
getDescriptor in interface ParameterValue<T>
Overrides:
getDescriptor in class AbstractParameter

getUnit

public Unit<?> getUnit()
Returns the unit of measure of the parameter value. If the parameter value has no unit (for example because it is a String type), then this method returns null. Note that "no unit" doesn't means "dimensionless".

Specified by:
getUnit in interface ParameterValue<T>
Returns:
The unit of measure, or null if none.
See Also:
doubleValue(), doubleValueList(), getValue()

doubleValue

public double doubleValue(Unit<?> unit)
                   throws IllegalArgumentException,
                          IllegalStateException
Returns the numeric value of the coordinate operation parameter in the specified unit of measure. This convenience method apply unit conversion on the fly as needed.

Specified by:
doubleValue in interface ParameterValue<T>
Parameters:
unit - The unit of measure for the value to be returned.
Returns:
The numeric value represented by this parameter after conversion to type double and conversion to unit.
Throws:
IllegalArgumentException - if the specified unit is invalid for this parameter.
InvalidParameterTypeException - if the value is not a numeric type.
IllegalStateException - if the value is not defined and there is no default value.
See Also:
getUnit(), setValue(double,Unit), doubleValueList(Unit)

doubleValue

public double doubleValue()
                   throws IllegalStateException
Returns the numeric value of the coordinate operation parameter with its associated unit of measure.

Specified by:
doubleValue in interface ParameterValue<T>
Returns:
The numeric value represented by this parameter after conversion to type double.
Throws:
InvalidParameterTypeException - if the value is not a numeric type.
IllegalStateException - if the value is not defined and there is no default value.
See Also:
getUnit(), setValue(double), doubleValueList()

intValue

public int intValue()
             throws IllegalStateException
Returns the positive integer value of an operation parameter, usually used for a count. An integer value does not have an associated unit of measure.

Specified by:
intValue in interface ParameterValue<T>
Returns:
The numeric value represented by this parameter after conversion to type int.
Throws:
InvalidParameterTypeException - if the value is not an integer type.
IllegalStateException - if the value is not defined and there is no default value.
See Also:
setValue(int), intValueList()

booleanValue

public boolean booleanValue()
                     throws IllegalStateException
Returns the boolean value of an operation parameter. A boolean value does not have an associated unit of measure.

Specified by:
booleanValue in interface ParameterValue<T>
Returns:
The boolean value represented by this parameter.
Throws:
InvalidParameterTypeException - if the value is not a boolean type.
IllegalStateException - if the value is not defined and there is no default value.
See Also:
setValue(boolean)

stringValue

public String stringValue()
                   throws IllegalStateException
Returns the string value of an operation parameter. A string value does not have an associated unit of measure.

Specified by:
stringValue in interface ParameterValue<T>
Returns:
The string value represented by this parameter.
Throws:
InvalidParameterTypeException - if the value is not a string.
IllegalStateException - if the value is not defined and there is no default value.
See Also:
getValue(), setValue(Object)

doubleValueList

public double[] doubleValueList(Unit<?> unit)
                         throws IllegalArgumentException,
                                IllegalStateException
Returns an ordered sequence of numeric values in the specified unit of measure. This convenience method apply unit conversion on the fly as needed.

Specified by:
doubleValueList in interface ParameterValue<T>
Parameters:
unit - The unit of measure for the value to be returned.
Returns:
The sequence of values represented by this parameter after conversion to type double and conversion to unit.
Throws:
IllegalArgumentException - if the specified unit is invalid for this parameter.
InvalidParameterTypeException - if the value is not an array of doubles.
IllegalStateException - if the value is not defined and there is no default value.
See Also:
getUnit(), setValue(double[],Unit), doubleValue(Unit)

doubleValueList

public double[] doubleValueList()
                         throws IllegalStateException
Returns an ordered sequence of two or more numeric values of an operation parameter list, where each value has the same associated unit of measure.

Specified by:
doubleValueList in interface ParameterValue<T>
Returns:
The sequence of values represented by this parameter.
Throws:
InvalidParameterTypeException - if the value is not an array of doubles.
IllegalStateException - if the value is not defined and there is no default value.
See Also:
getUnit(), setValue(Object), doubleValue()

intValueList

public int[] intValueList()
                   throws IllegalStateException
Returns an ordered sequence of two or more integer values of an operation parameter list, usually used for counts. These integer values do not have an associated unit of measure.

Specified by:
intValueList in interface ParameterValue<T>
Returns:
The sequence of values represented by this parameter.
Throws:
InvalidParameterTypeException - if the value is not an array of ints.
IllegalStateException - if the value is not defined and there is no default value.
See Also:
setValue(Object), intValue()

valueFile

public URI valueFile()
              throws IllegalStateException
Returns a reference to a file or a part of a file containing one or more parameter values. When referencing a part of a file, that file must contain multiple identified parts, such as an XML encoded document. Furthermore, the referenced file or part of a file can reference another part of the same or different files, as allowed in XML documents.

Specified by:
valueFile in interface ParameterValue<T>
Returns:
The reference to a file containing parameter values.
Throws:
InvalidParameterTypeException - if the value is not a reference to a file or an URI.
IllegalStateException - if the value is not defined and there is no default value.
See Also:
getValue(), setValue(Object)

getValue

public T getValue()
Returns the parameter value as an object. The object type is typically a Double, Integer, Boolean, String, URI, double[] or int[]. If no value has been set, then this method returns the default value (which may be null).

Specified by:
getValue in interface ParameterValue<T>
Returns:
The parameter value as an object, or null if no value has been set and there is no default value.
See Also:
setValue(Object)

setValue

public void setValue(double value,
                     Unit<?> unit)
              throws InvalidParameterValueException
Sets the parameter value as a floating point and its associated unit.

Specified by:
setValue in interface ParameterValue<T>
Parameters:
value - The parameter value.
unit - The unit for the specified value.
Throws:
InvalidParameterValueException - if the floating point type is inappropriate for this parameter, or if the value is illegal for some other reason (for example a value out of range).
See Also:
setValue(double), doubleValue(Unit)

setValue

public void setValue(double value)
              throws InvalidParameterValueException
Sets the parameter value as a floating point. The unit, if any, stay unchanged.

Specified by:
setValue in interface ParameterValue<T>
Parameters:
value - The parameter value.
Throws:
InvalidParameterValueException - if the floating point type is inappropriate for this parameter, or if the value is illegal for some other reason (for example a value out of range).
See Also:
setValue(double,Unit), doubleValue()

setValue

public void setValue(int value)
              throws InvalidParameterValueException
Sets the parameter value as an integer.

Specified by:
setValue in interface ParameterValue<T>
Parameters:
value - The parameter value.
Throws:
InvalidParameterValueException - if the integer type is inappropriate for this parameter, or if the value is illegal for some other reason (for example a value out of range).
See Also:
intValue()

setValue

public void setValue(boolean value)
              throws InvalidParameterValueException
Sets the parameter value as a boolean.

Specified by:
setValue in interface ParameterValue<T>
Parameters:
value - The parameter value.
Throws:
InvalidParameterValueException - if the boolean type is inappropriate for this parameter.
See Also:
booleanValue()

setValue

public void setValue(Object value)
              throws InvalidParameterValueException
Sets the parameter value as an object. The object type is typically a Double, Integer, Boolean, String, URI, double[] or int[].

Specified by:
setValue in interface ParameterValue<T>
Parameters:
value - The parameter value.
Throws:
InvalidParameterValueException - if the type of value is inappropriate for this parameter, or if the value is illegal for some other reason (for example the value is numeric and out of range).
See Also:
getValue()

setValue

public void setValue(double[] values,
                     Unit<?> unit)
              throws InvalidParameterValueException
Sets the parameter value as an array of floating point and their associated unit.

Specified by:
setValue in interface ParameterValue<T>
Parameters:
values - The parameter values.
unit - The unit for the specified value.
Throws:
InvalidParameterValueException - if the floating point type is inappropriate for this parameter, or if the value is illegal for some other reason (for example a value out of range).

equals

public boolean equals(Object object)
Compares the specified object with this parameter for equality.

Overrides:
equals in class AbstractParameter
Parameters:
object - The object to compare to this.
Returns:
true if both objects are equal.

hashCode

public int hashCode()
Returns a hash value for this parameter.

Overrides:
hashCode in class AbstractParameter
Returns:
The hash code value. This value doesn't need to be the same in past or future versions of this class.

clone

public Parameter<T> clone()
Returns a clone of this parameter.

Specified by:
clone in interface GeneralParameterValue
Specified by:
clone in interface ParameterValue<T>
Overrides:
clone in class AbstractParameter


Copyright © 2009-2011 Geotoolkit.org. All Rights Reserved.