1
2
3
4
5
6
7
8
9
10
11 package de.jaret.util.date.iterator;
12
13 import java.text.DecimalFormat;
14 import java.text.NumberFormat;
15
16 import de.jaret.util.date.JaretDate;
17
18
19
20
21
22
23
24 public class MillisecondIterator extends AbstractDateIterator implements DateIterator {
25
26 protected IIteratorFormatter _defaultFormatter = new IIteratorFormatter() {
27
28
29
30
31 public String getLabel(JaretDate date, Format format) {
32 if (format.equals(Format.SHORT)) {
33 return date.getMillis() + "ms";
34 } else if (format.equals(Format.MEDIUM)) {
35 return NF.format(date.getSeconds()) + "'' " + NF.format(date.getMillis());
36 } else {
37 String str = NF.format(date.getHours()) + ":" + NF.format(date.getMinutes()) + ":"
38 + NF.format(date.getSeconds());
39 int millis = date.getMillis();
40 String str2 = NF2.format(millis);
41 return str + ":" + str2;
42 }
43 }
44 };
45
46 private static final int DEFAULT_STEP = 100;
47
48
49 protected long _millisecondStep = DEFAULT_STEP;
50
51
52 protected static final NumberFormat NF = new DecimalFormat();
53
54 protected static final NumberFormat NF2 = new DecimalFormat();
55 static {
56 NF.setMaximumFractionDigits(0);
57 NF.setMinimumIntegerDigits(2);
58 NF2.setMaximumFractionDigits(0);
59 NF2.setMinimumIntegerDigits(3);
60 }
61
62
63
64
65
66
67 public MillisecondIterator(long millisecondStep) {
68 _millisecondStep = millisecondStep;
69 }
70
71
72
73
74 protected void advanceDate(JaretDate date) {
75 date.advanceMillis(_millisecondStep);
76 }
77
78
79
80
81 public long getApproxStepMilliSeconds() {
82 return _millisecondStep;
83 }
84
85
86
87
88 protected JaretDate correctStartDate(JaretDate date) {
89 long diff = date.getMillis() % _millisecondStep;
90 date.advanceMillis(-diff);
91
92 return date;
93 }
94
95
96
97
98 protected IIteratorFormatter getDefaultFormatter() {
99 return _defaultFormatter;
100 }
101
102 }