home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / java / util / GregorianCalendar.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  7.2 KB  |  681 lines

  1. package java.util;
  2.  
  3. public class GregorianCalendar extends Calendar {
  4.    // $FF: renamed from: BC int
  5.    public static final int field_0 = 0;
  6.    // $FF: renamed from: AD int
  7.    public static final int field_1 = 1;
  8.    private static final long julianDayOffset = 2440588L;
  9.    private static final int millisPerDay = 86400000;
  10.    private static final int[] numDays = new int[]{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
  11.    private static final int[] leapNumDays = new int[]{0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};
  12.    private static final int[] maxDaysInMonth = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  13.    private long gregorianCutover = -12219292800000L;
  14.    private static final int[] MinValues = new int[]{0, 1, 0, 1, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, -43200000, 0};
  15.    private static final int[] GreatestMinValues = new int[]{0, 1, 0, 1, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, -43200000, 0};
  16.    private static final int[] LeastMaxValues = new int[]{1, 5000000, 11, 53, 4, 28, 365, 7, 4, 1, 11, 23, 59, 59, 999, 43200000, 3600000};
  17.    private static final int[] MaxValues = new int[]{1, 5000000, 11, 54, 6, 31, 366, 7, 6, 1, 12, 23, 59, 59, 999, 43200000, 3600000};
  18.  
  19.    private static final long millisToJulianDay(long var0) {
  20.       return var0 >= 0L ? 2440588L + var0 / 86400000L : 2440588L + (var0 - 86400000L + 1L) / 86400000L;
  21.    }
  22.  
  23.    private static final long julianDayToMillis(long var0) {
  24.       return (var0 - 2440588L) * 86400000L;
  25.    }
  26.  
  27.    public GregorianCalendar() {
  28.       super(TimeZone.getDefault(), Locale.getDefault());
  29.       ((Calendar)this).set(0, 1);
  30.       super.time = System.currentTimeMillis();
  31.       super.isTimeSet = true;
  32.       super.areFieldsSet = false;
  33.    }
  34.  
  35.    public GregorianCalendar(TimeZone var1) {
  36.       super(var1, Locale.getDefault());
  37.       ((Calendar)this).set(0, 1);
  38.       super.time = System.currentTimeMillis();
  39.       super.isTimeSet = true;
  40.       super.areFieldsSet = false;
  41.    }
  42.  
  43.    public GregorianCalendar(Locale var1) {
  44.       super(TimeZone.getDefault(), var1);
  45.       ((Calendar)this).set(0, 1);
  46.       super.time = System.currentTimeMillis();
  47.       super.isTimeSet = true;
  48.       super.areFieldsSet = false;
  49.    }
  50.  
  51.    public GregorianCalendar(TimeZone var1, Locale var2) {
  52.       super(var1, var2);
  53.       ((Calendar)this).set(0, 1);
  54.       super.time = System.currentTimeMillis();
  55.       super.isTimeSet = true;
  56.       super.areFieldsSet = false;
  57.    }
  58.  
  59.    public GregorianCalendar(int var1, int var2, int var3) {
  60.       super(TimeZone.getDefault(), Locale.getDefault());
  61.       ((Calendar)this).set(0, 1);
  62.       ((Calendar)this).set(1, var1);
  63.       ((Calendar)this).set(2, var2);
  64.       ((Calendar)this).set(5, var3);
  65.    }
  66.  
  67.    public GregorianCalendar(int var1, int var2, int var3, int var4, int var5) {
  68.       super(TimeZone.getDefault(), Locale.getDefault());
  69.       ((Calendar)this).set(0, 1);
  70.       ((Calendar)this).set(1, var1);
  71.       ((Calendar)this).set(2, var2);
  72.       ((Calendar)this).set(5, var3);
  73.       ((Calendar)this).set(11, var4);
  74.       ((Calendar)this).set(12, var5);
  75.    }
  76.  
  77.    public GregorianCalendar(int var1, int var2, int var3, int var4, int var5, int var6) {
  78.       super(TimeZone.getDefault(), Locale.getDefault());
  79.       ((Calendar)this).set(0, 1);
  80.       ((Calendar)this).set(1, var1);
  81.       ((Calendar)this).set(2, var2);
  82.       ((Calendar)this).set(5, var3);
  83.       ((Calendar)this).set(11, var4);
  84.       ((Calendar)this).set(12, var5);
  85.       ((Calendar)this).set(13, var6);
  86.    }
  87.  
  88.    public void setGregorianChange(Date var1) {
  89.       this.gregorianCutover = var1.getTime();
  90.    }
  91.  
  92.    public final Date getGregorianChange() {
  93.       return new Date(this.gregorianCutover);
  94.    }
  95.  
  96.    private final void timeToFields(long var1) {
  97.       byte var9 = 1;
  98.       long var20 = millisToJulianDay(var1);
  99.       long var10;
  100.       if (var1 >= this.gregorianCutover) {
  101.          long var22 = (long)(((double)(var20 - 1867216L) - (double)0.25F) / (double)36524.25F);
  102.          var10 = var20 + 1L + var22 - (long)((double)0.25F * (double)var22);
  103.       } else {
  104.          var10 = var20;
  105.       }
  106.  
  107.       long var12 = var10 + 1524L;
  108.       long var16 = (long)((double)6680.0F + ((double)(var12 - 2439870L) - 122.10000000000001) / (double)365.25F);
  109.       long var14 = (long)((double)(365L * var16) + (double)0.25F * (double)var16);
  110.       long var18 = (long)((double)(var12 - var14) / 30.6001);
  111.       int var5 = (int)(var12 - var14 - (long)(30.6001 * (double)var18));
  112.       int var4 = (int)var18 - 1;
  113.       if (var4 > 12) {
  114.          var4 -= 12;
  115.       } else if (var4 < 0) {
  116.          var4 += 12;
  117.       }
  118.  
  119.       int var3 = (int)(var16 - 4715L);
  120.       if (var4 > 2) {
  121.          --var3;
  122.       }
  123.  
  124.       if (var3 <= 0) {
  125.          var9 = 0;
  126.          var3 = 1 - var3;
  127.       }
  128.  
  129.       ((Calendar)this).set(0, var9);
  130.       ((Calendar)this).set(1, var3);
  131.       ((Calendar)this).set(2, var4 - 1);
  132.       ((Calendar)this).set(5, var5);
  133.       int var6;
  134.       if (var20 >= -1L) {
  135.          var6 = 1 + (int)((var20 + 1L) % 7L);
  136.       } else {
  137.          var6 = 1 + (int)((var20 + 1L) % 7L + 7L);
  138.       }
  139.  
  140.       ((Calendar)this).set(7, var6);
  141.       int var7;
  142.       if (this.isLeapYear(var3)) {
  143.          var7 = leapNumDays[var4 - 1] + var5;
  144.       } else {
  145.          var7 = numDays[var4 - 1] + var5;
  146.       }
  147.  
  148.       ((Calendar)this).set(6, var7);
  149.       int var25 = (var6 - 1 - var7 + 1) % 7;
  150.       if (var25 < 0) {
  151.          var25 += 7;
  152.       }
  153.  
  154.       int var8 = weekNumber(var7, var6 - 1, var25, ((Calendar)this).getFirstDayOfWeek() - 1, ((Calendar)this).getMinimalDaysInFirstWeek());
  155.       ((Calendar)this).set(3, var8);
  156.       var25 = (var6 - 1 - var5 + 1) % 7;
  157.       if (var25 < 0) {
  158.          var25 += 7;
  159.       }
  160.  
  161.       var8 = weekNumber(var5, var6 - 1, var25, ((Calendar)this).getFirstDayOfWeek() - 1, ((Calendar)this).getMinimalDaysInFirstWeek());
  162.       ((Calendar)this).set(4, var8);
  163.    }
  164.  
  165.    private static int weekNumber(int var0, int var1, int var2, int var3, int var4) {
  166.       int var5 = (var0 - 1) / 7 + 1;
  167.       int var6 = (var3 + 6) % 7;
  168.       if (var6 < var2) {
  169.          var6 += 7;
  170.       }
  171.  
  172.       if (var6 - var2 + 1 < var4) {
  173.          --var5;
  174.       }
  175.  
  176.       return var5;
  177.    }
  178.  
  179.    private static int dateFrom(int var0, int var1, int var2, int var3, int var4) {
  180.       int var5 = var1 - var2;
  181.       if (var5 < 0) {
  182.          var5 += 7;
  183.       }
  184.  
  185.       int var6 = (var0 - 1) * 7 + var5 + 1;
  186.       int var7 = (var3 + 6) % 7;
  187.       if (var7 < var2) {
  188.          var7 += 7;
  189.       }
  190.  
  191.       if (var7 - var2 + 1 < var4) {
  192.          var6 -= 7;
  193.       }
  194.  
  195.       return var6;
  196.    }
  197.  
  198.    public boolean isLeapYear(int var1) {
  199.       return var1 % 4 == 0 && (var1 % 100 != 0 || var1 % 400 == 0);
  200.    }
  201.  
  202.    protected void computeFields() {
  203.       if (super.isTimeSet) {
  204.          long var1 = super.time;
  205.          TimeZone var3 = ((Calendar)this).getTimeZone();
  206.          if (var3 != null) {
  207.             var1 += (long)var3.getRawOffset();
  208.          }
  209.  
  210.          this.timeToFields(var1);
  211.          int var4 = ((Calendar)this).internalGet(0);
  212.          int var5 = ((Calendar)this).internalGet(1);
  213.          int var6 = ((Calendar)this).internalGet(2);
  214.          int var7 = ((Calendar)this).internalGet(5);
  215.          int var8 = ((Calendar)this).internalGet(7);
  216.          int var9 = (int)(var1 % 86400000L);
  217.          if (var9 < 0) {
  218.             var9 += 86400000;
  219.          }
  220.  
  221.          int var10 = 0;
  222.          int var11 = 0;
  223.          if (var3 != null) {
  224.             var10 = var3.getRawOffset();
  225.             var11 = var3.getOffset(var4, var5, var6, var7, var8, var9);
  226.             var1 = super.time + (long)var11;
  227.             var11 -= var10;
  228.             if (var9 + var11 >= 86400000) {
  229.                this.timeToFields(var1);
  230.                var8 = ((Calendar)this).internalGet(7);
  231.                var7 = ((Calendar)this).internalGet(5);
  232.                var6 = ((Calendar)this).internalGet(2);
  233.                var5 = ((Calendar)this).internalGet(1);
  234.                var4 = ((Calendar)this).internalGet(0);
  235.             }
  236.  
  237.             var9 = (int)(var1 % 86400000L);
  238.             if (var9 < 0) {
  239.                var9 += 86400000;
  240.             }
  241.          }
  242.  
  243.          ((Calendar)this).set(14, var9 % 1000);
  244.          var9 /= 1000;
  245.          ((Calendar)this).set(13, var9 % 60);
  246.          var9 /= 60;
  247.          ((Calendar)this).set(12, var9 % 60);
  248.          var9 /= 60;
  249.          ((Calendar)this).set(11, var9);
  250.          ((Calendar)this).set(9, var9 / 12);
  251.          int var12 = var9 % 12;
  252.          ((Calendar)this).set(10, var12);
  253.          ((Calendar)this).set(15, var10);
  254.          ((Calendar)this).set(16, var11);
  255.          ((Calendar)this).set(8, (var7 - 1) / 7 + 1);
  256.          super.areFieldsSet = true;
  257.       }
  258.    }
  259.  
  260.    private boolean validateFields() {
  261.       for(int var1 = 0; var1 <= 4; ++var1) {
  262.          if (((Calendar)this).isSet(var1) && !this.boundsCheck(((Calendar)this).internalGet(var1), var1)) {
  263.             return false;
  264.          }
  265.       }
  266.  
  267.       if (((Calendar)this).isSet(5)) {
  268.          int var2 = ((Calendar)this).internalGet(1);
  269.          int var3 = ((Calendar)this).internalGet(2);
  270.          int var4 = ((Calendar)this).internalGet(5);
  271.          if (var3 == 1 && this.isLeapYear(var2)) {
  272.             if (var4 < this.getMinimum(5) || var4 > 29) {
  273.                return false;
  274.             }
  275.          } else if (var4 < this.getMinimum(5) || var4 > maxDaysInMonth[var3]) {
  276.             return false;
  277.          }
  278.       }
  279.  
  280.       if (((Calendar)this).isSet(6)) {
  281.          int var6 = ((Calendar)this).internalGet(1);
  282.          int var7 = ((Calendar)this).internalGet(6);
  283.          if (this.isLeapYear(var6)) {
  284.             if (var7 < 1 || var7 > 366) {
  285.                return false;
  286.             }
  287.          } else if (var7 < 1 || var7 > 365) {
  288.             return false;
  289.          }
  290.       }
  291.  
  292.       for(int var5 = 7; var5 <= 16; ++var5) {
  293.          if (((Calendar)this).isSet(var5) && !this.boundsCheck(((Calendar)this).internalGet(var5), var5)) {
  294.             return false;
  295.          }
  296.       }
  297.  
  298.       return true;
  299.    }
  300.  
  301.    private boolean boundsCheck(int var1, int var2) {
  302.       return var1 >= this.getMinimum(var2) && var1 <= this.getMaximum(var2);
  303.    }
  304.  
  305.    protected void computeTime() {
  306.       if (super.areFieldsSet) {
  307.          if (!((Calendar)this).isLenient() && !this.validateFields()) {
  308.             throw new IllegalArgumentException();
  309.          } else {
  310.             super.isTimeSet = true;
  311.             super.time = 0L;
  312.             int var1 = ((Calendar)this).internalGet(0);
  313.             if (var1 >= 0 && var1 <= 1) {
  314.                int var2 = ((Calendar)this).internalGet(1);
  315.                int var3 = 0;
  316.                int var4 = 0;
  317.                if (var2 <= 0) {
  318.                   throw new IllegalArgumentException();
  319.                } else {
  320.                   if (var1 == 0) {
  321.                      var2 = 1 - var2;
  322.                   }
  323.  
  324.                   long var5 = 0L;
  325.                   if (!((Calendar)this).isSet(2) || !((Calendar)this).isSet(5) && (!((Calendar)this).isSet(7) || !((Calendar)this).isSet(4) && !((Calendar)this).isSet(8))) {
  326.                      if (!((Calendar)this).isSet(6) && (!((Calendar)this).isSet(7) || !((Calendar)this).isSet(3))) {
  327.                         throw new IllegalArgumentException();
  328.                      }
  329.  
  330.                      --var2;
  331.                      var5 = (long)(Math.floor((double)365.25F * (double)var2) + (double)428.0F + (double)1720995.0F);
  332.                      if (!((Calendar)this).isSet(6)) {
  333.                         throw new IllegalArgumentException();
  334.                      }
  335.  
  336.                      var5 += (long)((Calendar)this).internalGet(6);
  337.                   } else {
  338.                      var3 = ((Calendar)this).internalGet(2) + 1;
  339.                      if (var3 < 1) {
  340.                         throw new IllegalArgumentException();
  341.                      }
  342.  
  343.                      if (var3 > 12) {
  344.                         var2 += var3 / 12;
  345.                         var3 %= 12;
  346.                      }
  347.  
  348.                      if (var3 > 2) {
  349.                         ++var3;
  350.                      } else {
  351.                         --var2;
  352.                         var3 += 13;
  353.                      }
  354.  
  355.                      var5 = (long)(Math.floor((double)365.25F * (double)var2) + Math.floor(30.6001 * (double)var3) + (double)1720995.0F);
  356.                      if (!((Calendar)this).isSet(5)) {
  357.                         throw new IllegalArgumentException();
  358.                      }
  359.  
  360.                      var4 = ((Calendar)this).internalGet(5);
  361.                      var5 += (long)var4;
  362.                   }
  363.  
  364.                   if (julianDayToMillis(var5) >= this.gregorianCutover) {
  365.                      long var7 = (long)(0.01 * (double)var2);
  366.                      var5 += 2L - var7 + (long)((double)0.25F * (double)var7);
  367.                   }
  368.  
  369.                   super.time = julianDayToMillis(var5);
  370.                   int var18 = 0;
  371.                   if (((Calendar)this).isSet(11)) {
  372.                      var18 += ((Calendar)this).internalGet(11) % 24;
  373.                   } else if (((Calendar)this).isSet(10)) {
  374.                      var18 += ((Calendar)this).internalGet(10) % 12;
  375.                      var18 += 12 * ((Calendar)this).internalGet(9);
  376.                   }
  377.  
  378.                   var18 *= 60;
  379.                   var18 += ((Calendar)this).internalGet(12);
  380.                   var18 *= 60;
  381.                   var18 += ((Calendar)this).internalGet(13);
  382.                   var18 *= 1000;
  383.                   var18 += ((Calendar)this).internalGet(14);
  384.                   super.time += (long)var18;
  385.                   int var8 = 0;
  386.                   if (((Calendar)this).isSet(15)) {
  387.                      var8 = ((Calendar)this).internalGet(15);
  388.                      var8 += ((Calendar)this).internalGet(16);
  389.                   } else {
  390.                      TimeZone var9 = ((Calendar)this).getTimeZone();
  391.                      if (var9 != null) {
  392.                         if (((Calendar)this).isSet(2) && ((Calendar)this).isSet(5)) {
  393.                            int var27;
  394.                            if (((Calendar)this).isSet(7)) {
  395.                               var27 = ((Calendar)this).internalGet(7);
  396.                            } else {
  397.                               var27 = 1 + (int)((var5 + 1L) % 7L);
  398.                            }
  399.  
  400.                            var8 = var9.getOffset(var1, ((Calendar)this).internalGet(1), ((Calendar)this).internalGet(2), ((Calendar)this).internalGet(5), var27, var18);
  401.                         } else {
  402.                            long var10 = super.time;
  403.                            ((Calendar)this).setTimeInMillis(super.time - (long)var9.getRawOffset());
  404.                            this.computeFields();
  405.                            var8 = var9.getOffset(var1, ((Calendar)this).internalGet(1), ((Calendar)this).internalGet(2), ((Calendar)this).internalGet(5), ((Calendar)this).internalGet(7), var18);
  406.                            super.time = var10;
  407.                         }
  408.                      }
  409.                   }
  410.  
  411.                   super.time -= (long)var8;
  412.                }
  413.             } else {
  414.                throw new IllegalArgumentException();
  415.             }
  416.          }
  417.       }
  418.    }
  419.  
  420.    public Object clone() {
  421.       try {
  422.          GregorianCalendar var1 = (GregorianCalendar)super.clone();
  423.          ((Calendar)var1).setLenient(((Calendar)this).isLenient());
  424.          ((Calendar)var1).setTimeZone(((Calendar)this).getTimeZone());
  425.          ((Calendar)var1).setFirstDayOfWeek(((Calendar)this).getFirstDayOfWeek());
  426.          ((Calendar)var1).setMinimalDaysInFirstWeek(((Calendar)this).getMinimalDaysInFirstWeek());
  427.          return var1;
  428.       } catch (InternalError var2) {
  429.          throw var2;
  430.       }
  431.    }
  432.  
  433.    public synchronized int hashCode() {
  434.       return ((Calendar)this).getFirstDayOfWeek() ^ ((Calendar)this).getMinimalDaysInFirstWeek();
  435.    }
  436.  
  437.    public boolean equals(Object var1) {
  438.       if (this == var1) {
  439.          return true;
  440.       } else if (!(var1 instanceof GregorianCalendar)) {
  441.          return false;
  442.       } else {
  443.          GregorianCalendar var2 = (GregorianCalendar)var1;
  444.          if (((Calendar)this).getTimeInMillis() != ((Calendar)var2).getTimeInMillis()) {
  445.             return false;
  446.          } else if (this.hashCode() != var2.hashCode()) {
  447.             return false;
  448.          } else if (((Calendar)this).isLenient() != ((Calendar)var2).isLenient()) {
  449.             return false;
  450.          } else if (((Calendar)this).getFirstDayOfWeek() != ((Calendar)var2).getFirstDayOfWeek()) {
  451.             return false;
  452.          } else if (((Calendar)this).getMinimalDaysInFirstWeek() != ((Calendar)var2).getMinimalDaysInFirstWeek()) {
  453.             return false;
  454.          } else {
  455.             return ((Calendar)this).getTimeZone().equals(((Calendar)var2).getTimeZone());
  456.          }
  457.       }
  458.    }
  459.  
  460.    public boolean before(Object var1) {
  461.       if (this == var1) {
  462.          return true;
  463.       } else if (var1 != null && this.getClass().equals(var1.getClass())) {
  464.          GregorianCalendar var2 = (GregorianCalendar)var1;
  465.          return ((Calendar)this).getTimeInMillis() < ((Calendar)var2).getTimeInMillis();
  466.       } else {
  467.          return false;
  468.       }
  469.    }
  470.  
  471.    public boolean after(Object var1) {
  472.       if (this == var1) {
  473.          return true;
  474.       } else if (var1 != null && this.getClass().equals(var1.getClass())) {
  475.          GregorianCalendar var2 = (GregorianCalendar)var1;
  476.          return ((Calendar)this).getTimeInMillis() > ((Calendar)var2).getTimeInMillis();
  477.       } else {
  478.          return false;
  479.       }
  480.    }
  481.  
  482.    public void add(int var1, int var2) {
  483.       if (!super.areFieldsSet) {
  484.          this.computeFields();
  485.       }
  486.  
  487.       if (var2 != 0) {
  488.          if (var1 == 1) {
  489.             int var6 = ((Calendar)this).internalGet(1);
  490.             if (((Calendar)this).internalGet(0) == 1) {
  491.                var6 += var2;
  492.                if (var6 > 0) {
  493.                   ((Calendar)this).set(1, var6);
  494.                } else {
  495.                   ((Calendar)this).set(1, 1 - var6);
  496.                   ((Calendar)this).set(0, 0);
  497.                }
  498.             } else {
  499.                var6 -= var2;
  500.                if (var6 > 0) {
  501.                   ((Calendar)this).set(1, var6);
  502.                } else {
  503.                   ((Calendar)this).set(1, 1 - var6);
  504.                   ((Calendar)this).set(0, 1);
  505.                }
  506.             }
  507.          } else if (var1 == 2) {
  508.             int var5 = ((Calendar)this).internalGet(2) + var2;
  509.             if (var5 >= 0) {
  510.                this.add(1, var5 / 12);
  511.                ((Calendar)this).set(2, var5 % 12);
  512.             } else {
  513.                this.add(1, (var5 + 1) / 12 - 1);
  514.                if (var5 % 12 == 0) {
  515.                   ((Calendar)this).set(2, 0);
  516.                } else {
  517.                   ((Calendar)this).set(2, var5 % 12 + 12);
  518.                }
  519.             }
  520.          } else {
  521.             long var3 = (long)var2;
  522.             switch (var1) {
  523.                case 0:
  524.                case 15:
  525.                case 16:
  526.                   throw new IllegalArgumentException();
  527.                case 1:
  528.                case 2:
  529.                case 14:
  530.                default:
  531.                   break;
  532.                case 3:
  533.                case 4:
  534.                case 8:
  535.                   var3 *= 604800000L;
  536.                   break;
  537.                case 5:
  538.                case 6:
  539.                case 7:
  540.                   var3 *= 86400000L;
  541.                   break;
  542.                case 9:
  543.                   var3 *= 43200000L;
  544.                   break;
  545.                case 10:
  546.                case 11:
  547.                   var3 *= 3600000L;
  548.                   break;
  549.                case 12:
  550.                   var3 *= 60000L;
  551.                   break;
  552.                case 13:
  553.                   var3 *= 1000L;
  554.             }
  555.  
  556.             super.time += var3;
  557.             ((Calendar)this).setTimeInMillis(super.time);
  558.             this.computeFields();
  559.          }
  560.       }
  561.    }
  562.  
  563.    public void roll(int var1, boolean var2) {
  564.       if (!super.areFieldsSet) {
  565.          this.computeFields();
  566.       }
  567.  
  568.       if (var2) {
  569.          switch (var1) {
  570.             case 0:
  571.             case 3:
  572.             case 4:
  573.             case 6:
  574.             case 7:
  575.             case 8:
  576.             case 9:
  577.             case 10:
  578.             case 15:
  579.             case 16:
  580.                throw new IllegalArgumentException();
  581.             case 1:
  582.                ((Calendar)this).set(1, (((Calendar)this).internalGet(1) + 1) % this.getMaximum(1));
  583.                return;
  584.             case 2:
  585.                ((Calendar)this).set(2, (((Calendar)this).internalGet(2) + 1) % 12);
  586.                return;
  587.             case 5:
  588.                if (((Calendar)this).internalGet(2) == 1 && this.isLeapYear(((Calendar)this).internalGet(1))) {
  589.                   ((Calendar)this).set(5, ((Calendar)this).internalGet(5) % 29 + 1);
  590.                   return;
  591.                }
  592.  
  593.                ((Calendar)this).set(5, ((Calendar)this).internalGet(5) % maxDaysInMonth[((Calendar)this).internalGet(2)] + 1);
  594.                return;
  595.             case 11:
  596.                ((Calendar)this).set(11, (((Calendar)this).internalGet(11) + 1) % 24);
  597.                return;
  598.             case 12:
  599.                ((Calendar)this).set(12, (((Calendar)this).internalGet(12) + 1) % 60);
  600.                return;
  601.             case 13:
  602.                ((Calendar)this).set(13, (((Calendar)this).internalGet(13) + 1) % 60);
  603.                return;
  604.             case 14:
  605.                ((Calendar)this).set(14, (((Calendar)this).internalGet(14) + 1) % 1000);
  606.                return;
  607.          }
  608.       } else {
  609.          switch (var1) {
  610.             case 0:
  611.             case 3:
  612.             case 4:
  613.             case 6:
  614.             case 7:
  615.             case 8:
  616.             case 9:
  617.             case 10:
  618.             case 15:
  619.             case 16:
  620.                throw new IllegalArgumentException();
  621.             case 1:
  622.                this.rollDown(1);
  623.                return;
  624.             case 2:
  625.                this.rollDown(2);
  626.                return;
  627.             case 5:
  628.                if (((Calendar)this).internalGet(5) == this.getMinimum(5)) {
  629.                   if (((Calendar)this).internalGet(2) == 1 && this.isLeapYear(((Calendar)this).internalGet(1))) {
  630.                      ((Calendar)this).set(5, 29);
  631.                      return;
  632.                   }
  633.  
  634.                   ((Calendar)this).set(5, maxDaysInMonth[((Calendar)this).internalGet(2)]);
  635.                   return;
  636.                }
  637.  
  638.                ((Calendar)this).set(5, ((Calendar)this).internalGet(5) - 1);
  639.                return;
  640.             case 11:
  641.                this.rollDown(11);
  642.                return;
  643.             case 12:
  644.                this.rollDown(12);
  645.                return;
  646.             case 13:
  647.                this.rollDown(13);
  648.                return;
  649.             case 14:
  650.                this.rollDown(14);
  651.                return;
  652.          }
  653.       }
  654.  
  655.    }
  656.  
  657.    private void rollDown(int var1) {
  658.       if (((Calendar)this).internalGet(var1) == this.getMinimum(var1)) {
  659.          ((Calendar)this).set(var1, this.getMaximum(var1));
  660.       } else {
  661.          ((Calendar)this).set(var1, ((Calendar)this).internalGet(var1) - 1);
  662.       }
  663.    }
  664.  
  665.    public int getMinimum(int var1) {
  666.       return MinValues[var1];
  667.    }
  668.  
  669.    public int getMaximum(int var1) {
  670.       return MaxValues[var1];
  671.    }
  672.  
  673.    public int getGreatestMinimum(int var1) {
  674.       return GreatestMinValues[var1];
  675.    }
  676.  
  677.    public int getLeastMaximum(int var1) {
  678.       return LeastMaxValues[var1];
  679.    }
  680. }
  681.