History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg2/java/util (48 of 18352 files). Show all

Unified · Split

48 files
  1. java/pkg2/java/util/BitSet.java +0 −0
  2. java/pkg2/java/util/Calendar.java +782 −0
  3. java/pkg2/java/util/Date.java +0 −0
  4. java/pkg2/java/util/Date_L.b +180 −0
  5. java/pkg2/java/util/Date_L.m +30 −0
  6. java/pkg2/java/util/Dictionary.java +0 −0
  7. java/pkg2/java/util/EmptyStackException.java +0 −0
  8. java/pkg2/java/util/Enumeration.java +0 −0
  9. java/pkg2/java/util/EventListener.java +0 −0
  10. java/pkg2/java/util/EventObject.java +0 −0
  11. java/pkg2/java/util/GregorianCalendar.java +557 −0
  12. java/pkg2/java/util/Hashtable.java +0 −0
  13. java/pkg2/java/util/ListResourceBundle.java +169 −0
  14. java/pkg2/java/util/Locale.java +631 −0
  15. java/pkg2/java/util/MissingResourceException.java +73 −0
  16. java/pkg2/java/util/NoSuchElementException.java +0 −0
  17. java/pkg2/java/util/Observable.java +0 −0
  18. java/pkg2/java/util/Observer.java +0 −0
  19. java/pkg2/java/util/Properties.java +0 −0
  20. java/pkg2/java/util/PropertyResourceBundle.java +121 −0
  21. java/pkg2/java/util/Random.java +0 −0
  22. java/pkg2/java/util/ResourceBundle.java +536 −0
  23. java/pkg2/java/util/ResourceBundle_L.b +48 −0
  24. java/pkg2/java/util/ResourceBundle_L.m +14 −0
  25. java/pkg2/java/util/SimpleTimeZone.java +246 −0
  26. java/pkg2/java/util/Stack.java +0 −0
  27. java/pkg2/java/util/StringTokenizer.java +0 −0
  28. java/pkg2/java/util/TimeZone.java +193 −0
  29. java/pkg2/java/util/TooManyListenersException.java +65 −0
  30. java/pkg2/java/util/Vector.java +0 −0
  31. java/pkg2/java/util/mkfile +88 −0
  32. java/pkg2/java/util/zip/CRC32.java +0 −0
  33. java/pkg2/java/util/zip/CRC32_L.b +51 −0
  34. java/pkg2/java/util/zip/CRC32_L.m +15 −0
  35. java/pkg2/java/util/zip/CheckedInputStream.java +0 −0
  36. java/pkg2/java/util/zip/CheckedOutputStream.java +0 −0
  37. java/pkg2/java/util/zip/Checksum.java +0 −0
  38. java/pkg2/java/util/zip/DataFormatException.java +0 −0
  39. java/pkg2/java/util/zip/GZIPInputStream.java +0 −0
  40. java/pkg2/java/util/zip/Inflater.java +0 −0
  41. java/pkg2/java/util/zip/InflaterInputStream.java +0 −0
  42. java/pkg2/java/util/zip/Inflater_L.b +77 −0
  43. java/pkg2/java/util/zip/Inflater_L.m +24 −0
  44. java/pkg2/java/util/zip/ZipConstants.java +0 −0
  45. java/pkg2/java/util/zip/ZipEntry.java +0 −0
  46. java/pkg2/java/util/zip/ZipException.java +0 −0
  47. java/pkg2/java/util/zip/ZipInputStream.java +0 −0
  48. java/pkg2/java/util/zip/mkfile +38 −0
java/pkg2/java/util/BitSet.java+0−0

Empty file added.

java/pkg2/java/util/Calendar.java+782−0
@@ -0,0 +1,782 @@
1/*
2 * @(#)Calendar.java 1.23 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33import java.io.Serializable;
34import java.io.ObjectInputStream;
35
36/**
37 * <code>Calendar</code> is an abstract base class for converting between
38 * a <code>Date</code> object and a set of integer fields such as
39 * <code>YEAR</code>, <code>MONTH</code>, <code>DAY</code>, <code>HOUR</code>,
40 * and so on. (A <code>Date</code> object represents a specific instant in
41 * time with millisecond precision. See
42 * <a href="java.util.Date.html"><code>java.util.Date</code></a>
43 * for information about the <code>Date</code> class.)
44 *
45 * <p>
46 * Subclasses of <code>Calendar</code> interpret a <code>Date</code>
47 * according to the rules of a specific calendar system. The JDK
48 * provides one concrete subclass of <code>Calendar</code>:
49 * <code>GregorianCalendar</code>. Future subclasses could represent
50 * the various types of lunar calendars in use in many parts of the world.
51 *
52 * <p>
53 * Like other locale-sensitive classes, <code>Calendar</code> provides a
54 * class method, <code>getInstance</code>, for getting a generally useful
55 * object of this type. <code>Calendar</code>'s <code>getInstance</code> method
56 * returns a <code>GregorianCalendar</code> object whose
57 * time fields have been initialized with the current date and time:
58 * <blockquote>
59 * <pre>
60 * Calendar rightNow = Calendar.getInstance();
61 * </pre>
62 * </blockquote>
63 *
64 * <p>
65 * A <code>Calendar</code> object can produce all the time field values
66 * needed to implement the date-time formatting for a particular language
67 * and calendar style (for example, Japanese-Gregorian, Japanese-Traditional).
68 *
69 * <p>
70 * When computing a <code>Date</code> from time fields, two special circumstances
71 * may arise: there may be insufficient information to compute the
72 * <code>Date</code> (such as only year and month but no day in the month),
73 * or there may be inconsistent information (such as "Tuesday, July 15, 1996"
74 * -- July 15, 1996 is actually a Monday).
75 *
76 * <p>
77 * <strong>Insufficient information.</strong> The calendar will use default
78 * information to specify the missing fields. This may vary by calendar; for
79 * the Gregorian calendar, the default for a field is the same as that of the
80 * start of the epoch: i.e., YEAR = 1970, MONTH = JANUARY, DATE = 1, etc.
81 *
82 * <p>
83 * <strong>Inconsistent information.</strong> The calendar will give preference
84 * to the combinations of fields in the following order (and disregard other
85 * inconsistent information).
86 *
87 * <blockquote>
88 * <pre>
89 * month + day-of-month
90 * month + week-of-month + day-of-week
91 * month + day-of-week-of-month + day-of-week
92 * day-of-year
93 * day-of-week + week-of-year
94 * hour-of-day
95 * ampm + hour-of-ampm
96 * </pre>
97 * </blockquote>
98 *
99 * <p>
100 * <strong>Note:</strong> for some non-Gregorian calendars, different
101 * fields may be necessary for complete disambiguation. For example, a full
102 * specification of the historial Arabic astronomical calendar requires year,
103 * month, day-of-month <em>and</em> day-of-week in some cases.
104 *
105 * <p>
106 * <strong>Note:</strong> There are certain possible ambiguities in
107 * interpretation of certain singular times, which are resolved in the
108 * following ways:
109 * <ol>
110 * <li> 24:00:00 "belongs" to the following day. That is,
111 * 23:59 on Dec 31, 1969 &lt; 24:00 on Jan 1, 1970 &lt; 24:01:00 on Jan 1, 1970
112 *
113 * <li> Although historically not precise, midnight also belongs to "am",
114 * and noon belongs to "pm", so on the same day,
115 * 12:00 am (midnight) &lt; 12:01 am, and 12:00 pm (noon) &lt; 12:01 pm
116 * </ol>
117 *
118 * <p>
119 * The date or time format strings are not part of the definition of a
120 * calendar, as those must be modifiable or overridable by the user at
121 * runtime. Use <a href="java.text.DateFormat.html">java.text.DateFormat</a>
122 * to format dates.
123 *
124 * <p>
125 * <code>Calendar</code> provides an API for field "rolling", where fields
126 * can be incremented or decremented, but wrap around. For example, rolling the
127 * month up in the date "September 12, 1996" results in "October 12, 1996".
128 *
129 * <p>
130 * <code>Calendar</code> also provides a date arithmetic function for
131 * adding the specified (signed) amount of time to a particular time field.
132 * For example, subtracting 5 days from the date "September 12, 1996" results
133 * in "September 7, 1996".
134 *
135 * @see Date
136 * @see GregorianCalendar
137 * @see TimeZone
138 * @see java.text.DateFormat
139 * @version 1.17 06 Jan 1997
140 * @author Mark Davis, David Goldsmith, Chen-Lieh Huang
141 */
142public abstract class Calendar implements Serializable, Cloneable {
143
144 /**
145 * Useful constant for date and time. Used in time fields.
146 * ERA is calendar specific.
147 */
148 public final static int ERA = 0;
149 /**
150 * Useful constant for date and time. Used in time fields.
151 */
152 public final static int YEAR = 1;
153 /**
154 * Useful constant for date and time. Used in time fields.
155 */
156 public final static int MONTH = 2;
157 /**
158 * Useful constant for date and time. Used in time fields.
159 */
160 public final static int WEEK_OF_YEAR = 3;
161 /**
162 * Useful constant for date and time. Used in time fields.
163 */
164 public final static int WEEK_OF_MONTH = 4;
165 /**
166 * Useful constant for date and time. Used in time fields.
167 * DATE is the time field name for day-of-month.
168 */
169 public final static int DATE = 5;
170 /**
171 * Useful constant for date and time. Used in time fields.
172 * This is a synonym for DATE.
173 */
174 public final static int DAY_OF_MONTH = 5;
175 /**
176 * Useful constant for date and time. Used in time fields.
177 */
178 public final static int DAY_OF_YEAR = 6;
179 /**
180 * Useful constant for date and time. Used in time fields.
181 */
182 public final static int DAY_OF_WEEK = 7;
183 /**
184 * Useful constant for date and time. Used in time fields.
185 */
186 public final static int DAY_OF_WEEK_IN_MONTH = 8;
187 /**
188 * Useful constant for date and time. Used in time fields.
189 */
190 public final static int AM_PM = 9;
191 /**
192 * Useful constant for date and time. Used in time fields.
193 * HOUR is used for the 12-hour clock.
194 */
195 public final static int HOUR = 10;
196 /**
197 * Useful constant for date and time. Used in time fields.
198 * HOUR_OF_DAY is used for the 24-hour clock.
199 */
200 public final static int HOUR_OF_DAY = 11;
201 /**
202 * Useful constant for date and time. Used in time fields.
203 */
204 public final static int MINUTE = 12;
205 /**
206 * Useful constant for date and time. Used in time fields.
207 */
208 public final static int SECOND = 13;
209 /**
210 * Useful constant for date and time. Used in time fields.
211 */
212 public final static int MILLISECOND = 14;
213 /**
214 * Useful constant for date and time. Used in time fields.
215 */
216 public final static int ZONE_OFFSET = 15;
217 /**
218 * Useful constant for date and time. Used in time fields.
219 */
220 public final static int DST_OFFSET = 16;
221 /**
222 * Useful constant for date and time.
223 * FIELD_COUNT is used for the time field array creation.
224 */
225 public final static int FIELD_COUNT = 17;
226
227 /**
228 * Useful constant for days of week. Used in GregorianCalendar.
229 */
230 public final static int SUNDAY = 1;
231 /**
232 * Useful constant for days of week. Used in GregorianCalendar.
233 */
234 public final static int MONDAY = 2;
235 /**
236 * Useful constant for days of week. Used in GregorianCalendar.
237 */
238 public final static int TUESDAY = 3;
239 /**
240 * Useful constant for days of week. Used in GregorianCalendar.
241 */
242 public final static int WEDNESDAY = 4;
243 /**
244 * Useful constant for days of week. Used in GregorianCalendar.
245 */
246 public final static int THURSDAY = 5;
247 /**
248 * Useful constant for days of week. Used in GregorianCalendar.
249 */
250 public final static int FRIDAY = 6;
251 /**
252 * Useful constant for days of week. Used in GregorianCalendar.
253 */
254 public final static int SATURDAY = 7;
255 /**
256 * Useful constant for month. Used in GregorianCalendar.
257 * Note: Calendar month is now 0-based.
258 */
259 public final static int JANUARY = 0;
260 /**
261 * Useful constant for month. Used in GregorianCalendar.
262 */
263 public final static int FEBRUARY = 1;
264 /**
265 * Useful constant for month. Used in GregorianCalendar.
266 */
267 public final static int MARCH = 2;
268 /**
269 * Useful constant for month. Used in GregorianCalendar.
270 */
271 public final static int APRIL = 3;
272 /**
273 * Useful constant for month. Used in GregorianCalendar.
274 */
275 public final static int MAY = 4;
276 /**
277 * Useful constant for month. Used in GregorianCalendar.
278 */
279 public final static int JUNE = 5;
280 /**
281 * Useful constant for month. Used in GregorianCalendar.
282 */
283 public final static int JULY = 6;
284 /**
285 * Useful constant for month. Used in GregorianCalendar.
286 */
287 public final static int AUGUST = 7;
288 /**
289 * Useful constant for month. Used in GregorianCalendar.
290 */
291 public final static int SEPTEMBER = 8;
292 /**
293 * Useful constant for month. Used in GregorianCalendar.
294 */
295 public final static int OCTOBER = 9;
296 /**
297 * Useful constant for month. Used in GregorianCalendar.
298 */
299 public final static int NOVEMBER = 10;
300 /**
301 * Useful constant for month. Used in GregorianCalendar.
302 */
303 public final static int DECEMBER = 11;
304 /**
305 * Useful constant for month. Used in GregorianCalendar.
306 * UNDECIMBER is an artifical name. This 13th month is for lunar
307 * calendars.
308 */
309 public final static int UNDECIMBER = 12;
310 /**
311 * Useful constant for hour in 12-hour clock. Used in GregorianCalendar.
312 */
313 public final static int AM = 0;
314 /**
315 * Useful constant for hour in 12-hour clock. Used in GregorianCalendar.
316 */
317 public final static int PM = 1;
318
319 //
320 // Internal notes:
321 // Calendar contains two kinds of time representations: current "time" in
322 // milliseconds, and a set of time "fields" representing the current time.
323 // Calling setTime() method only sets the current time without recomputing
324 // the time fields until the next get() method is called. Similarly,
325 // calling one of the set() methods only sets time fields without
326 // recomputing the current time value until the next getTime() method is
327 // called.
328 //
329
330 /**
331 * The time fields containing values into which the millis is computed.
332 */
333 protected int fields[];
334 /**
335 * The flags which tell if a specified time field for the calendar is set.
336 */
337 protected boolean isSet[];
338 /**
339 * The current time set for the calendar.
340 */
341 protected long time;
342 /**
343 * The flag which indicates if the current time is set for the calendar.
344 */
345 protected boolean isTimeSet;
346 /**
347 * The flag which tells if the time fields are set for the calendar.
348 */
349 protected boolean areFieldsSet;
350
351 /**
352 * @see #setLenient
353 */
354 private boolean lenient=true;
355
356 /**
357 * Time zone affects the time calculation done by Calendar. Calendar uses
358 * the time zone data to produce the local time. Both firstDayOfWeek
359 * and minimalDaysInFirstWeek are locale-dependent. For example,
360 * in US locale, firstDayOfWeek is SUNDAY; minimalDaysInFirstWeek is 1.
361 * They are used to figure out the week count for a specific date for
362 * a given locale. These must be set when a Calendar is constructed.
363 */
364 private TimeZone zone;
365 private int firstDayOfWeek;
366 private int minimalDaysInFirstWeek;
367
368 /**
369 * Constructs a Calendar with the default time zone as returned
370 * by TimeZone.getDefault(), and the default locale.
371 * @see TimeZone#getDefault
372 */
373 protected Calendar()
374 {
375 throw new NoSuchElementException();
376 }
377
378 /**
379 * Constructs a Calendar with the given time zone and locale.
380 * @param zone the given time zone.
381 */
382 protected Calendar(TimeZone zone, Locale aLocale)
383 {
384 throw new NoSuchElementException();
385 }
386
387 /**
388 * Gets a Calendar using the default timezone and locale.
389 * @return a Calendar.
390 */
391 public static synchronized Calendar getInstance()
392 {
393 throw new NoSuchElementException();
394 }
395
396 /**
397 * Gets a Calendar using the given timezone and default locale.
398 * @param zone the given timezone.
399 * @return a Calendar.
400 */
401 public static synchronized Calendar getInstance(TimeZone zone)
402 {
403 throw new NoSuchElementException();
404 }
405
406 /**
407 * Gets a Calendar using the default timezone and given locale.
408 * @param aLocale the given locale.
409 * @return a Calendar.
410 */
411 public static synchronized Calendar getInstance(Locale aLocale)
412 {
413 throw new NoSuchElementException();
414 }
415
416 /**
417 * Gets a Calendar using the given timezone and given locale.
418 * @param zone the given timezone.
419 * @param aLocale the given locale.
420 * @return a Calendar.
421 */
422 public static synchronized Calendar getInstance(TimeZone zone,
423 Locale aLocale)
424 {
425 throw new NoSuchElementException();
426 }
427
428 /**
429 * Gets the set of locales for which Calendars are installed.
430 * @return the set of locales for which Calendars are installed.
431 */
432 public static synchronized Locale[] getAvailableLocales()
433 {
434 throw new NoSuchElementException();
435 }
436
437 /**
438 * Converts Calendar's time field values to UTC as milliseconds.
439 */
440 protected abstract void computeTime();
441
442 /**
443 * Converts UTC as milliseconds to time field values.
444 * This allows you to sync up the time field values with
445 * a new time that is set for the calendar.
446 */
447 protected abstract void computeFields();
448
449 /**
450 * Gets this Calendar's current time.
451 * @return the current time.
452 */
453 public final Date getTime() {
454 throw new NoSuchElementException();
455 }
456
457 /**
458 * Sets this Calendar's current time with the given Date.
459 * @param date the given Date.
460 */
461 public final void setTime(Date date) {
462 throw new NoSuchElementException();
463 }
464
465 /**
466 * Gets this Calendar's current time as a long.
467 * @return the current time as milliseconds from the epoch.
468 */
469 protected long getTimeInMillis() {
470 throw new NoSuchElementException();
471 }
472
473 /**
474 * Sets this Calendar's current time from the given long value.
475 * @param date the new time in milliseconds from the epoch.
476 */
477 protected void setTimeInMillis( long millis ) {
478 throw new NoSuchElementException();
479 }
480
481
482 /**
483 * Gets the value for a given time field.
484 * @param field the given time field.
485 * @return the value for the given time field.
486 */
487 public final int get(int field)
488 {
489 throw new NoSuchElementException();
490 }
491
492 /**
493 * Gets the value for a given time field. This is an internal
494 * fast time field value getter for the subclasses.
495 * @param field the given time field.
496 * @return the value for the given time field.
497 */
498 protected final int internalGet(int field)
499 {
500 throw new NoSuchElementException();
501 }
502
503 /**
504 * Sets the time field with the given value.
505 * @param field the given time field.
506 * @param value the value to be set for the given time field.
507 */
508 public final void set(int field, int value)
509 {
510 throw new NoSuchElementException();
511 }
512
513 /**
514 * Sets the values for the fields year, month, and date.
515 * @param year the value used to set the YEAR time field.
516 * @param month the value used to set the MONTH time field.
517 * Month value is 0-based. e.g., 0 for January.
518 * @param date the value used to set the DATE time field.
519 */
520 public final void set(int year, int month, int date)
521 {
522 throw new NoSuchElementException();
523 }
524
525 /**
526 * Sets the values for the fields year, month, date, hour, and minute.
527 * @param year the value used to set the YEAR time field.
528 * @param month the value used to set the MONTH time field.
529 * Month value is 0-based. e.g., 0 for January.
530 * @param date the value used to set the DATE time field.
531 * @param hour the value used to set the HOUR_OF_DAY time field.
532 * @param minute the value used to set the MINUTE time field.
533 */
534 public final void set(int year, int month, int date, int hour, int minute)
535 {
536 throw new NoSuchElementException();
537 }
538
539 /**
540 * Sets the values for the fields year, month, date, hour, minute,
541 * and second.
542 * @param year the value used to set the YEAR time field.
543 * @param month the value used to set the MONTH time field.
544 * Month value is 0-based. e.g., 0 for January.
545 * @param date the value used to set the DATE time field.
546 * @param hour the value used to set the HOUR_OF_DAY time field.
547 * @param minute the value used to set the MINUTE time field.
548 * @param second the value used to set the SECOND time field.
549 */
550 public final void set(int year, int month, int date, int hour, int minute,
551 int second)
552 {
553 throw new NoSuchElementException();
554 }
555
556 /**
557 * Clears the values of all the time fields.
558 */
559 public final void clear()
560 {
561 throw new NoSuchElementException();
562 }
563
564 /**
565 * Clears the value in the given time field.
566 * @param field the time field to be cleared.
567 */
568 public final void clear(int field)
569 {
570 throw new NoSuchElementException();
571 }
572
573 /**
574 * Determines if the given time field has a value set.
575 * @return true if the given time field has a value set; false otherwise.
576 */
577 public final boolean isSet(int field)
578 {
579 throw new NoSuchElementException();
580 }
581
582 /**
583 * Fills in any unset fields in the time field list.
584 */
585 protected void complete()
586 {
587 throw new NoSuchElementException();
588 }
589
590 /**
591 * Compares the time field records.
592 * Equivalent to comparing result of conversion to UTC.
593 * @param when the Calendar to be compared with this Calendar.
594 * @return true if the current time of this Calendar is before
595 * the time of Calendar when; false otherwise.
596 */
597 abstract public boolean before(Object when);
598
599 /**
600 * Compares the time field records.
601 * Equivalent to comparing result of conversion to UTC.
602 * @param when the Calendar to be compared with this Calendar.
603 * @return true if the current time of this Calendar is after
604 * the time of Calendar when; false otherwise.
605 */
606 abstract public boolean after(Object when);
607
608 /**
609 * Date Arithmetic function.
610 * Adds the specified (signed) amount of time to the given time field,
611 * based on the calendar's rules. For example, to subtract 5 days from
612 * the current time of the calendar, you can achieve it by calling:
613 * <p>add(Calendar.DATE, -5).
614 * @param field the time field.
615 * @param amount the amount of date or time to be added to the field.
616 */
617 abstract public void add(int field, int amount);
618
619 /**
620 * Time Field Rolling function.
621 * Rolls (up/down) a single unit of time on the given time field. For
622 * example, to roll the current date up by one day, you can achieve it
623 * by calling:
624 * <p>roll(Calendar.DATE, true).
625 * When rolling on the year or Calendar.YEAR field, it will roll the year
626 * value in the range between 1 and the value returned by calling
627 * getMaximum(Calendar.YEAR).
628 * When rolling on the month or Calendar.MONTH field, other fields like
629 * date might conflict and, need to be changed. For instance,
630 * rolling the month on the date 01/31/96 will result in 03/02/96.
631 * When rolling on the hour-in-day or Calendar.HOUR_OF_DAY field, it will
632 * roll the hour value in the range between 0 and 23, which is zero-based.
633 * @param field the time field.
634 * @param up indicates if the value of the specified time field is to be
635 * rolled up or rolled down. Use true if rolling up, false otherwise.
636 */
637 abstract public void roll(int field, boolean up);
638
639 /**
640 * Sets the time zone with the given time zone value.
641 * @param value the given time zone.
642 */
643 public void setTimeZone(TimeZone value)
644 {
645 throw new NoSuchElementException();
646 }
647
648 /**
649 * Gets the time zone.
650 * @return the time zone object associated with this calendar.
651 */
652 public TimeZone getTimeZone()
653 {
654 throw new NoSuchElementException();
655 }
656
657 /**
658 * Specify whether or not date/time interpretation is to be lenient. With
659 * lenient interpretation, a date such as "February 942, 1996" will be
660 * treated as being equivalent to the 941st day after February 1, 1996.
661 * With strict interpretation, such dates will cause an exception to be
662 * thrown.
663 *
664 * @see java.text.DateFormat#setLenient
665 */
666 public void setLenient(boolean lenient)
667 {
668 throw new NoSuchElementException();
669 }
670
671 /**
672 * Tell whether date/time interpretation is to be lenient.
673 */
674 public boolean isLenient()
675 {
676 throw new NoSuchElementException();
677 }
678
679 /**
680 * Sets what the first day of the week is; e.g., Sunday in US,
681 * Monday in France.
682 * @param value the given first day of the week.
683 */
684 public void setFirstDayOfWeek(int value)
685 {
686 throw new NoSuchElementException();
687 }
688
689 /**
690 * Gets what the first day of the week is; e.g., Sunday in US,
691 * Monday in France.
692 * @return the first day of the week.
693 */
694 public int getFirstDayOfWeek()
695 {
696 throw new NoSuchElementException();
697 }
698
699 /**
700 * Sets what the minimal days required in the first week of the year are;
701 * For example, if the first week is defined as one that contains the first
702 * day of the first month of a year, call the method with value 1. If it
703 * must be a full week, use value 7.
704 * @param value the given minimal days required in the first week
705 * of the year.
706 */
707 public void setMinimalDaysInFirstWeek(int value)
708 {
709 throw new NoSuchElementException();
710 }
711
712 /**
713 * Gets what the minimal days required in the first week of the year are;
714 * e.g., if the first week is defined as one that contains the first day
715 * of the first month of a year, getMinimalDaysInFirstWeek returns 1. If
716 * the minimal days required must be a full week, getMinimalDaysInFirstWeek
717 * returns 7.
718 * @return the minimal days required in the first week of the year.
719 */
720 public int getMinimalDaysInFirstWeek()
721 {
722 throw new NoSuchElementException();
723 }
724
725 /**
726 * Gets the minimum value for the given time field.
727 * e.g., for Gregorian DAY_OF_MONTH, 1.
728 * @param field the given time field.
729 * @return the minimum value for the given time field.
730 */
731 abstract public int getMinimum(int field);
732
733 /**
734 * Gets the maximum value for the given time field.
735 * e.g. for Gregorian DAY_OF_MONTH, 31.
736 * @param field the given time field.
737 * @return the maximum value for the given time field.
738 */
739 abstract public int getMaximum(int field);
740
741 /**
742 * Gets the highest minimum value for the given field if varies.
743 * Otherwise same as getMinimum(). For Gregorian, no difference.
744 * @param field the given time field.
745 * @return the highest minimum value for the given time field.
746 */
747 abstract public int getGreatestMinimum(int field);
748
749 /**
750 * Gets the lowest maximum value for the given field if varies.
751 * Otherwise same as getMaximum(). e.g., for Gregorian DAY_OF_MONTH, 28.
752 * @param field the given time field.
753 * @return the lowest maximum value for the given time field.
754 */
755 abstract public int getLeastMaximum(int field);
756
757 /**
758 * Overrides Cloneable
759 */
760 public Object clone()
761 {
762 throw new NoSuchElementException();
763 }
764
765
766 // =======================privates===============================
767
768 /**
769 * Both firstDayOfWeek and minimalDaysInFirstWeek are locale-dependent.
770 * They are used to figure out the week count for a specific date for
771 * a given locale. These must be set when a Calendar is constructed.
772 * @param desiredLocale the given locale.
773 */
774 private void setWeekCountData(Locale desiredLocale)
775 {
776 throw new NoSuchElementException();
777 }
778
779 private void readObject(ObjectInputStream s) {
780 throw new NoSuchElementException();
781 }
782}
java/pkg2/java/util/Date.java+0−0

Empty file added.

java/pkg2/java/util/Date_L.b+180−0
@@ -0,0 +1,180 @@
1implement Date_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26include "daytime.m";
27 localtime : ref Daytime->Tm;
28 gmttime : ref Daytime->Tm;
29 daytime : Daytime;
30 sys : import jni;
31 FALSE : import jni;
32 TRUE : import jni;
33month := array[] of {
34 "Jan", "Feb", "Mar", "Apr", "May", "Jun",
35 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
36};
37
38#<<
39
40include "Date_L.m";
41
42#>> extra post includes here
43
44#<<
45
46init( jni_p : JNI )
47{
48 # save java native inteface mod instance
49 jni = jni_p;
50 #>>extra initialization here
51 sys = jni->sys;
52 daytime = load Daytime Daytime->PATH;
53 if(daytime == nil)
54 jni->InitError( sys->sprint( "java.util.Date: could not load %s: %r", Daytime->PATH ) );
55 #<<
56}
57
58toString_rString( this : ref Date_obj) : JString
59{#>>
60 if (this.expanded != byte TRUE)
61 expand_V(this);
62 if (this.expanded != byte TRUE)
63 jni->ThrowException("java.lang.IllegalArgumentException", "could not expand time");
64 s := daytime->text(localtime);
65 return (jni->NewString( s));
66}#<<
67
68toLocaleString_rString( this : ref Date_obj) : JString
69{#>>
70 s : string;
71 #
72 # put the date in the following format
73 # 09-Sep-97 9:15:24 PM
74 #
75 if (this.expanded != byte TRUE)
76 expand_V(this);
77 if (this.expanded != byte TRUE)
78 jni->ThrowException("java.lang.IllegalArgumentException", "could not expand time");
79
80 if ((int this.tm_hour) >= 12) {
81 s = sys->sprint( "%.2d-%s-%.2d %d:%.2d:%.2d PM",
82 int this.tm_mday,
83 month[int this.tm_mon],
84 this.tm_year,
85 (int this.tm_hour) - 12,
86 int this.tm_min,
87 int this.tm_sec);
88 } else {
89 s = sys->sprint( "%.2d-%s-%.2d %d:%.2d:%.2d AM",
90 int this.tm_mday,
91 month[int this.tm_mon],
92 this.tm_year,
93 int this.tm_hour,
94 int this.tm_min,
95 int this.tm_sec);
96 }
97 return (jni->NewString( s));
98}#<<
99
100toGMTString_rString( this : ref Date_obj) : JString
101{#>>
102 s : string;
103 if (this.valueValid != byte TRUE)
104 computeValue_V( this);
105 if (this.valueValid != byte TRUE)
106 jni->ThrowException("java.lang.IllegalArgumentException", "could not compute time");
107 t := (big this.value) / big 1000;
108 #10 Sep 1997 02:15:24 GMT
109 s = sys->sprint( "%.2d %s %d %.2d:%.2d:%.2d GMT",
110 int this.tm_mday,
111 month[int this.tm_mon],
112 this.tm_year + 1900,
113 int this.tm_hour,
114 int this.tm_min,
115 int this.tm_sec);
116
117 gmttime = daytime->gmt(int t);
118 return (jni->NewString( s));
119}#<<
120
121expand_V( this : ref Date_obj)
122{#>>
123 #
124 # this routine assumes there is a valid date stored
125 # in this.value. If not, return error.
126 #
127 if (this.value <= (big 0)) {
128 this.expanded = byte FALSE;
129 this.tm_millis = 0;
130 this.tm_sec = byte 0;
131 this.tm_min = byte 0;
132 this.tm_hour = byte 0;
133 this.tm_mday = byte 0;
134 this.tm_mon = byte 0;
135 this.tm_wday = byte 0;
136 this.tm_yday = 0;
137 this.tm_year = 0;
138 this.tm_isdst = 0;
139 return;
140 }
141 t := (big this.value) / big 1000;
142 localtime = daytime->local(int t);
143 #
144 # set the following to 0 since java code is not using them.
145 #
146 this.tm_millis = 0;
147 this.tm_isdst = 0; # flag for alternate daylight savings time
148 #
149 # these values come from calculations done by local().
150 #
151 this.tm_sec = byte localtime.sec;
152 this.tm_min = byte localtime.min;
153 this.tm_hour = byte localtime.hour;
154 this.tm_mday = byte localtime.mday; # day of the month - [1, 31]
155 this.tm_mon = byte localtime.mon; # months since January - [0, 11]
156 this.tm_wday = byte localtime.wday; # days since Sunday - [0, 6]
157 this.tm_yday = localtime.yday; # days since January 1 - [0, 365]
158 this.tm_year = localtime.year; # years since 1900
159 this.expanded = byte TRUE;
160}#<<
161
162computeValue_V( this : ref Date_obj)
163{#>>
164 now := daytime->now();
165 localtime = daytime->local(now);
166 localtime.sec = int this.tm_sec;
167 localtime.min = int this.tm_min;
168 localtime.hour = int this.tm_hour;
169 localtime.mday = int this.tm_mday;
170 localtime.mon = int this.tm_mon;
171 localtime.year = int this.tm_year;
172 localtime.wday = int this.tm_wday;
173 localtime.yday = int this.tm_yday;
174
175 t := daytime->tm2epoch(localtime);
176 this.value = (big t) * big 1000;
177 this.valueValid = byte TRUE;
178}#<<
179
180
java/pkg2/java/util/Date_L.m+30−0
@@ -0,0 +1,30 @@
1# javal v1.3 generated file: edit with care
2
3Date_L : module
4{
5 Date_obj : adt
6 {
7 cl_mod : ClassModule;
8 value : big;
9 valueValid : byte;
10 expanded : byte;
11 tm_millis : int;
12 tm_sec : byte;
13 tm_min : byte;
14 tm_hour : byte;
15 tm_mday : byte;
16 tm_mon : byte;
17 tm_wday : byte;
18 tm_yday : int;
19 tm_year : int;
20 tm_isdst : int;
21 };
22
23 init : fn( jni_p : JNI );
24 toString_rString : fn( this : ref Date_obj) : JString;
25 toLocaleString_rString : fn( this : ref Date_obj) : JString;
26 toGMTString_rString : fn( this : ref Date_obj) : JString;
27 expand_V : fn( this : ref Date_obj);
28 computeValue_V : fn( this : ref Date_obj);
29
30};
java/pkg2/java/util/Dictionary.java+0−0

Empty file added.

java/pkg2/java/util/EmptyStackException.java+0−0

Empty file added.

java/pkg2/java/util/Enumeration.java+0−0

Empty file added.

java/pkg2/java/util/EventListener.java+0−0

Empty file added.

java/pkg2/java/util/EventObject.java+0−0

Empty file added.

java/pkg2/java/util/GregorianCalendar.java+557−0
@@ -0,0 +1,557 @@
1/*
2 * @(#)GregorianCalendar.java 1.20 97/03/09
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33import java.io.ObjectInputStream;
34
35/**
36 * <code>GregorianCalendar</code> is a concrete subclass of
37 * <a href="java.util.Calendar.html"><code>Calendar</code></a>
38 * and provides the standard calendar used by most of the world.
39 *
40 * <p>
41 * The standard (Gregorian) calendar has 2 eras, BC and AD.
42 *
43 * <p>
44 * This implementation handles a single discontinuity, which corresponds
45 * by default to the date the Gregorian calendar was instituted (October 15,
46 * 1582 in some countries, later in others). This cutover date may be changed
47 * by the caller.
48 *
49 * <p>
50 * Prior to the institution of the Gregorian calendar, New Year's Day was
51 * March 25. To avoid confusion, this calendar always uses January 1. A manual
52 * adjustment may be made if desired for dates that are prior to the Gregorian
53 * changeover and which fall between January 1 and March 24.
54 *
55 * <p>
56 * <strong>Example:</strong>
57 * <blockquote>
58 * <pre>
59 * // get the supported ids for GMT-08:00 (Pacific Standard Time)
60 * String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
61 * // if no ids were returned, something is wrong. get out.
62 * if (ids.length == 0)
63 * System.exit(0);
64 *
65 * // begin output
66 * System.out.println("Current Time");
67 *
68 * // create a Pacific Standard Time time zone
69 * SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
70 *
71 * // set up rules for daylight savings time
72 * pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
73 * pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
74 *
75 * // create a GregorianCalendar with the Pacific Daylight time zone
76 * // and the current date and time
77 * Calendar calendar = new GregorianCalendar(pdt);
78 * Date trialTime = new Date();
79 * calendar.setTime(trialTime);
80 *
81 * // print out a bunch of interesting things
82 * System.out.println("ERA: " + calendar.get(Calendar.ERA));
83 * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
84 * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
85 * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
86 * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
87 * System.out.println("DATE: " + calendar.get(Calendar.DATE));
88 * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
89 * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
90 * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
91 * System.out.println("DAY_OF_WEEK_IN_MONTH: "
92 * + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
93 * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
94 * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
95 * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
96 * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
97 * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
98 * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
99 * System.out.println("ZONE_OFFSET: "
100 * + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
101 * System.out.println("DST_OFFSET: "
102 * + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
103
104 * System.out.println("Current Time, with hour reset to 3");
105 * calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
106 * calendar.set(Calendar.HOUR, 3);
107 * System.out.println("ERA: " + calendar.get(Calendar.ERA));
108 * System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
109 * System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
110 * System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
111 * System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
112 * System.out.println("DATE: " + calendar.get(Calendar.DATE));
113 * System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
114 * System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
115 * System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
116 * System.out.println("DAY_OF_WEEK_IN_MONTH: "
117 * + calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
118 * System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
119 * System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
120 * System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
121 * System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
122 * System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
123 * System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
124 * System.out.println("ZONE_OFFSET: "
125 * + (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
126 * System.out.println("DST_OFFSET: "
127 * + (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours
128 * </pre>
129 * </blockquote>
130 *
131 * @see Calendar
132 * @see TimeZone
133 * @version 1.20 03/09/97
134 * @author David Goldsmith, Mark Davis, Chen-Lieh Huang
135 */
136public class GregorianCalendar extends Calendar {
137
138 // Internal notes:
139 // This algorithm is based on the one presented on pp. 10-12 of
140 // "Numerical Recipes in C", William H. Press, et. al., Cambridge
141 // University Press 1988, ISBN 0-521-35465-X.
142
143 /**
144 * Useful constant for GregorianCalendar.
145 */
146 public static final int BC = 0;
147 /**
148 * Useful constant for GregorianCalendar.
149 */
150 public static final int AD = 1;
151
152 // Note that the Julian date used here is not a true Julian date, since
153 // it is measured from midnight, not noon.
154
155 private static final long julianDayOffset = 2440588;
156 private static final int millisPerDay = 24 * 60 * 60 * 1000;
157 private static final int numDays[]
158 = {0,31,59,90,120,151,181,212,243,273,304,334}; // 0-based, for day-in-year
159 private static final int leapNumDays[]
160 = {0,31,60,91,121,152,182,213,244,274,305,335}; // 0-based, for day-in-year
161 private static final int maxDaysInMonth[]
162 = {31,28,31,30,31,30,31,31,30,31,30,31}; // 0-based
163
164 // This is measured from the standard epoch, not in Julian Days.
165 // Default is 00:00:00 local time, October 15, 1582.
166 private long gregorianCutover = -12219292800000L;
167
168 /**
169 * Converts time as milliseconds to Julian date.
170 * @param millis the given milliseconds.
171 * @return the Julian date number.
172 */
173 private static final long millisToJulianDay(long millis)
174 {
175 throw new NoSuchElementException();
176 }
177
178 /**
179 * Converts Julian date to time as milliseconds.
180 * @param julian the given Julian date number.
181 * @return time as milliseconds.
182 */
183 private static final long julianDayToMillis(long julian)
184 {
185 throw new NoSuchElementException();
186 }
187
188 /**
189 * Constructs a default GregorianCalendar using the current time
190 * in the default time zone with the default locale.
191 */
192 public GregorianCalendar()
193 {
194 throw new NoSuchElementException();
195 }
196
197 /**
198 * Constructs a GregorianCalendar based on the current time
199 * in the given time zone with the default locale.
200 * @param zone the given time zone.
201 */
202 public GregorianCalendar(TimeZone zone)
203 {
204 throw new NoSuchElementException();
205 }
206
207 /**
208 * Constructs a GregorianCalendar based on the current time
209 * in the default time zone with the given locale.
210 * @param aLocale the given locale.
211 */
212 public GregorianCalendar(Locale aLocale)
213 {
214 throw new NoSuchElementException();
215 }
216
217 /**
218 * Constructs a GregorianCalendar based on the current time
219 * in the given time zone with the given locale.
220 * @param zone the given time zone.
221 * @param aLocale the given locale.
222 */
223 public GregorianCalendar(TimeZone zone, Locale aLocale)
224 {
225 throw new NoSuchElementException();
226 }
227
228 /**
229 * Constructs a GregorianCalendar with the given date set
230 * in the default time zone with the default locale.
231 * @param year the value used to set the YEAR time field in the calendar.
232 * @param month the value used to set the MONTH time field in the calendar.
233 * Month value is 0-based. e.g., 0 for January.
234 * @param date the value used to set the DATE time field in the calendar.
235 */
236 public GregorianCalendar(int year, int month, int date)
237 {
238 throw new NoSuchElementException();
239 }
240
241 /**
242 * Constructs a GregorianCalendar with the given date
243 * and time set for the default time zone with the default locale.
244 * @param year the value used to set the YEAR time field in the calendar.
245 * @param month the value used to set the MONTH time field in the calendar.
246 * Month value is 0-based. e.g., 0 for January.
247 * @param date the value used to set the DATE time field in the calendar.
248 * @param hour the value used to set the HOUR_OF_DAY time field
249 * in the calendar.
250 * @param minute the value used to set the MINUTE time field
251 * in the calendar.
252 */
253 public GregorianCalendar(int year, int month, int date, int hour,
254 int minute)
255 {
256 throw new NoSuchElementException();
257 }
258
259 /**
260 * Constructs a GregorianCalendar with the given date
261 * and time set for the default time zone with the default locale.
262 * @param year the value used to set the YEAR time field in the calendar.
263 * @param month the value used to set the MONTH time field in the calendar.
264 * Month value is 0-based. e.g., 0 for January.
265 * @param date the value used to set the DATE time field in the calendar.
266 * @param hour the value used to set the HOUR_OF_DAY time field
267 * in the calendar.
268 * @param minute the value used to set the MINUTE time field
269 * in the calendar.
270 * @param second the value used to set the SECOND time field
271 * in the calendar.
272 */
273 public GregorianCalendar(int year, int month, int date, int hour,
274 int minute, int second)
275 {
276 throw new NoSuchElementException();
277 }
278
279 /**
280 * Sets the GregorianCalendar change date. This is the point when the
281 * switch from Julian dates to Gregorian dates occurred. Default is
282 * 00:00:00 local time, October 15, 1582. Previous to this time and date
283 * will be Julian dates.
284 *
285 * @param date the given Gregorian cutover date.
286 */
287 public void setGregorianChange(Date date)
288 {
289 throw new NoSuchElementException();
290 }
291
292 /**
293 * Gets the Gregorian Calendar change date. This is the point when the
294 * switch from Julian dates to Gregorian dates occurred. Default is
295 * 00:00:00 local time, October 15, 1582. Previous to
296 * this time and date will be Julian dates.
297 * @return the Gregorian cutover time for this calendar.
298 */
299 public final Date getGregorianChange()
300 {
301 throw new NoSuchElementException();
302 }
303
304 // Converts the time field list to the time as milliseconds.
305 private final void timeToFields(long theTime)
306 {
307 throw new NoSuchElementException();
308 }
309
310
311 /**
312 * @param date day-of-year or day-of-month. Month is zero based.
313 * @param day day-of-week for date. Zero based.
314 * @param firstDatesDay the day-of-week for the first day of the year
315 * or month.
316 * @param firstDay the first day of the week for the calendar.
317 * e.g. Sunday for US.
318 * @param minimalDaysInFirstWeek the minimal number of days in the
319 * week to qualify as the first week; otherwise partial week belongs
320 * to last (year/month).
321 * <note> weekCount is the number of weeks in the (year/month) for the
322 * date. If zero, belongs to last (year/month). You MUST add the date to
323 * the last day of the previous (year/month), and call this method again!
324 * @return week number, one-based.
325 */
326 private static int weekNumber(int date, int day, int firstDatesDay,
327 int firstDay, int minimalDaysInFirstWeek)
328 {
329 throw new NoSuchElementException();
330 }
331
332
333 // XXX Currently this method has a bug, and it is not being used.
334 private static int dateFrom(int weekNumber, int day, int firstDatesDay,
335 int firstDay, int minimalDaysInFirstWeek)
336 {
337 throw new NoSuchElementException();
338 }
339
340
341 /**
342 * Determines if the given year is a leap year. Returns true if the
343 * given year is a leap year.
344 * @param year the given year.
345 * @return true if the given year is a leap year; false otherwise.
346 */
347 public boolean isLeapYear(int year)
348 {
349 throw new NoSuchElementException();
350 }
351
352 /**
353 * Overrides Calendar
354 * Converts UTC as milliseconds to time field values.
355 */
356 protected void computeFields()
357 {
358 throw new NoSuchElementException();
359 }
360
361 /**
362 * Validates the values of the set time fields.
363 */
364 private boolean validateFields()
365 {
366 throw new NoSuchElementException();
367 }
368
369 /**
370 * Validates the value of the given time field.
371 */
372 private boolean boundsCheck(int value, int field)
373 {
374 throw new NoSuchElementException();
375 }
376
377 /**
378 * Overrides Calendar
379 * Converts time field values to UTC as milliseconds.
380 * @exception IllegalArgumentException if an unknown field is given.
381 */
382 protected void computeTime()
383 {
384 throw new NoSuchElementException();
385 }
386
387 /**
388 * Overrides Cloneable
389 */
390 public Object clone()
391 {
392 throw new NoSuchElementException();
393 }
394
395 /**
396 * Override hashCode.
397 * Generates the hash code for the GregorianCalendar object
398 */
399 public synchronized int hashCode()
400 {
401 throw new NoSuchElementException();
402 }
403
404 /**
405 * Overrides Calendar
406 * Compares the time field records.
407 * Equivalent to comparing result of conversion to UTC.
408 * Please see Calendar.equals for descriptions on parameters and
409 * the return value.
410 */
411 public boolean equals(Object obj)
412 {
413 throw new NoSuchElementException();
414 }
415
416 /**
417 * Overrides Calendar
418 * Compares the time field records.
419 * Equivalent to comparing result of conversion to UTC.
420 * Please see Calendar.before for descriptions on parameters and
421 * the return value.
422 */
423 public boolean before(Object when)
424 {
425 throw new NoSuchElementException();
426 }
427
428 /**
429 * Overrides Calendar
430 * Compares the time field records.
431 * Equivalent to comparing result of conversion to UTC.
432 * Please see Calendar.after for descriptions on parameters and
433 * the return value.
434 */
435 public boolean after(Object when)
436 {
437 throw new NoSuchElementException();
438 }
439
440 /**
441 * Overrides Calendar
442 * Date Arithmetic function.
443 * Adds the specified (signed) amount of time to the given time field,
444 * based on the calendar's rules.
445 * @param field the time field.
446 * @param amount the amount of date or time to be added to the field.
447 * @exception IllegalArgumentException if an unknown field is given.
448 */
449 public void add(int field, int amount)
450 {
451 throw new NoSuchElementException();
452 }
453
454
455 /**
456 * Overrides Calendar
457 * Time Field Rolling function.
458 * Rolls (up/down) a single unit of time on the given time field.
459 * @param field the time field.
460 * @param up Indicates if rolling up or rolling down the field value.
461 * @exception IllegalArgumentException if an unknown field value is given.
462 */
463 public void roll(int field, boolean up)
464 {
465 throw new NoSuchElementException();
466 }
467
468
469 // Roll the time field value down by 1.
470 private void rollDown(int field)
471 {
472 throw new NoSuchElementException();
473 }
474
475
476 /**
477 * <pre>
478 * Field names Minimum Greatest Minimum Least Maximum Maximum
479 * ----------- ------- ---------------- ------------- -------
480 * ERA 0 0 1 1
481 * YEAR 1 1 5,000,000 5,000,000
482 * MONTH 0 0 11 11
483 * WEEK_OF_YEAR 1 1 53 54
484 * WEEK_OF_MONTH 1 1 4 6
485 * DAY_OF_MONTH 1 1 28 31
486 * DAY_OF_YEAR 1 1 365 366
487 * DAY_OF_WEEK 1 1 7 7
488 * DAY_OF_WEEK_IN_MONTH -1 -1 4 6
489 * AM_PM 0 0 1 1
490 * HOUR 0 0 11 12
491 * HOUR_OF_DAY 0 0 23 23
492 * MINUTE 0 0 59 59
493 * SECOND 0 0 59 59
494 * MILLISECOND 0 0 999 999
495 * ZONE_OFFSET -12*60*60*1000 -12*60*60*1000 12*60*60*1000 12*60*60*1000
496 * DST_OFFSET 0 0 1*60*60*1000 1*60*60*1000
497 * </pre>
498 */
499 private static final int MinValues[]
500 = {0,1,0,1,1,1,1,1,-1,0,0,0,0,0,0,-12*60*60*1000,0};
501 private static final int GreatestMinValues[]
502 = {0,1,0,1,1,1,1,1,-1,0,0,0,0,0,0,-12*60*60*1000,0};// same as MinValues
503 private static final int LeastMaxValues[]
504 = {1,5000000,11,53,4,28,365,7,4,1,11,23,59,59,999,
505 12*60*60*1000,1*60*60*1000};
506 private static final int MaxValues[]
507 = {1,5000000,11,54,6,31,366,7,6,1,12,23,59,59,999,
508 12*60*60*1000,1*60*60*1000};
509
510 /**
511 * Returns minimum value for the given field.
512 * e.g. for Gregorian DAY_OF_MONTH, 1
513 * Please see Calendar.getMinimum for descriptions on parameters and
514 * the return value.
515 */
516 public int getMinimum(int field)
517 {
518 throw new NoSuchElementException();
519 }
520
521 /**
522 * Returns maximum value for the given field.
523 * e.g. for Gregorian DAY_OF_MONTH, 31
524 * Please see Calendar.getMaximum for descriptions on parameters and
525 * the return value.
526 */
527 public int getMaximum(int field)
528 {
529 throw new NoSuchElementException();
530 }
531
532 /**
533 * Returns highest minimum value for the given field if varies.
534 * Otherwise same as getMinimum(). For Gregorian, no difference.
535 * Please see Calendar.getGreatestMinimum for descriptions on parameters
536 * and the return value.
537 */
538 public int getGreatestMinimum(int field)
539 {
540 throw new NoSuchElementException();
541 }
542
543 /**
544 * Returns lowest maximum value for the given field if varies.
545 * Otherwise same as getMaximum(). For Gregorian DAY_OF_MONTH, 28
546 * Please see Calendar.getLeastMaximum for descriptions on parameters and
547 * the return value.
548 */
549 public int getLeastMaximum(int field)
550 {
551 throw new NoSuchElementException();
552 }
553
554 private void readObject(ObjectInputStream s) {
555 throw new NoSuchElementException();
556 }
557}
java/pkg2/java/util/Hashtable.java+0−0

Empty file added.

java/pkg2/java/util/ListResourceBundle.java+169−0
@@ -0,0 +1,169 @@
1/*
2 * @(#)ListResourceBundle.java 1.6 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32import java.util.Hashtable;
33
34/**
35 * <code>ListResourceBundle</code> is a abstract subclass of
36 * <code>ResourceBundle</code> that manages resources for a locale
37 * in a convenient and easy to use list. See <code>ResourceBundle</code> for
38 * more information about resource bundles in general.
39 *
40 * <P>
41 * Subclasses must override <code>getContents</code> and provide an array,
42 * where each item in the array is a pair of objects.
43 * The first element of each pair is a <code>String</code> key, and the second
44 * is the value associated with that key.
45 *
46 * <p>
47 * In the following example, the keys are of the form "s1"... The actual
48 * keys are entirely up to your choice, so long as they are the same as
49 * the keys you use in your program to retrieve the objects from the bundle.
50 * Keys are case-sensitive. <code>MyResource</code> is the default version
51 * of the bundle family, and <code>MyResource_fr</code> is the french version:
52 * <blockquote>
53 * <pre>
54 * //====================
55 * class MyResource extends ListResourceBundle {
56 * public Object[][] getContents() {
57 * return contents;
58 * }
59 * static final Object[][] contents = {
60 * // LOCALIZE THIS
61 * {"s1", "3"}, // starting value in choice field
62 * {"s2", "MyDisk"}, // starting value in string field
63 * {"s3", "3 Mar 96"}, // starting value in date field
64 * {"s4", "The disk '{1}' contained {0} on {2}."}, // initial pattern
65 * {"s5", "0"}, // first choice number
66 * {"s6", "no files"}, // first choice value
67 * {"s7", "1"}, // second choice number
68 * {"s8", "one file"}, // second choice value
69 * {"s9", "2"}, // third choice number
70 * {"s10", "{0}|3 files"}, // third choice value
71 * {"s11", "format threw an exception: {0}"}, // generic exception message
72 * {"s12", "ERROR"}, // what to show in field in case of error
73 * {"s14", "Result"}, // label for formatted stuff
74 * {"s13", "Dialog"}, // standard font
75 * {"s15", "Pattern"}, // label for standard pattern
76 * {"s16", new Dimension(1,5)} // real object, not just string
77 * // END OF MATERIAL TO LOCALIZE
78 * };
79 * }
80 * //====================
81 * class MyResource_fr extends ListResourceBundle {
82 * public Object[][] getContents() {
83 * return contents;
84 }
85 * static final Object[][] contents = {
86 * // LOCALIZE THIS
87 * {"s1", "3"}, // starting value in choice field
88 * {"s2", "MonDisk"}, // starting value in string field
89 * {"s3", "3 Mar 96"}, // starting value in date field
90 * {"s4", "Le disk '{1}' a {0} a {2}."}, // initial pattern
91 * {"s5", "0"}, // first choice number
92 * {"s6", "pas de files"}, // first choice value
93 * {"s7", "1"}, // second choice number
94 * {"s8", "une file"}, // second choice value
95 * {"s9", "2"}, // third choice number
96 * {"s10", "{0}|3 files"}, // third choice value
97 * {"s11", "Le format a jete une exception: {0}"}, // generic exception message
98 * {"s12", "ERROR"}, // what to show in field in case of error
99 * {"s14", "Resulte"}, // label for formatted stuff
100 * {"s13", "Dialogue"}, // standard font
101 * {"s15", "Pattern"}, // label for standard pattern
102 * {"s16", new Dimension(1,3)} // real object, not just string
103 * // END OF MATERIAL TO LOCALIZE
104 * };
105 * }
106 * </pre>
107 * </blockquote>
108 * @see ResourceBundle
109 * @see PropertyResourceBundle
110 */
111public abstract class ListResourceBundle extends ResourceBundle {
112 /**
113 * Override of ResourceBundle, same semantics
114 */
115 public final Object handleGetObject(String key) {
116 // lazily load the lookup hashtable.
117 if (lookup == null) {
118 loadLookup();
119 }
120 return lookup.get(key); // this class ignores locales
121 }
122
123 /**
124 * Implementation of ResourceBundle.getKeys.
125 */
126 public Enumeration getKeys() {
127 // lazily load the lookup hashtable.
128 if (lookup == null) {
129 loadLookup();
130 }
131 Enumeration result = null;
132 if (parent != null) {
133 Hashtable temp = new Hashtable();
134 for (Enumeration parentKeys = parent.getKeys() ;
135 parentKeys.hasMoreElements() ; /* nothing */) {
136 temp.put(parentKeys.nextElement(), this);
137 }
138 for (Enumeration thisKeys = lookup.keys();
139 thisKeys.hasMoreElements() ; /* nothing */) {
140 temp.put(thisKeys.nextElement(), this);
141 }
142 result = temp.keys();
143 } else {
144 result = lookup.keys();
145 }
146 return result;
147 }
148
149 /**
150 * See class description.
151 */
152 abstract protected Object[][] getContents();
153
154 // ==================privates====================
155
156 /**
157 * We lazily load the lookup hashtable. This function does the
158 * loading.
159 */
160 private void loadLookup() {
161 Object[][] contents = getContents();
162 lookup = new Hashtable(contents.length);
163 for (int i = 0; i < contents.length; ++i) {
164 lookup.put(contents[i][0],contents[i][1]);
165 }
166 }
167
168 private Hashtable lookup = null;
169}
java/pkg2/java/util/Locale.java+631−0
@@ -0,0 +1,631 @@
1/*
2 * @(#)Locale.java 1.21 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32import java.io.Serializable;
33
34/**
35 *
36 * A <code>Locale</code> object represents a specific geographical, political,
37 * or cultural region. An operation that requires a <code>Locale</code> to perform
38 * its task is called <em>locale-sensitive</em> and uses the <code>Locale</code>
39 * to tailor information for the user. For example, displaying a number
40 * is a locale-sensitive operation--the number should be formatted
41 * according to the customs/conventions of the user's native country,
42 * region, or culture.
43 *
44 * <P>
45 * You create a <code>Locale</code> object using one of the two constructors in
46 * this class:
47 * <blockquote>
48 * <pre>
49 * Locale(String language, String country)
50 * Locale(String language, String country, String variant)
51 * </pre>
52 * </blockquote>
53 * The first argument to both constructors is a valid <STRONG>ISO
54 * Language Code.</STRONG> These codes are the lower-case two-letter
55 * codes as defined by ISO-639.
56 * You can find a full list of these codes at a number of sites, such as:
57 * <BR><a href ="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt">
58 * <code>http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt</code></a>
59 *
60 * <P>
61 * The second argument to both constructors is a valid <STRONG>ISO Country
62 * Code.</STRONG> These codes are the upper-case two-letter codes
63 * as defined by ISO-3166.
64 * You can find a full list of these codes at a number of sites, such as:
65 * <BR><a href="http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html">
66 * <code>http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html</code></a>
67 *
68 * <P>
69 * The second constructor requires a third argument--the <STRONG>Variant.</STRONG>
70 * The Variant codes are vendor and browser-specific.
71 * For example, use WIN for Windows, MAC for Macintosh, and POSIX for POSIX.
72 * Where there are two variants, separate them with an underscore, and
73 * put the most important one first. For
74 * example, a Traditional Spanish collation might be referenced, with
75 * "ES", "ES", "Traditional_WIN".
76 *
77 * <P>
78 * Because a <code>Locale</code> object is just an identifier for a region,
79 * no validity check is performed when you construct a <code>Locale</code>.
80 * If you want to see whether particular resources are available for the
81 * <code>Locale</code> you construct, you must query those resources. For
82 * example, ask the <code>NumberFormat</code> for the locales it supports
83 * using its <code>getAvailableLocales</code> method.
84 * <BR><STRONG>Note:</STRONG> When you ask for a resource for a particular
85 * locale, you get back the best available match, not necessarily
86 * precisely what you asked for. For more information, look at
87 * <a href="java.util.ResourceBundle.html"><code>ResourceBundle</code></a>.
88 *
89 * <P>
90 * The <code>Locale</code> class provides a number of convenient constants
91 * that you can use to create <code>Locale</code> objects for commonly used
92 * locales. For example, the following creates a <code>Locale</code> object
93 * for the United States:
94 * <blockquote>
95 * <pre>
96 * Locale.US
97 * </pre>
98 * </blockquote>
99 *
100 * <P>
101 * Once you've created a <code>Locale</code> you can query it for information about
102 * itself. Use <code>getCountry</code> to get the ISO Country Code and
103 * <code>getLanguage</code> to get the ISO Language Code. You can
104 * use <code>getDisplayCountry</code> to get the
105 * name of the country suitable for displaying to the user. Similarly,
106 * you can use <code>getDisplayLanguage</code> to get the name of
107 * the language suitable for displaying to the user. Interestingly,
108 * the <code>getDisplayXXX</code> methods are themselves locale-sensitive
109 * and have two versions: one that uses the default locale and one
110 * that uses the locale specified as an argument.
111 *
112 * <P>
113 * The JDK provides a number of classes that perform locale-sensitive
114 * operations. For example, the <code>NumberFormat</code> class formats
115 * numbers, currency, or percentages in a locale-sensitive manner. Classes
116 * such as <code>NumberFormat</code> have a number of convenience methods
117 * for creating a default object of that type. For example, the
118 * <code>NumberFormat</code> class provides these three convenience methods
119 * for creating a default <code>NumberFormat</code> object:
120 * <blockquote>
121 * <pre>
122 * NumberFormat.getInstance()
123 * NumberFormat.getCurrencyInstance()
124 * NumberFormat.getPercentInstance()
125 * </pre>
126 * </blockquote>
127 * These methods have two variants; one with an explicit locale
128 * and one without; the latter using the default locale.
129 * <blockquote>
130 * <pre>
131 * NumberFormat.getInstance(myLocale)
132 * NumberFormat.getCurrencyInstance(myLocale)
133 * NumberFormat.getPercentInstance(myLocale)
134 * </pre>
135 * </blockquote>
136 * A <code>Locale</code> is the mechanism for identifying the kind of object
137 * (<code>NumberFormat</code>) that you would like to get. The locale is
138 * <STRONG>just</STRONG> a mechanism for identifying objects,
139 * <STRONG>not</STRONG> a container for the objects themselves.
140 *
141 * <P>
142 * Each class that performs locale-sensitive operations allows you
143 * to get all the available objects of that type. You can sift
144 * through these objects by language, country, or variant,
145 * and use the display names to present a menu to the user.
146 * For example, you can create a menu of all the collation objects
147 * suitable for a given language. Such classes must implement these
148 * three class methods:
149 * <blockquote>
150 * <pre>
151 * public static Locale[] getAvailableLocales()
152 * public static String getDisplayName(Locale objectLocale,
153 * Locale displayLocale)
154 * public static final String getDisplayName(Locale objectLocale)
155 * // getDisplayName will throw MissingResourceException if the locale
156 * // is not one of the available locales.
157 * </pre>
158 * </blockquote>
159 *
160 * @see ResourceBundle
161 * @see java.text.Format
162 * @see java.text.NumberFormat
163 * @see java.text.Collation
164 * @version 1.21 29 Jan 1997
165 * @author Mark Davis
166 */
167
168public final class Locale implements Cloneable, Serializable {
169
170 /** Useful constant for language.
171 */
172 static public final Locale ENGLISH = new Locale("en","","");
173
174 /** Useful constant for language.
175 */
176 static public final Locale FRENCH = new Locale("fr","","");
177
178 /** Useful constant for language.
179 */
180 static public final Locale GERMAN = new Locale("de","","");
181
182 /** Useful constant for language.
183 */
184 static public final Locale ITALIAN = new Locale("it","","");
185
186 /** Useful constant for language.
187 */
188 static public final Locale JAPANESE = new Locale("ja","","");
189
190 /** Useful constant for language.
191 */
192 static public final Locale KOREAN = new Locale("ko","","");
193
194 /** Useful constant for language.
195 */
196 static public final Locale CHINESE = new Locale("zh","","");
197
198 /** Useful constant for language.
199 */
200 static public final Locale SIMPLIFIED_CHINESE = new Locale("zh","CN","");
201
202 /** Useful constant for language.
203 */
204 static public final Locale TRADITIONAL_CHINESE = new Locale("zh","TW","");
205
206 /** Useful constant for country.
207 */
208 static public final Locale FRANCE = new Locale("fr","FR","");
209
210 /** Useful constant for country.
211 */
212 static public final Locale GERMANY = new Locale("de","DE","");
213
214 /** Useful constant for country.
215 */
216 static public final Locale ITALY = new Locale("it","IT","");
217
218 /** Useful constant for country.
219 */
220 static public final Locale JAPAN = new Locale("ja","JP","");
221
222 /** Useful constant for country.
223 */
224 static public final Locale KOREA = new Locale("ko","KR","");
225
226 /** Useful constant for country.
227 */
228 static public final Locale CHINA = new Locale("zh","CN","");
229
230 /** Useful constant for country.
231 */
232 static public final Locale PRC = new Locale("zh","CN","");
233
234 /** Useful constant for country.
235 */
236 static public final Locale TAIWAN = new Locale("zh","TW","");
237
238 /** Useful constant for country.
239 */
240 static public final Locale UK = new Locale("en","GB","");
241
242 /** Useful constant for country.
243 */
244 static public final Locale US = new Locale("en","US","");
245
246 /** Useful constant for country.
247 */
248 static public final Locale CANADA = new Locale("en","CA","");
249
250 /** Useful constant for country.
251 */
252 static public final Locale CANADA_FRENCH = new Locale("fr","CA","");
253
254 /**
255 * Construct a locale from language, country, variant.
256 * @param language lowercase two-letter ISO-639 code.
257 * @param country uppercase two-letter ISO-3166 code.
258 * @param variant vendor and browser specific code. See class description.
259 */
260 public Locale(String language, String country, String variant) {
261 this.language = toLowerCase(language);
262 this.country = toUpperCase(country);
263 this.variant = toUpperCase(variant);
264 }
265
266 /**
267 * Construct a locale from language, country.
268 * @param language lowercase two-letter ISO-639 code.
269 * @param country uppercase two-letter ISO-3166 code.
270 */
271 public Locale(String language, String country) {
272 this.language = toLowerCase(language);
273 this.country = toUpperCase(country);
274 this.variant = "";
275 }
276
277 /**
278 * Common method of getting the current default Locale.
279 * Used for the presentation: menus, dialogs, etc.
280 * Generally set once when your applet or application is initialized,
281 * then never reset. (If you do reset the default locale, you
282 * probably want to reload your GUI, so that the change is reflected
283 * in your interface.)
284 * <p>More advanced programs will allow users to use different locales
285 * for different fields, e.g. in a spreadsheet.
286 * <BR>Note that the initial setting will match the host system.
287 */
288 public static synchronized Locale getDefault() {
289 if (defaultLocale == null) {
290 String language = System.getProperty("user.language", "EN");
291 String region = System.getProperty("user.region", "");
292
293 defaultLocale = new Locale(language, region);
294 }
295 return defaultLocale;
296 }
297
298 /**
299 * Sets the default.
300 * Normally set once at the beginning of applet or application,
301 * then never reset. <code>setDefault</code> does not reset the host locale.
302 * @param newLocale Locale to set to.
303 */
304 public static synchronized void setDefault(Locale newLocale) {
305 SecurityManager security = System.getSecurityManager();
306 if (security != null) {
307 security.checkPropertyAccess("user.language");
308 }
309 defaultLocale = newLocale;
310 }
311
312 /**
313 * Getter for programmatic name of field,
314 * an lowercased two-letter ISO-639 code.
315 * @see #getDisplayLanguage
316 */
317 public String getLanguage() {
318 return language;
319 }
320
321 /**
322 * Getter for programmatic name of field,
323 * an uppercased two-letter ISO-3166 code.
324 * @see #getDisplayCountry
325 */
326 public String getCountry() {
327 return country;
328 }
329
330 /**
331 * Getter for programmatic name of field.
332 * @see #getDisplayVariant
333 */
334 public String getVariant() {
335 return variant;
336 }
337
338 /**
339 * Getter for the programmatic name of the entire locale,
340 * with the language, country and variant separated by underbars.
341 * If a field is missing, at most one underbar will occur.
342 * Example: "EN", "DE_DE", "EN_US_WIN", "DE_POSIX", "FR_MAC"
343 * @see #getDisplayName
344 */
345 public final String toString() {
346 StringBuffer result = new StringBuffer(language);
347 if (country.length() != 0) {
348 result.append('_');
349 result.append(country);
350 if (variant.length() != 0) {
351 result.append('_');
352 result.append(variant);
353 }
354 }
355 return result.toString();
356 }
357
358 /**
359 * Getter for the three-letter ISO language abbreviation
360 * of the locale.
361 * @exception MissingResourceException Throws MissingResourceException if the
362 * three-letter language abbreviation is not available for this locale.
363 */
364 public String getISO3Language() throws MissingResourceException {
365 ResourceBundle resource
366 = ResourceBundle.getBundle
367 ("java.text.resources.LocaleElements", this);
368 return resource.getString("ShortLanguage");
369 }
370
371 /**
372 * Getter for the three-letter ISO country abbreviation
373 * of the locale.
374 * @exception MissingResourceException Throws MissingResourceException if the
375 * three-letter language abbreviation is not available for this locale.
376 */
377 public String getISO3Country() throws MissingResourceException {
378 ResourceBundle resource =
379 ResourceBundle.getBundle
380 ("java.text.resources.LocaleElements", this);
381 return resource.getString("ShortCountry");
382 }
383
384 /**
385 * Getter for the Locale ID, as used in Windows.
386 * @exception MissingResourceException Throws MissingResourceException if there is
387 * no LCID associated with the locale.
388 */
389 // FIXME this should go away completely!
390 private int getLCID() throws MissingResourceException {
391 ResourceBundle resource =
392 ResourceBundle.getBundle
393 ("java.text.resources.LocaleElements", this);
394 String lcid = resource.getString("LocaleID");
395 return Integer.parseInt(lcid,16);
396 }
397
398 /**
399 * Getter for display of field to user.
400 * If the localized name is not found, returns the ISO code.
401 * The desired user language is from the default locale.
402 */
403 public final String getDisplayLanguage() {
404 return getDisplayLanguage(getDefault());
405 }
406
407 /**
408 * Getter for display of field to user.
409 * If the localized name is not found, returns the ISO codes.
410 * Example: "English (UK)", "Deutch", "Germany"
411 * @param inLocale specifies the desired user language.
412 */
413 public String getDisplayLanguage(Locale inLocale) {
414 try {
415 ResourceBundle resource =
416 ResourceBundle.getBundle
417 ("java.text.resources.LocaleElements", this);
418 return findStringMatch((String[][])resource.getObject("Languages"),
419 inLocale.language, language);
420 } catch (Exception e) {
421 return language;
422 }
423 }
424
425 /**
426 * Getter for display of field to user.
427 * If the localized name is not found, returns the ISO code.
428 * The default locale is used for the presentation language.
429 */
430 public final String getDisplayCountry() {
431 return getDisplayCountry(getDefault());
432 }
433
434 /**
435 * Getter for display of field to user.
436 * If the localized name is not found, returns the ISO code.
437 * @param inLocale specifies the desired user language.
438 */
439 public String getDisplayCountry(Locale inLocale) {
440 try {
441 ResourceBundle resource =
442 ResourceBundle.getBundle
443 ("java.text.resources.LocaleElements",this);
444 return findStringMatch((String[][])resource.getObject("Countries"),
445 inLocale.language, language);
446 } catch (Exception e) {
447 return country;
448 }
449 }
450
451 /**
452 * Getter for display of field to user.
453 * If the localized name is not found, returns the variant code.
454 * The default locale is used for the presentation language.
455 */
456 public final String getDisplayVariant() {
457 return getDisplayVariant(getDefault());
458 }
459
460 /**
461 * Getter for display of field to user
462 * If the localized name is not found, returns the variant code.
463 * @param inLocale specifies the desired user language.
464 */
465 public String getDisplayVariant(Locale inLocale) {
466 try {
467 ResourceBundle resource =
468 ResourceBundle.getBundle
469 ("java.text.resources.LocaleElements", inLocale);
470 String[][] pairedStrings = (String[][])resource.getObject("Variants");
471 if (pairedStrings == null)
472 return variant;
473 return findStringMatch(pairedStrings, inLocale.language, language);
474 } catch (Exception e) {
475 return variant;
476 }
477 }
478
479 /**
480 * Getter for display of the entire locale to user.
481 * If the localized name is not found, uses the ISO codes.
482 * The default locale is used for the presentation language.
483 */
484 public final String getDisplayName() {
485 return getDisplayName(getDefault());
486 }
487
488 /**
489 * Getter for display of the entire locale to user.
490 * If the localized name is not found, uses the ISO codes
491 * @param inLocale specifies the desired user language.
492 */
493 public String getDisplayName(Locale inLocale) {
494 // TODO: use pattern string from locale data
495 StringBuffer result = new StringBuffer (getDisplayLanguage(inLocale));
496 String aCountry = getDisplayCountry(inLocale);
497 String aVariant = getDisplayVariant(inLocale);
498 if (aCountry.length() != 0 || aVariant.length() != 0) {
499 result.append(" (");
500 result.append(getDisplayCountry(inLocale));
501 if (aCountry.length() != 0 && aVariant.length() != 0)
502 result.append(",");
503 result.append(getDisplayVariant(inLocale));
504 result.append(")");
505 }
506 return result.toString();
507 }
508
509 /**
510 * Overrides Cloneable
511 */
512 public Object clone()
513 {
514 try {
515 Locale that = (Locale)super.clone();
516 return that;
517 } catch (CloneNotSupportedException e) {
518 throw new InternalError();
519 }
520 }
521
522 /**
523 * Override hashCode.
524 * Since Locales are often used in hashtables, caches the value
525 * for speed.
526 */
527 // XXX Depending on performance of synchronized, may want to
528 // XXX just compute in constructor.
529 public synchronized int hashCode() {
530 if (hashcode == -1) {
531 hashcode =
532 language.hashCode() ^
533 country.hashCode() ^
534 variant.hashCode();
535 }
536 return hashcode;
537 }
538
539 // Overrides
540
541 public boolean equals(Object obj) {
542 if (this == obj) // quick check
543 return true;
544 if (!(obj instanceof Locale)) // (1) same object?
545 return false;
546 Locale other = (Locale) obj;
547 if (hashCode() != other.hashCode()) return false; // quick check
548 if (!language.equals(other.language)) return false;
549 if (!country.equals(other.country)) return false;
550 if (!variant.equals(other.variant)) return false;
551 return true; // we made it through the guantlet.
552 // (1) We don't check super.equals since it is Object.
553 // Since Locale is final, we don't have to check both directions.
554 }
555
556 // ================= privates =====================================
557
558 // XXX instance and class variables. For now keep these separate, since it is
559 // faster to match. Later, make into single string.
560
561 private String language = "";
562 private String country = "";
563 private String variant = "";
564
565 private /*FIXME(83) transient*/ int hashcode = -1; // lazy evaluated
566
567 private static Locale defaultLocale = null;
568
569 /*
570 * Locale needs its own, locale insenitive version of toLowerCase to
571 * avoid circularity problems between Locale and String.
572 * The most straightforward algorithm is used. Look at optimizations later.
573 */
574 private String toLowerCase(String str) {
575 char[] buf = str.toCharArray();
576 for (int i = 0; i < buf.length; i++) {
577 buf[i] = Character.toLowerCase( buf[i] );
578 }
579 return new String( buf );
580 }
581
582 /*
583 * Locale needs its own, locale insenitive version of toUpperCase to
584 * avoid circularity problems between Locale and String.
585 * The most straightforward algorithm is used. Look at optimizations later.
586 */
587 private String toUpperCase(String str) {
588 char[] buf = str.toCharArray();
589 for (int i = 0; i < buf.length; i++) {
590 buf[i] = Character.toUpperCase( buf[i] );
591 }
592 return new String( buf );
593 }
594
595 private String findStringMatch(String[][] languages,
596 String desiredLanguage, String fallbackLanguage)
597 {
598 for (int i = 0; i < languages.length; ++i)
599 if (desiredLanguage.equals(languages[i][0]))
600 return languages[i][1];
601 if (!fallbackLanguage.equals(desiredLanguage))
602 for (int i = 0; i < languages.length; ++i)
603 if (fallbackLanguage.equals(languages[i][0]))
604 return languages[i][1];
605 if (!"EN".equals(desiredLanguage) && "EN".equals(fallbackLanguage))
606 for (int i = 0; i < languages.length; ++i)
607 if ("EN".equals(languages[i][0]))
608 return languages[i][1];
609 return "";
610 }
611 /*
612 * Does an equals check, plus an empty field in this means a wildcard;
613 * matches any other field in other.
614 */
615 private boolean matches (Locale other) {
616 //System.out.println("language:" + language + "," + other.language);
617 if (language.length() != 0)
618 if (!language.equals(other.language))
619 return false;
620 //System.out.println("country:" + country + "," + other.country);
621 if (country.length() != 0)
622 if (!country.equals(other.country))
623 return false;
624 //System.out.println("variant:" + variant + "," + other.variant);
625 if (variant.length() != 0)
626 if (!variant.equals(other.variant))
627 return false;
628 return true; // whew, we made it through the guantlet.
629 }
630
631}
java/pkg2/java/util/MissingResourceException.java+73−0
@@ -0,0 +1,73 @@
1/*
2 * @(#)MissingResourceException.java 1.4 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33/**
34 * Signals that a resource is missing.
35 * @see java.io.Exception
36 * @see ResourceBundle
37 * @version 1.4, 01/29/97
38 * @author Mark Davis
39 */
40public
41class MissingResourceException extends RuntimeException {
42
43 /**
44 * Constructs a MissingResourceException with the specified information.
45 * A detail message is a String that describes this particular exception.
46 * @param s the detail message
47 * @param classname the name of the resource class
48 * @param key the key for the missing resource.
49 */
50 public MissingResourceException(String s, String className, String key) {
51 super(s);
52 this.className = className;
53 this.key = key;
54 }
55
56 /**
57 * Gets parameter passed by constructor.
58 */
59 public String getClassName() {
60 return className;
61 }
62
63 /**
64 * Gets parameter passed by constructor.
65 */
66 public String getKey() {
67 return key;
68 }
69
70 //============ privates ============
71 private String className;
72 private String key;
73}
java/pkg2/java/util/NoSuchElementException.java+0−0

Empty file added.

java/pkg2/java/util/Observable.java+0−0

Empty file added.

java/pkg2/java/util/Observer.java+0−0

Empty file added.

java/pkg2/java/util/Properties.java+0−0

Empty file added.

java/pkg2/java/util/PropertyResourceBundle.java+121−0
@@ -0,0 +1,121 @@
1/*
2 * @(#)PropertyResourceBundle.java 1.7 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30package java.util;
31
32import java.util.Properties;
33import java.io.InputStream;
34import java.io.IOException;
35
36/**
37 * <code>PropertyResourceBundle</code> is an abstract subclass of
38 * <code>ResourceBundle</code> that manages resources for a locale
39 * using a set of static strings from a property file. See
40 * <code>ResourceBundle</code> for more information about resource
41 * bundles in general.
42 *
43 * <p>
44 * The property file contains the keys that you use in your source code
45 * in calls to <code>ResourceBundle.getString</code> and similar methods,
46 * and their corresponding values, etc.
47 * The name of the property file indicates the resource bundle's family
48 * and locale.
49 *
50 * <p>
51 * In the following example, the keys are of the form "s1"... The actual
52 * keys are entirely up to your choice, so long as they are the same as
53 * the keys you use in your program to retrieve the objects from the bundle.
54 * Keys are case-sensitive.
55 * <blockquote>
56 * <pre>
57 * s1=3
58 * s2=MeinDisk
59 * s3=3 Mar 96
60 * s4=Der disk '{1}' a {0} a {2}.
61 * s5=0
62 * s6=keine Datein
63 * s7=1
64 * s8=ein Datei
65 * s9=2
66 * s10={0}|3 Datein
67 * s11=Der Format worf ein Exception: {0}
68 * s12=ERROR
69 * s14=Resulte
70 * s13=Dialogue
71 * s15=Pattern
72 * s16=1,3
73 * </pre>
74 * </blockquote>
75 *
76 * @see ResourceBundle
77 * @see ListResourceBundle
78 */
79public class PropertyResourceBundle extends ResourceBundle {
80 /**
81 * Creates a property resource
82 * @param file property file to read from.
83 */
84 public PropertyResourceBundle (InputStream stream) throws IOException {
85 lookup.load(stream);
86 }
87
88 /**
89 * Override of ResourceBundle, same semantics
90 */
91 public Object handleGetObject(String key) {
92 Object obj = lookup.get(key);
93 return obj; // once serialization is in place, you can do non-strings
94 }
95
96 /**
97 * Implementation of ResourceBundle.getKeys.
98 */
99 public Enumeration getKeys() {
100 Enumeration result = null;
101 if (parent != null) {
102 Hashtable temp = new Hashtable();
103 for (Enumeration parentKeys = parent.getKeys() ;
104 parentKeys.hasMoreElements() ; /* nothing */) {
105 temp.put(parentKeys.nextElement(), this);
106 }
107 for (Enumeration thisKeys = lookup.keys();
108 thisKeys.hasMoreElements() ; /* nothing */) {
109 temp.put(thisKeys.nextElement(), this);
110 }
111 result = temp.keys();
112 } else {
113 result = lookup.keys();
114 }
115 return result;
116 }
117
118 // ==================privates====================
119
120 private Properties lookup = new Properties();
121}
java/pkg2/java/util/Random.java+0−0

Empty file added.

java/pkg2/java/util/ResourceBundle.java+536−0
@@ -0,0 +1,536 @@
1/*
2 * @(#)ResourceBundle.java 1.15 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30package java.util;
31
32import java.io.InputStream;
33import java.io.FileInputStream;
34import java.util.Hashtable;
35
36/**
37 *
38 * Resource bundles contain locale-specific objects.
39 * When your program needs a locale-specific resource,
40 * a <code>String</code> for example, your program can load it
41 * from the resource bundle that is appropriate for the
42 * current user's locale. In this way, you can write
43 * program code that is largely independent of the user's
44 * locale isolating most, if not all, of the locale-specific
45 * information in resource bundles.
46 *
47 * <p>
48 * This allows you to write programs that can:
49 * <UL type=SQUARE>
50 * <LI> be easily localized, or translated, into different languages
51 * <LI> handle multiple locales at once
52 * <LI> be easily modified later to support even more locales
53 * </UL>
54 *
55 * <P>
56 * One resource bundle is, conceptually, a set of related classes that
57 * inherit from <code>ResourceBundle</code>. Each related subclass of
58 * <code>ResourceBundle</code> has the same base name plus an additional
59 * component that identifies its locale. For example, suppose your resource
60 * bundle is named <code>MyResources</code>. The first class you are likely
61 * to write is the default resource bundle which simply has the same name as
62 * its family--<code>MyResources</code>. You can also provide as
63 * many related locale-specific classes as you need: for example, perhaps
64 * you would provide a German one named <code>MyResources_de</code>.
65 *
66 * <P>
67 * Each related subclass of <code>ResourceBundle</code> contains the same
68 * items, but the items have been translated for the locale represented by that
69 * <code>ResourceBundle</code> subclass. For example, both <code>MyResources</code>
70 * and <code>MyResources_de</code> may have a <code>String</code> that's used
71 * on a button for confirming operations. In <code>MyResources</code> the
72 * <code>String</code> may contain <code>OK</code> and in
73 * <code>MyResources_de</code> it may contain <code>Gut</code>.
74 *
75 * <P>
76 * If there are different resources for different countries, you
77 * can make specializations: for example, <code>MyResources_de_CH</code>
78 * for Switzerland. If you want to only modify some of the resources
79 * in the specialization, you can do so.
80 *
81 * <P>
82 * When your program needs a locale-specific object, it loads
83 * the <code>ResourceBundle</code> class using the <code>getBundle</code>
84 * method:
85 * <blockquote>
86 * <pre>
87 * ResourceBundle myResources =
88 * ResourceBundle.getBundle("MyResources", currentLocale);
89 * </pre>
90 * </blockquote>
91 * The first argument specifies the family name of the resource
92 * bundle that contains the object in question. The second argument
93 * indicates the desired locale. <code>getBundle</code>
94 * uses these two arguments to construct the name of the
95 * <code>ResourceBundle</code> subclass it should load as follows.
96 *
97 * <P>
98 * The resource bundle lookup searches for classes with various suffixes
99 * on the basis of (1) the desired locale and (2) the default locale (baseclass),
100 * in the following order from lower-level (more specific) to parent-level
101 * (less specific):
102 * <p> baseclass + "_" + language1 + "_" + country1 + "_" + variant1
103 * <BR> baseclass + "_" + language1 + "_" + country1
104 * <BR> baseclass + "_" + language1
105 * <BR> baseclass
106 * <BR> baseclass + "_" + language2 + "_" + country2 + "_" + variant2
107 * <BR> baseclass + "_" + language2 + "_" + country2
108 * <BR> baseclass + "_" + language2
109 *
110 * <P>
111 * The result of the lookup is a class, but that class may be
112 * backed by a property file on disk. If a lookup fails,
113 * <code>getBundle()</code> throws a <code>MissingResourceException</code>.
114 *
115 * <P>
116 * The baseclass <strong>must</strong> be fully
117 * qualified (for example, <code>myPackage.MyResources</code>, not just
118 * <code>MyResources</code>). It must
119 * also be accessable by your code; it cannot be a class that is private
120 * to the package where <code>ResourceBundle.getBundle</code> is called.
121 *
122 * <P>
123 * Note: <code>ResourceBundle</code> are used internally in accessing
124 * <code>NumberFormat</code>s, <code>Collation</code>s, and so on.
125 * The lookup strategy is the same.
126 *
127 * <P>
128 * Resource bundles contain key/value pairs. The keys uniquely
129 * identify a locale-specific object in the bundle. Here's an
130 * example of a <code>ListResourceBundle</code> that contains
131 * two key/value pairs:
132 * <blockquote>
133 * <pre>
134 * class MyResource extends ListResourceBundle {
135 * public Object[][] getContents() {
136 * return contents;
137 * }
138 * static final Object[][] contents = {
139 * // LOCALIZE THIS
140 * {"OkKey", "OK"},
141 * {"CancelKey", "Cancel"},
142 * // END OF MATERIAL TO LOCALIZE
143 * };
144 * }
145 * </pre>
146 * </blockquote>
147 * Keys are always <code>String</code>s.
148 * In this example, the keys are <code>OkKey</code> and <code>CancelKey</code>.
149 * In the above example, the values
150 * are also <code>String</code>s--<code>OK</code> and <code>Cancel</code>--but
151 * they don't have to be. The values can be any type of object.
152 *
153 * <P>
154 * You retrieve an object from resource bundle using the appropriate
155 * getter method. Because <code>OkKey</code> and <code>CancelKey</code>
156 * are both strings, you would use <code>getString</code> to retrieve them:
157 * <blockquote>
158 * <pre>
159 * button1 = new Button(myResourceBundle.getString("OkKey"));
160 * button2 = new Button(myResourceBundle.getString("CancelKey"));
161 * </pre>
162 * </blockquote>
163 * The getter methods all require the key as an argument and return
164 * the object if found. If the object is not found, the getter method
165 * throws a <code>MissingResourceException</code>.
166 *
167 * <P>
168 * Besides <code>getString</code>; ResourceBundle supports a number
169 * of other methods for getting different types of objects such as
170 * <code>getStringArray</code>. If you don't have an object that
171 * matches one of these methods, you can use <code>getObject</code>
172 * and cast the result to the appropriate type. For example:
173 * <blockquote>
174 * <pre>
175 * int[] myIntegers = (int[]) myResources.getObject("intList");
176 * </pre>
177 * </blockquote>
178 *
179 * <P>
180 * <STRONG>NOTE:</STRONG> You should always supply a baseclass with
181 * no suffixes. This will be the class of "last resort", if a locale
182 * is requested that does not exist. For example, below we have a class
183 * <code>MyResources</code>. It happens to contain US strings,
184 * so we don't have to have an explicit <code>MyResource_en</code> or
185 * <code>MyResource_en_US</code>.
186 *
187 * <P>
188 * The JDK provides two subclasses of <code>ResourceBundle</code>,
189 * <code>ListResourceBundle</code> and <code>PropertyResourceBundle</code>,
190 * that provide a fairly simple way to create resources. (Once serialization
191 * is fully integrated, we will provide another
192 * way.) As you saw briefly in a prevous example, <code>ListResourceBundle</code>
193 * manages its resource as a List of key/value pairs.
194 * <code>PropertyResourceBundle</code> uses a properties file to manage
195 * its resources.
196 *
197 * <p>
198 * If <code>ListResourceBundle</code> or <code>PropertyResourceBundle</code>
199 * do not suit your needs, you can write your own <code>ResourceBundle</code>
200 * subclass. Your subclasses must overrde two methods: <code>handleGetObject</code>
201 * and <code>getKeys()</code>.
202 *
203 * <P>
204 * The following is a very simple example of a <code>ResourceBundle</code> subclass
205 * that manages only a few resources (for a larger number of resources
206 * you would probably use a <code>Hashtable</code>). Notice that if the key
207 * is not found, <code>handleGetObject</code> must return null. Notice also
208 * that you don't need to supply a value if a "parent-level"
209 * <code>ResourceBundle</code> handles the same
210 * key with the same value (look at uk below).
211 * <strong><p>Example:</strong>
212 * <blockquote>
213 * <pre>
214 * abstract class MyResources extends ResourceBundle {
215 * public Object handleGetObject(String key) {
216 * if (key.equals("okKey")) return "Ok";
217 * if (key.equals("cancelKey")) return "Cancel";
218 * return null;
219 * }
220 * }
221 *
222 * abstract class MyResources_de extends MyResources {
223 * public Object handleGetObject(String key) {
224 * if (key.equals("okKey")) return "Gut";
225 * if (key.equals("cancelKey")) return "Vernichten";
226 * return null;
227 * }
228 * }
229 *
230 * abstract class MyResources_uk extends MyResources {
231 * public Object handleGetObject(String key) {
232 * // don't need okKey, since parent level handles it.
233 * if (key.equals("cancelKey")) return "Dispose";
234 * return null;
235 * }
236 * }
237 * </pre>
238 * </blockquote>
239 * You do not have to restrict yourself to using a single family of
240 * <code>ResourceBundle</code>s. For example, you could have a set of bundles for
241 * exception messages, <code>ExceptionResources</code>
242 * (<code>ExceptionResources_fr</code>, <code>ExceptionResources_de</code>, ...),
243 * and one for widgets, <code>WidgetResource</code> (<code>WidgetResources_fr</code>,
244 * <code>WidgetResources_de</code>, ...); breaking up the resources however you like.
245 *
246 * @see ListResourceBundle
247 * @see PropertyResourceBundle
248 * @see MissingResourceException
249 */
250abstract public class ResourceBundle {
251
252 /**
253 * Get an object from a ResourceBundle.
254 * <BR>Convenience method to save casting.
255 * @param key see class description.
256 */
257 public final String getString(String key) throws MissingResourceException {
258 return (String) getObject(key);
259 }
260
261 /**
262 * Get an object from a ResourceBundle.
263 * <BR>Convenience method to save casting.
264 * @param key see class description.
265 */
266 public final String[] getStringArray(String key)
267 throws MissingResourceException {
268 return (String[]) getObject(key);
269 }
270
271 /**
272 * Get an object from a ResourceBundle.
273 * @param key see class description.
274 */
275 public final Object getObject(String key) throws MissingResourceException {
276 Object obj = handleGetObject(key);
277 if (obj == null) {
278 if (parent != null) {
279 obj = parent.getObject(key);
280 }
281 if (obj == null)
282 throw new MissingResourceException("Can't find resource",
283 this.getClass().getName(),
284 key);
285 }
286 return obj;
287 }
288
289
290 /**
291 * Get the appropriate ResourceBundle subclass.
292 * @param baseName see class description.
293 */
294 public static final ResourceBundle getBundle(String baseName)
295 throws MissingResourceException
296 {
297 return getBundle(baseName, Locale.getDefault(),
298 /* must determine loader here, else we break stack invariant */
299 getLoader());
300 }
301
302
303 /**
304 * Get the appropriate ResourceBundle subclass.
305 * @param baseName see class description.
306 * @param locale see class description.
307 */
308 public static final ResourceBundle getBundle(String baseName,
309 Locale locale)
310 {
311 return getBundle(baseName, locale, getLoader());
312 }
313
314 /*
315 * Automatic determination of the ClassLoader to be used to load
316 * resources on behalf of the client. N.B. The client is getLoader's
317 * caller's caller.
318 */
319 private static ClassLoader getLoader() {
320 Class[] stack = getClassContext();
321 /* Magic number 2 identifies our caller's caller */
322 Class c = stack[2];
323 ClassLoader cl = (c == null) ? null : c.getClassLoader();
324 return (cl == null) ? systemClassLoader : cl;
325 }
326 private static native Class[] getClassContext();
327 private static SystemClassLoader systemClassLoader =
328 new SystemClassLoader();
329
330 /**
331 * Get the appropriate ResourceBundle subclass.
332 * @param baseName see class description.
333 * @param locale see class description.
334 */
335 private static synchronized ResourceBundle
336 getBundle(String baseName, Locale locale, ClassLoader loader)
337 throws MissingResourceException
338 {
339 StringBuffer localeName
340 = new StringBuffer("_").append(locale.toString());
341
342 ResourceBundle lookup = findBundle(baseName,localeName,loader,false);
343 if(lookup == null) {
344 localeName.setLength(0);
345 localeName.append("_").append( Locale.getDefault().toString() );
346 lookup = findBundle(baseName, localeName, loader, true);
347 if( lookup == null ) {
348 throw new MissingResourceException("can't find resource for "
349 + baseName + "_" + locale,
350 baseName + "_" + locale,"");
351 }
352 }
353
354 // Setup lookup's ancestry. If we find an ancestor whose parent is null,
355 // we set up the ancestor's parent as well.
356 ResourceBundle child = lookup;
357 while( (child != null) && (child.parent == null) ) {
358 // Chop off the last component of the locale name and search for that
359 // as the parent locale. Use it to set the parent of current child.
360 int lastUnderbar = localeName.toString().lastIndexOf('_');
361 if( lastUnderbar != -1 ) {
362 localeName.setLength(lastUnderbar);
363 debug("Searching for parent " + baseName + localeName);
364 child.setParent( findBundle(baseName,localeName,loader,true) );
365 }
366 child = child.parent;
367 }
368
369 return lookup;
370 }
371
372
373 /**
374 * Set the parent bundle of this bundle. The parent bundle is
375 * searched by getObject when this bundle does not contain a
376 * particular resource.
377 * @param parent this bundle's parent bundle.
378 */
379 protected void setParent( ResourceBundle parent ) {
380 this.parent = parent;
381 }
382
383
384 /**
385 * The internal routine that does the real work of finding and loading
386 * the right ResourceBundle for a given name and locale.
387 */
388 private static ResourceBundle findBundle(String baseName,
389 StringBuffer localeName,
390 ClassLoader loader,
391 boolean includeBase)
392 {
393 String localeStr = localeName.toString();
394 String baseFileName = baseName.replace('.', '/');
395 Object lookup = null;
396 String searchName;
397 Vector cacheCandidates = new Vector();
398 int lastUnderbar;
399 InputStream stream;
400
401 searchLoop:
402 while (true) {
403 searchName = baseName + localeStr;
404 String cacheName =
405 "["+Integer.toString(loader.hashCode())+"]" + searchName;
406
407 // First, look in the cache. We may either find the bundle we're
408 // looking for or we may find that the bundle was not found by a
409 // previous search.
410 lookup = cacheList.get(cacheName);
411 if( lookup == NOTFOUND ) {
412 debug("Found " + searchName + " in cache as NOTFOUND");
413 localeName.setLength(0);
414 break searchLoop;
415 }
416 if( lookup != null ) {
417 debug("Found " + searchName + " in cache");
418 localeName.setLength(0);
419 break searchLoop;
420 }
421 cacheCandidates.addElement( cacheName );
422
423 // Next search for a class
424 debug("Searching for " + searchName );
425 try {
426 lookup = loader.loadClass(searchName).newInstance();
427 break searchLoop;
428 } catch( Exception e ){}
429
430 // Next search for a Properties file.
431 searchName = baseFileName + localeStr + ".properties";
432 debug("Searching for " + searchName );
433 stream = loader.getResourceAsStream(searchName);
434 if( stream != null ) {
435 // make sure it is buffered
436 stream = new java.io.BufferedInputStream(stream);
437 try {
438 lookup = (Object)new PropertyResourceBundle( stream );
439 break searchLoop;
440 } catch (Exception e) {}
441 }
442
443 //Chop off the last part of the locale name string and try again.
444 lastUnderbar = localeStr.lastIndexOf('_');
445 if( ((lastUnderbar==0)&&(!includeBase)) || (lastUnderbar == -1) ) {
446 break;
447 }
448 localeStr = localeStr.substring(0,lastUnderbar);
449 localeName.setLength(lastUnderbar);
450 }
451
452
453 if( lookup != null ) {
454 // Add a positive result to the cache. The result may include
455 // NOTFOUND
456 for( int i=0; i<cacheCandidates.size(); i++ ) {
457 cacheList.put(cacheCandidates.elementAt(i), lookup);
458 debug("Adding " + cacheCandidates.elementAt(i) + " to cache"
459 + ((lookup == NOTFOUND)?" as NOTFOUND.":"."));
460 }
461 }
462 else {
463 // If we searched all the way to the base, then we can add
464 // the NOTFOUND result to the cache. Otherwise we can say
465 // nothing.
466 if( includeBase == true ) {
467 for( int i=0; i<cacheCandidates.size(); i++ ) {
468 cacheList.put(cacheCandidates.elementAt(i), NOTFOUND);
469 debug("Adding " + cacheCandidates.elementAt(i)
470 + " to cache as NOTFOUND.");
471 }
472 }
473 }
474
475 if( (lookup == NOTFOUND) || (lookup == null) )
476 return null;
477 else
478 return (ResourceBundle)lookup;
479 }
480
481
482 /** Get an object from a ResourceBundle.
483 * <STRONG>NOTE: </STRONG>Subclasses must override.
484 * @param key see class description.
485 */
486 protected abstract Object handleGetObject(String key)
487 throws MissingResourceException;
488
489 /**
490 * Return an enumeration of the keys.
491 * <STRONG>NOTE: </STRONG>Subclasses must override.
492 */
493 public abstract Enumeration getKeys();
494
495 /**
496 * For printf debugging.
497 */
498 private static boolean debugFlag = false;
499 private static void debug(String str) {
500 if( debugFlag ) {
501 System.out.println("ResourceBundle: " + str);
502 }
503 }
504
505 /**
506 * The parent bundle is consulted by getObject when this bundle
507 * does not contain a particular resource.
508 */
509 protected ResourceBundle parent = null;
510
511 private static final Integer NOTFOUND = new Integer(-1);
512 private static Hashtable cacheList = new Hashtable();
513}
514
515
516/**
517 * The SystemClassLoader loads system classes (those in your classpath).
518 * This is an attempt to unify the handling of system classes and ClassLoader
519 * classes.
520 */
521class SystemClassLoader extends java.lang.ClassLoader {
522
523 protected Class loadClass( String name, boolean resolve )
524 throws ClassNotFoundException
525 {
526 return findSystemClass( name );
527 }
528
529 public InputStream getResourceAsStream(String name) {
530 return ClassLoader.getSystemResourceAsStream(name);
531 }
532
533 public java.net.URL getResource(String name) {
534 return ClassLoader.getSystemResource(name);
535 }
536}
java/pkg2/java/util/ResourceBundle_L.b+48−0
@@ -0,0 +1,48 @@
1implement ResourceBundle_L;
2
3# javal v1.3 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "ResourceBundle_L.m";
30
31#>> extra post includes here
32
33#<<
34
35init( jni_p : JNI )
36{
37 # save java native inteface mod instance
38 jni = jni_p;
39 #>>extra initialization here
40 #<<
41}
42
43getClassContext_aClass( ) : JArrayJClass
44{#>>
45 jni->FatalError( "getClassContext() not implemented" );
46 return(nil);
47}#<<
48
java/pkg2/java/util/ResourceBundle_L.m+14−0
@@ -0,0 +1,14 @@
1# javal v1.3 generated file: edit with care
2
3ResourceBundle_L : module
4{
5 ResourceBundle_obj : adt
6 {
7 cl_mod : ClassModule;
8 parent : cyclic ref ResourceBundle_obj;
9 };
10
11 init : fn( jni_p : JNI );
12 getClassContext_aClass : fn( ) : JArrayJClass;
13
14};
java/pkg2/java/util/SimpleTimeZone.java+246−0
@@ -0,0 +1,246 @@
1/*
2 * @(#)SimpleTimeZone.java 1.12 97/03/05
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33import java.io.ObjectInputStream;
34
35/**
36 * <code>SimpleTimeZone</code> is a concrete subclass of <code>TimeZone</code>
37 * that represents a time zone for use with a Gregorian
38 * calendar. This simple class does not handle historical
39 * changes, and has limited rules.
40 *
41 * <P>
42 * Use a negative value for <code>dayOfWeekInMonth</code> to indicate that
43 * <code>SimpleTimeZone</code> should count from the end of the month backwards.
44 * For example, Daylight Savings Time ends at the last
45 * (dayOfWeekInMonth = -1) Sunday in October, at 2 AM in standard time.
46 *
47 * @see Calendar
48 * @see GregorianCalendar
49 * @see TimeZone
50 * @version 1.12 03/05/97
51 * @author David Goldsmith, Mark Davis, Chen-Lieh Huang
52 */
53public class SimpleTimeZone extends TimeZone {
54 /**
55 * Constructs a SimpleTimeZone with the given base time zone offset
56 * from GMT and time zone ID. Timezone IDs can be obtained from
57 * TimeZone.getAvailableIDs. Normally you should use TimeZone.getDefault
58 * to construct a TimeZone.
59 * @param rawOffset the given base time zone offset to GMT.
60 * @param ID the time zone ID which is obtained from
61 * TimeZone.getAvailableIDs.
62 */
63 public SimpleTimeZone(int rawOffset, String ID)
64 {
65 throw new NoSuchElementException();
66 }
67
68 /**
69 * Constructs a SimpleTimeZone with the given base time zone offset
70 * from GMT, time zone ID, time to start and end the daylight time.
71 * Timezone IDs can be obtained from TimeZone.getAvailableIDs.
72 * Normally you should use TimeZone.getDefault to create a TimeZone.
73 * For a time zone that does not use daylight saving time, do not
74 * use this constructor; instead you should use
75 * SimpleTimeZone(rawOffset, ID).
76 * @param rawOffset the given base time zone offset to GMT.
77 * @param ID the time zone ID which is obtained from
78 * TimeZone.getAvailableIDs.
79 * @param startMonth the daylight savings starting month. Month is 0-based.
80 * eg, 0 for January.
81 * @param startDayOfWeekInMonth the daylight savings starting
82 * day-of-week-in-month. Please see the member description for an example.
83 * @param startDayOfWeek the daylight savings starting day-of-week.
84 * Please see the member description for an example.
85 * @param startTime the daylight savings starting time. Please see the
86 * member description for an example.
87 * @param endMonth the daylight savings ending month. Month is 0-based.
88 * eg, 0 for January.
89 * @param endDayOfWeekInMonth the daylight savings ending
90 * day-of-week-in-month. Please see the member description for an example.
91 * @param endDayOfWeek the daylight savings ending day-of-week. Please see
92 * the member description for an example.
93 * @param endTime the daylight savings ending time. Please see the member
94 * description for an example.
95 */
96 public SimpleTimeZone(int rawOffset, String ID, int startMonth,
97 int startDayOfWeekInMonth, int startDayOfWeek, int startTime,
98 int endMonth, int endDayOfWeekInMonth, int endDayOfWeek, int endTime)
99 {
100 throw new NoSuchElementException();
101 }
102
103 /**
104 * Sets the daylight savings starting year.
105 * @param year the daylight savings starting year.
106 */
107 public void setStartYear(int year)
108 {
109 throw new NoSuchElementException();
110 }
111
112 /**
113 * Sets the daylight savings starting rule. For example, Daylight Savings
114 * Time starts at the first Sunday in April, at 2 AM in standard time.
115 * Therefore, you can set the start rule by calling:
116 * setStartRule(TimeFields.APRIL, 1, TimeFields.SUNDAY, 2*60*60*1000);
117 * @param month the daylight savings starting month. Month is 0-based.
118 * eg, 0 for January.
119 * @param dayOfWeekInMonth the daylight savings starting
120 * day-of-week-in-month. Please see the member description for an example.
121 * @param dayOfWeek the daylight savings starting day-of-week. Please see
122 * the member description for an example.
123 * @param time the daylight savings starting time. Please see the member
124 * description for an example.
125 */
126 public void setStartRule(int month, int dayOfWeekInMonth, int dayOfWeek,
127 int time)
128 {
129 throw new NoSuchElementException();
130 }
131
132 /**
133 * Sets the daylight savings ending rule. For example, Daylight Savings
134 * Time ends at the last (-1) Sunday in October, at 2 AM in standard time.
135 * Therefore, you can set the end rule by calling:
136 * setEndRule(TimeFields.OCTOBER, -1, TimeFields.SUNDAY, 2*60*60*1000);
137 * @param month the daylight savings ending month. Month is 0-based.
138 * eg, 0 for January.
139 * @param dayOfWeekInMonth the daylight savings ending
140 * day-of-week-in-month. Please see the member description for an example.
141 * @param dayOfWeek the daylight savings ending day-of-week. Please see
142 * the member description for an example.
143 * @param time the daylight savings ending time. Please see the member
144 * description for an example.
145 */
146 public void setEndRule(int month, int dayOfWeekInMonth, int dayOfWeek,
147 int time)
148 {
149 throw new NoSuchElementException();
150 }
151
152 /**
153 * Overrides TimeZone
154 * Gets offset, for current date, modified in case of daylight savings.
155 * This is the offset to add *to* UTC to get local time.
156 * Please see TimeZone.getOffset for descriptions on parameters.
157 */
158 public int getOffset(int era, int year, int month, int day, int dayOfWeek,
159 int millis)
160 {
161 throw new NoSuchElementException();
162 }
163
164 /**
165 * Overrides TimeZone
166 * Gets the GMT offset for this time zone.
167 */
168 public int getRawOffset()
169 {
170 throw new NoSuchElementException();
171 }
172
173 /**
174 * Overrides TimeZone
175 * Sets the base time zone offset to GMT.
176 * This is the offset to add *to* UTC to get local time.
177 * Please see TimeZone.setRawOffset for descriptions on the parameter.
178 */
179 public void setRawOffset(int offsetMillis)
180 {
181 throw new NoSuchElementException();
182 }
183
184 /**
185 * Overrides TimeZone
186 * Queries if this time zone uses Daylight Savings Time.
187 */
188 public boolean useDaylightTime()
189 {
190 throw new NoSuchElementException();
191 }
192
193 /**
194 * Overrides TimeZone
195 * Queries if the given date is in Daylight Savings Time.
196 */
197 public boolean inDaylightTime(Date date) {
198 throw new NoSuchElementException();
199 }
200
201 /**
202 * Overrides Cloneable
203 */
204 public Object clone()
205 {
206 throw new NoSuchElementException();
207 }
208
209 /**
210 * Override hashCode.
211 * Generates the hash code for the SimpleDateFormat object
212 */
213 public synchronized int hashCode()
214 {
215 throw new NoSuchElementException();
216 }
217
218 /**
219 * Compares the equality of two SimpleTimeZone objects.
220 * @param obj the SimpleTimeZone object to be compared with.
221 * @return true if the given obj is the same as this SimpleTimeZone
222 * object; false otherwise.
223 */
224 public boolean equals(Object obj)
225 {
226 throw new NoSuchElementException();
227 }
228
229 // =======================privates===============================
230
231 private int startMonth, startDay, startDayOfWeek, startTime;
232 private int endMonth, endDay, endDayOfWeek, endTime;
233 private int startYear;
234 private int rawOffset;
235 private boolean useDaylight=false; // indicate if this time zone uses DST
236 private static final int millisPerHour = 60*60*1000;
237 // WARNING: assumes that no rule is measured from the end of February,
238 // since we don't handle leap years. Could handle assuming always
239 // Gregorian, since we know they didn't have daylight time when
240 // Gregorian calendar started.
241 private final byte monthLength[] = {31,28,31,30,31,30,31,31,30,31,30,31};
242
243 private void readObject(ObjectInputStream s) {
244 throw new NoSuchElementException();
245 }
246}
java/pkg2/java/util/Stack.java+0−0

Empty file added.

java/pkg2/java/util/StringTokenizer.java+0−0

Empty file added.

java/pkg2/java/util/TimeZone.java+193−0
@@ -0,0 +1,193 @@
1/*
2 * @(#)TimeZone.java 1.17 97/01/29
3 *
4 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved
5 * (C) Copyright IBM Corp. 1996 - All Rights Reserved
6 *
7 * Portions copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
8 *
9 * The original version of this source code and documentation is copyrighted
10 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
11 * materials are provided under terms of a License Agreement between Taligent
12 * and Sun. This technology is protected by multiple US and International
13 * patents. This notice and attribution to Taligent may not be removed.
14 * Taligent is a registered trademark of Taligent, Inc.
15 *
16 * Permission to use, copy, modify, and distribute this software
17 * and its documentation for NON-COMMERCIAL purposes and without
18 * fee is hereby granted provided that this copyright notice
19 * appears in all copies. Please refer to the file "copyright.html"
20 * for further important copyright and licensing information.
21 *
22 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
23 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
24 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
25 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
26 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
27 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
28 *
29 */
30
31package java.util;
32
33import java.io.Serializable;
34import java.io.ObjectInputStream;
35
36/**
37 * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
38 * savings.
39 *
40 * <p>
41 * Typically, you get a <code>TimeZone</code> using <code>getDefault</code>
42 * which creates a <code>TimeZone</code> based on the time zone where the program
43 * is running. For example, for a program running in Japan, <code>getDefault</code>
44 * creates a <code>TimeZone</code> object based on Japanese Standard Time.
45 *
46 * <p>
47 * You can also get a <code>TimeZone</code> using <code>getTimeZone</code> along
48 * with a time zone ID. For instance, the time zone ID for the Pacific
49 * Standard Time zone is "PST". So, you can get a PST <code>TimeZone</code> object
50 * with:
51 * <blockquote>
52 * <pre>
53 * TimeZone tz = TimeZone.getTimeZone("PST");
54 * </pre>
55 * </blockquote>
56 * You can use <code>getAvailableIDs</code> method to iterate through
57 * all the supported time zone IDs. You can then choose a
58 * supported ID to get a favorite <code>TimeZone</code>.
59 *
60 * @see Calendar
61 * @see GregorianCalendar
62 * @see SimpleTimeZone
63 * @version 1.17 01/29/97
64 * @author Mark Davis, David Goldsmith, Chen-Lieh Huang
65 */
66abstract public class TimeZone implements Serializable, Cloneable {
67
68 public TimeZone() {
69 throw new NoSuchElementException();
70 }
71
72 /**
73 * Gets the time zone offset, for current date, modified in case of
74 * daylight savings. This is the offset to add *to* UTC to get local time.
75 * @param era the era of the given date.
76 * @param year the year in the given date.
77 * @param month the month in the given date.
78 * Month is 0-based. e.g., 0 for January.
79 * @param day the day-in-month of the given date.
80 * @param dayOfWeek the day-of-week of the given date.
81 * @param milliseconds the millis in day.
82 * @return the offset to add *to* GMT to get local time.
83 */
84 abstract public int getOffset(int era, int year, int month, int day,
85 int dayOfWeek, int milliseconds);
86
87 /**
88 * Sets the base time zone offset to GMT.
89 * This is the offset to add *to* UTC to get local time.
90 * @param offsetMillis the given base time zone offset to GMT.
91 */
92 abstract public void setRawOffset(int offsetMillis);
93
94 /**
95 * Gets unmodified offset, NOT modified in case of daylight savings.
96 * This is the offset to add *to* UTC to get local time.
97 * @return the unmodified offset to add *to* UTC to get local time.
98 */
99 abstract public int getRawOffset();
100
101 /**
102 * Gets the ID of this time zone.
103 * @return the ID of this time zone.
104 */
105 public String getID()
106 {
107 throw new NoSuchElementException();
108 }
109
110 /**
111 * Sets the time zone ID. This does not change any other data in
112 * the time zone object.
113 * @param ID the new time zone ID.
114 */
115 public void setID(String ID)
116 {
117 throw new NoSuchElementException();
118 }
119
120 /**
121 * Queries if this time zone uses Daylight Savings Time.
122 * @return true if this time zone uses Daylight Savings Time,
123 * false, otherwise.
124 */
125 abstract public boolean useDaylightTime();
126
127 /**
128 * Queries if the given date is in Daylight Savings Time in
129 * this time zone.
130 * @param date the given Date.
131 * @return true if the given date is in Daylight Savings Time,
132 * false, otherwise.
133 */
134 abstract public boolean inDaylightTime(Date date);
135
136 /**
137 * Gets the TimeZone for the given ID.
138 * @param ID the given ID.
139 * @return a TimeZone.
140 */
141 public static synchronized TimeZone getTimeZone(String ID)
142 {
143 throw new NoSuchElementException();
144 }
145
146 /**
147 * Gets the available IDs according to the given time zone offset.
148 * @param rawOffset the given time zone GMT offset.
149 * @return an array of IDs, where the time zone for that ID has
150 * the specified GMT offset. For example, {"Phoenix", "Denver"},
151 * since both have GMT-07:00, but differ in daylight savings behavior.
152 */
153 public static synchronized String[] getAvailableIDs(int rawOffset) {
154 throw new NoSuchElementException();
155 }
156
157 /**
158 * Gets all the available IDs supported.
159 * @return an array of IDs.
160 */
161 public static synchronized String[] getAvailableIDs() {
162 throw new NoSuchElementException();
163 }
164
165 /**
166 * Gets the default TimeZone for this host.
167 * @return a default TimeZone.
168 */
169 public static synchronized TimeZone getDefault() {
170 throw new NoSuchElementException();
171 }
172
173 /**
174 * Sets time zone to using the given TimeZone.
175 * @param zone the given time zone.
176 */
177 public static synchronized void setDefault(TimeZone zone)
178 {
179 throw new NoSuchElementException();
180 }
181
182 /**
183 * Overrides Cloneable
184 */
185 public Object clone()
186 {
187 throw new NoSuchElementException();
188 }
189
190 private void readObject(ObjectInputStream s) {
191 throw new NoSuchElementException();
192 }
193}
java/pkg2/java/util/TooManyListenersException.java+65−0
@@ -0,0 +1,65 @@
1/*
2 * @(#)TooManyListenersException.java 1.1 96/10/10
3 *
4 * Copyright (c) 1996 Sun Microsystems, Inc. All Rights Reserved.
5 *
6 * Permission to use, copy, modify, and distribute this software
7 * and its documentation for NON-COMMERCIAL purposes and without
8 * fee is hereby granted provided that this copyright notice
9 * appears in all copies. Please refer to the file "copyright.html"
10 * for further important copyright and licensing information.
11 *
12 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
13 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
14 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
15 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
16 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
17 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
18 */
19
20package java.util;
21
22/**
23 * <p>
24 * The <code> TooManyListenersException </code> Exception is used as part of
25 * the Java Event model to annotate and implement a unicast special case of
26 * a multicast Event Source.
27 * </p>
28 * <p>
29 * The presence of a <code> throws TooManyListenersException </code> clause
30 * on any given concrete implementation of the normally multicast semantic
31 * <italic> void add &lt EventListenerType &gt () </italic> event listener
32 * registration pattern is used to annotate that interface as implementing
33 * a unicast Listener special case, that is, that one and only one Listener
34 * may be registered on the particular event listener source concurrently.
35 * </p>
36 *
37 * @see java.util.EventObject
38 * @see java.util.EventListener
39 *
40 * @version 1.1 96/10/10
41 * @author Laurence P. G. Cable
42 */
43
44public class TooManyListenersException extends Exception {
45
46 /**
47 * Constructs a TooManyListenersException with no detail message.
48 * A detail message is a String that describes this particular exception.
49 */
50
51 public TooManyListenersException() {
52 super();
53 }
54
55 /**
56 * Constructs a TooManyListenersException with the specified detail message.
57 * A detail message is a String that describes this particular exception.
58 * @param s the detail message
59 */
60
61 public TooManyListenersException(String s) {
62 super(s);
63 }
64}
65
java/pkg2/java/util/Vector.java+0−0

Empty file added.

java/pkg2/java/util/mkfile+88−0
@@ -0,0 +1,88 @@
1<../../../../mkconfig
2
3DIRS=\
4 zip\
5
6TARG=\
7 BitSet.dis\
8 Calendar.dis\
9 Date.dis\
10 Dictionary.dis\
11 EmptyStackException.dis\
12 Enumeration.dis\
13 EventListener.dis\
14 EventObject.dis\
15 GregorianCalendar.dis\
16 Hashtable.dis\
17 HashtableEntry.dis\
18 HashtableEnumerator.dis\
19 ListResourceBundle.dis\
20 Locale.dis\
21# for MissingResourceException.dis\
22 PyLHKaRk2knKuXdPtclNZ.dis\
23# for NoSuchElementException.dis\
24 FgHgFAyr+lOIx-Hx5tg1g.dis\
25 Observable.dis\
26 Observer.dis\
27 Properties.dis\
28# for PropertyResourceBundle.dis\
29 hXReUGvcTPP+3SdqzAFLN.dis\
30 Random.dis\
31 ResourceBundle.dis\
32 SimpleTimeZone.dis\
33 Stack.dis\
34 StringTokenizer.dis\
35 SystemClassLoader.dis\
36 TimeZone.dis\
37# for TooManyListenersException.dis\
38 ofB3vewCQyrpHPDk+jZyy.dis\
39 Vector.dis\
40 VectorEnumerator.dis\
41# Limbo code\
42 Date_L.dis\
43 ResourceBundle_L.dis\
44
45MODULES=\
46 $ROOT/java/module/classloader.m\
47 $ROOT/java/module/jni.m\
48 $ROOT/java/module/cast.m\
49 Date_L.m\
50 ResourceBundle_L.m\
51
52SYSMODULES=\
53 draw.m\
54 hash.m\
55 keyring.m\
56 loader.m\
57 math.m\
58 string.m\
59 sys.m\
60
61DISBIN=$ROOT/java/dis/java/java/util
62
63<$ROOT/mkfiles/mkjava
64<$ROOT/mkfiles/mksubdirs
65
66HashtableEntry.dis: Hashtable.class
67 j2d HashtableEntry.class
68
69HashtableEnumerator.dis: Hashtable.class
70 j2d HashtableEnumerator.class
71
72VectorEnumerator.dis: Vector.class
73 j2d VectorEnumerator.class
74
75PyLHKaRk2knKuXdPtclNZ.dis: MissingResourceException.class
76 j2d MissingResourceException.class
77
78FgHgFAyr+lOIx-Hx5tg1g.dis: NoSuchElementException.class
79 j2d NoSuchElementException.class
80
81SystemClassLoader.dis: ResourceBundle.class
82 j2d SystemClassLoader.class
83
84hXReUGvcTPP+3SdqzAFLN.dis: PropertyResourceBundle.class
85 j2d PropertyResourceBundle.class
86
87ofB3vewCQyrpHPDk+jZyy.dis: TooManyListenersException.class
88 j2d TooManyListenersException.class
java/pkg2/java/util/zip/CRC32.java+0−0

Empty file added.

java/pkg2/java/util/zip/CRC32_L.b+51−0
@@ -0,0 +1,51 @@
1implement CRC32_L;
2
3# javal v1.4 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "CRC32_L.m";
30
31#>> extra post includes here
32
33#<<
34
35init( jni_p : JNI )
36{
37 # save java native inteface mod instance
38 jni = jni_p;
39 #>>extra initialization here
40 #<<
41}
42
43update_aB_I_I_V( this : ref CRC32_obj, p0 : JArrayB,p1 : int,p2 : int)
44{#>>
45}#<<
46
47update1_I_V( this : ref CRC32_obj, p0 : int)
48{#>>
49}#<<
50
51
java/pkg2/java/util/zip/CRC32_L.m+15−0
@@ -0,0 +1,15 @@
1# javal v1.4 generated file: edit with care
2
3CRC32_L : module
4{
5 CRC32_obj : adt
6 {
7 cl_mod : ClassModule;
8 crc : int;
9 };
10
11 init : fn( jni_p : JNI );
12 update_aB_I_I_V : fn( this : ref CRC32_obj, p0 : JArrayB,p1 : int,p2 : int);
13 update1_I_V : fn( this : ref CRC32_obj, p0 : int);
14
15};
java/pkg2/java/util/zip/CheckedInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/CheckedOutputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/Checksum.java+0−0

Empty file added.

java/pkg2/java/util/zip/DataFormatException.java+0−0

Empty file added.

java/pkg2/java/util/zip/GZIPInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/Inflater.java+0−0

Empty file added.

java/pkg2/java/util/zip/InflaterInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/Inflater_L.b+77−0
@@ -0,0 +1,77 @@
1implement Inflater_L;
2
3# javal v1.4 generated file: edit with care
4
5include "jni.m";
6 jni : JNI;
7 ClassModule,
8 JString,
9 JArray,
10 JArrayI,
11 JArrayC,
12 JArrayB,
13 JArrayS,
14 JArrayJ,
15 JArrayF,
16 JArrayD,
17 JArrayZ,
18 JArrayJObject,
19 JArrayJClass,
20 JArrayJString,
21 JClass,
22 JThread,
23 JObject : import jni;
24
25#>> extra pre includes here
26
27#<<
28
29include "Inflater_L.m";
30
31#>> extra post includes here
32
33#<<
34
35init( jni_p : JNI )
36{
37 # save java native inteface mod instance
38 jni = jni_p;
39 #>>extra initialization here
40 #<<
41}
42
43inflate_aB_I_I_I( this : ref Inflater_obj, p0 : JArrayB,p1 : int,p2 : int) : int
44{#>>
45 junk1 := (this, p0);
46 junk2 := (p1, p2);
47 return 0;
48}#<<
49
50getTotalIn_I( this : ref Inflater_obj) : int
51{#>>
52 junk := this;
53 return 0;
54}#<<
55
56getTotalOut_I( this : ref Inflater_obj) : int
57{#>>
58 junk := this;
59 return 0;
60}#<<
61
62reset_V( this : ref Inflater_obj)
63{#>>
64 junk := this;
65}#<<
66
67end_V( this : ref Inflater_obj)
68{#>>
69 junk := this;
70}#<<
71
72init_Z_V( this : ref Inflater_obj, p0 : int)
73{#>>
74 junk := (this, p0);
75}#<<
76
77
java/pkg2/java/util/zip/Inflater_L.m+24−0
@@ -0,0 +1,24 @@
1# javal v1.6 generated file: edit with care
2
3Inflater_L : module
4{
5 Inflater_obj : adt
6 {
7 cl_mod : ClassModule;
8 strm : int;
9 buf : JArrayB;
10 off : int;
11 len_j : int;
12 finished : byte;
13 needsDictionary : byte;
14 };
15
16 init : fn( jni_p : JNI );
17 inflate_aB_I_I_I : fn( this : ref Inflater_obj, p0 : JArrayB,p1 : int,p2 : int) : int;
18 getTotalIn_I : fn( this : ref Inflater_obj) : int;
19 getTotalOut_I : fn( this : ref Inflater_obj) : int;
20 reset_V : fn( this : ref Inflater_obj);
21 end_V : fn( this : ref Inflater_obj);
22 init_Z_V : fn( this : ref Inflater_obj, p0 : int);
23
24};
java/pkg2/java/util/zip/ZipConstants.java+0−0

Empty file added.

java/pkg2/java/util/zip/ZipEntry.java+0−0

Empty file added.

java/pkg2/java/util/zip/ZipException.java+0−0

Empty file added.

java/pkg2/java/util/zip/ZipInputStream.java+0−0

Empty file added.

java/pkg2/java/util/zip/mkfile+38−0
@@ -0,0 +1,38 @@
1<../../../../../mkconfig
2
3TARG=\
4 CRC32.dis\
5 CheckedInputStream.dis\
6 CheckedOutputStream.dis\
7 Checksum.dis\
8 DataFormatException.dis\
9 GZIPInputStream.dis\
10 Inflater.dis\
11 InflaterInputStream.dis\
12 ZipConstants.dis\
13 ZipEntry.dis\
14 ZipException.dis\
15 ZipInputStream.dis\
16# Limbo code\
17 CRC32_L.dis\
18 Inflater_L.dis\
19
20MODULES=\
21 $ROOT/java/module/classloader.m\
22 $ROOT/java/module/jni.m\
23 $ROOT/java/module/cast.m\
24 CRC32_L.m\
25 Inflater_L.m\
26
27SYSMODULES=\
28 draw.m\
29 hash.m\
30 keyring.m\
31 loader.m\
32 math.m\
33 string.m\
34 sys.m\
35
36DISBIN=$ROOT/java/dis/java/java/util/zip
37
38<$ROOT/mkfiles/mkjava