Package net.sourceforge.pmd.properties
Class EnumeratedProperty<E>
- java.lang.Object
-
- net.sourceforge.pmd.properties.EnumeratedProperty<E>
-
- Type Parameters:
E- Type of the values
- All Implemented Interfaces:
java.lang.Comparable<PropertyDescriptor<?>>,EnumeratedPropertyDescriptor<E,E>,PropertyDescriptor<E>,SingleValuePropertyDescriptor<E>
public final class EnumeratedProperty<E> extends java.lang.Object implements EnumeratedPropertyDescriptor<E,E>
Property which can take only a fixed set of values of any type, then selected via String labels. The mappings method returns the set of mappings between the labels and their values.This property currently doesn't support serialization and cannot be defined in a ruleset file.z
- Version:
- Refactored June 2017 (6.0.0)
- Author:
- Brian Remedios, Clément Fournier
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classEnumeratedProperty.EnumPBuilder<E>
-
Constructor Summary
Constructors Constructor Description EnumeratedProperty(java.lang.String theName, java.lang.String theDescription, java.lang.String[] theLabels, E[] theChoices, int defaultIndex, float theUIOrder)Deprecated.will be removed in 7.0.0.EnumeratedProperty(java.lang.String theName, java.lang.String theDescription, java.lang.String[] theLabels, E[] theChoices, int defaultIndex, java.lang.Class<E> valueType, float theUIOrder)Deprecated.will be removed in 7.0.0.EnumeratedProperty(java.lang.String theName, java.lang.String theDescription, java.util.Map<java.lang.String,E> labelsToChoices, E defaultValue, java.lang.Class<E> valueType, float theUIOrder)Constructor using a map to define the label-value mappings.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddAttributesTo(java.util.Map<PropertyDescriptorField,java.lang.String> attributes)Adds this property's attributes to the map.java.lang.StringasDelimitedString(T value)Formats the object onto a string suitable for storage within the property map.java.lang.StringasString(E value)Returns a string representation of the value, even if it's null.java.util.Map<PropertyDescriptorField,java.lang.String>attributeValuesById()Returns a map representing all the property attributes of the receiver in string form.intcompareTo(PropertyDescriptor<?> otherProperty)EcreateFrom(java.lang.String value)Parse a string and returns an instance of a value.protected java.lang.StringdefaultAsString()Returns a string representation of the default value.TdefaultValue()Default value to use when the user hasn't specified one or when they wish to revert to a known-good state.java.lang.Stringdescription()Describes the property and the role it plays within the rule it is specified for.booleanequals(java.lang.Object obj)java.lang.StringerrorFor(E value)Validation function that returns a diagnostic error message for a sample property value.inthashCode()booleanisDefinedExternally()True if this descriptor was defined in the ruleset xml.booleanisMultiValue()Returns whether the property is multi-valued, i.e.java.util.Map<java.lang.String,E>mappings()Returns an immutable map of the label - value mappings defined by this descriptor.java.lang.Stringname()The name of the property without spaces as it serves as the key into the property map.static <E> EnumeratedProperty.EnumPBuilder<E>named(java.lang.String name)intpreferredRowCount()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.java.lang.StringpropertyErrorFor(Rule rule)A convenience method that returns an error string if the rule holds onto a property value that has a problem.java.lang.StringtoString()java.lang.Class<E>type()Denotes the value datatype.floatuiOrder()Denotes the relative order the property field should occupy if we are using an auto-generated UI to display and edit property values.protected java.lang.StringvalueErrorFor(T value)Checks the value for an error.TvalueFrom(java.lang.String valueString)Returns the value represented by this string.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface net.sourceforge.pmd.properties.PropertyDescriptor
asDelimitedString, attributeValuesById, defaultValue, description, isDefinedExternally, isMultiValue, name, preferredRowCount, propertyErrorFor, uiOrder, valueFrom
-
-
-
-
Constructor Detail
-
EnumeratedProperty
@Deprecated public EnumeratedProperty(java.lang.String theName, java.lang.String theDescription, java.lang.String[] theLabels, E[] theChoices, int defaultIndex, java.lang.Class<E> valueType, float theUIOrder)Deprecated.will be removed in 7.0.0. UseEnumeratedProperty(String, String, Map, Object, Class, float)Constructor using arrays to define the label-value mappings. The correct construction of the property depends on the correct ordering of the arrays.- Parameters:
theName- NametheDescription- DescriptiontheLabels- Labels of the choicestheChoices- Values that can be chosendefaultIndex- The index of the default valuevalueType- Type of the valuestheUIOrder- UI order
-
EnumeratedProperty
@Deprecated public EnumeratedProperty(java.lang.String theName, java.lang.String theDescription, java.lang.String[] theLabels, E[] theChoices, int defaultIndex, float theUIOrder)Deprecated.will be removed in 7.0.0. UseEnumeratedProperty(String, String, Map, Object, Class, float)Constructor using arrays to define the label-value mappings. The correct construction of the property depends on the correct ordering of the arrays.- Parameters:
theName- NametheDescription- DescriptiontheLabels- Labels of the choicestheChoices- Values that can be chosendefaultIndex- Index of the default valuetheUIOrder- UI order
-
EnumeratedProperty
public EnumeratedProperty(java.lang.String theName, java.lang.String theDescription, java.util.Map<java.lang.String,E> labelsToChoices, E defaultValue, java.lang.Class<E> valueType, float theUIOrder)Constructor using a map to define the label-value mappings.- Parameters:
theName- NametheDescription- DescriptionlabelsToChoices- Map of labels to valuesdefaultValue- Default valuevalueType- Type of the valuestheUIOrder- UI order
-
-
Method Detail
-
type
public java.lang.Class<E> type()
Description copied from interface:PropertyDescriptorDenotes the value datatype. For multi value properties, this is not the List class but the list's component class.- Specified by:
typein interfacePropertyDescriptor<E>- Specified by:
typein interfaceSingleValuePropertyDescriptor<E>- Returns:
- Class literal of the value type
-
errorFor
public java.lang.String errorFor(E value)
Description copied from interface:PropertyDescriptorValidation function that returns a diagnostic error message for a sample property value. Returns null if the value is acceptable.- Specified by:
errorForin interfacePropertyDescriptor<E>- Parameters:
value- The value to check.- Returns:
- A diagnostic message.
-
createFrom
public E createFrom(java.lang.String value) throws java.lang.IllegalArgumentException
Parse a string and returns an instance of a value.- Parameters:
value- String to parse- Returns:
- An instance of a value
- Throws:
java.lang.IllegalArgumentException
-
asString
public java.lang.String asString(E 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
-
mappings
public java.util.Map<java.lang.String,E> mappings()
Description copied from interface:EnumeratedPropertyDescriptorReturns an immutable map of the label - value mappings defined by this descriptor.- Specified by:
mappingsin interfaceEnumeratedPropertyDescriptor<E,E>- Returns:
- an immutable map of the label - value mappings defined by this descriptor.
-
named
public static <E> EnumeratedProperty.EnumPBuilder<E> named(java.lang.String name)
-
defaultValue
public final T defaultValue()
Description copied from interface:PropertyDescriptorDefault value to use when the user hasn't specified one or when they wish to revert to a known-good state.- Specified by:
defaultValuein interfacePropertyDescriptor<T>- Returns:
- Object
-
isMultiValue
public final boolean isMultiValue()
Description copied from interface:PropertyDescriptorReturns 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:
isMultiValuein interfacePropertyDescriptor<T>- Returns:
- boolean
-
asDelimitedString
public java.lang.String asDelimitedString(T value)
Description copied from interface:PropertyDescriptorFormats the object onto a string suitable for storage within the property map.- Specified by:
asDelimitedStringin interfacePropertyDescriptor<T>- Parameters:
value- Object- Returns:
- String
-
propertyErrorFor
public java.lang.String propertyErrorFor(Rule rule)
Description copied from interface:PropertyDescriptorA convenience method that returns an error string if the rule holds onto a property value that has a problem. Returns null otherwise.- Specified by:
propertyErrorForin interfacePropertyDescriptor<T>- Parameters:
rule- Rule- Returns:
- String
-
valueErrorFor
protected java.lang.String valueErrorFor(T value)
Checks the value for an error.- Parameters:
value- Value to check- Returns:
- A diagnostic error message, or null if there's no problem
-
defaultAsString
protected final java.lang.String defaultAsString()
Returns a string representation of the default value.- Returns:
- A string representation of the default value.
-
valueFrom
public final T valueFrom(java.lang.String valueString) throws java.lang.IllegalArgumentExceptionDescription copied from interface:PropertyDescriptorReturns the value represented by this string.- Specified by:
valueFromin interfacePropertyDescriptor<T>- Parameters:
valueString- The string to parse- Returns:
- The value represented by the string
- Throws:
java.lang.IllegalArgumentException- if the given string cannot be parsed
-
description
public java.lang.String description()
Description copied from interface:PropertyDescriptorDescribes the property and the role it plays within the rule it is specified for. Could be used in a tooltip.- Specified by:
descriptionin interfacePropertyDescriptor<T>- Returns:
- String
-
uiOrder
public float uiOrder()
Description copied from interface:PropertyDescriptorDenotes 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:
..would have their fields placed like:
name -> 0.0 description 1.0 minValue -> 2.0 maxValue -> 2.1
name: [ ] description: [ ] minimum: [ ] maximum: [ ]- Specified by:
uiOrderin interfacePropertyDescriptor<T>- Returns:
- float
-
compareTo
public final int compareTo(PropertyDescriptor<?> otherProperty)
- Specified by:
compareToin interfacejava.lang.Comparable<T>
-
preferredRowCount
public int preferredRowCount()
Description copied from interface:PropertyDescriptorIf 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:
preferredRowCountin interfacePropertyDescriptor<T>- Returns:
- int
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
name
public java.lang.String name()
Description copied from interface:PropertyDescriptorThe name of the property without spaces as it serves as the key into the property map.- Specified by:
namein interfacePropertyDescriptor<T>- Returns:
- String
-
attributeValuesById
public final java.util.Map<PropertyDescriptorField,java.lang.String> attributeValuesById()
Description copied from interface:PropertyDescriptorReturns a map representing all the property attributes of the receiver in string form.- Specified by:
attributeValuesByIdin interfacePropertyDescriptor<T>- Returns:
- map
-
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 morePropertyDescriptorField.- Parameters:
attributes- The map to fill
-
isDefinedExternally
public boolean isDefinedExternally()
Description copied from interface:PropertyDescriptorTrue if this descriptor was defined in the ruleset xml. This precision is necessary for theRuleSetWriterto write out the property correctly: if it was defined externally, then its definition must be written out, otherwise only its value.- Specified by:
isDefinedExternallyin interfacePropertyDescriptor<T>- Returns:
- True if the descriptor was defined in xml
-
-