1 Clazz.declarePackage ("java.util");
2 Clazz.load (["java.util.Hashtable"], "java.util.Calendar", ["java.lang.IllegalArgumentException", "$.InternalError", "$.NullPointerException", "$.StringBuilder", "java.util.Date", "$.HashMap", "java.text.DateFormatSymbols", "java.util.Locale", "$.TimeZone", "jssun.util.calendar.ZoneInfo", "jssun.util.resources.LocaleData"], function () {
3 c$ = Clazz.decorateAsClass (function () {
8 this.isTimeSet = false;
9 this.areFieldsSet = false;
10 this.areAllFieldsSet = false;
13 this.sharedZone = false;
14 this.firstDayOfWeek = 0;
15 this.minimalDaysInFirstWeek = 0;
17 this.serialVersionOnStream = 1;
18 Clazz.instantialize (this, arguments);
19 }, java.util, "Calendar", null, [Cloneable, Comparable]);
20 Clazz.makeConstructor (c$,
22 this.construct (java.util.TimeZone.getDefaultRef (), java.util.Locale.getDefault ());
23 this.sharedZone = true;
25 Clazz.makeConstructor (c$,
26 function (zone, aLocale) {
27 this.fields = Clazz.newIntArray (17, 0);
28 this.$isSet = Clazz.newBooleanArray (17, false);
29 this.stamp = Clazz.newIntArray (17, 0);
31 this.setWeekCountData (aLocale);
32 }, "java.util.TimeZone,java.util.Locale");
33 c$.getInstance = Clazz.defineMethod (c$, "getInstance",
35 var cal = java.util.Calendar.createCalendar (java.util.TimeZone.getDefaultRef (), java.util.Locale.getDefault ());
36 cal.sharedZone = true;
39 c$.getInstance = Clazz.defineMethod (c$, "getInstance",
41 return java.util.Calendar.createCalendar (zone, java.util.Locale.getDefault ());
42 }, "java.util.TimeZone");
43 c$.getInstance = Clazz.defineMethod (c$, "getInstance",
45 var cal = java.util.Calendar.createCalendar (java.util.TimeZone.getDefaultRef (), aLocale);
46 cal.sharedZone = true;
48 }, "java.util.Locale");
49 c$.getInstance = Clazz.defineMethod (c$, "getInstance",
50 function (zone, aLocale) {
51 return java.util.Calendar.createCalendar (zone, aLocale);
52 }, "java.util.TimeZone,java.util.Locale");
53 c$.createCalendar = Clazz.defineMethod (c$, "createCalendar",
54 function (zone, aLocale) {
55 return new java.util.GregorianCalendar (zone, aLocale);
56 }, "java.util.TimeZone,java.util.Locale");
57 Clazz.defineMethod (c$, "getTime",
59 return new java.util.Date (this.getTimeInMillis ());
61 Clazz.defineMethod (c$, "setTime",
63 this.setTimeInMillis (date.getTime ());
65 Clazz.defineMethod (c$, "getTimeInMillis",
67 if (!this.isTimeSet) {
71 Clazz.defineMethod (c$, "setTimeInMillis",
73 if (this.time == millis && this.isTimeSet && this.areFieldsSet && this.areAllFieldsSet && (Clazz.instanceOf (this.zone, jssun.util.calendar.ZoneInfo)) && !(this.zone).isDirty ()) {
76 this.isTimeSet = true;
77 this.areFieldsSet = false;
78 this.computeFields ();
79 this.areAllFieldsSet = this.areFieldsSet = true;
81 Clazz.defineMethod (c$, "get",
84 return this.internalGet (field);
86 Clazz.defineMethod (c$, "internalGet",
88 return this.fields[field];
90 Clazz.defineMethod (c$, "internalSet",
91 function (field, value) {
92 this.fields[field] = value;
94 Clazz.defineMethod (c$, "set",
95 function (field, value) {
96 if (this.isLenient () && this.areFieldsSet && !this.areAllFieldsSet) {
97 this.computeFields ();
98 }this.internalSet (field, value);
99 this.isTimeSet = false;
100 this.areFieldsSet = false;
101 this.$isSet[field] = true;
102 this.stamp[field] = this.nextStamp++;
103 if (this.nextStamp == 2147483647) {
106 Clazz.defineMethod (c$, "set",
107 function (year, month, date) {
112 Clazz.defineMethod (c$, "set",
113 function (year, month, date, hourOfDay, minute) {
117 this.set (11, hourOfDay);
118 this.set (12, minute);
119 }, "~N,~N,~N,~N,~N");
120 Clazz.defineMethod (c$, "set",
121 function (year, month, date, hourOfDay, minute, second) {
125 this.set (11, hourOfDay);
126 this.set (12, minute);
127 this.set (13, second);
128 }, "~N,~N,~N,~N,~N,~N");
129 Clazz.defineMethod (c$, "clear",
131 for (var i = 0; i < this.fields.length; ) {
132 this.stamp[i] = this.fields[i] = 0;
133 this.$isSet[i++] = false;
135 this.areAllFieldsSet = this.areFieldsSet = false;
136 this.isTimeSet = false;
138 Clazz.defineMethod (c$, "clear",
140 this.fields[field] = 0;
141 this.stamp[field] = 0;
142 this.$isSet[field] = false;
143 this.areAllFieldsSet = this.areFieldsSet = false;
144 this.isTimeSet = false;
146 Clazz.defineMethod (c$, "isSet",
148 return this.stamp[field] != 0;
150 Clazz.defineMethod (c$, "getDisplayName",
151 function (field, style, locale) {
152 if (!this.checkDisplayNameParams (field, style, 0, 2, locale, 645)) {
154 }var symbols = java.text.DateFormatSymbols.getInstance (locale);
155 var strings = this.getFieldStrings (field, style, symbols);
156 if (strings != null) {
157 var fieldValue = this.get (field);
158 if (fieldValue < strings.length) {
159 return strings[fieldValue];
161 }, "~N,~N,java.util.Locale");
162 Clazz.defineMethod (c$, "getDisplayNames",
163 function (field, style, locale) {
164 if (!this.checkDisplayNameParams (field, style, 0, 2, locale, 645)) {
167 var shortNames = this.getDisplayNamesImpl (field, 1, locale);
168 if (field == 0 || field == 9) {
170 }var longNames = this.getDisplayNamesImpl (field, 2, locale);
171 if (shortNames == null) {
173 }if (longNames != null) {
174 shortNames.putAll (longNames);
176 }return this.getDisplayNamesImpl (field, style, locale);
177 }, "~N,~N,java.util.Locale");
178 Clazz.defineMethod (c$, "getDisplayNamesImpl",
179 function (field, style, locale) {
180 var symbols = java.text.DateFormatSymbols.getInstance (locale);
181 var strings = this.getFieldStrings (field, style, symbols);
182 if (strings != null) {
183 var names = new java.util.HashMap ();
184 for (var i = 0; i < strings.length; i++) {
185 if (strings[i].length == 0) {
187 }names.put (strings[i], new Integer (i));
191 }, "~N,~N,java.util.Locale");
192 Clazz.defineMethod (c$, "checkDisplayNameParams",
193 function (field, style, minStyle, maxStyle, locale, fieldMask) {
194 if (field < 0 || field >= this.fields.length || style < minStyle || style > maxStyle) {
195 throw new IllegalArgumentException ();
196 }if (locale == null) {
197 throw new NullPointerException ();
198 }return java.util.Calendar.isFieldSet (fieldMask, field);
199 }, "~N,~N,~N,~N,java.util.Locale,~N");
200 Clazz.defineMethod (c$, "getFieldStrings",
201 function (field, style, symbols) {
205 strings = symbols.getEras ();
208 strings = (style == 2) ? symbols.getMonths () : symbols.getShortMonths ();
211 strings = (style == 2) ? symbols.getWeekdays () : symbols.getShortWeekdays ();
214 strings = symbols.getAmPmStrings ();
218 }, "~N,~N,java.text.DateFormatSymbols");
219 Clazz.defineMethod (c$, "complete",
221 if (!this.isTimeSet) this.updateTime ();
222 if (!this.areFieldsSet || !this.areAllFieldsSet) {
223 this.computeFields ();
224 this.areAllFieldsSet = this.areFieldsSet = true;
226 Clazz.defineMethod (c$, "isExternallySet",
228 return this.stamp[field] >= 2;
230 Clazz.defineMethod (c$, "getSetStateFields",
233 for (var i = 0; i < this.fields.length; i++) {
234 if (this.stamp[i] != 0) {
239 Clazz.defineMethod (c$, "setFieldsComputed",
240 function (fieldMask) {
241 if (fieldMask == 131071) {
242 for (var i = 0; i < this.fields.length; i++) {
244 this.$isSet[i] = true;
246 this.areFieldsSet = this.areAllFieldsSet = true;
248 for (var i = 0; i < this.fields.length; i++) {
249 if ((fieldMask & 1) == 1) {
251 this.$isSet[i] = true;
253 if (this.areAllFieldsSet && !this.$isSet[i]) {
254 this.areAllFieldsSet = false;
258 Clazz.defineMethod (c$, "setFieldsNormalized",
259 function (fieldMask) {
260 if (fieldMask != 131071) {
261 for (var i = 0; i < this.fields.length; i++) {
262 if ((fieldMask & 1) == 0) {
263 this.stamp[i] = this.fields[i] = 0;
264 this.$isSet[i] = false;
267 }this.areFieldsSet = true;
268 this.areAllFieldsSet = false;
270 Clazz.defineMethod (c$, "isPartiallyNormalized",
272 return this.areFieldsSet && !this.areAllFieldsSet;
274 Clazz.defineMethod (c$, "isFullyNormalized",
276 return this.areFieldsSet && this.areAllFieldsSet;
278 Clazz.defineMethod (c$, "setUnnormalized",
280 this.areFieldsSet = this.areAllFieldsSet = false;
282 c$.isFieldSet = Clazz.defineMethod (c$, "isFieldSet",
283 function (fieldMask, field) {
284 return (fieldMask & (1 << field)) != 0;
286 Clazz.defineMethod (c$, "selectFields",
289 if (this.stamp[0] != 0) {
291 }var dowStamp = this.stamp[7];
292 var monthStamp = this.stamp[2];
293 var domStamp = this.stamp[5];
294 var womStamp = java.util.Calendar.aggregateStamp (this.stamp[4], dowStamp);
295 var dowimStamp = java.util.Calendar.aggregateStamp (this.stamp[8], dowStamp);
296 var doyStamp = this.stamp[6];
297 var woyStamp = java.util.Calendar.aggregateStamp (this.stamp[3], dowStamp);
298 var bestStamp = domStamp;
299 if (womStamp > bestStamp) {
300 bestStamp = womStamp;
301 }if (dowimStamp > bestStamp) {
302 bestStamp = dowimStamp;
303 }if (doyStamp > bestStamp) {
304 bestStamp = doyStamp;
305 }if (woyStamp > bestStamp) {
306 bestStamp = woyStamp;
307 }if (bestStamp == 0) {
308 womStamp = this.stamp[4];
309 dowimStamp = Math.max (this.stamp[8], dowStamp);
310 woyStamp = this.stamp[3];
311 bestStamp = Math.max (Math.max (womStamp, dowimStamp), woyStamp);
312 if (bestStamp == 0) {
313 bestStamp = domStamp = monthStamp;
314 }}if (bestStamp == domStamp || (bestStamp == womStamp && this.stamp[4] >= this.stamp[3]) || (bestStamp == dowimStamp && this.stamp[8] >= this.stamp[3])) {
316 if (bestStamp == domStamp) {
321 }if (womStamp == dowimStamp) {
322 if (this.stamp[4] >= this.stamp[8]) {
327 if (bestStamp == womStamp) {
330 if (this.stamp[8] != 0) {
333 if (bestStamp == doyStamp) {
339 }}var hourOfDayStamp = this.stamp[11];
340 var hourStamp = java.util.Calendar.aggregateStamp (this.stamp[10], this.stamp[9]);
341 bestStamp = (hourStamp > hourOfDayStamp) ? hourStamp : hourOfDayStamp;
342 if (bestStamp == 0) {
343 bestStamp = Math.max (this.stamp[10], this.stamp[9]);
344 }if (bestStamp != 0) {
345 if (bestStamp == hourOfDayStamp) {
349 if (this.stamp[9] != 0) {
351 }}}if (this.stamp[12] != 0) {
353 }if (this.stamp[13] != 0) {
355 }if (this.stamp[14] != 0) {
357 }if (this.stamp[15] >= 2) {
359 }if (this.stamp[16] >= 2) {
363 c$.aggregateStamp = Clazz.defineMethod (c$, "aggregateStamp",
364 function (stamp_a, stamp_b) {
365 if (stamp_a == 0 || stamp_b == 0) {
367 }return (stamp_a > stamp_b) ? stamp_a : stamp_b;
369 Clazz.defineMethod (c$, "equals",
371 if (this === obj) return true;
374 return this.compareTo (java.util.Calendar.getMillisOf (that)) == 0 && this.lenient == that.lenient && this.firstDayOfWeek == that.firstDayOfWeek && this.minimalDaysInFirstWeek == that.minimalDaysInFirstWeek && this.zone.equals (that.zone);
376 if (Clazz.exceptionOf (e, Exception)) {
383 Clazz.defineMethod (c$, "hashCode",
385 var otheritems = (this.lenient ? 1 : 0) | (this.firstDayOfWeek << 1) | (this.minimalDaysInFirstWeek << 4) | (this.zone.hashCode () << 7);
386 var t = java.util.Calendar.getMillisOf (this);
387 return t ^ (t >> 32) ^ otheritems;
389 Clazz.defineMethod (c$, "before",
391 return Clazz.instanceOf (when, java.util.Calendar) && this.compareTo (when) < 0;
393 Clazz.defineMethod (c$, "after",
395 return Clazz.instanceOf (when, java.util.Calendar) && this.compareTo (when) > 0;
397 Clazz.defineMethod (c$, "compareTo",
398 function (anotherCalendar) {
399 return this.compareTo (java.util.Calendar.getMillisOf (anotherCalendar));
400 }, "java.util.Calendar");
401 Clazz.defineMethod (c$, "roll",
402 function (field, amount) {
404 this.roll (field, true);
408 this.roll (field, false);
412 Clazz.defineMethod (c$, "setTimeZone",
415 this.sharedZone = false;
416 this.areAllFieldsSet = this.areFieldsSet = false;
417 }, "java.util.TimeZone");
418 Clazz.defineMethod (c$, "getTimeZone",
420 if (this.sharedZone) {
421 this.zone = this.zone.clone ();
422 this.sharedZone = false;
425 Clazz.defineMethod (c$, "getZone",
429 Clazz.defineMethod (c$, "setZoneShared",
431 this.sharedZone = shared;
433 Clazz.defineMethod (c$, "setLenient",
435 this.lenient = lenient;
437 Clazz.defineMethod (c$, "isLenient",
441 Clazz.defineMethod (c$, "setFirstDayOfWeek",
443 if (this.firstDayOfWeek == value) {
445 }this.firstDayOfWeek = value;
446 this.invalidateWeekFields ();
448 Clazz.defineMethod (c$, "getFirstDayOfWeek",
450 return this.firstDayOfWeek;
452 Clazz.defineMethod (c$, "setMinimalDaysInFirstWeek",
454 if (this.minimalDaysInFirstWeek == value) {
456 }this.minimalDaysInFirstWeek = value;
457 this.invalidateWeekFields ();
459 Clazz.defineMethod (c$, "getMinimalDaysInFirstWeek",
461 return this.minimalDaysInFirstWeek;
463 Clazz.defineMethod (c$, "getActualMinimum",
465 var fieldValue = this.getGreatestMinimum (field);
466 var endValue = this.getMinimum (field);
467 if (fieldValue == endValue) {
469 }var work = this.clone ();
470 work.setLenient (true);
471 var result = fieldValue;
473 work.set (field, fieldValue);
474 if (work.get (field) != fieldValue) {
479 }} while (fieldValue >= endValue);
482 Clazz.defineMethod (c$, "getActualMaximum",
484 var fieldValue = this.getLeastMaximum (field);
485 var endValue = this.getMaximum (field);
486 if (fieldValue == endValue) {
488 }var work = this.clone ();
489 work.setLenient (true);
490 if (field == 3 || field == 4) work.set (7, this.firstDayOfWeek);
491 var result = fieldValue;
493 work.set (field, fieldValue);
494 if (work.get (field) != fieldValue) {
499 }} while (fieldValue <= endValue);
502 Clazz.defineMethod (c$, "clone",
505 var other = Clazz.superCall (this, java.util.Calendar, "clone", []);
506 other.fields = Clazz.newIntArray (17, 0);
507 other.$isSet = Clazz.newBooleanArray (17, false);
508 other.stamp = Clazz.newIntArray (17, 0);
509 for (var i = 0; i < 17; i++) {
510 other.fields[i] = this.fields[i];
511 other.stamp[i] = this.stamp[i];
512 other.$isSet[i] = this.$isSet[i];
514 other.zone = this.zone.clone ();
517 if (Clazz.exceptionOf (e, CloneNotSupportedException)) {
518 throw new InternalError ();
524 c$.getFieldName = Clazz.defineMethod (c$, "getFieldName",
526 return java.util.Calendar.FIELD_NAME[field];
528 Clazz.overrideMethod (c$, "toString",
530 var buffer = new StringBuilder (800);
531 buffer.append (this.getClass ().getName ()).append ('[');
532 java.util.Calendar.appendValue (buffer, "time", this.isTimeSet, this.time);
533 buffer.append (",areFieldsSet=").append (this.areFieldsSet);
534 buffer.append (",areAllFieldsSet=").append (this.areAllFieldsSet);
535 buffer.append (",lenient=").append (this.lenient);
536 buffer.append (",zone=").append (this.zone);
537 java.util.Calendar.appendValue (buffer, ",firstDayOfWeek", true, this.firstDayOfWeek);
538 java.util.Calendar.appendValue (buffer, ",minimalDaysInFirstWeek", true, this.minimalDaysInFirstWeek);
539 for (var i = 0; i < 17; ++i) {
541 java.util.Calendar.appendValue (buffer, java.util.Calendar.FIELD_NAME[i], this.isSet (i), this.fields[i]);
544 return buffer.toString ();
546 c$.appendValue = Clazz.defineMethod (c$, "appendValue",
547 function (sb, item, valid, value) {
548 sb.append (item).append ('=');
553 }}, "StringBuilder,~S,~B,~N");
554 Clazz.defineMethod (c$, "setWeekCountData",
555 function (desiredLocale) {
556 var data = java.util.Calendar.cachedLocaleData.get (desiredLocale);
558 var bundle = jssun.util.resources.LocaleData.getCalendarData (desiredLocale);
559 data = Clazz.newIntArray (2, 0);
560 data[0] = Integer.parseInt (bundle.getString ("firstDayOfWeek"));
561 data[1] = Integer.parseInt (bundle.getString ("minimalDaysInFirstWeek"));
562 java.util.Calendar.cachedLocaleData.put (desiredLocale, data);
563 }this.firstDayOfWeek = data[0];
564 this.minimalDaysInFirstWeek = data[1];
565 }, "java.util.Locale");
566 Clazz.defineMethod (c$, "updateTime",
569 this.isTimeSet = true;
571 Clazz.defineMethod (c$, "compareTo",
573 var thisTime = java.util.Calendar.getMillisOf (this);
574 return (thisTime > t) ? 1 : (thisTime == t) ? 0 : -1;
576 c$.getMillisOf = Clazz.defineMethod (c$, "getMillisOf",
577 function (calendar) {
578 if (calendar.isTimeSet) {
579 return calendar.time;
580 }var cal = calendar.clone ();
581 cal.setLenient (true);
582 return cal.getTimeInMillis ();
583 }, "java.util.Calendar");
584 Clazz.defineMethod (c$, "adjustStamp",
589 var min = 2147483647;
590 for (var i = 0; i < this.stamp.length; i++) {
591 var v = this.stamp[i];
592 if (v >= newStamp && min > v) {
597 if (max != min && min == 2147483647) {
599 }for (var i = 0; i < this.stamp.length; i++) {
600 if (this.stamp[i] == min) {
601 this.stamp[i] = newStamp;
607 this.nextStamp = newStamp;
609 Clazz.defineMethod (c$, "invalidateWeekFields",
611 if (this.stamp[4] != 1 && this.stamp[3] != 1) {
613 }var cal = this.clone ();
614 cal.setLenient (true);
617 if (this.stamp[4] == 1) {
618 var weekOfMonth = cal.get (4);
619 if (this.fields[4] != weekOfMonth) {
620 this.fields[4] = weekOfMonth;
621 }}if (this.stamp[3] == 1) {
622 var weekOfYear = cal.get (3);
623 if (this.fields[3] != weekOfYear) {
624 this.fields[3] = weekOfYear;
626 Clazz.defineStatics (c$,
636 "DAY_OF_WEEK_IN_MONTH", 8,
671 c$.cachedLocaleData = c$.prototype.cachedLocaleData = new java.util.Hashtable (3);
672 Clazz.defineStatics (c$,
675 "MINIMUM_USER_STAMP", 2,
676 "ALL_FIELDS", 131071,
677 "currentSerialVersion", 1,
681 "WEEK_OF_YEAR_MASK", (8),
682 "WEEK_OF_MONTH_MASK", (16),
683 "DAY_OF_MONTH_MASK", (32),
685 "DAY_OF_YEAR_MASK", (64),
686 "DAY_OF_WEEK_MASK", (128),
687 "DAY_OF_WEEK_IN_MONTH_MASK", (256),
690 "HOUR_OF_DAY_MASK", (2048),
691 "MINUTE_MASK", (4096),
692 "SECOND_MASK", (8192),
693 "MILLISECOND_MASK", (16384),
694 "ZONE_OFFSET_MASK", (32768),
695 "DST_OFFSET_MASK", (65536),
696 "FIELD_NAME", Clazz.newArray (-1, ["ERA", "YEAR", "MONTH", "WEEK_OF_YEAR", "WEEK_OF_MONTH", "DAY_OF_MONTH", "DAY_OF_YEAR", "DAY_OF_WEEK", "DAY_OF_WEEK_IN_MONTH", "AM_PM", "HOUR", "HOUR_OF_DAY", "MINUTE", "SECOND", "MILLISECOND", "ZONE_OFFSET", "DST_OFFSET"]));