JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / jssun / util / calendar / AbstractCalendar.js
1 Clazz.declarePackage ("jssun.util.calendar");\r
2 Clazz.load (["jssun.util.calendar.CalendarSystem"], "jssun.util.calendar.AbstractCalendar", ["java.lang.IllegalArgumentException", "jssun.util.calendar.CalendarUtils", "$.ZoneInfo"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.eras = null;\r
5 Clazz.instantialize (this, arguments);\r
6 }, jssun.util.calendar, "AbstractCalendar", jssun.util.calendar.CalendarSystem);\r
7 Clazz.makeConstructor (c$, \r
8 function () {\r
9 Clazz.superConstructor (this, jssun.util.calendar.AbstractCalendar, []);\r
10 });\r
11 Clazz.overrideMethod (c$, "getEra", \r
12 function (eraName) {\r
13 if (this.eras != null) {\r
14 for (var i = 0; i < this.eras.length; i++) {\r
15 if (this.eras[i].equals (eraName)) {\r
16 return this.eras[i];\r
17 }}\r
18 }return null;\r
19 }, "~S");\r
20 Clazz.overrideMethod (c$, "getEras", \r
21 function () {\r
22 var e = null;\r
23 if (this.eras != null) {\r
24 e =  new Array (this.eras.length);\r
25 System.arraycopy (this.eras, 0, e, 0, this.eras.length);\r
26 }return e;\r
27 });\r
28 Clazz.overrideMethod (c$, "setEra", \r
29 function (date, eraName) {\r
30 if (this.eras == null) {\r
31 return;\r
32 }for (var i = 0; i < this.eras.length; i++) {\r
33 var e = this.eras[i];\r
34 if (e != null && e.getName ().equals (eraName)) {\r
35 date.setEra (e);\r
36 return;\r
37 }}\r
38 throw  new IllegalArgumentException ("unknown era name: " + eraName);\r
39 }, "jssun.util.calendar.CalendarDate,~S");\r
40 Clazz.defineMethod (c$, "setEras", \r
41 function (eras) {\r
42 this.eras = eras;\r
43 }, "~A");\r
44 Clazz.defineMethod (c$, "getCalendarDate", \r
45 function () {\r
46 return this.getCalendarDate (System.currentTimeMillis (), this.newCalendarDate ());\r
47 });\r
48 Clazz.defineMethod (c$, "getCalendarDate", \r
49 function (millis) {\r
50 return this.getCalendarDate (millis, this.newCalendarDate ());\r
51 }, "~N");\r
52 Clazz.defineMethod (c$, "getCalendarDate", \r
53 function (millis, zone) {\r
54 var date = this.newCalendarDate (zone);\r
55 return this.getCalendarDate (millis, date);\r
56 }, "~N,java.util.TimeZone");\r
57 Clazz.defineMethod (c$, "getCalendarDate", \r
58 function (millis, date) {\r
59 var ms = 0;\r
60 var zoneOffset = 0;\r
61 var saving = 0;\r
62 var days = 0;\r
63 var zi = date.getZone ();\r
64 if (zi != null) {\r
65 var offsets =  Clazz.newIntArray (2, 0);\r
66 if (Clazz.instanceOf (zi, jssun.util.calendar.ZoneInfo)) {\r
67 zoneOffset = (zi).getOffsets (millis, offsets);\r
68 } else {\r
69 zoneOffset = zi.getOffset (millis);\r
70 offsets[0] = zi.getRawOffset ();\r
71 offsets[1] = zoneOffset - offsets[0];\r
72 }days = Clazz.doubleToInt (zoneOffset / 86400000);\r
73 ms = zoneOffset % 86400000;\r
74 saving = offsets[1];\r
75 }date.setZoneOffset (zoneOffset);\r
76 date.setDaylightSaving (saving);\r
77 days += Clazz.doubleToInt (millis / 86400000);\r
78 ms += (millis % 86400000);\r
79 if (ms >= 86400000) {\r
80 ms -= 86400000;\r
81 ++days;\r
82 } else {\r
83 while (ms < 0) {\r
84 ms += 86400000;\r
85 --days;\r
86 }\r
87 }days += 719163;\r
88 this.getCalendarDateFromFixedDate (date, days);\r
89 this.setTimeOfDay (date, ms);\r
90 date.setLeapYear (this.isLeapYear (date));\r
91 date.setNormalized (true);\r
92 return date;\r
93 }, "~N,jssun.util.calendar.CalendarDate");\r
94 Clazz.overrideMethod (c$, "getTime", \r
95 function (date) {\r
96 var gd = this.getFixedDate (date);\r
97 var ms = (gd - 719163) * 86400000 + this.getTimeOfDay (date);\r
98 var zoneOffset = 0;\r
99 var zi = date.getZone ();\r
100 if (zi != null) {\r
101 if (date.isNormalized ()) {\r
102 return ms - date.getZoneOffset ();\r
103 }var offsets =  Clazz.newIntArray (2, 0);\r
104 if (date.isStandardTime ()) {\r
105 if (Clazz.instanceOf (zi, jssun.util.calendar.ZoneInfo)) {\r
106 (zi).getOffsetsByStandard (ms, offsets);\r
107 zoneOffset = offsets[0];\r
108 } else {\r
109 zoneOffset = zi.getOffset (ms - zi.getRawOffset ());\r
110 }} else {\r
111 if (Clazz.instanceOf (zi, jssun.util.calendar.ZoneInfo)) {\r
112 zoneOffset = (zi).getOffsetsByWall (ms, offsets);\r
113 } else {\r
114 zoneOffset = zi.getOffset (ms - zi.getRawOffset ());\r
115 }}}ms -= zoneOffset;\r
116 this.getCalendarDate (ms, date);\r
117 return ms;\r
118 }, "jssun.util.calendar.CalendarDate");\r
119 Clazz.defineMethod (c$, "getTimeOfDay", \r
120 function (date) {\r
121 var fraction = date.getTimeOfDay ();\r
122 if (fraction != -9223372036854775808) {\r
123 return fraction;\r
124 }fraction = this.getTimeOfDayValue (date);\r
125 date.setTimeOfDay (fraction);\r
126 return fraction;\r
127 }, "jssun.util.calendar.CalendarDate");\r
128 Clazz.defineMethod (c$, "getTimeOfDayValue", \r
129 function (date) {\r
130 var fraction = date.getHours ();\r
131 fraction *= 60;\r
132 fraction += date.getMinutes ();\r
133 fraction *= 60;\r
134 fraction += date.getSeconds ();\r
135 fraction *= 1000;\r
136 fraction += date.getMillis ();\r
137 return fraction;\r
138 }, "jssun.util.calendar.CalendarDate");\r
139 Clazz.overrideMethod (c$, "setTimeOfDay", \r
140 function (cdate, fraction) {\r
141 if (fraction < 0) {\r
142 throw  new IllegalArgumentException ();\r
143 }var normalizedState = cdate.isNormalized ();\r
144 var time = fraction;\r
145 var hours = Clazz.doubleToInt (time / 3600000);\r
146 time %= 3600000;\r
147 var minutes = Clazz.doubleToInt (time / 60000);\r
148 time %= 60000;\r
149 var seconds = Clazz.doubleToInt (time / 1000);\r
150 time %= 1000;\r
151 cdate.setHours (hours);\r
152 cdate.setMinutes (minutes);\r
153 cdate.setSeconds (seconds);\r
154 cdate.setMillis (time);\r
155 cdate.setTimeOfDay (fraction);\r
156 if (hours < 24 && normalizedState) {\r
157 cdate.setNormalized (normalizedState);\r
158 }return cdate;\r
159 }, "jssun.util.calendar.CalendarDate,~N");\r
160 Clazz.overrideMethod (c$, "getWeekLength", \r
161 function () {\r
162 return 7;\r
163 });\r
164 Clazz.overrideMethod (c$, "getNthDayOfWeek", \r
165 function (nth, dayOfWeek, date) {\r
166 var ndate = date.clone ();\r
167 this.normalize (ndate);\r
168 var fd = this.getFixedDate (ndate);\r
169 var nfd;\r
170 if (nth > 0) {\r
171 nfd = 7 * nth + jssun.util.calendar.AbstractCalendar.getDayOfWeekDateBefore (fd, dayOfWeek);\r
172 } else {\r
173 nfd = 7 * nth + jssun.util.calendar.AbstractCalendar.getDayOfWeekDateAfter (fd, dayOfWeek);\r
174 }this.getCalendarDateFromFixedDate (ndate, nfd);\r
175 return ndate;\r
176 }, "~N,~N,jssun.util.calendar.CalendarDate");\r
177 c$.getDayOfWeekDateBefore = Clazz.defineMethod (c$, "getDayOfWeekDateBefore", \r
178 function (fixedDate, dayOfWeek) {\r
179 return jssun.util.calendar.AbstractCalendar.getDayOfWeekDateOnOrBefore (fixedDate - 1, dayOfWeek);\r
180 }, "~N,~N");\r
181 c$.getDayOfWeekDateAfter = Clazz.defineMethod (c$, "getDayOfWeekDateAfter", \r
182 function (fixedDate, dayOfWeek) {\r
183 return jssun.util.calendar.AbstractCalendar.getDayOfWeekDateOnOrBefore (fixedDate + 7, dayOfWeek);\r
184 }, "~N,~N");\r
185 c$.getDayOfWeekDateOnOrBefore = Clazz.defineMethod (c$, "getDayOfWeekDateOnOrBefore", \r
186 function (fixedDate, dayOfWeek) {\r
187 var fd = fixedDate - (dayOfWeek - 1);\r
188 if (fd >= 0) {\r
189 return fixedDate - (fd % 7);\r
190 }return fixedDate - jssun.util.calendar.CalendarUtils.mod (fd, 7);\r
191 }, "~N,~N");\r
192 Clazz.defineMethod (c$, "validateTime", \r
193 function (date) {\r
194 var t = date.getHours ();\r
195 if (t < 0 || t >= 24) {\r
196 return false;\r
197 }t = date.getMinutes ();\r
198 if (t < 0 || t >= 60) {\r
199 return false;\r
200 }t = date.getSeconds ();\r
201 if (t < 0 || t >= 60) {\r
202 return false;\r
203 }t = date.getMillis ();\r
204 if (t < 0 || t >= 1000) {\r
205 return false;\r
206 }return true;\r
207 }, "jssun.util.calendar.CalendarDate");\r
208 Clazz.defineMethod (c$, "normalizeTime", \r
209 function (date) {\r
210 var fraction = this.getTimeOfDay (date);\r
211 var days = 0;\r
212 if (fraction >= 86400000) {\r
213 days = Clazz.doubleToInt (fraction / 86400000);\r
214 fraction %= 86400000;\r
215 } else if (fraction < 0) {\r
216 days = jssun.util.calendar.CalendarUtils.floorDivide (fraction, 86400000);\r
217 if (days != 0) {\r
218 fraction -= 86400000 * days;\r
219 }}if (days != 0) {\r
220 date.setTimeOfDay (fraction);\r
221 }date.setMillis ((fraction % 1000));\r
222 fraction = Clazz.doubleToInt (fraction / 1000);\r
223 date.setSeconds ((fraction % 60));\r
224 fraction = Clazz.doubleToInt (fraction / 60);\r
225 date.setMinutes ((fraction % 60));\r
226 date.setHours ((Clazz.doubleToInt (fraction / 60)));\r
227 return days;\r
228 }, "jssun.util.calendar.CalendarDate");\r
229 Clazz.defineStatics (c$,\r
230 "SECOND_IN_MILLIS", 1000,\r
231 "MINUTE_IN_MILLIS", 60000,\r
232 "HOUR_IN_MILLIS", 3600000,\r
233 "DAY_IN_MILLIS", 86400000,\r
234 "EPOCH_OFFSET", 719163);\r
235 });\r