Class EnumConversion<T extends java.lang.Enum<T>>

  • Type Parameters:
    T - the enumeration type whose constants will be converted from/to String
    All Implemented Interfaces:
    Conversion<java.lang.String,​T>

    public class EnumConversion<T extends java.lang.Enum<T>>
    extends ObjectConversion<T>
    Converts Strings to enumeration constants and vice versa.

    This class supports multiple types of identification of enumeration constants. For example, you can match the literal (Enum.name() the ordinal (Enum.ordinal() or the result of a method defined in your enumeration.

    The reverse conversion from an enumeration to String (in revert(Enum) will return a String using the first EnumSelector provided in the constructor of this class.

    See Also:
    ObjectConversion, EnumSelector
    • Field Detail

      • enumType

        private final java.lang.Class<T extends java.lang.Enum<T>> enumType
      • customEnumField

        private final java.lang.reflect.Field customEnumField
      • customEnumMethod

        private final java.lang.reflect.Method customEnumMethod
      • conversions

        private final java.util.Map<java.lang.String,​T extends java.lang.Enum<T>>[] conversions
    • Constructor Detail

      • EnumConversion

        public EnumConversion​(java.lang.Class<T> enumType)
        Defines a conversion for an enumeration type that will attempt to match Strings against the results of the output produced by (Enum.name(), (Enum.ordinal() and (Enum.toString() of each constant of the given enumeration (@link Class.getEnumConstants()).
        Parameters:
        enumType - the enumeration type to be converted from/to String
      • EnumConversion

        public EnumConversion​(java.lang.Class<T> enumType,
                              EnumSelector... selectors)
        Defines a conversion for an enumeration type that will attempt to match Strings the list of EnumSelectors, in the specified order. Each EnumSelector identifies which element of each constant of the enumeration class (@link Class.getEnumConstants() should be used to match equivalent Strings.
        Parameters:
        enumType - the enumeration type to be converted from/to String
        selectors - the selection elements of the enumeration to use for matching Strings.
      • EnumConversion

        public EnumConversion​(java.lang.Class<T> enumType,
                              java.lang.String customEnumElement,
                              EnumSelector... selectors)
        Defines a conversion for an enumeration type that will attempt to match Strings the list of EnumSelectors, in the specified order. Each EnumSelector identifies which element of each constant of the enumeration class (@link Class.getEnumConstants() should be used to match equivalent Strings.
        Parameters:
        enumType - the enumeration type to be converted from/to String
        customEnumElement - name of custom element of the enumeration (attribute or method) whose values should be used to match equivalent Strings.
        selectors - the selection elements of the enumeration to use for matching Strings.
      • EnumConversion

        public EnumConversion​(java.lang.Class<T> enumType,
                              T valueIfStringIsNull,
                              java.lang.String valueIfEnumIsNull,
                              java.lang.String customEnumElement,
                              EnumSelector... selectors)
        Defines a conversion for an enumeration type that will attempt to match Strings the list of EnumSelectors, in the specified order. Each EnumSelector identifies which element of each constant of the enumeration class (@link Class.getEnumConstants() should be used to match equivalent Strings.
        Parameters:
        enumType - the enumeration type to be converted from/to String
        valueIfStringIsNull - the default enumeration constant to use if the input String is null
        valueIfEnumIsNull - the default String value to use if the input enum constant is null
        customEnumElement - name of custom element of the enumeration (attribute or method) whose values should be used to match equivalent Strings.
        selectors - the selection elements of the enumeration to use for matching Strings.
    • Method Detail

      • initializeMappings

        private void initializeMappings​(java.util.Set<EnumSelector> conversionTypes)
      • getKey

        private java.lang.String getKey​(T constant,
                                        EnumSelector conversionType)
      • revert

        public java.lang.String revert​(T input)
        Description copied from class: ObjectConversion
        Converts a value of type T back to a String

        This is a general implementation that simply returns the result of input.toString()

        Specified by:
        revert in interface Conversion<java.lang.String,​T extends java.lang.Enum<T>>
        Overrides:
        revert in class ObjectConversion<T extends java.lang.Enum<T>>
        Parameters:
        input - the input of type T to be converted to a String
        Returns:
        the conversion result, or the value of ObjectConversion.getValueIfObjectIsNull() if the input object is null.
      • fromString

        protected T fromString​(java.lang.String input)
        Description copied from class: ObjectConversion
        Creates an instance of T from a String representation.
        Specified by:
        fromString in class ObjectConversion<T extends java.lang.Enum<T>>
        Parameters:
        input - The String to be converted to T
        Returns:
        an instance of T, converted from the String input.