1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage java.text; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ObjectInputStream; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ObjectOutputStream; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.ObjectStreamField; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.Serializable; 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Arrays; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Currency; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Locale; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 29e3c868c0d0db63e4ec97fad40c5f3b81e308b723Elliott Hughesimport com.ibm.icu4jni.util.LocaleData; 30e3c868c0d0db63e4ec97fad40c5f3b81e308b723Elliott Hughes 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Encapsulates the set of symbols (such as the decimal separator, the grouping 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * separator, and so on) needed by {@code DecimalFormat} to format numbers. 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code DecimalFormat} internally creates an instance of 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code DecimalFormatSymbols} from its locale data. If you need to change any 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of these symbols, you can get the {@code DecimalFormatSymbols} object from 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * your {@code DecimalFormat} and modify it. 38f2173758085110964523dcc11a7a8bc1c44d23c5Jesse Wilson * 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.util.Locale 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see DecimalFormat 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic final class DecimalFormatSymbols implements Cloneable, Serializable { 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final long serialVersionUID = 5772796243397350300L; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private final int ZeroDigit = 0, Digit = 1, DecimalSeparator = 2, 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project GroupingSeparator = 3, PatternSeparator = 4, Percent = 5, 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PerMill = 6, Exponent = 7, MonetaryDecimalSeparator = 8, 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MinusSign = 9; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 51b7df12f1bb73889f354806213b218a3a7d986448Elliott Hughes private transient char[] patternChars; 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private transient Currency currency; 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private transient Locale locale; 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private String infinity, NaN, currencySymbol, intlCurrencySymbol; 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new {@code DecimalFormatSymbols} containing the symbols for 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the default locale. Best practice is to create a {@code DecimalFormat} 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * and then to get the {@code DecimalFormatSymbols} from that object by 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * calling {@link DecimalFormat#getDecimalFormatSymbols()}. 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public DecimalFormatSymbols() { 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this(Locale.getDefault()); 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new DecimalFormatSymbols containing the symbols for the 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * specified Locale. Best practice is to create a {@code DecimalFormat} 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * and then to get the {@code DecimalFormatSymbols} from that object by 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * calling {@link DecimalFormat#getDecimalFormatSymbols()}. 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param locale 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the locale. 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public DecimalFormatSymbols(Locale locale) { 79f2173758085110964523dcc11a7a8bc1c44d23c5Jesse Wilson // BEGIN android-changed 80e3c868c0d0db63e4ec97fad40c5f3b81e308b723Elliott Hughes LocaleData localeData = com.ibm.icu4jni.util.Resources.getLocaleData(locale); 81e3c868c0d0db63e4ec97fad40c5f3b81e308b723Elliott Hughes this.patternChars = localeData.decimalPatternChars.toCharArray(); 82e3c868c0d0db63e4ec97fad40c5f3b81e308b723Elliott Hughes this.infinity = localeData.infinity; 83e3c868c0d0db63e4ec97fad40c5f3b81e308b723Elliott Hughes this.NaN = localeData.NaN; 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.locale = locale; 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currency = Currency.getInstance(locale); 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currencySymbol = currency.getSymbol(locale); 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project intlCurrencySymbol = currency.getCurrencyCode(); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currency = Currency.getInstance("XXX"); //$NON-NLS-1$ 91e3c868c0d0db63e4ec97fad40c5f3b81e308b723Elliott Hughes currencySymbol = localeData.currencySymbol; 92e3c868c0d0db63e4ec97fad40c5f3b81e308b723Elliott Hughes intlCurrencySymbol = localeData.internationalCurrencySymbol; 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 94f2173758085110964523dcc11a7a8bc1c44d23c5Jesse Wilson // END android-changed 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 97f2173758085110964523dcc11a7a8bc1c44d23c5Jesse Wilson 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a new {@code DecimalFormatSymbols} with the same symbols as this 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code DecimalFormatSymbols}. 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a shallow copy of this {@code DecimalFormatSymbols}. 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.lang.Cloneable 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Object clone() { 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project DecimalFormatSymbols symbols = (DecimalFormatSymbols) super.clone(); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project symbols.patternChars = patternChars.clone(); 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return symbols; 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (CloneNotSupportedException e) { 113a0ebf91e58c17487a8bd1be6e64193193deae26fJesse Wilson throw new AssertionError(e); // android-changed 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Compares the specified object to this {@code DecimalFormatSymbols} and 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * indicates if they are equal. In order to be equal, {@code object} must be 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * an instance of {@code DecimalFormatSymbols} and contain the same symbols. 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param object 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the object to compare with this object. 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return {@code true} if the specified object is equal to this 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code DecimalFormatSymbols}; {@code false} otherwise. 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #hashCode 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean equals(Object object) { 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (this == object) { 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return true; 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!(object instanceof DecimalFormatSymbols)) { 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return false; 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project DecimalFormatSymbols obj = (DecimalFormatSymbols) object; 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return Arrays.equals(patternChars, obj.patternChars) 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && infinity.equals(obj.infinity) && NaN.equals(obj.NaN) 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && currencySymbol.equals(obj.currencySymbol) 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && intlCurrencySymbol.equals(obj.intlCurrencySymbol); 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the currency. 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code null} is returned if {@code setInternationalCurrencySymbol()} has 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * been previously called with a value that is not a valid ISO 4217 currency 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * code. 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 150f2173758085110964523dcc11a7a8bc1c44d23c5Jesse Wilson * 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the currency that was set in the constructor or by calling 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code setCurrency()} or {@code setInternationalCurrencySymbol()}, 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * or {@code null} if an invalid currency was set. 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #setCurrency(Currency) 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #setInternationalCurrencySymbol(String) 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Currency getCurrency() { 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return currency; 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the international currency symbol. 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the international currency symbol as string. 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getInternationalCurrencySymbol() { 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return intlCurrencySymbol; 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the currency symbol. 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the currency symbol as string. 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getCurrencySymbol() { 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return currencySymbol; 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the character which represents the decimal point in a number. 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the decimal separator character. 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public char getDecimalSeparator() { 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[DecimalSeparator]; 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the character which represents a single digit in a format 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * pattern. 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the digit pattern character. 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public char getDigit() { 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[Digit]; 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the character used as the thousands separator in a number. 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the thousands separator character. 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public char getGroupingSeparator() { 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[GroupingSeparator]; 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the string which represents infinity. 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the infinity symbol as a string. 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getInfinity() { 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return infinity; 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the minus sign character. 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the minus sign as a character. 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public char getMinusSign() { 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[MinusSign]; 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the character which represents the decimal point in a monetary 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value. 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the monetary decimal point as a character. 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public char getMonetaryDecimalSeparator() { 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[MonetaryDecimalSeparator]; 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the string which represents NaN. 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the symbol NaN as a string. 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getNaN() { 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return NaN; 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the character which separates the positive and negative patterns 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * in a format pattern. 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the pattern separator character. 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public char getPatternSeparator() { 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[PatternSeparator]; 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the percent character. 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the percent character. 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public char getPercent() { 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[Percent]; 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the per mill sign character. 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the per mill sign character. 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public char getPerMill() { 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[PerMill]; 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the character which represents zero. 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the zero character. 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public char getZeroDigit() { 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[ZeroDigit]; 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the exponent as a character. 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char getExponential() { 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return patternChars[Exponent]; 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int hashCode() { 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new String(patternChars).hashCode() + infinity.hashCode() 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + NaN.hashCode() + currencySymbol.hashCode() 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + intlCurrencySymbol.hashCode(); 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the currency. 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The international currency symbol and the currency symbol are updated, 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * but the min and max number of fraction digits stays the same. 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param currency 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the new currency. 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws NullPointerException 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if {@code currency} is {@code null}. 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setCurrency(Currency currency) { 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (currency == null) { 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException(); 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (currency == this.currency) { 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.currency = currency; 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project intlCurrencySymbol = currency.getCurrencyCode(); 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currencySymbol = currency.getSymbol(locale); 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the international currency symbol. 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The currency and currency symbol are also updated if {@code value} is a 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * valid ISO4217 currency code. 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p> 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The min and max number of fraction digits stay the same. 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the currency code. 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setInternationalCurrencySymbol(String value) { 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (value == null) { 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currency = null; 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project intlCurrencySymbol = null; 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (value.equals(intlCurrencySymbol)) { 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currency = Currency.getInstance(value); 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currencySymbol = currency.getSymbol(locale); 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currency = null; 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project intlCurrencySymbol = value; 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the currency symbol. 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the currency symbol. 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setCurrencySymbol(String value) { 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currencySymbol = value; 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the character which represents the decimal point in a number. 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the decimal separator character. 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setDecimalSeparator(char value) { 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[DecimalSeparator] = value; 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the character which represents a single digit in a format pattern. 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the digit character. 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setDigit(char value) { 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[Digit] = value; 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the character used as the thousands separator in a number. 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the grouping separator character. 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setGroupingSeparator(char value) { 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[GroupingSeparator] = value; 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the string which represents infinity. 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the string representing infinity. 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setInfinity(String value) { 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project infinity = value; 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the minus sign character. 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the minus sign character. 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setMinusSign(char value) { 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[MinusSign] = value; 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the character which represents the decimal point in a monetary 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * value. 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the monetary decimal separator character. 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setMonetaryDecimalSeparator(char value) { 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[MonetaryDecimalSeparator] = value; 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the string which represents NaN. 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the string representing NaN. 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setNaN(String value) { 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NaN = value; 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the character which separates the positive and negative patterns in 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * a format pattern. 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the pattern separator character. 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setPatternSeparator(char value) { 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[PatternSeparator] = value; 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the percent character. 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the percent character. 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setPercent(char value) { 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[Percent] = value; 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the per mill sign character. 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the per mill character. 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setPerMill(char value) { 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[PerMill] = value; 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the character which represents zero. 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param value 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the zero digit character. 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void setZeroDigit(char value) { 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[ZeroDigit] = value; 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Sets the exponent character. 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project void setExponential(char value) { 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars[Exponent] = value; 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final ObjectStreamField[] serialPersistentFields = { 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("currencySymbol", String.class), //$NON-NLS-1$ 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("decimalSeparator", Character.TYPE), //$NON-NLS-1$ 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("digit", Character.TYPE), //$NON-NLS-1$ 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("exponential", Character.TYPE), //$NON-NLS-1$ 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("groupingSeparator", Character.TYPE), //$NON-NLS-1$ 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("infinity", String.class), //$NON-NLS-1$ 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("intlCurrencySymbol", String.class), //$NON-NLS-1$ 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("minusSign", Character.TYPE), //$NON-NLS-1$ 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("monetarySeparator", Character.TYPE), //$NON-NLS-1$ 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("NaN", String.class), //$NON-NLS-1$ 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("patternSeparator", Character.TYPE), //$NON-NLS-1$ 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("percent", Character.TYPE), //$NON-NLS-1$ 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("perMill", Character.TYPE), //$NON-NLS-1$ 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("serialVersionOnStream", Integer.TYPE), //$NON-NLS-1$ 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("zeroDigit", Character.TYPE), //$NON-NLS-1$ 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new ObjectStreamField("locale", Locale.class), }; //$NON-NLS-1$ 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void writeObject(ObjectOutputStream stream) throws IOException { 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectOutputStream.PutField fields = stream.putFields(); 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("currencySymbol", currencySymbol); //$NON-NLS-1$ 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("decimalSeparator", getDecimalSeparator()); //$NON-NLS-1$ 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("digit", getDigit()); //$NON-NLS-1$ 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("exponential", getExponential()); //$NON-NLS-1$ 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("groupingSeparator", getGroupingSeparator()); //$NON-NLS-1$ 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("infinity", infinity); //$NON-NLS-1$ 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("intlCurrencySymbol", intlCurrencySymbol); //$NON-NLS-1$ 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("minusSign", getMinusSign()); //$NON-NLS-1$ 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("monetarySeparator", getMonetaryDecimalSeparator()); //$NON-NLS-1$ 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("NaN", NaN); //$NON-NLS-1$ 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("patternSeparator", getPatternSeparator()); //$NON-NLS-1$ 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("percent", getPercent()); //$NON-NLS-1$ 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("perMill", getPerMill()); //$NON-NLS-1$ 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("serialVersionOnStream", 1); //$NON-NLS-1$ 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("zeroDigit", getZeroDigit()); //$NON-NLS-1$ 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fields.put("locale", locale); //$NON-NLS-1$ 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project stream.writeFields(); 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private void readObject(ObjectInputStream stream) throws IOException, 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ClassNotFoundException { 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ObjectInputStream.GetField fields = stream.readFields(); 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project patternChars = new char[10]; 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currencySymbol = (String) fields.get("currencySymbol", ""); //$NON-NLS-1$ //$NON-NLS-2$ 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setDecimalSeparator(fields.get("decimalSeparator", '.')); //$NON-NLS-1$ 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setDigit(fields.get("digit", '#')); //$NON-NLS-1$ 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setGroupingSeparator(fields.get("groupingSeparator", ',')); //$NON-NLS-1$ 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project infinity = (String) fields.get("infinity", ""); //$NON-NLS-1$ //$NON-NLS-2$ 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project intlCurrencySymbol = (String) fields.get("intlCurrencySymbol", ""); //$NON-NLS-1$ //$NON-NLS-2$ 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setMinusSign(fields.get("minusSign", '-')); //$NON-NLS-1$ 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NaN = (String) fields.get("NaN", ""); //$NON-NLS-1$ //$NON-NLS-2$ 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setPatternSeparator(fields.get("patternSeparator", ';')); //$NON-NLS-1$ 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setPercent(fields.get("percent", '%')); //$NON-NLS-1$ 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setPerMill(fields.get("perMill", '\u2030')); //$NON-NLS-1$ 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setZeroDigit(fields.get("zeroDigit", '0')); //$NON-NLS-1$ 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project locale = (Locale) fields.get("locale", null); //$NON-NLS-1$ 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (fields.get("serialVersionOnStream", 0) == 0) { //$NON-NLS-1$ 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setMonetaryDecimalSeparator(getDecimalSeparator()); 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setExponential('E'); 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } else { 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setMonetaryDecimalSeparator(fields.get("monetarySeparator", '.')); //$NON-NLS-1$ 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project setExponential(fields.get("exponential", 'E')); //$NON-NLS-1$ 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currency = Currency.getInstance(intlCurrencySymbol); 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project currency = null; 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 550