Class TypeMultiProperty

    • Constructor Detail

      • TypeMultiProperty

        public TypeMultiProperty​(java.lang.String theName,
                                 java.lang.String theDescription,
                                 java.util.List<java.lang.Class> theDefaults,
                                 java.lang.String[] legalPackageNames,
                                 float theUIOrder)
        Constructor for TypeProperty.
        Parameters:
        theName - String
        theDescription - String
        theDefaults - Class[]
        legalPackageNames - String[]
        theUIOrder - float
        Throws:
        java.lang.IllegalArgumentException
      • TypeMultiProperty

        public TypeMultiProperty​(java.lang.String theName,
                                 java.lang.String theDescription,
                                 java.lang.String theTypeDefaults,
                                 java.lang.String[] legalPackageNames,
                                 float theUIOrder)
        Constructor for TypeProperty.
        Parameters:
        theName - String
        theDescription - String
        theTypeDefaults - String
        legalPackageNames - String[]
        theUIOrder - float
        Throws:
        java.lang.IllegalArgumentException
    • Method Detail

      • type

        public java.lang.Class<java.lang.Class> type()
        Description copied from interface: PropertyDescriptor
        Denotes the value datatype. For multi value properties, this is not the List class but the list's component class.
        Returns:
        Class literal of the value type
      • asString

        public java.lang.String asString​(java.lang.Class value)
        Returns a string representation of the value, even if it's null.
        Parameters:
        value - The value to describe
        Returns:
        A string representation of the value
      • createFrom

        protected java.lang.Class createFrom​(java.lang.String toParse)
        Parse a string and returns an instance of a single value (not a list).
        Parameters:
        toParse - String to parse
        Returns:
        An instance of a value
      • valueFrom

        public java.util.List<java.lang.Class> valueFrom​(java.lang.String valueString)
        Description copied from interface: PropertyDescriptor
        Returns the value represented by this string.
        Specified by:
        valueFrom in interface PropertyDescriptor<java.util.List<java.lang.Class>>
        Parameters:
        valueString - The string to parse
        Returns:
        The value represented by the string
      • addAttributesTo

        protected void addAttributesTo​(java.util.Map<PropertyDescriptorField,​java.lang.String> attributes)
        Adds this property's attributes to the map. Subclasses can override this to add more PropertyDescriptorField.
        Parameters:
        attributes - The map to fill
      • valueErrorFor

        protected java.lang.String valueErrorFor​(T value)
        Checks a single value for a "missing value" error.
        Parameters:
        value - Value to check
        Returns:
        A descriptive String of the error or null if there was none
      • packageNamesIn

        protected java.lang.String[] packageNamesIn​(java.util.Map<PropertyDescriptorField,​java.lang.String> params)
      • isMultiValue

        public final boolean isMultiValue()
        Description copied from interface: PropertyDescriptor
        Returns whether the property is multi-valued, i.e. an array of strings,

        As unary property rule properties will return a value of one, you must use the get/setProperty accessors when working with the actual values. When working with multi-value properties then the get/setProperties accessors must be used.

        Specified by:
        isMultiValue in interface PropertyDescriptor<V>
        Returns:
        boolean
      • propertyErrorFor

        public java.lang.String propertyErrorFor​(Rule rule)
        Description copied from interface: PropertyDescriptor
        A convenience method that returns an error string if the rule holds onto a property value that has a problem. Returns null otherwise.
        Specified by:
        propertyErrorFor in interface PropertyDescriptor<V>
        Parameters:
        rule - Rule
        Returns:
        String
      • errorFor

        public java.lang.String errorFor​(java.util.List<V> values)
        Description copied from interface: PropertyDescriptor
        Validation function that returns a diagnostic error message for a sample property value. Returns null if the value is acceptable.
        Specified by:
        errorFor in interface PropertyDescriptor<V>
        Parameters:
        values - The value to check.
        Returns:
        A diagnostic message.
      • defaultAsString

        protected java.lang.String defaultAsString()
        Returns a string representation of the default value.
        Returns:
        A string representation of the default value.
      • defaultValue

        public java.util.List<V> defaultValue()
        Description copied from interface: PropertyDescriptor
        Default value to use when the user hasn't specified one or when they wish to revert to a known-good state.
        Specified by:
        defaultValue in interface PropertyDescriptor<V>
        Returns:
        Object
      • multiValueDelimiter

        public char multiValueDelimiter()
        Description copied from interface: MultiValuePropertyDescriptor
        Return the character being used to delimit multiple property values within a single string. You must ensure that this character does not appear within any rule property values to avoid deserialization errors.
        Specified by:
        multiValueDelimiter in interface MultiValuePropertyDescriptor<V>
        Returns:
        char
      • asDelimitedString

        public final java.lang.String asDelimitedString​(java.util.List<V> values)
        Description copied from interface: PropertyDescriptor
        Formats the object onto a string suitable for storage within the property map.
        Specified by:
        asDelimitedString in interface PropertyDescriptor<V>
        Parameters:
        values - Object
        Returns:
        String
      • description

        public java.lang.String description()
        Description copied from interface: PropertyDescriptor
        Describes the property and the role it plays within the rule it is specified for. Could be used in a tooltip.
        Specified by:
        description in interface PropertyDescriptor<T>
        Returns:
        String
      • uiOrder

        public float uiOrder()
        Description copied from interface: PropertyDescriptor
        Denotes the relative order the property field should occupy if we are using an auto-generated UI to display and edit property values. If the value returned has a non-zero fractional part then this is can be used to place adjacent fields on the same row.

        Example:
        name -> 0.0 description 1.0 minValue -> 2.0 maxValue -> 2.1

        ..would have their fields placed like:
        name: [ ] description: [ ] minimum: [ ] maximum: [ ]
        Specified by:
        uiOrder in interface PropertyDescriptor<T>
        Returns:
        float
      • compareTo

        public final int compareTo​(PropertyDescriptor<?> otherProperty)
        Specified by:
        compareTo in interface java.lang.Comparable<T>
      • preferredRowCount

        public int preferredRowCount()
        Description copied from interface: PropertyDescriptor
        If the datatype is a String then return the preferred number of rows to allocate in the text widget, returns a value of one for all other types. Useful for multi-line XPATH editors.
        Specified by:
        preferredRowCount in interface PropertyDescriptor<T>
        Returns:
        int
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • name

        public java.lang.String name()
        Description copied from interface: PropertyDescriptor
        The name of the property without spaces as it serves as the key into the property map.
        Specified by:
        name in interface PropertyDescriptor<T>
        Returns:
        String
      • isDefinedExternally

        public boolean isDefinedExternally()
        Description copied from interface: PropertyDescriptor
        True if this descriptor was defined in the ruleset xml. This precision is necessary for the RuleSetWriter to write out the property correctly: if it was defined externally, then its definition must be written out, otherwise only its value.
        Specified by:
        isDefinedExternally in interface PropertyDescriptor<T>
        Returns:
        True if the descriptor was defined in xml