Class Parameter<T>

  • All Implemented Interfaces:
    Parameter<T>
    Direct Known Subclasses:
    DataAccessFactory.Param

    public class Parameter<T>
    extends Object
    implements Parameter<T>
    A Parameter defines information about a valid process parameter.
    Author:
    gdavis
    • Field Detail

      • key

        public final String key
        This is the key (ie machine readable text) used to represent this parameter in a java.util.Map.
      • description

        public final InternationalString description
        Human readable description of this parameter.
      • type

        public final Class<T> type
        Class binding for this parameter.

        When a value is supplied for this key it should be of the provided type.

      • required

        public final boolean required
        Can the value be missing? Or is null allowed... Return true if a value is required to be both present and non null
      • minOccurs

        public final int minOccurs
        What is the min and max number of this paramter there can be ( a value of -1 for min means 0 or more, a value of -1 for max means any number greater than or equal to the min value )

        eg: a geometry union process can have any number of geom parameters, so by setting the max to -1 and the min to 2 we accomplish that.

      • maxOccurs

        public final int maxOccurs
      • sample

        public final T sample
        A sample value; often used as a default when prompting the end-user to fill in the details before executing a process.
      • FEATURE_TYPE

        public static final String FEATURE_TYPE
        "featureType" FeatureType to validate a Feature value against
        See Also:
        Constant Field Values
      • IS_PASSWORD

        public static final String IS_PASSWORD
        Boolean indicating whether the parameter shall be used as a password field, provides a hint for UI's to mask text fields, configuration systems to encrypt content, etc
        See Also:
        Constant Field Values
      • IS_LARGE_TEXT

        public static final String IS_LARGE_TEXT
        Boolean indicating whether the parameter is meant to be a long text, provides a hint for UI's use long text fields, textareas and the like
        See Also:
        Constant Field Values
      • LENGTH

        public static final String LENGTH
        "length" Integer used to limit the length of strings or literal geometries.
        See Also:
        Constant Field Values
      • CRS

        public static final String CRS
        "crs": CoordinateReferenceSystem used to restrict a Geometry literal
        See Also:
        Constant Field Values
      • ELEMENT

        public static final String ELEMENT
        "element": Class to use as the Element type for List. Please restrict your use of this facility to simple types; for most higher order data structures multiplicity is already accounted for - example MultiGeometry.
        See Also:
        Constant Field Values
      • MIN

        public static final String MIN
        "min" and "max" may be useful for restrictions for things like int sizes, etc.
        See Also:
        Constant Field Values
      • MAX

        public static final String MAX
        "min" and "max" may be useful for restrictions for things like int sizes, etc.
        See Also:
        Constant Field Values
      • OPTIONS

        public static final String OPTIONS
        As an alternative to "min" and "max" a speciifc List of options can be provided for a user to choose between. The description should explain what the options mean.

        Example: a compliance level of (0-low,1-medium,2-high)

        Although a List is used here (so you can specifiy order) it is assumed you will not confuse your users by placing duplicates in the list.

        See Also:
        Constant Field Values
      • LEVEL

        public static final String LEVEL
        Level or Category of the parameter - "user", "advanced", "program"

        • user - should be shown to all users and is used every time.
          example: user name and password
        • advanced - advanced or expert parameter used in special cases
          example: choice between get and post requests for WFS
        • program - intended for programs often tweaking settings for performance
          example: JDBC datasource for which it is hard for a user to type in
        See Also:
        Constant Field Values
      • DEPRECATED

        public static final String DEPRECATED
        Set parameter to deprecated - true, false ;can be used to conditional show the parameter based on deprecated value
        See Also:
        Constant Field Values
      • metadata

        public final Map<String,​Object> metadata
        Refinement of type; such as the FeatureType of a FeatureCollection, or component type of a List.

        This information is supplied (along with type) to allow a process implementor communicate additional restrictions on the allowed value beyond the strict type.

        The following keys are understood at this time: LENGTH, FEATURE_TYPE, CRS, ELEMENT .. additional keys will be documented as static final fields over time.

        Any restrictions mentioned here should be mentioned as part of your parameter description. This metadata is only used to help restrict what the user enters; not all client application will understand and respect these keys - please communicate with your end-user.

        See Also:
        CRS, ELEMENT, FEATURE_TYPE, IS_PASSWORD, LENGTH, MAX, MIN
    • Constructor Detail

      • Parameter

        public Parameter​(String key,
                         Class<T> type,
                         String title,
                         String description)
        Mandatory parameter - quickly constructed with out a properly internationalized title and description.
        Parameters:
        key - machine readable key for use in a java.util.Map
        type - Java class for the expected value
        title - Human readable title used for use in a user interface
        description - Human readable description
      • Parameter

        public Parameter​(String key,
                         Class<T> type,
                         String title,
                         String description,
                         Map<String,​Object> metadata)
        Mandatory parameter - quickly constructed with out a properly internationalized title and description.
        Parameters:
        key - machine readable key for use in a java.util.Map
        type - Java class for the expected value
        title - Human readable title used for use in a user interface
        description - Human readable description
      • Parameter

        public Parameter​(String key,
                         Class<T> type,
                         InternationalString title,
                         InternationalString description)
        Mandatory parameter
        Parameters:
        key - machine readable key for use in a java.util.Map
        type - Java class for the expected value
        title - Human readable title used for use in a user interface
        description - Human readable description
      • Parameter

        public Parameter​(String key,
                         Class<T> type,
                         InternationalString title,
                         InternationalString description,
                         Map<String,​Object> metadata)
        Mandatory parameter with metadata.
        Parameters:
        key - machine readable key for use in a java.util.Map
        type - Java class for the expected value
        title - Human readable title used for use in a user interface
        description - Human readable description
        metadata - Hints to the user interface (read the javadocs for each metadata key)
        See Also:
        CRS, ELEMENT, FEATURE_TYPE, IS_PASSWORD, LENGTH, MAX, MIN
      • Parameter

        public Parameter​(String key,
                         Class<T> type,
                         InternationalString title,
                         InternationalString description,
                         boolean required,
                         int min,
                         int max,
                         T sample,
                         Map<String,​Object> metadata)
        Addition of optional parameters
        Parameters:
        key - machine readable key for use in a java.util.Map
        type - Java class for the expected value
        title - Human readable title used for use in a user interface
        description - Human readable description
        required - true if the value is required
        min - Minimum value; or -1 if not needed
        max - Maximum value; or -1 for unbound
        sample - Sample value; may be used as a default in a user interface
        metadata - Hints to the user interface (read the javadocs for each metadata key)
        See Also:
        CRS, ELEMENT, FEATURE_TYPE, IS_PASSWORD, LENGTH, MAX, MIN
      • Parameter

        public Parameter​(String key,
                         Class<T> type)
        Constructs a parameter from key and type
        Parameters:
        key - machine readable key for use in a java.util.Map
        type - Java class for the expected value
      • Parameter

        public Parameter​(String key,
                         Class<T> type,
                         int min,
                         int max)
        Constructs a parameter from key, type, and min/max occurs.
        Parameters:
        key - machine readable key for use in a java.util.Map
        type - Java class for the expected value
        min - Minimum value of occurrences, -1 if not needed
        max - Maximum value of occurrences, -1 for unbound
    • Method Detail

      • getType

        public Class<T> getType()
        Description copied from interface: Parameter
        Type/class of the parameter.
        Specified by:
        getType in interface Parameter<T>
      • isRequired

        public Boolean isRequired()
        Description copied from interface: Parameter
        Flag indicating if the parameter is required or not.
        Specified by:
        isRequired in interface Parameter<T>
      • getMinOccurs

        public int getMinOccurs()
        Description copied from interface: Parameter
        The minimum number of occurrences of the parameter.
        Specified by:
        getMinOccurs in interface Parameter<T>
        Returns:
        minimum number of occurrences, or -1 if no minimum needed
      • getMaxOccurs

        public int getMaxOccurs()
        Description copied from interface: Parameter
        The maximum number of occurrences of the parameter.
        Specified by:
        getMaxOccurs in interface Parameter<T>
        Returns:
        maximum number of occurences, or -1 for unbound
      • getDefaultValue

        public T getDefaultValue()
        Description copied from interface: Parameter
        A default value for the parameter.
        Specified by:
        getDefaultValue in interface Parameter<T>
      • isPassword

        public boolean isPassword()
        Provides for easy access to the IS_PASSWORD metadata
        Returns:
        true if metadata.get(IS_PASSWORD) == Boolean.TRUE
      • isDeprecated

        public Boolean isDeprecated()
        Easy access to check the DEPRECATED metadata
        Returns:
        provided deprecated or false by default
      • getLevel

        public String getLevel()
        Easy access to check the LEVEL metadata
        Returns:
        provided level or "user" by default
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object