home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / util / Calendar.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  8.1 KB  |  448 lines

  1. package java.util;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.io.Serializable;
  7. import java.text.DateFormat;
  8.  
  9. public abstract class Calendar implements Serializable, Cloneable {
  10.    public static final int ERA = 0;
  11.    public static final int YEAR = 1;
  12.    public static final int MONTH = 2;
  13.    public static final int WEEK_OF_YEAR = 3;
  14.    public static final int WEEK_OF_MONTH = 4;
  15.    public static final int DATE = 5;
  16.    public static final int DAY_OF_MONTH = 5;
  17.    public static final int DAY_OF_YEAR = 6;
  18.    public static final int DAY_OF_WEEK = 7;
  19.    public static final int DAY_OF_WEEK_IN_MONTH = 8;
  20.    public static final int AM_PM = 9;
  21.    public static final int HOUR = 10;
  22.    public static final int HOUR_OF_DAY = 11;
  23.    public static final int MINUTE = 12;
  24.    public static final int SECOND = 13;
  25.    public static final int MILLISECOND = 14;
  26.    public static final int ZONE_OFFSET = 15;
  27.    public static final int DST_OFFSET = 16;
  28.    public static final int FIELD_COUNT = 17;
  29.    public static final int SUNDAY = 1;
  30.    public static final int MONDAY = 2;
  31.    public static final int TUESDAY = 3;
  32.    public static final int WEDNESDAY = 4;
  33.    public static final int THURSDAY = 5;
  34.    public static final int FRIDAY = 6;
  35.    public static final int SATURDAY = 7;
  36.    public static final int JANUARY = 0;
  37.    public static final int FEBRUARY = 1;
  38.    public static final int MARCH = 2;
  39.    public static final int APRIL = 3;
  40.    public static final int MAY = 4;
  41.    public static final int JUNE = 5;
  42.    public static final int JULY = 6;
  43.    public static final int AUGUST = 7;
  44.    public static final int SEPTEMBER = 8;
  45.    public static final int OCTOBER = 9;
  46.    public static final int NOVEMBER = 10;
  47.    public static final int DECEMBER = 11;
  48.    public static final int UNDECIMBER = 12;
  49.    // $FF: renamed from: AM int
  50.    public static final int field_0 = 0;
  51.    // $FF: renamed from: PM int
  52.    public static final int field_1 = 1;
  53.    protected int[] fields;
  54.    protected boolean[] isSet;
  55.    transient int[] stamp;
  56.    protected long time;
  57.    protected boolean isTimeSet;
  58.    protected boolean areFieldsSet;
  59.    transient boolean areAllFieldsSet;
  60.    private boolean lenient;
  61.    private TimeZone zone;
  62.    private int firstDayOfWeek;
  63.    private int minimalDaysInFirstWeek;
  64.    private static Hashtable cachedLocaleData = new Hashtable(3);
  65.    static final int UNSET = 0;
  66.    static final int INTERNALLY_SET = 1;
  67.    static final int MINIMUM_USER_STAMP = 2;
  68.    private int nextStamp;
  69.    static final int currentSerialVersion = 1;
  70.    private int serialVersionOnStream;
  71.    static final long serialVersionUID = -1807547505821590642L;
  72.    private static final String[] FIELD_NAME = new String[]{",ERA=", ",YEAR=", ",MONTH=", ",WEEK_OF_YEAR=", ",WEEK_OF_MONTH=", ",DAY_OF_MONTH=", ",DAY_OF_YEAR=", ",DAY_OF_WEEK=", ",DAY_OF_WEEK_IN_MONTH=", ",AM_PM=", ",HOUR=", ",HOUR_OF_DAY=", ",MINUTE=", ",SECOND=", ",MILLISECOND=", ",ZONE_OFFSET=", ",DST_OFFSET="};
  73.  
  74.    protected Calendar() {
  75.       this(TimeZone.getDefault(), Locale.getDefault());
  76.    }
  77.  
  78.    protected Calendar(TimeZone var1, Locale var2) {
  79.       this.lenient = true;
  80.       this.nextStamp = 2;
  81.       this.serialVersionOnStream = 1;
  82.       this.fields = new int[17];
  83.       this.isSet = new boolean[17];
  84.       this.stamp = new int[17];
  85.       this.zone = var1;
  86.       this.setWeekCountData(var2);
  87.    }
  88.  
  89.    public static synchronized Calendar getInstance() {
  90.       return new GregorianCalendar();
  91.    }
  92.  
  93.    public static synchronized Calendar getInstance(TimeZone var0) {
  94.       return new GregorianCalendar(var0, Locale.getDefault());
  95.    }
  96.  
  97.    public static synchronized Calendar getInstance(Locale var0) {
  98.       return new GregorianCalendar(TimeZone.getDefault(), var0);
  99.    }
  100.  
  101.    public static synchronized Calendar getInstance(TimeZone var0, Locale var1) {
  102.       return new GregorianCalendar(var0, var1);
  103.    }
  104.  
  105.    public static synchronized Locale[] getAvailableLocales() {
  106.       return DateFormat.getAvailableLocales();
  107.    }
  108.  
  109.    protected abstract void computeTime();
  110.  
  111.    protected abstract void computeFields();
  112.  
  113.    public final Date getTime() {
  114.       return new Date(this.getTimeInMillis());
  115.    }
  116.  
  117.    public final void setTime(Date var1) {
  118.       this.setTimeInMillis(var1.getTime());
  119.    }
  120.  
  121.    protected long getTimeInMillis() {
  122.       if (!this.isTimeSet) {
  123.          this.updateTime();
  124.       }
  125.  
  126.       return this.time;
  127.    }
  128.  
  129.    protected void setTimeInMillis(long var1) {
  130.       this.isTimeSet = true;
  131.       this.time = var1;
  132.       this.areFieldsSet = false;
  133.       if (!this.areFieldsSet) {
  134.          this.computeFields();
  135.          this.areFieldsSet = true;
  136.          this.areAllFieldsSet = true;
  137.       }
  138.  
  139.    }
  140.  
  141.    public final int get(int var1) {
  142.       this.complete();
  143.       return this.fields[var1];
  144.    }
  145.  
  146.    protected final int internalGet(int var1) {
  147.       return this.fields[var1];
  148.    }
  149.  
  150.    final void internalSet(int var1, int var2) {
  151.       this.fields[var1] = var2;
  152.    }
  153.  
  154.    public final void set(int var1, int var2) {
  155.       this.isTimeSet = false;
  156.       this.fields[var1] = var2;
  157.       this.stamp[var1] = this.nextStamp++;
  158.       this.areFieldsSet = false;
  159.       this.isSet[var1] = true;
  160.    }
  161.  
  162.    public final void set(int var1, int var2, int var3) {
  163.       this.set(1, var1);
  164.       this.set(2, var2);
  165.       this.set(5, var3);
  166.    }
  167.  
  168.    public final void set(int var1, int var2, int var3, int var4, int var5) {
  169.       this.set(1, var1);
  170.       this.set(2, var2);
  171.       this.set(5, var3);
  172.       this.set(11, var4);
  173.       this.set(12, var5);
  174.    }
  175.  
  176.    public final void set(int var1, int var2, int var3, int var4, int var5, int var6) {
  177.       this.set(1, var1);
  178.       this.set(2, var2);
  179.       this.set(5, var3);
  180.       this.set(11, var4);
  181.       this.set(12, var5);
  182.       this.set(13, var6);
  183.    }
  184.  
  185.    public final void clear() {
  186.       this.fields = new int[17];
  187.       this.stamp = new int[17];
  188.       this.areFieldsSet = false;
  189.       this.areAllFieldsSet = false;
  190.       this.isSet = new boolean[17];
  191.       this.isTimeSet = false;
  192.    }
  193.  
  194.    public final void clear(int var1) {
  195.       this.fields[var1] = 0;
  196.       this.stamp[var1] = 0;
  197.       this.areFieldsSet = false;
  198.       this.areAllFieldsSet = false;
  199.       this.isSet[var1] = false;
  200.       this.isTimeSet = false;
  201.    }
  202.  
  203.    public final boolean isSet(int var1) {
  204.       return this.stamp[var1] != 0;
  205.    }
  206.  
  207.    protected void complete() {
  208.       if (!this.isTimeSet) {
  209.          this.updateTime();
  210.       }
  211.  
  212.       if (!this.areFieldsSet) {
  213.          this.computeFields();
  214.          this.areFieldsSet = true;
  215.          this.areAllFieldsSet = true;
  216.       }
  217.  
  218.    }
  219.  
  220.    public boolean equals(Object var1) {
  221.       if (this == var1) {
  222.          return true;
  223.       } else if (!(var1 instanceof Calendar)) {
  224.          return false;
  225.       } else {
  226.          Calendar var2 = (Calendar)var1;
  227.          return this.getTimeInMillis() == var2.getTimeInMillis() && this.lenient == var2.lenient && this.firstDayOfWeek == var2.firstDayOfWeek && this.minimalDaysInFirstWeek == var2.minimalDaysInFirstWeek && this.zone.equals(var2.zone);
  228.       }
  229.    }
  230.  
  231.    public int hashCode() {
  232.       return (this.lenient ? 1 : 0) | this.firstDayOfWeek << 1 | this.minimalDaysInFirstWeek << 4 | this.zone.hashCode() << 7;
  233.    }
  234.  
  235.    public boolean before(Object var1) {
  236.       return var1 instanceof Calendar && this.getTimeInMillis() < ((Calendar)var1).getTimeInMillis();
  237.    }
  238.  
  239.    public boolean after(Object var1) {
  240.       return var1 instanceof Calendar && this.getTimeInMillis() > ((Calendar)var1).getTimeInMillis();
  241.    }
  242.  
  243.    public abstract void add(int var1, int var2);
  244.  
  245.    public abstract void roll(int var1, boolean var2);
  246.  
  247.    public void roll(int var1, int var2) {
  248.       while(var2 > 0) {
  249.          this.roll(var1, true);
  250.          --var2;
  251.       }
  252.  
  253.       while(var2 < 0) {
  254.          this.roll(var1, false);
  255.          ++var2;
  256.       }
  257.  
  258.    }
  259.  
  260.    public void setTimeZone(TimeZone var1) {
  261.       this.zone = var1;
  262.       this.areFieldsSet = false;
  263.    }
  264.  
  265.    public TimeZone getTimeZone() {
  266.       return this.zone;
  267.    }
  268.  
  269.    public void setLenient(boolean var1) {
  270.       this.lenient = var1;
  271.    }
  272.  
  273.    public boolean isLenient() {
  274.       return this.lenient;
  275.    }
  276.  
  277.    public void setFirstDayOfWeek(int var1) {
  278.       this.firstDayOfWeek = var1;
  279.    }
  280.  
  281.    public int getFirstDayOfWeek() {
  282.       return this.firstDayOfWeek;
  283.    }
  284.  
  285.    public void setMinimalDaysInFirstWeek(int var1) {
  286.       this.minimalDaysInFirstWeek = var1;
  287.    }
  288.  
  289.    public int getMinimalDaysInFirstWeek() {
  290.       return this.minimalDaysInFirstWeek;
  291.    }
  292.  
  293.    public abstract int getMinimum(int var1);
  294.  
  295.    public abstract int getMaximum(int var1);
  296.  
  297.    public abstract int getGreatestMinimum(int var1);
  298.  
  299.    public abstract int getLeastMaximum(int var1);
  300.  
  301.    public int getActualMinimum(int var1) {
  302.       int var2 = this.getGreatestMinimum(var1);
  303.       int var3 = this.getMinimum(var1);
  304.       if (var2 == var3) {
  305.          return var2;
  306.       } else {
  307.          Calendar var4 = (Calendar)this.clone();
  308.          var4.setLenient(true);
  309.          int var5 = var2;
  310.  
  311.          do {
  312.             var4.set(var1, var2);
  313.             if (var4.get(var1) != var2) {
  314.                break;
  315.             }
  316.  
  317.             var5 = var2--;
  318.          } while(var2 >= var3);
  319.  
  320.          return var5;
  321.       }
  322.    }
  323.  
  324.    public int getActualMaximum(int var1) {
  325.       int var2 = this.getLeastMaximum(var1);
  326.       int var3 = this.getMaximum(var1);
  327.       if (var2 == var3) {
  328.          return var2;
  329.       } else {
  330.          Calendar var4 = (Calendar)this.clone();
  331.          var4.setLenient(true);
  332.          if (var1 == 3 || var1 == 4) {
  333.             var4.set(7, this.firstDayOfWeek);
  334.          }
  335.  
  336.          int var5 = var2;
  337.  
  338.          do {
  339.             var4.set(var1, var2);
  340.             if (var4.get(var1) != var2) {
  341.                break;
  342.             }
  343.  
  344.             var5 = var2++;
  345.          } while(var2 <= var3);
  346.  
  347.          return var5;
  348.       }
  349.    }
  350.  
  351.    public Object clone() {
  352.       try {
  353.          Calendar var1 = (Calendar)super.clone();
  354.          var1.fields = new int[17];
  355.          var1.isSet = new boolean[17];
  356.          var1.stamp = new int[17];
  357.          System.arraycopy(this.fields, 0, var1.fields, 0, 17);
  358.          System.arraycopy(this.isSet, 0, var1.isSet, 0, 17);
  359.          System.arraycopy(this.stamp, 0, var1.stamp, 0, 17);
  360.          var1.zone = (TimeZone)this.zone.clone();
  361.          return var1;
  362.       } catch (CloneNotSupportedException var2) {
  363.          throw new InternalError();
  364.       }
  365.    }
  366.  
  367.    public String toString() {
  368.       StringBuffer var1 = new StringBuffer();
  369.       var1.append(this.getClass().getName());
  370.       var1.append("[time=");
  371.       var1.append(this.isTimeSet ? String.valueOf(this.time) : "?");
  372.       var1.append(",areFieldsSet=");
  373.       var1.append(this.areFieldsSet);
  374.       var1.append(",areAllFieldsSet=");
  375.       var1.append(this.areAllFieldsSet);
  376.       var1.append(",lenient=");
  377.       var1.append(this.lenient);
  378.       var1.append(",zone=");
  379.       var1.append(this.zone);
  380.       var1.append(",firstDayOfWeek=");
  381.       var1.append(this.firstDayOfWeek);
  382.       var1.append(",minimalDaysInFirstWeek=");
  383.       var1.append(this.minimalDaysInFirstWeek);
  384.  
  385.       for(int var2 = 0; var2 < 17; ++var2) {
  386.          var1.append(FIELD_NAME[var2]);
  387.          var1.append(this.isSet(var2) ? String.valueOf(this.fields[var2]) : "?");
  388.       }
  389.  
  390.       var1.append(']');
  391.       return var1.toString();
  392.    }
  393.  
  394.    private void setWeekCountData(Locale var1) {
  395.       int[] var2 = (int[])cachedLocaleData.get(var1);
  396.       if (var2 == null) {
  397.          ResourceBundle var3 = ResourceBundle.getBundle("java.text.resources.LocaleElements", var1);
  398.          String[] var4 = var3.getStringArray("DateTimeElements");
  399.          var2 = new int[]{Integer.parseInt(var4[0]), Integer.parseInt(var4[1])};
  400.          cachedLocaleData.put(var1, var2);
  401.       }
  402.  
  403.       this.firstDayOfWeek = var2[0];
  404.       this.minimalDaysInFirstWeek = var2[1];
  405.    }
  406.  
  407.    private void updateTime() {
  408.       this.computeTime();
  409.       if (this.isLenient() || !this.areAllFieldsSet) {
  410.          this.areFieldsSet = false;
  411.       }
  412.  
  413.       this.isTimeSet = true;
  414.    }
  415.  
  416.    private void writeObject(ObjectOutputStream var1) throws IOException {
  417.       if (!this.isTimeSet) {
  418.          try {
  419.             this.updateTime();
  420.          } catch (IllegalArgumentException var3) {
  421.          }
  422.       }
  423.  
  424.       var1.defaultWriteObject();
  425.    }
  426.  
  427.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  428.       var1.defaultReadObject();
  429.       this.stamp = new int[17];
  430.       if (this.serialVersionOnStream >= 2) {
  431.          this.isTimeSet = true;
  432.          if (this.fields == null) {
  433.             this.fields = new int[17];
  434.          }
  435.  
  436.          if (this.isSet == null) {
  437.             this.isSet = new boolean[17];
  438.          }
  439.       } else if (this.serialVersionOnStream == 0) {
  440.          for(int var2 = 0; var2 < 17; ++var2) {
  441.             this.stamp[var2] = this.isSet[var2] ? 1 : 0;
  442.          }
  443.       }
  444.  
  445.       this.serialVersionOnStream = 1;
  446.    }
  447. }
  448.