home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / util / Calendar.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  8.6 KB  |  365 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.    }
  192.  
  193.    public final void clear(int var1) {
  194.       this.fields[var1] = 0;
  195.       this.stamp[var1] = 0;
  196.       this.areFieldsSet = false;
  197.       this.areAllFieldsSet = false;
  198.       this.isSet[var1] = false;
  199.    }
  200.  
  201.    public final boolean isSet(int var1) {
  202.       return this.stamp[var1] != 0;
  203.    }
  204.  
  205.    protected void complete() {
  206.       if (!this.isTimeSet) {
  207.          this.updateTime();
  208.       }
  209.  
  210.       if (!this.areFieldsSet) {
  211.          this.computeFields();
  212.          this.areFieldsSet = true;
  213.          this.areAllFieldsSet = true;
  214.       }
  215.  
  216.    }
  217.  
  218.    public abstract boolean equals(Object var1);
  219.  
  220.    public abstract boolean before(Object var1);
  221.  
  222.    public abstract boolean after(Object var1);
  223.  
  224.    public abstract void add(int var1, int var2);
  225.  
  226.    public abstract void roll(int var1, boolean var2);
  227.  
  228.    public void setTimeZone(TimeZone var1) {
  229.       this.zone = var1;
  230.    }
  231.  
  232.    public TimeZone getTimeZone() {
  233.       return this.zone;
  234.    }
  235.  
  236.    public void setLenient(boolean var1) {
  237.       this.lenient = var1;
  238.    }
  239.  
  240.    public boolean isLenient() {
  241.       return this.lenient;
  242.    }
  243.  
  244.    public void setFirstDayOfWeek(int var1) {
  245.       this.firstDayOfWeek = var1;
  246.    }
  247.  
  248.    public int getFirstDayOfWeek() {
  249.       return this.firstDayOfWeek;
  250.    }
  251.  
  252.    public void setMinimalDaysInFirstWeek(int var1) {
  253.       this.minimalDaysInFirstWeek = var1;
  254.    }
  255.  
  256.    public int getMinimalDaysInFirstWeek() {
  257.       return this.minimalDaysInFirstWeek;
  258.    }
  259.  
  260.    public abstract int getMinimum(int var1);
  261.  
  262.    public abstract int getMaximum(int var1);
  263.  
  264.    public abstract int getGreatestMinimum(int var1);
  265.  
  266.    public abstract int getLeastMaximum(int var1);
  267.  
  268.    public Object clone() {
  269.       try {
  270.          Calendar var1 = (Calendar)super.clone();
  271.          var1.fields = new int[17];
  272.          var1.isSet = new boolean[17];
  273.          var1.stamp = new int[17];
  274.          System.arraycopy(this.fields, 0, var1.fields, 0, 17);
  275.          System.arraycopy(this.isSet, 0, var1.isSet, 0, 17);
  276.          System.arraycopy(this.stamp, 0, var1.stamp, 0, 17);
  277.          var1.zone = (TimeZone)this.zone.clone();
  278.          return var1;
  279.       } catch (CloneNotSupportedException var2) {
  280.          throw new InternalError();
  281.       }
  282.    }
  283.  
  284.    public String toString() {
  285.       StringBuffer var1 = new StringBuffer();
  286.       var1.append(this.getClass().getName());
  287.       var1.append("[time=");
  288.       var1.append(this.isTimeSet ? String.valueOf(this.time) : "?");
  289.       var1.append(",areFieldsSet=");
  290.       var1.append(this.areFieldsSet);
  291.       var1.append(",areAllFieldsSet=");
  292.       var1.append(this.areAllFieldsSet);
  293.       var1.append(",lenient=");
  294.       var1.append(this.lenient);
  295.       var1.append(",zone=");
  296.       var1.append(this.zone);
  297.       var1.append(",firstDayOfWeek=");
  298.       var1.append(this.firstDayOfWeek);
  299.       var1.append(",minimalDaysInFirstWeek=");
  300.       var1.append(this.minimalDaysInFirstWeek);
  301.  
  302.       for(int var2 = 0; var2 < 17; ++var2) {
  303.          var1.append(FIELD_NAME[var2]);
  304.          var1.append(this.isSet(var2) ? String.valueOf(this.fields[var2]) : "?");
  305.       }
  306.  
  307.       var1.append(']');
  308.       return var1.toString();
  309.    }
  310.  
  311.    private void setWeekCountData(Locale var1) {
  312.       int[] var2 = (int[])cachedLocaleData.get(var1);
  313.       if (var2 == null) {
  314.          ResourceBundle var3 = ResourceBundle.getBundle("java.text.resources.LocaleElements", var1);
  315.          String[] var4 = var3.getStringArray("DateTimeElements");
  316.          var2 = new int[]{Integer.parseInt(var4[0]), Integer.parseInt(var4[1])};
  317.          cachedLocaleData.put(var1, var2);
  318.       }
  319.  
  320.       this.firstDayOfWeek = var2[0];
  321.       this.minimalDaysInFirstWeek = var2[1];
  322.    }
  323.  
  324.    private void updateTime() {
  325.       this.computeTime();
  326.       if (this.isLenient() || !this.areAllFieldsSet) {
  327.          this.areFieldsSet = false;
  328.       }
  329.  
  330.       this.isTimeSet = true;
  331.    }
  332.  
  333.    private void writeObject(ObjectOutputStream var1) throws IOException {
  334.       if (!this.isTimeSet) {
  335.          try {
  336.             this.updateTime();
  337.          } catch (IllegalArgumentException var2) {
  338.          }
  339.       }
  340.  
  341.       var1.defaultWriteObject();
  342.    }
  343.  
  344.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  345.       var1.defaultReadObject();
  346.       this.stamp = new int[17];
  347.       if (this.serialVersionOnStream >= 2) {
  348.          this.isTimeSet = true;
  349.          if (this.fields == null) {
  350.             this.fields = new int[17];
  351.          }
  352.  
  353.          if (this.isSet == null) {
  354.             this.isSet = new boolean[17];
  355.          }
  356.       } else if (this.serialVersionOnStream == 0) {
  357.          for(int var2 = 0; var2 < 17; ++var2) {
  358.             this.stamp[var2] = this.isSet[var2] ? 1 : 0;
  359.          }
  360.       }
  361.  
  362.       this.serialVersionOnStream = 1;
  363.    }
  364. }
  365.