Class AbstractNumberer

    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected void alphaDefault​(long number, char formchar, FastStringBuffer sb)
      Default processing with an alphabetic format token: use the contiguous range of Unicode letters starting with that token.
      abstract java.lang.String dayName​(int day, int minWidth, int maxWidth)
      Get a day name or abbreviation
      java.lang.String format​(long number, java.lang.String picture, int groupSize, java.lang.String groupSeparator, java.lang.String letterValue, java.lang.String ordinal)
      Format a number into a string.
      java.lang.String format​(long number, java.lang.String picture, NumericGroupFormatter numGroupFormatter, java.lang.String letterValue, java.lang.String ordinal)
      Format a number into a string
      java.lang.String getCalendarName​(java.lang.String code)
      Get the name of a calendar
      java.lang.String getCountry()
      Get the country used by this numberer.
      java.lang.String getEraName​(int year)
      Get the name for an era (e.g.
      java.lang.String getOrdinalSuffixForDateTime​(java.lang.String component)
      Get an ordinal suffix for a particular component of a date/time.
      java.lang.String halfDayName​(int minutes, int minWidth, int maxWidth)
      Get an am/pm indicator.
      abstract java.lang.String monthName​(int month, int minWidth, int maxWidth)
      Get a month name or abbreviation
      protected java.lang.String ordinalSuffix​(java.lang.String ordinalParam, long number)
      Construct the ordinal suffix for a number, for example "st", "nd", "rd".
      void setCountry​(java.lang.String country)
      Set the country used by this numberer (currenly used only for names of timezones)
      protected java.lang.String toAlpha​(long number, int min, int max)
      Format the number as an alphabetic label using the alphabet consisting of consecutive Unicode characters from min to max
      protected java.lang.String toAlphaSequence​(long number, java.lang.String alphabet)
      Convert the number into an alphabetic label using a given alphabet.
      java.lang.String toJapanese​(long number)
      Format the number in Japanese.
      abstract java.lang.String toOrdinalWords​(java.lang.String ordinalParam, long number, int wordCase)
      Show an ordinal number as English words in a requested case (for example, Twentyfirst)
      static java.lang.String toRoman​(long n)
      Generate a Roman numeral (in lower case)
      abstract java.lang.String toWords​(long number)
      Show the number as words in title case.
      java.lang.String toWords​(long number, int wordCase)
      Format a number as English words with specified case options
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AbstractNumberer

        public AbstractNumberer()
    • Method Detail

      • setCountry

        public void setCountry​(java.lang.String country)
        Set the country used by this numberer (currenly used only for names of timezones)
        Specified by:
        setCountry in interface Numberer
        Parameters:
        country - The ISO two-letter country code.
      • getCountry

        public java.lang.String getCountry()
        Get the country used by this numberer.
        Specified by:
        getCountry in interface Numberer
        Returns:
        the country used by this numberer, or null if no country has been set
      • format

        public final java.lang.String format​(long number,
                                             java.lang.String picture,
                                             int groupSize,
                                             java.lang.String groupSeparator,
                                             java.lang.String letterValue,
                                             java.lang.String ordinal)
        Format a number into a string. This method is provided for backwards compatibility. It merely calls the other format method after constructing a RegularGroupFormatter. The method is final; localization subclasses should implement the method format(long, String, NumericGroupFormatter, String, String) rather than this method.
        Specified by:
        format in interface Numberer
        Parameters:
        number - The number to be formatted
        picture - The format token. This is a single component of the format attribute of xsl:number, e.g. "1", "01", "i", or "a"
        groupSize - number of digits per group (0 implies no grouping)
        groupSeparator - string to appear between groups of digits
        letterValue - The letter-value specified to xsl:number: "alphabetic" or "traditional". Can also be an empty string or null.
        ordinal - The value of the ordinal attribute specified to xsl:number The value "yes" indicates that ordinal numbers should be used; "" or null indicates that cardinal numbers
        Returns:
        the formatted number. Note that no errors are reported; if the request is invalid, the number is formatted as if the string() function were used.
      • format

        public java.lang.String format​(long number,
                                       java.lang.String picture,
                                       NumericGroupFormatter numGroupFormatter,
                                       java.lang.String letterValue,
                                       java.lang.String ordinal)
        Format a number into a string
        Specified by:
        format in interface Numberer
        Parameters:
        number - The number to be formatted
        picture - The format token. This is a single component of the format attribute of xsl:number, e.g. "1", "01", "i", or "a"
        numGroupFormatter - object contains separators to appear between groups of digits
        letterValue - The letter-value specified to xsl:number: "alphabetic" or "traditional". Can also be an empty string or null.
        ordinal - The value of the ordinal attribute specified to xsl:number The value "yes" indicates that ordinal numbers should be used; "" or null indicates that cardinal numbers
        Returns:
        the formatted number. Note that no errors are reported; if the request is invalid, the number is formatted as if the string() function were used.
      • ordinalSuffix

        protected java.lang.String ordinalSuffix​(java.lang.String ordinalParam,
                                                 long number)
        Construct the ordinal suffix for a number, for example "st", "nd", "rd". The default (language-neutral) implementation returns a zero-length string
        Parameters:
        ordinalParam - the value of the ordinal attribute (used in non-English language implementations)
        number - the number being formatted
        Returns:
        the ordinal suffix to be appended to the formatted number
      • alphaDefault

        protected void alphaDefault​(long number,
                                    char formchar,
                                    FastStringBuffer sb)
        Default processing with an alphabetic format token: use the contiguous range of Unicode letters starting with that token.
        Parameters:
        number - the number to be formatted
        formchar - the format character, for example 'A' for the numbering sequence A,B,C
        sb - buffer to hold the result of the formatting
      • toAlpha

        protected java.lang.String toAlpha​(long number,
                                           int min,
                                           int max)
        Format the number as an alphabetic label using the alphabet consisting of consecutive Unicode characters from min to max
        Parameters:
        number - the number to be formatted
        min - the start of the Unicode codepoint range
        max - the end of the Unicode codepoint range
        Returns:
        the formatted number
      • toAlphaSequence

        protected java.lang.String toAlphaSequence​(long number,
                                                   java.lang.String alphabet)
        Convert the number into an alphabetic label using a given alphabet. For example, if the alphabet is "xyz" the sequence is x, y, z, xx, xy, xz, ....
        Parameters:
        number - the number to be formatted
        alphabet - a string containing the characters to be used, for example "abc...xyz"
        Returns:
        the formatted number
      • toRoman

        public static java.lang.String toRoman​(long n)
        Generate a Roman numeral (in lower case)
        Parameters:
        n - the number to be formatted
        Returns:
        the Roman numeral representation of the number in lower case
      • toJapanese

        public java.lang.String toJapanese​(long number)
        Format the number in Japanese.
        Parameters:
        number - the number to be formatted: formatted in Western decimal style unless in the range 1 to 9999
        Returns:
        the Japanese Kanji representation of the number if in the range 1-9999
      • toWords

        public abstract java.lang.String toWords​(long number)
        Show the number as words in title case. (We choose title case because the result can then be converted algorithmically to lower case or upper case).
        Parameters:
        number - the number to be formatted
        Returns:
        the number formatted as English words
      • toWords

        public java.lang.String toWords​(long number,
                                        int wordCase)
        Format a number as English words with specified case options
        Parameters:
        number - the number to be formatted
        wordCase - the required case for example UPPER_CASE, LOWER_CASE, TITLE_CASE
        Returns:
        the formatted number
      • toOrdinalWords

        public abstract java.lang.String toOrdinalWords​(java.lang.String ordinalParam,
                                                        long number,
                                                        int wordCase)
        Show an ordinal number as English words in a requested case (for example, Twentyfirst)
        Parameters:
        ordinalParam - the value of the "ordinal" attribute as supplied by the user
        number - the number to be formatted
        wordCase - the required case for example UPPER_CASE, LOWER_CASE, TITLE_CASE
        Returns:
        the formatted number
      • monthName

        public abstract java.lang.String monthName​(int month,
                                                   int minWidth,
                                                   int maxWidth)
        Get a month name or abbreviation
        Specified by:
        monthName in interface Numberer
        Parameters:
        month - The month number (1=January, 12=December)
        minWidth - The minimum number of characters
        maxWidth - The maximum number of characters
        Returns:
        the month name or abbreviation as a string (for example, "September" or "Sep")
      • dayName

        public abstract java.lang.String dayName​(int day,
                                                 int minWidth,
                                                 int maxWidth)
        Get a day name or abbreviation
        Specified by:
        dayName in interface Numberer
        Parameters:
        day - The day of the week (1=Monday, 7=Sunday)
        minWidth - The minimum number of characters
        maxWidth - The maximum number of characters
        Returns:
        the day name or abbreviation as a string (for example, "Monday" or "Mon")
      • halfDayName

        public java.lang.String halfDayName​(int minutes,
                                            int minWidth,
                                            int maxWidth)
        Get an am/pm indicator. Default implementation works for English, on the basis that some other languages might like to copy this (most non-English countries don't actually use the 12-hour clock, so it's irrelevant).
        Specified by:
        halfDayName in interface Numberer
        Parameters:
        minutes - the minutes within the day
        minWidth - minimum width of output
        maxWidth - maximum width of output
        Returns:
        the AM or PM indicator
      • getOrdinalSuffixForDateTime

        public java.lang.String getOrdinalSuffixForDateTime​(java.lang.String component)
        Get an ordinal suffix for a particular component of a date/time.
        Specified by:
        getOrdinalSuffixForDateTime in interface Numberer
        Parameters:
        component - the component specifier from a format-dateTime picture, for example "M" for the month or "D" for the day.
        Returns:
        a string that is acceptable in the ordinal attribute of xsl:number to achieve the required ordinal representation. For example, "-e" for the day component in German, to have the day represented as "dritte August".
      • getEraName

        public java.lang.String getEraName​(int year)
        Get the name for an era (e.g. "BC" or "AD")
        Specified by:
        getEraName in interface Numberer
        Parameters:
        year - the proleptic gregorian year, using "0" for the year before 1AD
        Returns:
        the name of the era, for example "AD"
      • getCalendarName

        public java.lang.String getCalendarName​(java.lang.String code)
        Get the name of a calendar
        Specified by:
        getCalendarName in interface Numberer
        Parameters:
        code - The code representing the calendar as in the XSLT 2.0 spec, e.g. AD for the Gregorian calendar
        Returns:
        the name of the calendar, for example "AD"