X-Git-Url: https://oss.titaniummirror.com/gitweb?a=blobdiff_plain;f=libjava%2Fjava%2Futil%2FCalendar.java;fp=libjava%2Fjava%2Futil%2FCalendar.java;h=0000000000000000000000000000000000000000;hb=6fed43773c9b0ce596dca5686f37ac3fc0fa11c0;hp=8271779819e75bd7945122b411fa437dfa5a39da;hpb=27b11d56b743098deb193d510b337ba22dc52e5c;p=msp430-gcc.git
diff --git a/libjava/java/util/Calendar.java b/libjava/java/util/Calendar.java
deleted file mode 100644
index 82717798..00000000
--- a/libjava/java/util/Calendar.java
+++ /dev/null
@@ -1,1021 +0,0 @@
-/* java.util.Calendar
- Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-02111-1307 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package java.util;
-import java.lang.reflect.InvocationTargetException;
-import java.io.*;
-
-/**
- * This class is an abstract base class for Calendars, which can be
- * used to convert between Date
objects and a set of
- * integer fields which represent YEAR
,
- * MONTH
, DAY
, etc. The Date
- * object represents a time in milliseconds since the Epoch.
- *
- * This class is locale sensitive. To get the Object matching the
- * current locale you can use getInstance
. You can even provide
- * a locale or a timezone. getInstance
returns currently
- * a GregorianCalendar
for the current date.
- *
- * If you want to convert a date from the Year, Month, Day, DayOfWeek,
- * etc. Representation to a Date
-Object, you can create
- * a new Calendar with getInstance()
,
- * clear()
all fields, set(int,int)
the
- * fields you need and convert it with getTime()
.
- *
- * If you want to convert a Date
-object to the Calendar
- * representation, create a new Calendar, assign the
- * Date
-Object with setTime()
, and read the
- * fields with get(int)
.
- *
- * When computing the date from time fields, it may happen, that there
- * are either two few fields set, or some fields are inconsistent. This
- * cases will handled in a calendar specific way. Missing fields are
- * replaced by the fields of the epoch: 1970 January 1 00:00.
- *
- * To understand, how the day of year is computed out of the fields
- * look at the following table. It is traversed from top to bottom,
- * and for the first line all fields are set, that line is used to
- * compute the day.
- *
- *
- * month + day_of_month - * month + week_of_month + day_of_week - * month + day_of_week_of_month + day_of_week - * day_of_year - * day_of_week + week_of_year - *- * - * The hour_of_day-field takes precedence over the ampm and - * hour_of_ampm fields.
java.text.DateFormat
class. roll
ing fields (that means increase/decrease a
- * specific field by one, propagating overflows), or
- * add
ing/substracting a fixed amount to a field.
- *
- * @see Date
- * @see GregorianCalendar
- * @see TimeZone
- * @see java.text.DateFormat
- */
-public abstract class Calendar implements Serializable, Cloneable
-{
- /**
- * Constant representing the era time field.
- */
- public static final int ERA = 0;
- /**
- * Constant representing the year time field.
- */
- public static final int YEAR = 1;
- /**
- * Constant representing the month time field. This field
- * should contain one of the JANUARY,...,DECEMBER constants below.
- */
- public static final int MONTH = 2;
- /**
- * Constant representing the week of the year field.
- * @see #setFirstDayOfWeek(int)
- */
- public static final int WEEK_OF_YEAR = 3;
- /**
- * Constant representing the week of the month time field.
- * @see #setFirstDayOfWeek(int)
- */
- public static final int WEEK_OF_MONTH = 4;
- /**
- * Constant representing the day time field, synonym for DAY_OF_MONTH.
- */
- public static final int DATE = 5;
- /**
- * Constant representing the day time field.
- */
- public static final int DAY_OF_MONTH = 5;
- /**
- * Constant representing the day of year time field. This is
- * 1 for the first day in month.
- */
- public static final int DAY_OF_YEAR = 6;
- /**
- * Constant representing the day of week time field. This field
- * should contain one of the SUNDAY,...,SATURDAY constants below.
- */
- public static final int DAY_OF_WEEK = 7;
- /**
- * Constant representing the day-of-week-in-month field. For
- * instance this field contains 2 for the second thursday in a
- * month. If you give a negative number here, the day will count
- * from the end of the month.
- */
- public static final int DAY_OF_WEEK_IN_MONTH = 8;
- /**
- * Constant representing the part of the day for 12-hour clock. This
- * should be one of AM or PM.
- */
- public static final int AM_PM = 9;
- /**
- * Constant representing the hour time field for 12-hour clock.
- */
- public static final int HOUR = 10;
- /**
- * Constant representing the hour of day time field for 24-hour clock.
- */
- public static final int HOUR_OF_DAY = 11;
- /**
- * Constant representing the minute of hour time field.
- */
- public static final int MINUTE = 12;
- /**
- * Constant representing the second time field.
- */
- public static final int SECOND = 13;
- /**
- * Constant representing the millisecond time field.
- */
- public static final int MILLISECOND = 14;
- /**
- * Constant representing the time zone offset time field for the
- * time given in the other fields. It is measured in
- * milliseconds. The default is the offset of the time zone.
- */
- public static final int ZONE_OFFSET = 15;
- /**
- * Constant representing the daylight saving time offset in
- * milliseconds. The default is the value given by the time zone.
- */
- public static final int DST_OFFSET = 16;
- /**
- * Number of time fields.
- */
- public static final int FIELD_COUNT = 17;
-
- /**
- * Constant representing Sunday.
- */
- public static final int SUNDAY = 1;
- /**
- * Constant representing Monday.
- */
- public static final int MONDAY = 2;
- /**
- * Constant representing Tuesday.
- */
- public static final int TUESDAY = 3;
- /**
- * Constant representing Wednesday.
- */
- public static final int WEDNESDAY = 4;
- /**
- * Constant representing Thursday.
- */
- public static final int THURSDAY = 5;
- /**
- * Constant representing Friday.
- */
- public static final int FRIDAY = 6;
- /**
- * Constant representing Saturday.
- */
- public static final int SATURDAY = 7;
-
- /**
- * Constant representing January.
- */
- public static final int JANUARY = 0;
- /**
- * Constant representing February.
- */
- public static final int FEBRUARY = 1;
- /**
- * Constant representing March.
- */
- public static final int MARCH = 2;
- /**
- * Constant representing April.
- */
- public static final int APRIL = 3;
- /**
- * Constant representing May.
- */
- public static final int MAY = 4;
- /**
- * Constant representing June.
- */
- public static final int JUNE = 5;
- /**
- * Constant representing July.
- */
- public static final int JULY = 6;
- /**
- * Constant representing August.
- */
- public static final int AUGUST = 7;
- /**
- * Constant representing September.
- */
- public static final int SEPTEMBER = 8;
- /**
- * Constant representing October.
- */
- public static final int OCTOBER = 9;
- /**
- * Constant representing November.
- */
- public static final int NOVEMBER = 10;
- /**
- * Constant representing December.
- */
- public static final int DECEMBER = 11;
- /**
- * Constant representing Undecimber. This is an artificial name useful
- * for lunar calendars.
- */
- public static final int UNDECIMBER = 12;
-
- /**
- * Useful constant for 12-hour clock.
- */
- public static final int AM = 0;
- /**
- * Useful constant for 12-hour clock.
- */
- public static final int PM = 1;
-
- /**
- * The time fields. The array is indexed by the constants YEAR to
- * DST_OFFSET.
- * @serial
- */
- protected int[] fields = new int[FIELD_COUNT];
- /**
- * The flags which tell if the fields above have a value.
- * @serial
- */
- protected boolean[] isSet = new boolean[FIELD_COUNT];
- /**
- * The time in milliseconds since the epoch.
- * @serial
- */
- protected long time;
- /**
- * Tells if the above field has a valid value.
- * @serial
- */
- protected boolean isTimeSet;
- /**
- * Tells if the fields have a valid value. This superseeds the isSet
- * array.
- * @serial
- */
- protected boolean areFieldsSet;
-
- /**
- * The time zone of this calendar. Used by sub classes to do UTC / local
- * time conversion. Sub classes can access this field with getTimeZone().
- * @serial
- */
- private TimeZone zone;
-
- /**
- * Specifies if the date/time interpretation should be lenient.
- * If the flag is set, a date such as "February 30, 1996" will be
- * treated as the 29th day after the February 1. If this flag
- * is false, such dates will cause an exception.
- * @serial
- */
- private boolean lenient;
-
- /**
- * Sets what the first day of week is. This is used for
- * WEEK_OF_MONTH and WEEK_OF_YEAR fields.
- * @serial
- */
- private int firstDayOfWeek;
-
- /**
- * Sets how many days are required in the first week of the year.
- * If the first day of the year should be the first week you should
- * set this value to 1. If the first week must be a full week, set
- * it to 7.
- * @serial
- */
- private int minimalDaysInFirstWeek;
-
- /**
- * The version of the serialized data on the stream.
- * fields
) to
- * milliseconds since the epoch UTC (time
). Override
- * this method if you write your own Calendar. */
- protected abstract void computeTime();
-
- /**
- * Converts the milliseconds since the epoch UTC
- * (time
) to time fields
- * (fields
). Override this method if you write your
- * own Calendar.
- */
- protected abstract void computeFields();
-
- /**
- * Converts the time represented by this object to a
- * Date
-Object.
- * @return the Date.
- */
- public final Date getTime()
- {
- if (!isTimeSet)
- computeTime();
- return new Date(time);
- }
-
- /**
- * Sets this Calendar's time to the given Date. All time fields
- * are invalidated by this method.
- */
- public final void setTime(Date date)
- {
- setTimeInMillis(date.getTime());
- }
-
- /**
- * Returns the time represented by this Calendar.
- * @return the time in milliseconds since the epoch.
- */
- protected long getTimeInMillis()
- {
- if (!isTimeSet)
- computeTime();
- return time;
- }
-
- /**
- * Sets this Calendar's time to the given Time. All time fields
- * are invalidated by this method.
- * @param time the time in milliseconds since the epoch
- */
- protected void setTimeInMillis(long time)
- {
- this.time = time;
- isTimeSet = true;
- computeFields();
- }
-
- /**
- * Gets the value of the specified field. They are recomputed
- * if they are invalid.
- * @param field the time field. One of the time field constants.
- * @return the value of the specified field
- */
- public final int get(int field)
- {
- // If the requested field is invalid, force all fields to be recomputed.
- if (!isSet[field])
- areFieldsSet = false;
- complete();
- return fields[field];
- }
-
- /**
- * Gets the value of the specified field. This method doesn't
- * recompute the fields, if they are invalid.
- * @param field the time field. One of the time field constants.
- * @return the value of the specified field, undefined if
- * areFieldsSet
or isSet[field]
is false.
- */
- protected final int internalGet(int field)
- {
- return fields[field];
- }
-
- /**
- * Sets the time field with the given value. This does invalidate
- * the time in milliseconds.
- * @param field the time field. One of the time field constants
- * @param value the value to be set.
- */
- public final void set(int field, int value)
- {
- isTimeSet = false;
- fields[field] = value;
- isSet[field] = true;
- switch (field)
- {
- case YEAR:
- case MONTH:
- case DATE:
- isSet[WEEK_OF_YEAR] = false;
- isSet[DAY_OF_YEAR] = false;
- isSet[WEEK_OF_MONTH] = false;
- isSet[DAY_OF_WEEK] = false;
- isSet[DAY_OF_WEEK_IN_MONTH] = false;
- break;
- case AM_PM:
- isSet[HOUR_OF_DAY] = false;
- break;
- case HOUR_OF_DAY:
- isSet[AM_PM] = false;
- isSet[HOUR] = false;
- break;
- case HOUR:
- isSet[HOUR_OF_DAY] = false;
- break;
- }
- }
-
- /**
- * Sets the fields for year, month, and date
- * @param year the year.
- * @param month the month, one of the constants JANUARY..UNDICEMBER.
- * @param date the day of the month
- */
- public final void set(int year, int month, int date)
- {
- isTimeSet = false;
- fields[YEAR] = year;
- fields[MONTH] = month;
- fields[DATE] = date;
- isSet[YEAR] = isSet[MONTH] = isSet[DATE] = true;
- isSet[WEEK_OF_YEAR] = false;
- isSet[DAY_OF_YEAR] = false;
- isSet[WEEK_OF_MONTH] = false;
- isSet[DAY_OF_WEEK] = false;
- isSet[DAY_OF_WEEK_IN_MONTH] = false;
- }
-
- /**
- * Sets the fields for year, month, date, hour, and minute
- * @param year the year.
- * @param month the month, one of the constants JANUARY..UNDICEMBER.
- * @param date the day of the month
- * @param hour the hour of day.
- * @param minute the minute.
- */
- public final void set(int year, int month, int date, int hour, int minute)
- {
- set(year, month, date);
- fields[HOUR_OF_DAY] = hour;
- fields[MINUTE] = minute;
- isSet[HOUR_OF_DAY] = isSet[MINUTE] = true;
- isSet[AM_PM] = false;
- isSet[HOUR] = false;
- }
-
- /**
- * Sets the fields for year, month, date, hour, and minute
- * @param year the year.
- * @param month the month, one of the constants JANUARY..UNDICEMBER.
- * @param date the day of the month
- * @param hour the hour of day.
- * @param minute the minute.
- * @param second the second.
- */
- public final void set(int year, int month, int date,
- int hour, int minute, int second)
- {
- set(year, month, date, hour, minute);
- fields[SECOND] = second;
- isSet[SECOND] = true;
- }
-
- /**
- * Clears the values of all the time fields.
- */
- public final void clear()
- {
- isTimeSet = false;
- areFieldsSet = false;
- for (int i = 0; i < FIELD_COUNT; i++)
- {
- isSet[i] = false;
- fields[i] = 0;
- }
- }
-
- /**
- * Clears the values of the specified time field.
- * @param field the time field. One of the time field constants.
- */
- public final void clear(int field)
- {
- isTimeSet = false;
- areFieldsSet = false;
- isSet[field] = false;
- fields[field] = 0;
- }
-
- /**
- * Determines if the specified field has a valid value.
- * @return true if the specified field has a value.
- */
- public final boolean isSet(int field)
- {
- return isSet[field];
- }
-
- /**
- * Fills any unset fields in the time field list
- * @return true if the specified field has a value.
- */
- protected void complete()
- {
- if (!isTimeSet)
- computeTime();
- if (!areFieldsSet)
- computeFields();
- }
-
- /**
- * Compares the given calendar with this.
- * @param o the object to that we should compare.
- * @return true, if the given object is a calendar, that represents
- * the same time (but doesn't necessary have the same fields).
- */
- public boolean equals(Object o)
- {
- return (o instanceof Calendar)
- && getTimeInMillis() == ((Calendar) o).getTimeInMillis();
- }
-
- /**
- * Returns a hash code for this calendar.
- * @return a hash code, which fullfits the general contract of
- * hashCode()
- */
- public int hashCode()
- {
- long time = getTimeInMillis();
- return (int) ((time & 0xffffffffL) ^ (time >> 32));
- }
-
- /**
- * Compares the given calendar with this.
- * @param o the object to that we should compare.
- * @return true, if the given object is a calendar, and this calendar
- * represents a smaller time than the calendar o.
- * @exception ClassCastException if o is not an calendar.
- * @since JDK1.2 you don't need to override this method
- */
- public boolean before(Object o)
- {
- return getTimeInMillis() < ((Calendar) o).getTimeInMillis();
- }
-
- /**
- * Compares the given calendar with this.
- * @param o the object to that we should compare.
- * @return true, if the given object is a calendar, and this calendar
- * represents a bigger time than the calendar o.
- * @exception ClassCastException if o is not an calendar.
- * @since JDK1.2 you don't need to override this method
- */
- public boolean after(Object o)
- {
- return getTimeInMillis() > ((Calendar) o).getTimeInMillis();
- }
-
- /**
- * Adds the specified amount of time to the given time field. The
- * amount may be negative to subtract the time. If the field overflows
- * it does what you expect: Jan, 25 + 10 Days is Feb, 4.
- * @param field the time field. One of the time field constants.
- * @param amount the amount of time.
- */
- public abstract void add(int field, int amount);
-
- /**
- * Rolls the specified time field up or down. This means add one
- * to the specified field, but don't change the other fields. If
- * the maximum for this field is reached, start over with the
- * minimum value. roll(int, boolean)
for the specified amount.
- *
- * Subclasses should override this method to do more intuitiv things.
- *
- * @param field the time field. One of the time field constants.
- * @param amount the amount to roll by, positive for rolling up,
- * negative for rolling down.
- * @since JDK1.2
- */
- public void roll(int field, int amount)
- {
- while (amount > 0)
- {
- roll(field, true);
- amount--;
- }
- while (amount < 0)
- {
- roll(field, false);
- amount++;
- }
- }
-
-
- /**
- * Sets the time zone to the specified value.
- * @param zone the new time zone
- */
- public void setTimeZone(TimeZone zone)
- {
- this.zone = zone;
- }
-
- /**
- * Gets the time zone of this calendar
- * @return the current time zone.
- */
- public TimeZone getTimeZone()
- {
- return zone;
- }
-
- /**
- * Specifies if the date/time interpretation should be lenient.
- * If the flag is set, a date such as "February 30, 1996" will be
- * treated as the 29th day after the February 1. If this flag
- * is false, such dates will cause an exception.
- * @param lenient true, if the date should be interpreted linient,
- * false if it should be interpreted strict.
- */
- public void setLenient(boolean lenient)
- {
- this.lenient = lenient;
- }
-
- /**
- * Tells if the date/time interpretation is lenient.
- * @return true, if the date should be interpreted linient,
- * false if it should be interpreted strict.
- */
- public boolean isLenient()
- {
- return lenient;
- }
-
- /**
- * Sets what the first day of week is. This is used for
- * WEEK_OF_MONTH and WEEK_OF_YEAR fields.
- * @param value the first day of week. One of SUNDAY to SATURDAY.
- */
- public void setFirstDayOfWeek(int value)
- {
- firstDayOfWeek = value;
- }
-
- /**
- * Gets what the first day of week is. This is used for
- * WEEK_OF_MONTH and WEEK_OF_YEAR fields.
- * @return the first day of week. One of SUNDAY to SATURDAY.
- */
- public int getFirstDayOfWeek()
- {
- return firstDayOfWeek;
- }
-
- /**
- * Sets how many days are required in the first week of the year.
- * If the first day of the year should be the first week you should
- * set this value to 1. If the first week must be a full week, set
- * it to 7.
- * @param value the minimal days required in the first week.
- */
- public void setMinimalDaysInFirstWeek(int value)
- {
- minimalDaysInFirstWeek = value;
- }
-
- /**
- * Gets how many days are required in the first week of the year.
- * @return the minimal days required in the first week.
- * @see #setMinimalDaysInFirstWeek
- */
- public int getMinimalDaysInFirstWeek()
- {
- return minimalDaysInFirstWeek;
- }
-
- /**
- * Gets the smallest value that is allowed for the specified field.
- * @param field the time field. One of the time field constants.
- * @return the smallest value.
- */
- public abstract int getMinimum(int field);
-
- /**
- * Gets the biggest value that is allowed for the specified field.
- * @param field the time field. One of the time field constants.
- * @return the biggest value.
- */
- public abstract int getMaximum(int field);
-
-
- /**
- * Gets the greatest minimum value that is allowed for the specified field.
- * @param field the time field. One of the time field constants.
- * @return the greatest minimum value.
- */
- public abstract int getGreatestMinimum(int field);
-
- /**
- * Gets the smallest maximum value that is allowed for the
- * specified field. For example this is 28 for DAY_OF_MONTH.
- * @param field the time field. One of the time field constants.
- * @return the least maximum value.
- */
- public abstract int getLeastMaximum(int field);
-
- /**
- * Gets the actual minimum value that is allowed for the specified field.
- * This value is dependent on the values of the other fields.
- * @param field the time field. One of the time field constants.
- * @return the actual minimum value.
- * @since jdk1.2
- */
- // FIXME: XXX: Not abstract in JDK 1.2.
- public abstract int getActualMinimum(int field);
-
- /**
- * Gets the actual maximum value that is allowed for the specified field.
- * This value is dependent on the values of the other fields.
- * @param field the time field. One of the time field constants.
- * @return the actual maximum value.
- * @since jdk1.2
- */
- // FIXME: XXX: Not abstract in JDK 1.2.
- public abstract int getActualMaximum(int field);
-
- /**
- * Return a clone of this object.
- */
- public Object clone()
- {
- try
- {
- Calendar cal = (Calendar) super.clone();
- cal.fields = (int[]) fields.clone();
- cal.isSet = (boolean[])isSet.clone();
- return cal;
- }
- catch (CloneNotSupportedException ex)
- {
- return null;
- }
- }
-
- private final static String[] fieldNames = {
- ",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="
- };
-
-
- /**
- * Returns a string representation of this object. It is mainly
- * for debugging purposes and its content is implementation
- * specific.
- */
- public String toString()
- {
- StringBuffer sb = new StringBuffer();
- sb.append(getClass().getName()).append('[');
- sb.append("time=");
- if (isTimeSet)
- sb.append(time);
- else
- sb.append("?");
- sb.append(",zone=" + zone);
- sb.append(",areFieldsSet=" + areFieldsSet);
- for (int i = 0; i < FIELD_COUNT; i++)
- {
- sb.append(fieldNames[i]);
- if (isSet[i])
- sb.append(fields[i]);
- else
- sb.append("?");
- }
- sb.append(",lenient=").append(lenient);
- sb.append(",firstDayOfWeek=").append(firstDayOfWeek);
- sb.append(",minimalDaysInFirstWeek=").append(minimalDaysInFirstWeek);
- sb.append("]");
- return sb.toString();
- }
-
- /**
- * Saves the state of the object to the stream. Ideally we would
- * only write the time field, but we need to be compatible with
- * earlier versions.