home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / java / text / NumberFormat.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.7 KB  |  240 lines

  1. package java.text;
  2.  
  3. import java.io.IOException;
  4. import java.io.InvalidObjectException;
  5. import java.io.ObjectInputStream;
  6. import java.io.ObjectOutputStream;
  7. import java.math.BigInteger;
  8. import java.text.resources.LocaleData;
  9. import java.util.Hashtable;
  10. import java.util.Locale;
  11. import java.util.ResourceBundle;
  12.  
  13. public abstract class NumberFormat extends Format {
  14.    public static final int INTEGER_FIELD = 0;
  15.    public static final int FRACTION_FIELD = 1;
  16.    private static final Hashtable cachedLocaleData = new Hashtable(3);
  17.    private static final int NUMBERSTYLE = 0;
  18.    private static final int CURRENCYSTYLE = 1;
  19.    private static final int PERCENTSTYLE = 2;
  20.    private static final int SCIENTIFICSTYLE = 3;
  21.    private boolean groupingUsed = true;
  22.    private byte maxIntegerDigits = 40;
  23.    private byte minIntegerDigits = 1;
  24.    private byte maxFractionDigits = 3;
  25.    private byte minFractionDigits = 0;
  26.    private boolean parseIntegerOnly = false;
  27.    private int maximumIntegerDigits = 40;
  28.    private int minimumIntegerDigits = 1;
  29.    private int maximumFractionDigits = 3;
  30.    private int minimumFractionDigits = 0;
  31.    static final int currentSerialVersion = 1;
  32.    private int serialVersionOnStream = 1;
  33.    static final long serialVersionUID = -2308460125733713944L;
  34.  
  35.    public final StringBuffer format(Object var1, StringBuffer var2, FieldPosition var3) {
  36.       if (!(var1 instanceof Long) && (!(var1 instanceof BigInteger) || ((BigInteger)var1).bitLength() >= 64)) {
  37.          if (var1 instanceof Number) {
  38.             return this.format(((Number)var1).doubleValue(), var2, var3);
  39.          } else {
  40.             throw new IllegalArgumentException("Cannot format given Object as a Number");
  41.          }
  42.       } else {
  43.          return this.format(((Number)var1).longValue(), var2, var3);
  44.       }
  45.    }
  46.  
  47.    public final Object parseObject(String var1, ParsePosition var2) {
  48.       return this.parse(var1, var2);
  49.    }
  50.  
  51.    public final String format(double var1) {
  52.       return this.format(var1, new StringBuffer(), new FieldPosition(0)).toString();
  53.    }
  54.  
  55.    public final String format(long var1) {
  56.       return this.format(var1, new StringBuffer(), new FieldPosition(0)).toString();
  57.    }
  58.  
  59.    public abstract StringBuffer format(double var1, StringBuffer var3, FieldPosition var4);
  60.  
  61.    public abstract StringBuffer format(long var1, StringBuffer var3, FieldPosition var4);
  62.  
  63.    public abstract Number parse(String var1, ParsePosition var2);
  64.  
  65.    public Number parse(String var1) throws ParseException {
  66.       ParsePosition var2 = new ParsePosition(0);
  67.       Number var3 = this.parse(var1, var2);
  68.       if (var2.index == 0) {
  69.          throw new ParseException("Unparseable number: \"" + var1 + "\"", var2.errorIndex);
  70.       } else {
  71.          return var3;
  72.       }
  73.    }
  74.  
  75.    public boolean isParseIntegerOnly() {
  76.       return this.parseIntegerOnly;
  77.    }
  78.  
  79.    public void setParseIntegerOnly(boolean var1) {
  80.       this.parseIntegerOnly = var1;
  81.    }
  82.  
  83.    public static final NumberFormat getInstance() {
  84.       return getInstance(Locale.getDefault(), 0);
  85.    }
  86.  
  87.    public static NumberFormat getInstance(Locale var0) {
  88.       return getInstance(var0, 0);
  89.    }
  90.  
  91.    public static final NumberFormat getNumberInstance() {
  92.       return getInstance(Locale.getDefault(), 0);
  93.    }
  94.  
  95.    public static NumberFormat getNumberInstance(Locale var0) {
  96.       return getInstance(var0, 0);
  97.    }
  98.  
  99.    public static final NumberFormat getCurrencyInstance() {
  100.       return getInstance(Locale.getDefault(), 1);
  101.    }
  102.  
  103.    public static NumberFormat getCurrencyInstance(Locale var0) {
  104.       return getInstance(var0, 1);
  105.    }
  106.  
  107.    public static final NumberFormat getPercentInstance() {
  108.       return getInstance(Locale.getDefault(), 2);
  109.    }
  110.  
  111.    public static NumberFormat getPercentInstance(Locale var0) {
  112.       return getInstance(var0, 2);
  113.    }
  114.  
  115.    static final NumberFormat getScientificInstance() {
  116.       return getInstance(Locale.getDefault(), 3);
  117.    }
  118.  
  119.    static NumberFormat getScientificInstance(Locale var0) {
  120.       return getInstance(var0, 3);
  121.    }
  122.  
  123.    public static Locale[] getAvailableLocales() {
  124.       return LocaleData.getAvailableLocales("NumberPatterns");
  125.    }
  126.  
  127.    public int hashCode() {
  128.       return this.maximumIntegerDigits * 37 + this.maxFractionDigits;
  129.    }
  130.  
  131.    public boolean equals(Object var1) {
  132.       if (var1 == null) {
  133.          return false;
  134.       } else if (this == var1) {
  135.          return true;
  136.       } else if (this.getClass() != var1.getClass()) {
  137.          return false;
  138.       } else {
  139.          NumberFormat var2 = (NumberFormat)var1;
  140.          return this.maximumIntegerDigits == var2.maximumIntegerDigits && this.minimumIntegerDigits == var2.minimumIntegerDigits && this.maximumFractionDigits == var2.maximumFractionDigits && this.minimumFractionDigits == var2.minimumFractionDigits && this.groupingUsed == var2.groupingUsed && this.parseIntegerOnly == var2.parseIntegerOnly;
  141.       }
  142.    }
  143.  
  144.    public Object clone() {
  145.       NumberFormat var1 = (NumberFormat)super.clone();
  146.       return var1;
  147.    }
  148.  
  149.    public boolean isGroupingUsed() {
  150.       return this.groupingUsed;
  151.    }
  152.  
  153.    public void setGroupingUsed(boolean var1) {
  154.       this.groupingUsed = var1;
  155.    }
  156.  
  157.    public int getMaximumIntegerDigits() {
  158.       return this.maximumIntegerDigits;
  159.    }
  160.  
  161.    public void setMaximumIntegerDigits(int var1) {
  162.       this.maximumIntegerDigits = Math.max(0, var1);
  163.       if (this.minimumIntegerDigits > this.maximumIntegerDigits) {
  164.          this.minimumIntegerDigits = this.maximumIntegerDigits;
  165.       }
  166.  
  167.    }
  168.  
  169.    public int getMinimumIntegerDigits() {
  170.       return this.minimumIntegerDigits;
  171.    }
  172.  
  173.    public void setMinimumIntegerDigits(int var1) {
  174.       this.minimumIntegerDigits = Math.max(0, var1);
  175.       if (this.minimumIntegerDigits > this.maximumIntegerDigits) {
  176.          this.maximumIntegerDigits = this.minimumIntegerDigits;
  177.       }
  178.  
  179.    }
  180.  
  181.    public int getMaximumFractionDigits() {
  182.       return this.maximumFractionDigits;
  183.    }
  184.  
  185.    public void setMaximumFractionDigits(int var1) {
  186.       this.maximumFractionDigits = Math.max(0, var1);
  187.       if (this.maximumFractionDigits < this.minimumFractionDigits) {
  188.          this.minimumFractionDigits = this.maximumFractionDigits;
  189.       }
  190.  
  191.    }
  192.  
  193.    public int getMinimumFractionDigits() {
  194.       return this.minimumFractionDigits;
  195.    }
  196.  
  197.    public void setMinimumFractionDigits(int var1) {
  198.       this.minimumFractionDigits = Math.max(0, var1);
  199.       if (this.maximumFractionDigits < this.minimumFractionDigits) {
  200.          this.maximumFractionDigits = this.minimumFractionDigits;
  201.       }
  202.  
  203.    }
  204.  
  205.    private static NumberFormat getInstance(Locale var0, int var1) {
  206.       String[] var2 = (String[])cachedLocaleData.get(var0);
  207.       if (var2 == null) {
  208.          ResourceBundle var3 = ResourceBundle.getBundle("java.text.resources.LocaleElements", var0);
  209.          var2 = var3.getStringArray("NumberPatterns");
  210.          cachedLocaleData.put(var0, var2);
  211.       }
  212.  
  213.       return new DecimalFormat(var2[var1], new DecimalFormatSymbols(var0));
  214.    }
  215.  
  216.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  217.       var1.defaultReadObject();
  218.       if (this.serialVersionOnStream < 1) {
  219.          this.maximumIntegerDigits = this.maxIntegerDigits;
  220.          this.minimumIntegerDigits = this.minIntegerDigits;
  221.          this.maximumFractionDigits = this.maxFractionDigits;
  222.          this.minimumFractionDigits = this.minFractionDigits;
  223.       }
  224.  
  225.       if (this.minimumIntegerDigits <= this.maximumIntegerDigits && this.minimumFractionDigits <= this.maximumFractionDigits && this.minimumIntegerDigits >= 0 && this.minimumFractionDigits >= 0) {
  226.          this.serialVersionOnStream = 1;
  227.       } else {
  228.          throw new InvalidObjectException("Digit count range invalid");
  229.       }
  230.    }
  231.  
  232.    private void writeObject(ObjectOutputStream var1) throws IOException {
  233.       this.maxIntegerDigits = this.maximumIntegerDigits > 127 ? 127 : (byte)this.maximumIntegerDigits;
  234.       this.minIntegerDigits = this.minimumIntegerDigits > 127 ? 127 : (byte)this.minimumIntegerDigits;
  235.       this.maxFractionDigits = this.maximumFractionDigits > 127 ? 127 : (byte)this.maximumFractionDigits;
  236.       this.minFractionDigits = this.minimumFractionDigits > 127 ? 127 : (byte)this.minimumFractionDigits;
  237.       var1.defaultWriteObject();
  238.    }
  239. }
  240.