1 Clazz.declarePackage ("jssun.util.calendar");
\r
2 Clazz.load (["java.util.TimeZone", "jssun.util.calendar.CalendarSystem"], "jssun.util.calendar.ZoneInfo", ["java.lang.IllegalArgumentException", "$.NullPointerException", "java.util.Date", "java.util.SimpleTimeZone"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
5 this.rawOffsetDiff = 0;
\r
8 this.transitions = null;
\r
10 this.simpleTimeZoneParams = null;
\r
11 this.willGMTOffsetChange = false;
\r
13 this.lastRule = null;
\r
14 Clazz.instantialize (this, arguments);
\r
15 }, jssun.util.calendar, "ZoneInfo", java.util.TimeZone);
\r
16 Clazz.defineMethod (c$, "setRawOffsetReally",
\r
18 this.rawOffset = offset;
\r
20 Clazz.makeConstructor (c$,
\r
22 Clazz.superConstructor (this, jssun.util.calendar.ZoneInfo, []);
\r
24 Clazz.makeConstructor (c$,
\r
25 function (ID, rawOffset) {
\r
26 this.construct (ID, rawOffset, 0, 0, null, null, null, false);
\r
28 Clazz.makeConstructor (c$,
\r
29 function (ID, rawOffset, dstSavings, checksum, transitions, offsets, simpleTimeZoneParams, willGMTOffsetChange) {
\r
30 Clazz.superConstructor (this, jssun.util.calendar.ZoneInfo, []);
\r
32 this.rawOffset = rawOffset;
\r
33 this.dstSavings = dstSavings;
\r
34 this.checksum = checksum;
\r
35 this.transitions = transitions;
\r
36 this.offsets = offsets;
\r
37 this.simpleTimeZoneParams = simpleTimeZoneParams;
\r
38 this.willGMTOffsetChange = willGMTOffsetChange;
\r
39 }, "~S,~N,~N,~N,~A,~A,~A,~B");
\r
40 Clazz.defineMethod (c$, "getOffset",
\r
42 return this.getOffsets (date, null, 0);
\r
44 Clazz.defineMethod (c$, "getOffsets",
\r
45 function (utc, offsets) {
\r
46 return this.getOffsets (utc, offsets, 0);
\r
48 Clazz.defineMethod (c$, "getOffsetsByStandard",
\r
49 function (standard, offsets) {
\r
50 return this.getOffsets (standard, offsets, 1);
\r
52 Clazz.defineMethod (c$, "getOffsetsByWall",
\r
53 function (wall, offsets) {
\r
54 return this.getOffsets (wall, offsets, 2);
\r
56 Clazz.defineMethod (c$, "getOffsets",
\r
57 function (date, offsets, type) {
\r
58 if (this.transitions == null) {
\r
59 var offset = this.getLastRawOffset ();
\r
60 if (offsets != null) {
\r
61 offsets[0] = offset;
\r
64 }date -= this.rawOffsetDiff;
\r
65 var index = this.getTransitionIndex (date, type);
\r
67 var offset = this.getLastRawOffset ();
\r
68 if (offsets != null) {
\r
69 offsets[0] = offset;
\r
72 }if (index < this.transitions.length) {
\r
73 var val = this.transitions[index];
\r
74 var offset = this.offsets[(val & 15)] + this.rawOffsetDiff;
\r
75 if (offsets != null) {
\r
76 var dst = ((val >>> 4) & 0xf);
\r
77 var save = (dst == 0) ? 0 : this.offsets[dst];
\r
78 offsets[0] = offset - save;
\r
81 }var tz = this.getLastRule ();
\r
83 var rawoffset = tz.getRawOffset ();
\r
86 msec -= this.rawOffset;
\r
87 }var dstoffset = tz.inDaylightTime ( new java.util.Date (msec)) ? tz.getDSTSavings () : 0;
\r
88 if (offsets != null) {
\r
89 offsets[0] = rawoffset;
\r
90 offsets[1] = dstoffset;
\r
91 }return rawoffset + dstoffset;
\r
92 }var offset = this.getLastRawOffset ();
\r
93 if (offsets != null) {
\r
94 offsets[0] = offset;
\r
98 Clazz.defineMethod (c$, "getTransitionIndex",
\r
99 function (date, type) {
\r
101 var high = this.transitions.length - 1;
\r
102 while (low <= high) {
\r
103 var mid = Clazz.doubleToInt ((low + high) / 2);
\r
104 var val = this.transitions[mid];
\r
105 var midVal = val >> 12;
\r
107 midVal += this.offsets[(val & 15)];
\r
109 var dstIndex = ((val >>> 4) & 0xf);
\r
110 if (dstIndex != 0) {
\r
111 midVal -= this.offsets[dstIndex];
\r
112 }}if (midVal < date) {
\r
114 } else if (midVal > date) {
\r
119 if (low >= this.transitions.length) {
\r
123 Clazz.defineMethod (c$, "getOffset",
\r
124 function (era, year, month, day, dayOfWeek, milliseconds) {
\r
125 if (milliseconds < 0 || milliseconds >= 86400000) {
\r
126 throw new IllegalArgumentException ();
\r
129 } else if (era != 1) {
\r
130 throw new IllegalArgumentException ();
\r
131 }var date = jssun.util.calendar.ZoneInfo.gcal.newCalendarDate (null);
\r
132 date.setDate (year, month + 1, day);
\r
133 if (jssun.util.calendar.ZoneInfo.gcal.validate (date) == false) {
\r
134 throw new IllegalArgumentException ();
\r
135 }if (dayOfWeek < 1 || dayOfWeek > 7) {
\r
136 throw new IllegalArgumentException ();
\r
137 }if (this.transitions == null) {
\r
138 return this.getLastRawOffset ();
\r
139 }var dateInMillis = jssun.util.calendar.ZoneInfo.gcal.getTime (date) + milliseconds;
\r
140 dateInMillis -= this.rawOffset;
\r
141 return this.getOffsets (dateInMillis, null, 0);
\r
142 }, "~N,~N,~N,~N,~N,~N");
\r
143 Clazz.overrideMethod (c$, "setRawOffset",
\r
144 function (offsetMillis) {
\r
145 if (offsetMillis == this.rawOffset + this.rawOffsetDiff) {
\r
147 }this.rawOffsetDiff = offsetMillis - this.rawOffset;
\r
148 if (this.lastRule != null) {
\r
149 this.lastRule.setRawOffset (offsetMillis);
\r
150 }this.dirty = true;
\r
152 Clazz.defineMethod (c$, "getRawOffset",
\r
154 if (!this.willGMTOffsetChange) {
\r
155 return this.rawOffset + this.rawOffsetDiff;
\r
156 }var offsets = Clazz.newIntArray (2, 0);
\r
157 this.getOffsets (System.currentTimeMillis (), offsets, 0);
\r
160 Clazz.defineMethod (c$, "isDirty",
\r
164 Clazz.defineMethod (c$, "getLastRawOffset",
\r
166 return this.rawOffset + this.rawOffsetDiff;
\r
168 Clazz.defineMethod (c$, "useDaylightTime",
\r
170 return (this.simpleTimeZoneParams != null);
\r
172 Clazz.overrideMethod (c$, "inDaylightTime",
\r
174 if (date == null) {
\r
175 throw new NullPointerException ();
\r
176 }if (this.transitions == null) {
\r
178 }var utc = date.getTime () - this.rawOffsetDiff;
\r
179 var index = this.getTransitionIndex (utc, 0);
\r
182 }if (index < this.transitions.length) {
\r
183 return (this.transitions[index] & 240) != 0;
\r
184 }var tz = this.getLastRule ();
\r
186 return tz.inDaylightTime (date);
\r
188 }, "java.util.Date");
\r
189 Clazz.overrideMethod (c$, "getDSTSavings",
\r
191 return this.dstSavings;
\r
193 Clazz.overrideMethod (c$, "toString",
\r
195 return this.getClass ().getName () + "[id=\"" + this.getID () + "\"" + ",offset=" + this.getLastRawOffset () + ",dstSavings=" + this.dstSavings + ",useDaylight=" + this.useDaylightTime () + ",transitions=" + ((this.transitions != null) ? this.transitions.length : 0) + ",lastRule=" + (this.lastRule == null ? this.getLastRuleInstance () : this.lastRule) + "]";
\r
197 Clazz.defineMethod (c$, "getLastRule",
\r
199 if (this.lastRule == null) {
\r
200 this.lastRule = this.getLastRuleInstance ();
\r
201 }return this.lastRule;
\r
203 Clazz.defineMethod (c$, "getLastRuleInstance",
\r
205 if (this.simpleTimeZoneParams == null) {
\r
207 }if (this.simpleTimeZoneParams.length == 10) {
\r
208 return new java.util.SimpleTimeZone (this.getLastRawOffset (), this.getID (), this.simpleTimeZoneParams[0], this.simpleTimeZoneParams[1], this.simpleTimeZoneParams[2], this.simpleTimeZoneParams[3], this.simpleTimeZoneParams[4], this.simpleTimeZoneParams[5], this.simpleTimeZoneParams[6], this.simpleTimeZoneParams[7], this.simpleTimeZoneParams[8], this.simpleTimeZoneParams[9], this.dstSavings);
\r
209 }return new java.util.SimpleTimeZone (this.getLastRawOffset (), this.getID (), this.simpleTimeZoneParams[0], this.simpleTimeZoneParams[1], this.simpleTimeZoneParams[2], this.simpleTimeZoneParams[3], this.simpleTimeZoneParams[4], this.simpleTimeZoneParams[5], this.simpleTimeZoneParams[6], this.simpleTimeZoneParams[7], this.dstSavings);
\r
211 Clazz.defineMethod (c$, "clone",
\r
213 var zi = Clazz.superCall (this, jssun.util.calendar.ZoneInfo, "clone", []);
\r
214 zi.lastRule = null;
\r
217 Clazz.overrideMethod (c$, "hashCode",
\r
219 return this.getLastRawOffset () ^ this.checksum;
\r
221 Clazz.overrideMethod (c$, "equals",
\r
223 if (this === obj) {
\r
225 }if (!(Clazz.instanceOf (obj, jssun.util.calendar.ZoneInfo))) {
\r
228 return (this.getID ().equals (that.getID ()) && (this.getLastRawOffset () == that.getLastRawOffset ()) && (this.checksum == that.checksum));
\r
230 Clazz.overrideMethod (c$, "hasSameRules",
\r
232 if (this === other) {
\r
234 }if (other == null) {
\r
236 }if (!(Clazz.instanceOf (other, jssun.util.calendar.ZoneInfo))) {
\r
237 if (this.getRawOffset () != other.getRawOffset ()) {
\r
239 }if ((this.transitions == null) && (this.useDaylightTime () == false) && (other.useDaylightTime () == false)) {
\r
242 }if (this.getLastRawOffset () != (other).getLastRawOffset ()) {
\r
244 }return (this.checksum == (other).checksum);
\r
245 }, "java.util.TimeZone");
\r
246 c$.getAliasTable = Clazz.defineMethod (c$, "getAliasTable",
\r
248 var aliases = null;
\r
249 var cache = jssun.util.calendar.ZoneInfo.aliasTable;
\r
250 if (cache != null) {
\r
252 if (aliases != null) {
\r
256 Clazz.defineStatics (c$,
\r
258 "STANDARD_TIME", 1,
\r
260 "OFFSET_MASK", 0x0f,
\r
263 "TRANSITION_NSHIFT", 12);
\r
264 c$.gcal = c$.prototype.gcal = jssun.util.calendar.CalendarSystem.getGregorianCalendar ();
\r
265 Clazz.defineStatics (c$,
\r
266 "aliasTable", null);
\r