|
@@ -2,25 +2,72 @@ |
2 |
2 |
|
|
3 |
3 |
|
import org.litesoft.core.typeutils.*; |
4 |
4 |
|
|
5 |
|
- |
public abstract class AbstractTimestampH<T extends AbstractTimestampH, M extends AbstractTimestampH.Mutable> extends AbstractCalendarYMD<T, M> |
|
5 |
+ |
public abstract class AbstractTimestampH<T extends AbstractTimestampH, M extends AbstractTimestampH.Mutable> |
|
6 |
+ |
extends AbstractCalendarYMD<T, M> |
6 |
7 |
|
implements TimestampAccessorH |
7 |
8 |
|
{ |
8 |
9 |
|
private static final long serialVersionUID = 1L; |
9 |
10 |
|
|
10 |
|
- |
private /* final */ int mHour; |
11 |
|
- |
private /* final */ int mZuluOffsetMins; |
|
11 |
+ |
private long mUTC; |
|
12 |
+ |
private int mOriginalZuluOffsetMins; |
|
13 |
+ |
private transient UtilDateAdaptor mWall; |
12 |
14 |
|
|
13 |
|
- |
protected AbstractTimestampH( int pYear, int pMonth, int pDay, int pZuluOffsetMins, int pHour ) |
|
15 |
+ |
protected AbstractTimestampH( int pOriginalZuluOffsetMins, long pUTC ) |
14 |
16 |
|
{ |
15 |
|
- |
super( pYear, pMonth, pDay ); |
16 |
|
- |
mHour = validateHour( pHour ); |
17 |
|
- |
mZuluOffsetMins = pZuluOffsetMins; |
|
17 |
+ |
mOriginalZuluOffsetMins = pOriginalZuluOffsetMins; |
|
18 |
+ |
mUTC = pUTC; |
|
19 |
+ |
} |
|
20 |
+ |
|
|
21 |
+ |
protected AbstractTimestampH( int pOriginalZuluOffsetMins, UtilDateAdaptor pDateAdaptor ) |
|
22 |
+ |
{ |
|
23 |
+ |
this( pOriginalZuluOffsetMins, pDateAdaptor.getUTClong() ); |
|
24 |
+ |
mWall = Cast.it( pDateAdaptor ); |
|
25 |
+ |
} |
|
26 |
+ |
|
|
27 |
+ |
protected AbstractTimestampH( UtilDateAdaptor pDateAdaptor ) |
|
28 |
+ |
{ |
|
29 |
+ |
this( pDateAdaptor.getZuluOffsetMins(), pDateAdaptor ); |
|
30 |
+ |
} |
|
31 |
+ |
|
|
32 |
+ |
public long getUTClong() |
|
33 |
+ |
{ |
|
34 |
+ |
return mUTC; |
|
35 |
+ |
} |
|
36 |
+ |
|
|
37 |
+ |
public int getOriginalZuluOffsetMins() |
|
38 |
+ |
{ |
|
39 |
+ |
return mOriginalZuluOffsetMins; |
|
40 |
+ |
} |
|
41 |
+ |
|
|
42 |
+ |
protected final synchronized UtilDateAdaptor getWall() |
|
43 |
+ |
{ |
|
44 |
+ |
return (mWall != null) ? mWall : (mWall = createWall()); |
|
45 |
+ |
} |
|
46 |
+ |
|
|
47 |
+ |
protected abstract UtilDateAdaptor createWall(); |
|
48 |
+ |
|
|
49 |
+ |
@Override |
|
50 |
+ |
public final int getYear() |
|
51 |
+ |
{ |
|
52 |
+ |
return getWall().getYear(); |
|
53 |
+ |
} |
|
54 |
+ |
|
|
55 |
+ |
@Override |
|
56 |
+ |
public final int getMonth() |
|
57 |
+ |
{ |
|
58 |
+ |
return getWall().getMonth(); |
|
59 |
+ |
} |
|
60 |
+ |
|
|
61 |
+ |
@Override |
|
62 |
+ |
public final int getDay() |
|
63 |
+ |
{ |
|
64 |
+ |
return getWall().getDay(); |
18 |
65 |
|
} |
19 |
66 |
|
|
20 |
67 |
|
@Override |
21 |
68 |
|
public final int getHour() |
22 |
69 |
|
{ |
23 |
|
- |
return mHour; |
|
70 |
+ |
return getWall().getHour(); |
24 |
71 |
|
} |
25 |
72 |
|
|
26 |
73 |
|
/** |
|
@@ -29,7 +76,7 @@ |
29 |
76 |
|
public final T hour( int pHour ) |
30 |
77 |
|
{ |
31 |
78 |
|
validateHour( pHour ); |
32 |
|
- |
return (mHour == pHour) ? us() : LLsetHour( pHour ); |
|
79 |
+ |
return (getHour() == pHour) ? us() : LLsetHour( pHour ); |
33 |
80 |
|
} |
34 |
81 |
|
|
35 |
82 |
|
/** |
|
@@ -37,7 +84,7 @@ |
37 |
84 |
|
*/ |
38 |
85 |
|
public final T addHours( int pHours ) |
39 |
86 |
|
{ |
40 |
|
- |
return (pHours == 0) ? us() : LLsetHour( mHour + pHours ); |
|
87 |
+ |
return (pHours == 0) ? us() : LLsetHour( getHour() + pHours ); |
41 |
88 |
|
} |
42 |
89 |
|
|
43 |
90 |
|
/** |
|
@@ -45,12 +92,12 @@ |
45 |
92 |
|
*/ |
46 |
93 |
|
public final T minusHours( int pHours ) |
47 |
94 |
|
{ |
48 |
|
- |
return (pHours == 0) ? us() : LLsetHour( mHour - pHours ); |
|
95 |
+ |
return (pHours == 0) ? us() : LLsetHour( getHour() - pHours ); |
49 |
96 |
|
} |
50 |
97 |
|
|
51 |
98 |
|
public int getZuluOffsetMins() |
52 |
99 |
|
{ |
53 |
|
- |
return mZuluOffsetMins; |
|
100 |
+ |
return getWall().getZuluOffsetMins(); |
54 |
101 |
|
} |
55 |
102 |
|
|
56 |
103 |
|
// vvvvvvvvvvvvvvvvvv Support methods vvvvvvvvvvvvvvvvv |
|
@@ -184,7 +231,7 @@ |
184 |
231 |
|
|
185 |
232 |
|
protected int LL_hashCode() |
186 |
233 |
|
{ |
187 |
|
- |
return hashCodeEm( super.hashCode(), mHour ); |
|
234 |
+ |
return hashCodeEm( super.hashCode(), getHour() ); |
188 |
235 |
|
} |
189 |
236 |
|
|
190 |
237 |
|
/** |
|
@@ -217,39 +264,16 @@ |
217 |
264 |
|
|
218 |
265 |
|
protected abstract M createMutable( int pYear, int pMonth, int pDay, int pNewHour ); |
219 |
266 |
|
|
220 |
|
- |
protected static class Mutable extends AbstractCalendarYMD.Mutable implements TimestampAccessorH |
|
267 |
+ |
protected static class Mutable extends AbstractCalendarYMD.Mutable |
221 |
268 |
|
{ |
222 |
|
- |
private final int mZuluOffsetMins; |
223 |
269 |
|
protected int mHour; |
224 |
270 |
|
|
225 |
|
- |
public Mutable( int pYear, int pMonth, int pDay, boolean pDayConstrained, int pZuluOffsetMins, int pHour ) |
|
271 |
+ |
public Mutable( int pYear, int pMonth, int pDay, boolean pDayConstrained, int pHour ) |
226 |
272 |
|
{ |
227 |
273 |
|
super( pYear, pMonth, pDay, pDayConstrained ); |
228 |
|
- |
mZuluOffsetMins = pZuluOffsetMins; |
229 |
274 |
|
mHour = pHour; |
230 |
275 |
|
} |
231 |
276 |
|
|
232 |
|
- |
@Override |
233 |
|
- |
public int getZuluOffsetMins() |
234 |
|
- |
{ |
235 |
|
- |
return mZuluOffsetMins; |
236 |
|
- |
} |
237 |
|
- |
|
238 |
|
- |
public void fromWallToZulu() |
239 |
|
- |
{ |
240 |
|
- |
// todo: adjustMinutesTo( -UtilDateAdaptor.calculateCurrentUTCtoWallOffsetMinutes() ); |
241 |
|
- |
} |
242 |
|
- |
|
243 |
|
- |
public void fromZuluToWall() |
244 |
|
- |
{ |
245 |
|
- |
// todo: adjustMinutesTo( UtilDateAdaptor.calculateCurrentUTCtoWallOffsetMinutes() ); |
246 |
|
- |
} |
247 |
|
- |
|
248 |
|
- |
public void fromOriginalWallToWall() |
249 |
|
- |
{ |
250 |
|
- |
// todo: adjustMinutesTo( UtilDateAdaptor.calculateCurrentUTCtoWallOffsetMinutes() - getZuluOffsetMins() ); |
251 |
|
- |
} |
252 |
|
- |
|
253 |
277 |
|
public final int getHour() |
254 |
278 |
|
{ |
255 |
279 |
|
return mHour; |
|
@@ -296,11 +320,11 @@ |
296 |
320 |
|
incrementDay(); |
297 |
321 |
|
} |
298 |
322 |
|
|
299 |
|
- |
protected void adjustMinutesTo( int pOffsetMinsAdjustment ) |
|
323 |
+ |
public void adjustOrigWallToZulu( int pOffsetMinsAdjustment ) |
300 |
324 |
|
{ |
301 |
325 |
|
if ( pOffsetMinsAdjustment != 0 ) |
302 |
326 |
|
{ |
303 |
|
- |
mHour += pOffsetMinsAdjustment / 60; // Hours Offset |
|
327 |
+ |
mHour -= pOffsetMinsAdjustment / 60; // Hours Offset |
304 |
328 |
|
normalize(); |
305 |
329 |
|
} |
306 |
330 |
|
} |