home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / text / NumberFormat.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  5.6 KB  |  205 lines

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