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

  1. package java.text;
  2.  
  3. public class ChoiceFormat extends NumberFormat {
  4.    private double[] choiceLimits;
  5.    private String[] choiceFormats;
  6.    static final long SIGN = Long.MIN_VALUE;
  7.    static final long EXPONENT = 9218868437227405312L;
  8.    static final long POSITIVEINFINITY = 9218868437227405312L;
  9.  
  10.    public void applyPattern(String var1) {
  11.       StringBuffer[] var2 = new StringBuffer[2];
  12.  
  13.       for(int var3 = 0; var3 < var2.length; ++var3) {
  14.          var2[var3] = new StringBuffer();
  15.       }
  16.  
  17.       double[] var4 = new double[30];
  18.       String[] var5 = new String[30];
  19.       int var6 = 0;
  20.       byte var7 = 0;
  21.       double var8 = (double)0.0F;
  22.       double var10 = Double.NaN;
  23.  
  24.       for(int var12 = 0; var12 < var1.length(); ++var12) {
  25.          char var13 = var1.charAt(var12);
  26.          if (var13 != '<' && var13 != '#' && var13 != 8804) {
  27.             if (var13 == '|') {
  28.                var4[var6] = var8;
  29.                var5[var6] = var2[1].toString();
  30.                ++var6;
  31.                var10 = var8;
  32.                var2[1].setLength(0);
  33.                var7 = 0;
  34.             } else {
  35.                var2[var7].append(var13);
  36.             }
  37.          } else {
  38.             if (var2[0].equals("")) {
  39.                throw new IllegalArgumentException();
  40.             }
  41.  
  42.             try {
  43.                var8 = Double.valueOf(var2[0].toString());
  44.             } catch (Exception var14) {
  45.                throw new IllegalArgumentException();
  46.             }
  47.  
  48.             if (var13 == '<') {
  49.                var8 = nextDouble(var8);
  50.             }
  51.  
  52.             if (var8 <= var10) {
  53.                throw new IllegalArgumentException();
  54.             }
  55.  
  56.             var2[0].setLength(0);
  57.             var7 = 1;
  58.          }
  59.       }
  60.  
  61.       if (var7 == 1) {
  62.          var4[var6] = var8;
  63.          var5[var6] = var2[1].toString();
  64.          ++var6;
  65.       }
  66.  
  67.       this.choiceLimits = new double[var6];
  68.       System.arraycopy(var4, 0, this.choiceLimits, 0, var6);
  69.       this.choiceFormats = new String[var6];
  70.       System.arraycopy(var5, 0, this.choiceFormats, 0, var6);
  71.    }
  72.  
  73.    public String toPattern() {
  74.       StringBuffer var1 = new StringBuffer();
  75.  
  76.       for(int var2 = 0; var2 < this.choiceLimits.length; ++var2) {
  77.          if (var2 != 0) {
  78.             var1.append('|');
  79.          }
  80.  
  81.          double var3 = previousDouble(this.choiceLimits[var2]);
  82.          double var5 = Math.abs(Math.IEEEremainder(this.choiceLimits[var2], (double)1.0F));
  83.          double var7 = Math.abs(Math.IEEEremainder(var3, (double)1.0F));
  84.          if (var5 < var7) {
  85.             var1.append(String.valueOf(this.choiceLimits[var2]));
  86.             var1.append('#');
  87.          } else {
  88.             var1.append(String.valueOf(var3));
  89.             var1.append('<');
  90.          }
  91.  
  92.          var1.append(this.choiceFormats[var2].toString());
  93.       }
  94.  
  95.       return var1.toString();
  96.    }
  97.  
  98.    public ChoiceFormat(String var1) {
  99.       this.applyPattern(var1);
  100.    }
  101.  
  102.    public ChoiceFormat(double[] var1, String[] var2) {
  103.       this.setChoices(var1, var2);
  104.    }
  105.  
  106.    public void setChoices(double[] var1, String[] var2) {
  107.       this.choiceLimits = var1;
  108.       this.choiceFormats = var2;
  109.    }
  110.  
  111.    public double[] getLimits() {
  112.       return this.choiceLimits;
  113.    }
  114.  
  115.    public Object[] getFormats() {
  116.       return this.choiceFormats;
  117.    }
  118.  
  119.    public StringBuffer format(long var1, StringBuffer var3, FieldPosition var4) {
  120.       return this.format((double)var1, var3, var4);
  121.    }
  122.  
  123.    public StringBuffer format(double var1, StringBuffer var3, FieldPosition var4) {
  124.       int var5;
  125.       for(var5 = 0; var5 < this.choiceLimits.length && var1 >= this.choiceLimits[var5]; ++var5) {
  126.       }
  127.  
  128.       --var5;
  129.       if (var5 < 0) {
  130.          var5 = 0;
  131.       }
  132.  
  133.       return var3.append(this.choiceFormats[var5]);
  134.    }
  135.  
  136.    public Number parse(String var1, ParsePosition var2) {
  137.       int var3 = var2.index;
  138.       int var4 = var3;
  139.       double var5 = Double.NaN;
  140.       double var7 = (double)0.0F;
  141.  
  142.       for(int var9 = 0; var9 < this.choiceFormats.length; ++var9) {
  143.          String var10 = this.choiceFormats[var9];
  144.          if (var1.regionMatches(var3, var10, 0, var10.length())) {
  145.             var2.index = var10.length();
  146.             var7 = this.choiceLimits[var9];
  147.             if (var2.index > var4) {
  148.                var4 = var2.index;
  149.                var5 = var7;
  150.                if (var4 == var1.length()) {
  151.                   break;
  152.                }
  153.             }
  154.          }
  155.       }
  156.  
  157.       var2.index = var4;
  158.       return new Double(var5);
  159.    }
  160.  
  161.    public static final double nextDouble(double var0) {
  162.       return nextDouble(var0, true);
  163.    }
  164.  
  165.    public static final double previousDouble(double var0) {
  166.       return nextDouble(var0, false);
  167.    }
  168.  
  169.    public Object clone() {
  170.       ChoiceFormat var1 = (ChoiceFormat)super.clone();
  171.       var1.choiceLimits = (double[])this.choiceLimits.clone();
  172.       var1.choiceFormats = (String[])this.choiceFormats.clone();
  173.       return var1;
  174.    }
  175.  
  176.    public int hashCode() {
  177.       int var1 = this.choiceLimits.length;
  178.       if (this.choiceFormats.length > 0) {
  179.          var1 ^= this.choiceFormats[this.choiceFormats.length - 1].hashCode();
  180.       }
  181.  
  182.       return var1;
  183.    }
  184.  
  185.    public boolean equals(Object var1) {
  186.       if (this == var1) {
  187.          return true;
  188.       } else if (this.getClass() != var1.getClass()) {
  189.          return false;
  190.       } else {
  191.          ChoiceFormat var2 = (ChoiceFormat)var1;
  192.          return Utility.arrayEquals(this.choiceLimits, var2.choiceLimits) && Utility.arrayEquals(this.choiceFormats, var2.choiceFormats);
  193.       }
  194.    }
  195.  
  196.    public static double nextDouble(double var0, boolean var2) {
  197.       if (Double.isNaN(var0)) {
  198.          return var0;
  199.       } else if (var0 == (double)0.0F) {
  200.          double var9 = Double.longBitsToDouble(1L);
  201.          return var2 ? var9 : -var9;
  202.       } else {
  203.          long var3 = Double.doubleToLongBits(var0);
  204.          long var5 = var3 & Long.MAX_VALUE;
  205.          if (var3 > 0L == var2) {
  206.             if (var5 != 9218868437227405312L) {
  207.                ++var5;
  208.             }
  209.          } else {
  210.             --var5;
  211.          }
  212.  
  213.          long var7 = var3 & Long.MIN_VALUE;
  214.          return Double.longBitsToDouble(var5 | var7);
  215.       }
  216.    }
  217. }
  218.