Subversion Repository Public Repository

litesoft

Diff Revisions 862 vs 864 for /trunk/Java/core/Anywhere/src/org/litesoft/core/simpletypes/temporal/AbstractTimestampHM.java

Diff revisions: vs.
  @@ -2,15 +2,16 @@
2 2
3 3 import org.litesoft.core.typeutils.*;
4 4
5 - public abstract class AbstractTimestampHM<T extends AbstractTimestampHM> extends AbstractTimestampH<T> implements TimestampAccessorHM
5 + public abstract class AbstractTimestampHM<T extends AbstractTimestampHM, M extends AbstractTimestampHM.Mutable> extends AbstractTimestampH<T, M>
6 + implements TimestampAccessorHM
6 7 {
7 8 private static final long serialVersionUID = 1L;
8 9
9 10 private final int mMin;
10 11
11 - protected AbstractTimestampHM( int pYear, int pMonth, int pDay, int pHour, int pMin )
12 + protected AbstractTimestampHM( int pYear, int pMonth, int pDay, int pZuluOffsetMins, int pHour, int pMin )
12 13 {
13 - super( pYear, pMonth, pDay, pHour );
14 + super( pYear, pMonth, pDay, pZuluOffsetMins, pHour );
14 15 mMin = validateMin( pMin );
15 16 }
16 17
  @@ -20,8 +21,57 @@
20 21 return mMin;
21 22 }
22 23
24 + /**
25 + * Return a T with the Min set to the parameter.
26 + */
27 + public final T min( int pMin )
28 + {
29 + validateMin( pMin );
30 + return (mMin == pMin) ? us() : LLsetMin( pMin );
31 + }
32 +
33 + /**
34 + * Return T with the parameter pMin added.
35 + */
36 + public final T addMins( int pMins )
37 + {
38 + return (pMins == 0) ? us() : LLsetMin( mMin + pMins );
39 + }
40 +
41 + /**
42 + * Return T with the parameter pMin subtracted.
43 + */
44 + public final T minusMins( int pMins )
45 + {
46 + return (pMins == 0) ? us() : LLsetMin( mMin - pMins );
47 + }
48 +
23 49 // vvvvvvvvvvvvvvvvvv Support methods vvvvvvvvvvvvvvvvv
24 50
51 + protected static final int parseMin( String pStringForm, String... pParts )
52 + {
53 + return parseInt( pParts[4], "Min", pStringForm );
54 + }
55 +
56 + protected static final StringBuilder formatSQLvalueYMDHM( TimestampAccessorHM pAccessor, boolean pAddTail, StringBuilder pSB )
57 + {
58 + formatSQLvalueYMDH( pAccessor, false, pSB ).append( ':' );
59 + formatMin( pAccessor, pSB );
60 + return tailSQLvalue( pAccessor, pAddTail, pSB );
61 + }
62 +
63 + protected static final StringBuilder formatSortableDisplayFormYMDHM( TimestampAccessorHM pAccessor, StringBuilder pSB )
64 + {
65 + formatSortableDisplayFormYMDH( pAccessor, pSB ).append( ':' );
66 + return formatMin( pAccessor, pSB );
67 + }
68 +
69 + protected static final StringBuilder formatMin( TimestampAccessorHM pAccessor, StringBuilder pSB )
70 + {
71 + pSB.append( Integers.zeroPadIt( 2, pAccessor.getMin() ) );
72 + return pSB;
73 + }
74 +
25 75 protected static final int validateMin( int pMin )
26 76 throws IllegalArgumentException
27 77 {
  @@ -58,15 +108,22 @@
58 108 /**
59 109 * @param pNewMonth != current
60 110 */
61 - abstract protected T LLsetMonth( int pNewMonth, boolean pAdjustForward );
111 + protected final T LLsetMin( int pNewMin )
112 + {
113 + M zMutable = createMutable( getYear(), getMonth(), getDay(), getHour(), pNewMin );
114 + zMutable.normalize();
115 + return createTypeFrom( zMutable );
116 + }
62 117
63 - protected static class Mutable extends AbstractTimestampH.Mutable
118 + protected abstract M createMutable( int pYear, int pMonth, int pDay, int pHour, int pNewMin );
119 +
120 + protected static class Mutable extends AbstractTimestampH.Mutable implements TimestampAccessorHM
64 121 {
65 122 protected int mMin;
66 123
67 - public Mutable( int pYear, int pMonth, int pDay, boolean pDayConstrained, int pHour, int pMin )
124 + public Mutable( int pYear, int pMonth, int pDay, boolean pDayConstrained, int pZuluOffsetMins, int pHour, int pMin )
68 125 {
69 - super( pYear, pMonth, pDay, pDayConstrained, pHour );
126 + super( pYear, pMonth, pDay, pDayConstrained, pZuluOffsetMins, pHour );
70 127 mMin = pMin;
71 128 }
72 129
  @@ -115,5 +172,15 @@
115 172 mMin -= 60;
116 173 incrementHour();
117 174 }
175 +
176 + @Override
177 + protected final void adjustMinutesTo( int pOffsetMinsAdjustment )
178 + {
179 + if ( pOffsetMinsAdjustment != 0 )
180 + {
181 + mMin += pOffsetMinsAdjustment;
182 + normalize();
183 + }
184 + }
118 185 }
119 186 }