com.ibm.icu.util
Class GlobalizationPreferences

java.lang.Object
  extended by com.ibm.icu.util.GlobalizationPreferences
All Implemented Interfaces:
Freezable<GlobalizationPreferences>, Cloneable

public class GlobalizationPreferences
extends Object
implements Freezable<GlobalizationPreferences>

This convenience class provides a mechanism for bundling together different globalization preferences. It includes:

The class will heuristically compute implicit, heuristic values for the above based on available data if explicit values are not supplied. These implicit values can be presented to users for confirmation, or replacement if the values are incorrect.

To reset any explicit field so that it will get heuristic values, pass in null. For example, myPreferences.setLocale(null);

All of the heuristics can be customized by subclasses, by overriding getTerritory(), guessCollator(), etc.

The class also supplies display names for languages, scripts, territories, currencies, timezones, etc. These are computed according to the locale/language preference list. Thus, if the preference is Breton; French; English, then the display name for a language will be returned in Breton if available, otherwise in French if available, otherwise in English.

The codes used to reference territory, currency, etc. are as defined elsewhere in ICU, and are taken from CLDR (which reflects RFC 3066bis usage, ISO 4217, and the TZ Timezone database identifiers).

This is at a prototype stage, and has not incorporated all the design changes that we would like yet; further feedback is welcome.

Note:

Status:
Draft ICU 3.6 (retainAll).

Field Summary
static int BI_CHARACTER
          Break iterator type
static int BI_LINE
          Break iterator type
static int BI_SENTENCE
          Break iterator type
static int BI_TITLE
          Break iterator type
static int BI_WORD
          Break iterator type
static int DF_FULL
          Date Format type
static int DF_LONG
          Date Format type
static int DF_MEDIUM
          Date Format type
static int DF_NONE
          Date Format type
static int DF_SHORT
          Date Format type
static int ID_CURRENCY
          For selecting a choice of display names
static int ID_CURRENCY_SYMBOL
          For selecting a choice of display names
static int ID_KEYWORD
          For selecting a choice of display names
static int ID_KEYWORD_VALUE
          For selecting a choice of display names
static int ID_LANGUAGE
          For selecting a choice of display names
static int ID_LOCALE
          For selecting a choice of display names
static int ID_SCRIPT
          For selecting a choice of display names
static int ID_TERRITORY
          For selecting a choice of display names
static int ID_TIMEZONE
          For selecting a choice of display names
static int ID_VARIANT
          For selecting a choice of display names
static int NF_CURRENCY
          Number Format type
static int NF_INTEGER
          Number Format type
static int NF_NUMBER
          Number Format type
static int NF_PERCENT
          Number Format type
static int NF_SCIENTIFIC
          Number Format type
 
Constructor Summary
GlobalizationPreferences()
          Default constructor
 
Method Summary
 GlobalizationPreferences cloneAsThawed()
          Provides for the clone operation.
 GlobalizationPreferences freeze()
          Locks the object.
 BreakIterator getBreakIterator(int type)
          Get a copy of the break iterator for the specified type according to the settings.
 Calendar getCalendar()
          Get a copy of the calendar according to the settings.
 Collator getCollator()
          Get a copy of the collator according to the settings.
 Currency getCurrency()
          Get a copy of the currency computed according to the settings.
 DateFormat getDateFormat(int dateStyle, int timeStyle)
          Gets a date format according to the current settings.
 String getDisplayName(String id, int type)
          Get the display name for an ID: language, script, territory, currency, timezone...
 ULocale getLocale(int index)
          Convenience function for getting the locales in priority order
 List<ULocale> getLocales()
          Get a copy of the language/locale priority list
 NumberFormat getNumberFormat(int style)
          Gets a number format according to the current settings.
 ResourceBundle getResourceBundle(String baseName)
          Convenience function to get a ResourceBundle instance using the specified base name based on the language/locale priority list stored in this object.
 ResourceBundle getResourceBundle(String baseName, ClassLoader loader)
          Convenience function to get a ResourceBundle instance using the specified base name and class loader based on the language/locale priority list stored in this object.
 String getTerritory()
          Gets the territory setting.
 TimeZone getTimeZone()
          Get the timezone.
protected  BreakIterator guessBreakIterator(int type)
          This function can be overridden by subclasses to use different heuristics.
protected  Calendar guessCalendar()
          This function can be overridden by subclasses to use different heuristics.
protected  Collator guessCollator()
          This function can be overridden by subclasses to use different heuristics.
protected  Currency guessCurrency()
          This function can be overridden by subclasses to use different heuristics
protected  DateFormat guessDateFormat(int dateStyle, int timeStyle)
          This function can be overridden by subclasses to use different heuristics.
protected  List<ULocale> guessLocales()
          This function can be overridden by subclasses to use different heuristics It MUST return a 'safe' value, one whose modification will not affect this object.
protected  NumberFormat guessNumberFormat(int style)
          This function can be overridden by subclasses to use different heuristics.
protected  String guessTerritory()
          This function can be overridden by subclasses to use different heuristics.
protected  TimeZone guessTimeZone()
          This function can be overridden by subclasses to use different heuristics.
 boolean isFrozen()
          Determines whether the object has been locked or not.
protected  List<ULocale> processLocales(List<ULocale> inputLocales)
          Process a language/locale priority list specified via setLocales.
 GlobalizationPreferences reset()
          Restore the object to the initial state.
 GlobalizationPreferences setBreakIterator(int type, BreakIterator iterator)
          Explicitly set the break iterator for this object.
 GlobalizationPreferences setCalendar(Calendar calendar)
          Sets the calendar.
 GlobalizationPreferences setCollator(Collator collator)
          Explicitly set the collator for this object.
 GlobalizationPreferences setCurrency(Currency currency)
          Sets the currency code.
 GlobalizationPreferences setDateFormat(int dateStyle, int timeStyle, DateFormat format)
          Set an explicit date format.
 GlobalizationPreferences setLocale(ULocale uLocale)
          Convenience routine for setting the language/locale priority list from a single locale/language.
 GlobalizationPreferences setLocales(List<ULocale> inputLocales)
          Sets the language/locale priority list.
 GlobalizationPreferences setLocales(String acceptLanguageString)
          Convenience routine for setting the locale priority list from an Accept-Language string.
 GlobalizationPreferences setLocales(ULocale[] uLocales)
          Convenience routine for setting the language/locale priority list from an array.
 GlobalizationPreferences setNumberFormat(int style, NumberFormat format)
          Sets a number format explicitly.
 GlobalizationPreferences setTerritory(String territory)
          Sets the territory, which is a valid territory according to for RFC 3066 (or successor).
 GlobalizationPreferences setTimeZone(TimeZone timezone)
          Sets the timezone ID.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NF_NUMBER

public static final int NF_NUMBER
Number Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

NF_CURRENCY

public static final int NF_CURRENCY
Number Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

NF_PERCENT

public static final int NF_PERCENT
Number Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

NF_SCIENTIFIC

public static final int NF_SCIENTIFIC
Number Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

NF_INTEGER

public static final int NF_INTEGER
Number Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

DF_FULL

public static final int DF_FULL
Date Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

DF_LONG

public static final int DF_LONG
Date Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

DF_MEDIUM

public static final int DF_MEDIUM
Date Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

DF_SHORT

public static final int DF_SHORT
Date Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

DF_NONE

public static final int DF_NONE
Date Format type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_LOCALE

public static final int ID_LOCALE
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_LANGUAGE

public static final int ID_LANGUAGE
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_SCRIPT

public static final int ID_SCRIPT
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_TERRITORY

public static final int ID_TERRITORY
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_VARIANT

public static final int ID_VARIANT
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_KEYWORD

public static final int ID_KEYWORD
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_KEYWORD_VALUE

public static final int ID_KEYWORD_VALUE
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_CURRENCY

public static final int ID_CURRENCY
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_CURRENCY_SYMBOL

public static final int ID_CURRENCY_SYMBOL
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

ID_TIMEZONE

public static final int ID_TIMEZONE
For selecting a choice of display names

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

BI_CHARACTER

public static final int BI_CHARACTER
Break iterator type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

BI_WORD

public static final int BI_WORD
Break iterator type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

BI_LINE

public static final int BI_LINE
Break iterator type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

BI_SENTENCE

public static final int BI_SENTENCE
Break iterator type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.

BI_TITLE

public static final int BI_TITLE
Break iterator type

See Also:
Constant Field Values
Status:
Draft ICU 3.6.
Constructor Detail

GlobalizationPreferences

public GlobalizationPreferences()
Default constructor

Status:
Draft ICU 3.6.
Method Detail

setLocales

public GlobalizationPreferences setLocales(List<ULocale> inputLocales)
Sets the language/locale priority list. If other information is not (yet) available, this is used to to produce a default value for the appropriate territory, currency, timezone, etc. The user should be given the opportunity to correct those defaults in case they are incorrect.

Parameters:
inputLocales - list of locales in priority order, eg {"be", "fr"} for Breton first, then French if that fails.
Returns:
this, for chaining
Status:
Draft ICU 3.6.

getLocales

public List<ULocale> getLocales()
Get a copy of the language/locale priority list

Returns:
a copy of the language/locale priority list.
Status:
Draft ICU 3.6.

getLocale

public ULocale getLocale(int index)
Convenience function for getting the locales in priority order

Parameters:
index - The index (0..n) of the desired item.
Returns:
desired item. null if index is out of range
Status:
Draft ICU 3.6.

setLocales

public GlobalizationPreferences setLocales(ULocale[] uLocales)
Convenience routine for setting the language/locale priority list from an array.

Parameters:
uLocales - list of locales in an array
Returns:
this, for chaining
See Also:
setLocales(List locales)
Status:
Draft ICU 3.6.

setLocale

public GlobalizationPreferences setLocale(ULocale uLocale)
Convenience routine for setting the language/locale priority list from a single locale/language.

Parameters:
uLocale - single locale
Returns:
this, for chaining
See Also:
setLocales(List locales)
Status:
Draft ICU 3.6.

setLocales

public GlobalizationPreferences setLocales(String acceptLanguageString)
Convenience routine for setting the locale priority list from an Accept-Language string.

Parameters:
acceptLanguageString - Accept-Language list, as defined by Section 14.4 of the RFC 2616 (HTTP 1.1)
Returns:
this, for chaining
See Also:
setLocales(List locales)
Status:
Draft ICU 3.6.

getResourceBundle

public ResourceBundle getResourceBundle(String baseName)
Convenience function to get a ResourceBundle instance using the specified base name based on the language/locale priority list stored in this object.

Parameters:
baseName - the base name of the resource bundle, a fully qualified class name
Returns:
a resource bundle for the given base name and locale based on the language/locale priority list stored in this object
Status:
Draft ICU 3.6.

getResourceBundle

public ResourceBundle getResourceBundle(String baseName,
                                        ClassLoader loader)
Convenience function to get a ResourceBundle instance using the specified base name and class loader based on the language/locale priority list stored in this object.

Parameters:
baseName - the base name of the resource bundle, a fully qualified class name
loader - the class object from which to load the resource bundle
Returns:
a resource bundle for the given base name and locale based on the language/locale priority list stored in this object
Status:
Draft ICU 3.6.

setTerritory

public GlobalizationPreferences setTerritory(String territory)
Sets the territory, which is a valid territory according to for RFC 3066 (or successor). If not otherwise set, default currency and timezone values will be set from this. The user should be given the opportunity to correct those defaults in case they are incorrect.

Parameters:
territory - code
Returns:
this, for chaining
Status:
Draft ICU 3.6.

getTerritory

public String getTerritory()
Gets the territory setting. If it wasn't explicitly set, it is computed from the general locale setting.

Returns:
territory code, explicit or implicit.
Status:
Draft ICU 3.6.

setCurrency

public GlobalizationPreferences setCurrency(Currency currency)
Sets the currency code. If this has not been set, uses default for territory.

Parameters:
currency - Valid ISO 4217 currency code.
Returns:
this, for chaining
Status:
Draft ICU 3.6.

getCurrency

public Currency getCurrency()
Get a copy of the currency computed according to the settings.

Returns:
currency code, explicit or implicit.
Status:
Draft ICU 3.6.

setCalendar

public GlobalizationPreferences setCalendar(Calendar calendar)
Sets the calendar. If this has not been set, uses default for territory.

Parameters:
calendar - arbitrary calendar
Returns:
this, for chaining
Status:
Draft ICU 3.6.

getCalendar

public Calendar getCalendar()
Get a copy of the calendar according to the settings.

Returns:
calendar explicit or implicit.
Status:
Draft ICU 3.6.

setTimeZone

public GlobalizationPreferences setTimeZone(TimeZone timezone)
Sets the timezone ID. If this has not been set, uses default for territory.

Parameters:
timezone - a valid TZID (see UTS#35).
Returns:
this, for chaining
Status:
Draft ICU 3.6.

getTimeZone

public TimeZone getTimeZone()
Get the timezone. It was either explicitly set, or is heuristically computed from other settings.

Returns:
timezone, either implicitly or explicitly set
Status:
Draft ICU 3.6.

getCollator

public Collator getCollator()
Get a copy of the collator according to the settings.

Returns:
collator explicit or implicit.
Status:
Draft ICU 3.6.

setCollator

public GlobalizationPreferences setCollator(Collator collator)
Explicitly set the collator for this object.

Parameters:
collator - The collator object to be passed.
Returns:
this, for chaining
Status:
Draft ICU 3.6.

getBreakIterator

public BreakIterator getBreakIterator(int type)
Get a copy of the break iterator for the specified type according to the settings.

Parameters:
type - break type - BI_CHARACTER or BI_WORD, BI_LINE, BI_SENTENCE, BI_TITLE
Returns:
break iterator explicit or implicit
Status:
Draft ICU 3.6.

setBreakIterator

public GlobalizationPreferences setBreakIterator(int type,
                                                 BreakIterator iterator)
Explicitly set the break iterator for this object.

Parameters:
type - break type - BI_CHARACTER or BI_WORD, BI_LINE, BI_SENTENCE, BI_TITLE
iterator - a break iterator
Returns:
this, for chaining
Status:
Draft ICU 3.6.

getDisplayName

public String getDisplayName(String id,
                             int type)
Get the display name for an ID: language, script, territory, currency, timezone... Uses the language priority list to do so.

Parameters:
id - language code, script code, ...
type - specifies the type of the ID: ID_LANGUAGE, etc.
Returns:
the display name
Status:
Draft ICU 3.6.

setDateFormat

public GlobalizationPreferences setDateFormat(int dateStyle,
                                              int timeStyle,
                                              DateFormat format)
Set an explicit date format. Overrides the locale priority list for a particular combination of dateStyle and timeStyle. DF_NONE should be used if for the style, where only the date or time format individually is being set.

Parameters:
dateStyle - DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
timeStyle - DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
format - The date format
Returns:
this, for chaining
Status:
Draft ICU 3.6.

getDateFormat

public DateFormat getDateFormat(int dateStyle,
                                int timeStyle)
Gets a date format according to the current settings. If there is an explicit (non-null) date/time format set, a copy of that is returned. Otherwise, the language priority list is used. DF_NONE should be used for the style, where only the date or time format individually is being gotten.

Parameters:
dateStyle - DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
timeStyle - DF_FULL, DF_LONG, DF_MEDIUM, DF_SHORT or DF_NONE
Returns:
a DateFormat, according to the above description
Status:
Draft ICU 3.6.

getNumberFormat

public NumberFormat getNumberFormat(int style)
Gets a number format according to the current settings. If there is an explicit (non-null) number format set, a copy of that is returned. Otherwise, the language priority list is used.

Parameters:
style - NF_NUMBER, NF_CURRENCY, NF_PERCENT, NF_SCIENTIFIC, NF_INTEGER
Status:
Draft ICU 3.6.

setNumberFormat

public GlobalizationPreferences setNumberFormat(int style,
                                                NumberFormat format)
Sets a number format explicitly. Overrides the general locale settings.

Parameters:
style - NF_NUMBER, NF_CURRENCY, NF_PERCENT, NF_SCIENTIFIC, NF_INTEGER
format - The number format
Returns:
this, for chaining
Status:
Draft ICU 3.6.

reset

public GlobalizationPreferences reset()
Restore the object to the initial state.

Returns:
this, for chaining
Status:
Draft ICU 3.6.

processLocales

protected List<ULocale> processLocales(List<ULocale> inputLocales)
Process a language/locale priority list specified via setLocales. The input locale list may be expanded or re-ordered to represent the prioritized language/locale order actually used by this object by the algorithm explained below.

Step 1: Move later occurrence of more specific locale before earlier occurrence of less specific locale.
Before: en, fr_FR, en_US, en_GB
After: en_US, en_GB, en, fr_FR

Step 2: Append a fallback locale to each locale.
Before: en_US, en_GB, en, fr_FR
After: en_US, en, en_GB, en, en, fr_FR, fr

Step 3: Remove earlier occurrence of duplicated locale entries.
Before: en_US, en, en_GB, en, en, fr_FR, fr
After: en_US, en_GB, en, fr_FR, fr

The final locale list is used to produce a default value for the appropriate territory, currency, timezone, etc. The list also represents the lookup order used in getResourceBundle for this object. A subclass may override this method to customize the algorithm used for populating the locale list.

Parameters:
inputLocales - The list of input locales
Status:
Draft ICU 3.6.

guessDateFormat

protected DateFormat guessDateFormat(int dateStyle,
                                     int timeStyle)
This function can be overridden by subclasses to use different heuristics. It MUST return a 'safe' value, one whose modification will not affect this object.

Parameters:
dateStyle -
timeStyle -
Status:
Draft ICU 3.6.

guessNumberFormat

protected NumberFormat guessNumberFormat(int style)
This function can be overridden by subclasses to use different heuristics. It MUST return a 'safe' value, one whose modification will not affect this object.

Parameters:
style -
Status:
Draft ICU 3.6.

guessTerritory

protected String guessTerritory()
This function can be overridden by subclasses to use different heuristics.

Status:
Draft ICU 3.6.

guessCurrency

protected Currency guessCurrency()
This function can be overridden by subclasses to use different heuristics

Status:
Draft ICU 3.6.

guessLocales

protected List<ULocale> guessLocales()
This function can be overridden by subclasses to use different heuristics It MUST return a 'safe' value, one whose modification will not affect this object.

Status:
Draft ICU 3.6.

guessCollator

protected Collator guessCollator()
This function can be overridden by subclasses to use different heuristics. It MUST return a 'safe' value, one whose modification will not affect this object.

Status:
Draft ICU 3.6.

guessBreakIterator

protected BreakIterator guessBreakIterator(int type)
This function can be overridden by subclasses to use different heuristics. It MUST return a 'safe' value, one whose modification will not affect this object.

Parameters:
type -
Status:
Draft ICU 3.6.

guessTimeZone

protected TimeZone guessTimeZone()
This function can be overridden by subclasses to use different heuristics. It MUST return a 'safe' value, one whose modification will not affect this object.

Status:
Draft ICU 3.6.

guessCalendar

protected Calendar guessCalendar()
This function can be overridden by subclasses to use different heuristics. It MUST return a 'safe' value, one whose modification will not affect this object.

Status:
Draft ICU 3.6.

isFrozen

public boolean isFrozen()
Description copied from interface: Freezable
Determines whether the object has been locked or not.

Specified by:
isFrozen in interface Freezable<GlobalizationPreferences>
Status:
Draft ICU 3.6.

freeze

public GlobalizationPreferences freeze()
Description copied from interface: Freezable
Locks the object.

Specified by:
freeze in interface Freezable<GlobalizationPreferences>
Returns:
the object itself.
Status:
Draft ICU 4.4.

cloneAsThawed

public GlobalizationPreferences cloneAsThawed()
Description copied from interface: Freezable
Provides for the clone operation. Any clone is initially unlocked.

Specified by:
cloneAsThawed in interface Freezable<GlobalizationPreferences>
Status:
Draft ICU 4.4.


Copyright (c) 2010 IBM Corporation and others.