diff options
Diffstat (limited to 'libjava/java/text/DecimalFormatSymbols.java')
-rw-r--r-- | libjava/java/text/DecimalFormatSymbols.java | 647 |
1 files changed, 443 insertions, 204 deletions
diff --git a/libjava/java/text/DecimalFormatSymbols.java b/libjava/java/text/DecimalFormatSymbols.java index 0f404a57235..bc5776a5668 100644 --- a/libjava/java/text/DecimalFormatSymbols.java +++ b/libjava/java/text/DecimalFormatSymbols.java @@ -1,12 +1,29 @@ -// DecimalFormatSymbols.java - Symbols used to format numbers. +/* DecimalFormatSymbols.java -- Format symbols used by DecimalFormat + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. -/* Copyright (C) 1999, 2000 Free Software Foundation +This file is part of GNU Classpath. - This file is part of libgcj. +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. + +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ package java.text; @@ -18,302 +35,524 @@ import java.io.ObjectInputStream; import java.io.IOException; /** + * This class is a container for the symbols used by + * <code>DecimalFormat</code> to format numbers and currency. These are + * normally handled automatically, but an application can override + * values as desired using this class. + * * @author Tom Tromey <tromey@cygnus.com> + * @author Aaron M. Renn (arenn@urbanophile.com) * @date February 24, 1999 */ /* Written using "Java Class Libraries", 2nd edition, plus online * API docs for JDK 1.2 from http://www.javasoft.com. * Status: Believed complete and correct to 1.2. */ - public final class DecimalFormatSymbols implements Cloneable, Serializable { public Object clone () - { - return new DecimalFormatSymbols (this); - } - - private DecimalFormatSymbols (DecimalFormatSymbols orig) - { - this.currencySymbol = orig.currencySymbol; - this.decimalSeparator = orig.decimalSeparator; - this.digit = orig.digit; - this.exponential = orig.exponential; - this.groupingSeparator = orig.groupingSeparator; - this.infinity = orig.infinity; - this.intlCurrencySymbol = orig.intlCurrencySymbol; - this.monetarySeparator = orig.monetarySeparator; - this.minusSign = orig.minusSign; - this.NaN = orig.NaN; - this.patternSeparator = orig.patternSeparator; - this.percent = orig.percent; - this.perMill = orig.perMill; - this.zeroDigit = orig.zeroDigit; - } + { + try + { + return super.clone (); + } + catch(CloneNotSupportedException e) + { + return null; + } + } + /** + * This method initializes a new instance of + * <code>DecimalFormatSymbols</code> for the default locale. + */ public DecimalFormatSymbols () - { - this (Locale.getDefault()); - } + { + this (Locale.getDefault()); + } private final String safeGetString (ResourceBundle bundle, String name, String def) - { - if (bundle != null) - { - try - { - return bundle.getString(name); - } - catch (MissingResourceException x) - { - } - } - return def; - } + { + if (bundle != null) + { + try + { + return bundle.getString(name); + } + catch (MissingResourceException x) + { + } + } + return def; + } private final char safeGetChar (ResourceBundle bundle, String name, char def) - { - String r = null; - if (bundle != null) - { - try - { - r = bundle.getString(name); - } - catch (MissingResourceException x) - { - } - } - if (r == null || r.length() < 1) - return def; - return r.charAt(0); - } + { + String r = null; + if (bundle != null) + { + try + { + r = bundle.getString(name); + } + catch (MissingResourceException x) + { + } + } + if (r == null || r.length() < 1) + return def; + return r.charAt(0); + } + /** + * This method initializes a new instance of + * <code>DecimalFormatSymbols</code> for the specified locale. + * + * @param locale The local to load symbols for. + */ public DecimalFormatSymbols (Locale loc) - { - ResourceBundle res; - try - { - res = ResourceBundle.getBundle("gnu.gcj.text.LocaleData", loc); - } - catch (MissingResourceException x) - { - res = null; - } - currencySymbol = safeGetString (res, "currencySymbol", "$"); - decimalSeparator = safeGetChar (res, "decimalSeparator", '.'); - digit = safeGetChar (res, "digit", '#'); - exponential = safeGetChar (res, "exponential", 'E'); - groupingSeparator = safeGetChar (res, "groupingSeparator", ','); - infinity = safeGetString (res, "infinity", "\u221e"); - // FIXME: default? - intlCurrencySymbol = safeGetString (res, "intlCurrencySymbol", "$"); - try - { - monetarySeparator = safeGetChar (res, "monetarySeparator", '.'); - } - catch (MissingResourceException x) - { - monetarySeparator = decimalSeparator; - } - minusSign = safeGetChar (res, "minusSign", '-'); - NaN = safeGetString (res, "NaN", "\ufffd"); - patternSeparator = safeGetChar (res, "patternSeparator", ';'); - percent = safeGetChar (res, "percent", '%'); - perMill = safeGetChar (res, "perMill", '\u2030'); - zeroDigit = safeGetChar (res, "zeroDigit", '0'); - } + { + ResourceBundle res; + try + { + res = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation", + loc); + } + catch (MissingResourceException x) + { + res = null; + } + currencySymbol = safeGetString (res, "currencySymbol", "$"); + decimalSeparator = safeGetChar (res, "decimalSeparator", '.'); + digit = safeGetChar (res, "digit", '#'); + exponential = safeGetChar (res, "exponential", 'E'); + groupingSeparator = safeGetChar (res, "groupingSeparator", ','); + infinity = safeGetString (res, "infinity", "\u221e"); + // FIXME: default? + intlCurrencySymbol = safeGetString (res, "intlCurrencySymbol", "$"); + try + { + monetarySeparator = safeGetChar (res, "monetarySeparator", '.'); + } + catch (MissingResourceException x) + { + monetarySeparator = decimalSeparator; + } + minusSign = safeGetChar (res, "minusSign", '-'); + NaN = safeGetString (res, "NaN", "\ufffd"); + patternSeparator = safeGetChar (res, "patternSeparator", ';'); + percent = safeGetChar (res, "percent", '%'); + perMill = safeGetChar (res, "perMill", '\u2030'); + zeroDigit = safeGetChar (res, "zeroDigit", '0'); + } + /** + * This method this this object for equality against the specified object. + * This will be true if and only if the following criteria are met with + * regard to the specified object: + * <p> + * <ul> + * <li>It is not <code>null</code>. + * <li>It is an instance of <code>DecimalFormatSymbols</code> + * <li>All of its symbols are identical to the symbols in this object. + * </ul> + * + * @return <code>true</code> if the specified object is equal to this + * object, <code>false</code> otherwise. + */ public boolean equals (Object obj) - { - if (! (obj instanceof DecimalFormatSymbols)) - return false; - DecimalFormatSymbols dfs = (DecimalFormatSymbols) obj; - return (currencySymbol.equals(dfs.currencySymbol) - && decimalSeparator == dfs.decimalSeparator - && digit == dfs.digit - && exponential == dfs.exponential - && groupingSeparator == dfs.groupingSeparator - && infinity.equals(dfs.infinity) - && intlCurrencySymbol.equals(dfs.intlCurrencySymbol) - && minusSign == dfs.minusSign - && monetarySeparator == dfs.monetarySeparator - && NaN.equals(dfs.NaN) - && patternSeparator == dfs.patternSeparator - && percent == dfs.percent - && perMill == dfs.perMill - && zeroDigit == dfs.zeroDigit); - } + { + if (! (obj instanceof DecimalFormatSymbols)) + return false; + DecimalFormatSymbols dfs = (DecimalFormatSymbols) obj; + return (currencySymbol.equals(dfs.currencySymbol) + && decimalSeparator == dfs.decimalSeparator + && digit == dfs.digit + && exponential == dfs.exponential + && groupingSeparator == dfs.groupingSeparator + && infinity.equals(dfs.infinity) + && intlCurrencySymbol.equals(dfs.intlCurrencySymbol) + && minusSign == dfs.minusSign + && monetarySeparator == dfs.monetarySeparator + && NaN.equals(dfs.NaN) + && patternSeparator == dfs.patternSeparator + && percent == dfs.percent + && perMill == dfs.perMill + && zeroDigit == dfs.zeroDigit); + } + /** + * This method returns the currency symbol in local format. For example, + * "$" for Canadian dollars. + * + * @return The currency symbol in local format. + */ public String getCurrencySymbol () - { - return currencySymbol; - } + { + return currencySymbol; + } + /** + * This method returns the character used as the decimal point. + * + * @return The character used as the decimal point. + */ public char getDecimalSeparator () - { - return decimalSeparator; - } + { + return decimalSeparator; + } + /** + * This method returns the character used to represent a digit in a + * format pattern string. + * + * @return The character used to represent a digit in a format + * pattern string. + */ public char getDigit () - { - return digit; - } + { + return digit; + } // This is our own extension. char getExponential () - { - return exponential; - } + { + return exponential; + } + /** + * This method sets the character used to separate groups of digits. For + * example, the United States uses a comma (,) to separate thousands in + * a number. + * + * @return The character used to separate groups of digits. + */ public char getGroupingSeparator () - { - return groupingSeparator; - } + { + return groupingSeparator; + } + /** + * This method returns the character used to represent infinity. + * + * @return The character used to represent infinity. + */ public String getInfinity () - { - return infinity; - } + { + return infinity; + } + /** + * This method returns the currency symbol in international format. For + * example, "C$" for Canadian dollars. + * + * @return The currency symbol in international format. + */ public String getInternationalCurrencySymbol () - { - return intlCurrencySymbol; - } + { + return intlCurrencySymbol; + } + /** + * This method returns the character used to represent the minus sign. + * + * @return The character used to represent the minus sign. + */ public char getMinusSign () - { - return minusSign; - } + { + return minusSign; + } + /** + * This method returns the character used to represent the decimal + * point for currency values. + * + * @return The decimal point character used in currency values. + */ public char getMonetaryDecimalSeparator () - { - return monetarySeparator; - } + { + return monetarySeparator; + } + /** + * This method returns the string used to represent the NaN (not a number) + * value. + * + * @return The string used to represent NaN + */ public String getNaN () - { - return NaN; - } + { + return NaN; + } + /** + * This method returns the character used to separate positive and negative + * subpatterns in a format pattern. + * + * @return The character used to separate positive and negative subpatterns + * in a format pattern. + */ public char getPatternSeparator () - { - return patternSeparator; - } + { + return patternSeparator; + } + /** + * This method returns the character used as the percent sign. + * + * @return The character used as the percent sign. + */ public char getPercent () - { - return percent; - } + { + return percent; + } + /** + * This method returns the character used as the per mille character. + * + * @return The per mille character. + */ public char getPerMill () - { - return perMill; - } + { + return perMill; + } + /** + * This method returns the character used to represent the digit zero. + * + * @return The character used to represent the digit zero. + */ public char getZeroDigit () - { - return zeroDigit; - } + { + return zeroDigit; + } + /** + * This method returns a hash value for this object. + * + * @return A hash value for this object. + */ public int hashCode () - { - // Compute based on zero digit, grouping separator, and decimal - // separator -- JCL book. This probably isn't a very good hash - // code. - return zeroDigit << 16 + groupingSeparator << 8 + decimalSeparator; - } + { + // Compute based on zero digit, grouping separator, and decimal + // separator -- JCL book. This probably isn't a very good hash + // code. + return zeroDigit << 16 + groupingSeparator << 8 + decimalSeparator; + } + /** + * This method sets the currency symbol to the specified value. + * + * @param currencySymbol The new currency symbol + */ public void setCurrencySymbol (String currency) - { - currencySymbol = currency; - } + { + currencySymbol = currency; + } + /** + * This method sets the decimal point character to the specified value. + * + * @param decimalSeparator The new decimal point character + */ public void setDecimalSeparator (char decimalSep) - { - decimalSeparator = decimalSep; - } + { + decimalSeparator = decimalSep; + } + /** + * This method sets the character used to represents a digit in a format + * string to the specified value. + * + * @param digit The character used to represent a digit in a format pattern. + */ public void setDigit (char digit) - { - this.digit = digit; - } + { + this.digit = digit; + } // This is our own extension. void setExponential (char exp) - { - exponential = exp; - } + { + exponential = exp; + } + /** + * This method sets the character used to separate groups of digits. + * + * @param groupingSeparator The character used to separate groups of digits. + */ public void setGroupingSeparator (char groupSep) - { - groupingSeparator = groupSep; - } + { + groupingSeparator = groupSep; + } + /** + * This method sets the string used to represents infinity. + * + * @param infinity The string used to represent infinity. + */ public void setInfinity (String infinity) - { - this.infinity = infinity; - } + { + this.infinity = infinity; + } + /** + * This method sets the international currency symbols to the + * specified value. + * + * @param intlCurrencySymbol The new international currency symbol. + */ public void setInternationalCurrencySymbol (String currency) - { - intlCurrencySymbol = currency; - } + { + intlCurrencySymbol = currency; + } + /** + * This method sets the character used to represent the minus sign. + * + * @param minusSign The character used to represent the minus sign. + */ public void setMinusSign (char minusSign) - { - this.minusSign = minusSign; - } + { + this.minusSign = minusSign; + } + /** + * This method sets the character used for the decimal point in currency + * values. + * + * @param monetarySeparator The decimal point character used in + * currency values. + */ public void setMonetaryDecimalSeparator (char decimalSep) - { - monetarySeparator = decimalSep; - } + { + monetarySeparator = decimalSep; + } + /** + * This method sets the string used to represent the NaN (not a + * number) value. + * + * @param NaN The string used to represent NaN + */ public void setNaN (String nan) - { - NaN = nan; - } + { + NaN = nan; + } + /** + * This method sets the character used to separate positive and negative + * subpatterns in a format pattern. + * + * @param patternSeparator The character used to separate positive and + * negative subpatterns in a format pattern. + */ public void setPatternSeparator (char patternSep) - { - patternSeparator = patternSep; - } + { + patternSeparator = patternSep; + } + /** + * This method sets the character used as the percent sign. + * + * @param percent The character used as the percent sign. + */ public void setPercent (char percent) - { - this.percent = percent; - } + { + this.percent = percent; + } + /** + * This method sets the character used as the per mille character. + * + * @param perMill The per mille character. + */ public void setPerMill (char perMill) - { - this.perMill = perMill; - } + { + this.perMill = perMill; + } + /** + * This method sets the charcter used to represen the digit zero. + * + * @param zeroDigit The character used to represent the digit zero. + */ public void setZeroDigit (char zeroDigit) - { - this.zeroDigit = zeroDigit; - } + { + this.zeroDigit = zeroDigit; + } - // The names of the instance variables are fixed by the - // serialization spec. + /** + * @serial A string used for the local currency + */ private String currencySymbol; + /** + * @serial The <code>char</code> used to separate decimals in a number. + */ private char decimalSeparator; + /** + * @serial This is the <code>char</code> used to represent a digit in + * a format specification. + */ private char digit; + /** + * @serial This is the <code>char</code> used to represent the exponent + * separator in exponential notation. + */ private char exponential; + /** + * @serial This separates groups of thousands in numbers. + */ private char groupingSeparator; + /** + * @serial This string represents infinity. + */ private String infinity; + /** + * @serial This string represents the local currency in an international + * context, eg, "C$" for Canadian dollars. + */ private String intlCurrencySymbol; + /** + * @serial This is the character used to represent the minus sign. + */ private char minusSign; + /** + * @serial This character is used to separate decimals when formatting + * currency values. + */ private char monetarySeparator; + /** + * @serial This string is used the represent the Java NaN value for + * "not a number". + */ private String NaN; + /** + * @serial This is the character used to separate positive and negative + * subpatterns in a format pattern. + */ private char patternSeparator; + /** + * @serial This is the percent symbols + */ private char percent; + /** + * @serial This character is used for the mille percent sign. + */ private char perMill; + /** + * @serial This value represents the type of object being de-serialized. + * 0 indicates a pre-Java 1.1.6 version, 1 indicates 1.1.6 or later. + */ private int serialVersionOnStream = 1; + /** + * @serial This is the character used to represent 0. + */ private char zeroDigit; + private static final long serialVersionUID = 5772796243397350300L; private void readObject(ObjectInputStream stream) |