Subversion Repository Public Repository

litesoft

Diff Revisions 897 vs 898 for /trunk/Java/core/Anywhere/src/org/litesoft/core/simpletypes/temporal/AbstractTimestampH.java

Diff revisions: vs.
  @@ -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 }