All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tec.units.ri.internal.format.l10n.DecimalFormatSymbols Maven / Gradle / Ivy

There is a newer version: 1.0.3
Show newest version
/*
 * Units of Measurement Reference Implementation
 * Copyright (c) 2005-2016, Jean-Marie Dautelle, Werner Keil, V2COM.
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
 *    and the following disclaimer in the documentation and/or other materials provided with the distribution.
 *
 * 3. Neither the name of JSR-363 nor the names of its contributors may be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package tec.units.ri.internal.format.l10n;

/*
 * 
 * Portions Copyright  2000-2006 Sun Microsystems, Inc. All Rights
 * Reserved.  Use is subject to license terms.
 */
/*
 * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
 * (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
 *
 *   The original version of this source code and documentation is copyrighted
 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
 * materials are provided under terms of a License Agreement between Taligent
 * and Sun. This technology is protected by multiple US and International
 * patents. This notice and attribution to Taligent may not be removed.
 *   Taligent is a registered trademark of Taligent, Inc.
 *
 */

/**
 * This class represents the set of symbols (such as the decimal separator, the grouping separator, and so on) needed by DecimalFormat to
 * format numbers. DecimalFormat creates for itself an instance of DecimalFormatSymbols from its locale data. If you need to
 * change any of these symbols, you can get the DecimalFormatSymbols object from your DecimalFormat and modify it.
 *
 * @see DecimalFormat
 * @author Mark Davis
 * @author Alan Liu
 */

final class DecimalFormatSymbols {

  DecimalFormatSymbols() {
  }

  /**
   * Gets the character used for zero. Different for Arabic, etc.
   */
  public char getZeroDigit() {
    return zeroDigit;
  }

  /**
   * Sets the character used for zero. Different for Arabic, etc.
   */
  public void setZeroDigit(char zeroDigit) {
    this.zeroDigit = zeroDigit;
  }

  /**
   * Gets the character used for thousands separator. Different for French, etc.
   */
  public char getGroupingSeparator() {
    return groupingSeparator;
  }

  /**
   * Sets the character used for thousands separator. Different for French, etc.
   */
  public void setGroupingSeparator(char groupingSeparator) {
    this.groupingSeparator = groupingSeparator;
  }

  /**
   * Gets the character used for decimal sign. Different for French, etc.
   */
  public char getDecimalSeparator() {
    return decimalSeparator;
  }

  /**
   * Sets the character used for decimal sign. Different for French, etc.
   */
  public void setDecimalSeparator(char decimalSeparator) {
    this.decimalSeparator = decimalSeparator;
  }

  /**
   * Gets the character used for mille percent sign. Different for Arabic, etc.
   */
  public char getPerMill() {
    return perMill;
  }

  /**
   * Sets the character used for mille percent sign. Different for Arabic, etc.
   */
  public void setPerMill(char perMill) {
    this.perMill = perMill;
  }

  /**
   * Gets the character used for percent sign. Different for Arabic, etc.
   */
  public char getPercent() {
    return percent;
  }

  /**
   * Sets the character used for percent sign. Different for Arabic, etc.
   */
  public void setPercent(char percent) {
    this.percent = percent;
  }

  /**
   * Gets the character used for a digit in a pattern.
   */
  public char getDigit() {
    return digit;
  }

  /**
   * Sets the character used for a digit in a pattern.
   */
  public void setDigit(char digit) {
    this.digit = digit;
  }

  /**
   * Gets the character used to separate positive and negative subpatterns in a pattern.
   */
  public char getPatternSeparator() {
    return patternSeparator;
  }

  /**
   * Sets the character used to separate positive and negative subpatterns in a pattern.
   */
  public void setPatternSeparator(char patternSeparator) {
    this.patternSeparator = patternSeparator;
  }

  /**
   * Gets the string used to represent infinity. Almost always left unchanged.
   */
  public String getInfinity() {
    return infinity;
  }

  /**
   * Sets the string used to represent infinity. Almost always left unchanged.
   */
  public void setInfinity(String infinity) {
    this.infinity = infinity;
  }

  /**
   * Gets the string used to represent "not a number". Almost always left unchanged.
   */
  public String getNaN() {
    return NaN;
  }

  /**
   * Sets the string used to represent "not a number". Almost always left unchanged.
   */
  public void setNaN(String NaN) {
    this.NaN = NaN;
  }

  /**
   * Gets the character used to represent minus sign. If no explicit negative format is specified, one is formed by prefixing minusSign to the
   * positive format.
   */
  public char getMinusSign() {
    return minusSign;
  }

  /**
   * Sets the character used to represent minus sign. If no explicit negative format is specified, one is formed by prefixing minusSign to the
   * positive format.
   */
  public void setMinusSign(char minusSign) {
    this.minusSign = minusSign;
  }

  /**
   * Returns the currency symbol for the currency of these DecimalFormatSymbols in their locale.
   * 
   * @since 1.2
   */
  public String getCurrencySymbol() {
    return currencySymbol;
  }

  /**
   * Sets the currency symbol for the currency of these DecimalFormatSymbols in their locale.
   * 
   * @since 1.2
   */
  public void setCurrencySymbol(String currency) {
    currencySymbol = currency;
  }

  /**
   * Returns the monetary decimal separator.
   * 
   * @since 1.2
   */
  public char getMonetaryDecimalSeparator() {
    return monetarySeparator;
  }

  /**
   * Sets the monetary decimal separator.
   * 
   * @since 1.2
   */
  public void setMonetaryDecimalSeparator(char sep) {
    monetarySeparator = sep;
  }

  // ------------------------------------------------------------
  // BEGIN Package Private methods ... to be made public later
  // ------------------------------------------------------------

  /**
   * Returns the character used to separate the mantissa from the exponent.
   */
  char getExponentialSymbol() {
    return exponential;
  }

  /**
   * Sets the character used to separate the mantissa from the exponent.
   */
  void setExponentialSymbol(char exp) {
    exponential = exp;
  }

  // ------------------------------------------------------------
  // END Package Private methods ... to be made public later
  // ------------------------------------------------------------

  /**
   * Override equals.
   */
  public boolean equals(Object obj) {
    if (obj == null)
      return false;
    if (this == obj)
      return true;
    if (getClass() != obj.getClass())
      return false;
    DecimalFormatSymbols other = (DecimalFormatSymbols) obj;
    return (zeroDigit == other.zeroDigit && groupingSeparator == other.groupingSeparator && decimalSeparator == other.decimalSeparator
        && percent == other.percent && perMill == other.perMill && digit == other.digit && minusSign == other.minusSign
        && patternSeparator == other.patternSeparator && infinity.equals(other.infinity) && NaN.equals(other.NaN)
        && currencySymbol.equals(other.currencySymbol) && monetarySeparator == other.monetarySeparator);
  }

  /**
   * Override hashCode.
   */
  public int hashCode() {
    int result = zeroDigit;
    result = result * 37 + groupingSeparator;
    result = result * 37 + decimalSeparator;
    return result;
  }

  /**
   * Character used for zero.
   *
   * @serial
   * @see #getZeroDigit
   */
  private char zeroDigit = '0';

  /**
   * Character used for thousands separator.
   *
   * @serial
   * @see #getGroupingSeparator
   */
  private char groupingSeparator = ',';

  /**
   * Character used for decimal sign.
   *
   * @serial
   * @see #getDecimalSeparator
   */
  private char decimalSeparator = '.';

  /**
   * Character used for mille percent sign.
   *
   * @serial
   * @see #getPerMill
   */
  private char perMill = '�';

  /**
   * Character used for percent sign.
   * 
   * @serial
   * @see #getPercent
   */
  private char percent = '%';

  /**
   * Character used for a digit in a pattern.
   *
   * @serial
   * @see #getDigit
   */
  private char digit = '#';

  /**
   * Character used to separate positive and negative subpatterns in a pattern.
   *
   * @serial
   * @see #getPatternSeparator
   */
  private char patternSeparator = 160;

  /**
   * String used to represent infinity.
   * 
   * @serial
   * @see #getInfinity
   */
  private String infinity = "?";

  /**
   * String used to represent "not a number".
   * 
   * @serial
   * @see #getNaN
   */
  private String NaN = "NaN";

  /**
   * Character used to represent minus sign.
   * 
   * @serial
   * @see #getMinusSign
   */
  private char minusSign = '-';

  /**
   * String denoting the local currency, e.g. "$".
   * 
   * @serial
   * @see #getCurrencySymbol
   */
  private String currencySymbol = "$";

  /**
   * The decimal separator used when formatting currency values.
   * 
   * @serial
   * @since JDK 1.1.6
   * @see #getMonetaryDecimalSeparator
   */
  private char monetarySeparator = ','; // Field new in JDK 1.1.6

  /**
   * The character used to distinguish the exponent in a number formatted in exponential notation, e.g. 'E' for a number such as "1.23E45".
   * 

* Note that the public API provides no way to set this field, even though it is supported by the implementation and the stream format. The intent * is that this will be added to the API in the future. * * @serial * @since JDK 1.1.6 */ private char exponential = 'E'; // Field new in JDK 1.1.6 public DecimalFormatSymbols clone() { DecimalFormatSymbols result = new DecimalFormatSymbols(); result.currencySymbol = currencySymbol; result.decimalSeparator = decimalSeparator; result.digit = digit; result.exponential = exponential; result.groupingSeparator = groupingSeparator; result.infinity = infinity; result.minusSign = minusSign; result.monetarySeparator = monetarySeparator; result.NaN = NaN; result.patternSeparator = patternSeparator; result.percent = percent; result.perMill = perMill; result.zeroDigit = zeroDigit; return result; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy