Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## net.sf.saxon.expr.number
Class AbstractNumberer

    java.lang.Object
      net.sf.saxon.expr.number.AbstractNumberer

All Implemented Interfaces:
  Serializable, Numberer

Direct Known Subclasses:
  Numberer_da, Numberer_de, Numberer_en, Numberer_fr, Numberer_frBE, Numberer_it, Numberer_nl, Numberer_nlBE, Numberer_sv

    public abstract class AbstractNumberer

extends Object
implements Numberer, Serializable

Class AbstractNumberer is a base implementation of Numberer that provides language-independent default numbering This supports the xsl:number element. Methods and data are declared as protected, and static is avoided, to allow easy subclassing.

Author:
  Michael H. Kay
See Also:
  Serialized Form

Field Summary
`protected static String` | `cyrillicLower`
`protected static String` | `cyrillicUpper`
`protected static String` | `greekLower`
`protected static String` | `greekUpper`
`protected static String` | `hebrew`
`protected static String` | `hiraganaA`
`protected static String` | `hiraganaI`
`protected static String` | `katakanaA`
`protected static String` | `katakanaI`
`protected static String` | `latinLower`
`protected static String` | `latinUpper`
`static int` | `LOWER_CASE`
`static int` | `TITLE_CASE`
`static int` | `UPPER_CASE`
`protected static int[]` | `westernDigits`

Constructor Summary
`AbstractNumberer()`

Method Summary
`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 String` | `dayName(int day, int minWidth, int maxWidth)` Get a day name or abbreviation
`String` | `format(long number, String picture, int groupSize, String groupSeparator, String letterValue, String ordinal)` Format a number into a string.
`String` | `format(long number, String picture, NumericGroupFormatter numGroupFormatter, String letterValue, String ordinal)` Format a number into a string
`String` | `getCalendarName(String code)` Get the name of a calendar
`String` | `getCountry()` Get the country used by this numberer.
`String` | `getEraName(int year)` Get the name for an era (e.g.
`String` | `getOrdinalSuffixForDateTime(String component)` Get an ordinal suffix for a particular component of a date/time.
`String` | `halfDayName(int minutes, int minWidth, int maxWidth)` Get an am/pm indicator.
`abstract String` | `monthName(int month, int minWidth, int maxWidth)` Get a month name or abbreviation
`protected String` | `ordinalSuffix(String ordinalParam, long number)` Construct the ordinal suffix for a number, for example "st", "nd", "rd".
`void` | `setCountry(String country)` Set the country used by this numberer (currenly used only for names of timezones)
`protected 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 String` | `toAlphaSequence(long number, String alphabet)` Convert the number into an alphabetic label using a given alphabet.
`String` | `toJapanese(long number)` Format the number in Japanese.
`abstract String` | `toOrdinalWords(String ordinalParam, long number, int wordCase)` Show an ordinal number as English words in a requested case (for example, Twentyfirst)
`static String` | `toRoman(long n)` Generate a Roman numeral (in lower case)
`abstract String` | `toWords(long number)` Show the number as words in title case.
`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`

Field Detail

### UPPER_CASE

    public static final int UPPER_CASE

See Also:
  Constant Field Values

### LOWER_CASE

    public static final int LOWER_CASE

See Also:
  Constant Field Values

### TITLE_CASE

    public static final int TITLE_CASE

See Also:
  Constant Field Values

### westernDigits

    protected static final int[] westernDigits

### latinUpper

    protected static final String latinUpper

See Also:
  Constant Field Values

### latinLower

    protected static final String latinLower

See Also:
  Constant Field Values

### greekUpper

    protected static final String greekUpper

See Also:
  Constant Field Values

### greekLower

    protected static final String greekLower

See Also:
  Constant Field Values

### cyrillicUpper

    protected static final String cyrillicUpper

See Also:
  Constant Field Values

### cyrillicLower

    protected static final String cyrillicLower

See Also:
  Constant Field Values

### hebrew

    protected static final String hebrew

See Also:
  Constant Field Values

### hiraganaA

    protected static final String hiraganaA

See Also:
  Constant Field Values

### katakanaA

    protected static final String katakanaA

See Also:
  Constant Field Values

### hiraganaI

    protected static final String hiraganaI

See Also:
  Constant Field Values

### katakanaI

    protected static final String katakanaI

See Also:
  Constant Field Values

Constructor Detail

### AbstractNumberer

    public AbstractNumberer()

Method Detail

### setCountry

    public void setCountry(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 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 String format(long number,
                               String picture,
                               int groupSize,
                               String groupSeparator,
                               String letterValue,
                               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 String format(long number,
                         String picture,
                         NumericGroupFormatter numGroupFormatter,
                         String letterValue,
                         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 String ordinalSuffix(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 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 String toAlphaSequence(long number,
                                     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 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 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 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 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 String toOrdinalWords(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 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

### dayName

    public abstract 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

### halfDayName

    public 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 String getOrdinalSuffixForDateTime(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 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

### getCalendarName

    public String getCalendarName(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

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright (c) 2004-2010 Saxonica Limited. All rights reserved.