Class DateTimeFieldRule.TextStore

  • Enclosing class:
    DateTimeFieldRule<T>

    public static final class DateTimeFieldRule.TextStore
    extends Object
    The mapping between integer values and textual representations.

    Some fields have a textual representation, such as day-of-week or month-of-year. These textual representations can be captured in this class for printing and parsing.

    TextStore is immutable and thread-safe.

    Author:
    Stephen Colebourne
    • Constructor Detail

      • TextStore

        public TextStore​(Locale locale,
                         Map<Integer,​String> valueTextMap)
        Constructor.
        Parameters:
        locale - the locale, not null
        valueTextMap - the map of values to text to store, not null
    • Method Detail

      • getLocale

        public Locale getLocale()
        Gets the locale that the text relates to.
        Returns:
        the locale for the text, never null
      • getValueTextMap

        public Map<Integer,​String> getValueTextMap()
        Gets the map of text for each integer value.
        Returns:
        the unmodifiable map of value to text, never null
      • getValueText

        public String getValueText​(int value)
        Gets the text for the specified integer value.

        The text associated with the value is returned, or null if none found.

        Parameters:
        value - the value to get text for
        Returns:
        the text for the field value, null if no text found
      • getTextValueMap

        public Map<String,​Integer> getTextValueMap()
        Gets the derived map expressing the value for each text.

        If the value-text map contains duplicate text elements then this map will be empty.

        Returns:
        the unmodifiable map of text to value for the field rule and style, never null
      • matchText

        public long matchText​(boolean ignoreCase,
                              String parseText)
        Matches the specified text against the text-value map returning the matched length and value.

        This method is intended for use during parsing, and matches the search text against the text-value map, optionally ignoring case.

        Parameters:
        ignoreCase - true to ignore case during the matching
        parseText - the text to match against
        Returns:
        a long packed result of two int values (for performance in parsing). The value is (parseLength << 32 + matchedValue). Zero is returned if there is no match. Minus one is returned if the text store cannot parse. The parse length can be obtained via (result >>> 32). The value can be obtained via ((int) result).