1 /*
2 * File: DateIterator.java
3 * Copyright (c) 2004-2007 Peter Kliem (Peter.Kliem@jaret.de)
4 * A commercial license is available, see http://www.jaret.de.
5 *
6 * All rights reserved. This program and the accompanying materials
7 * are made available under the terms of the Common Public License v1.0
8 * which accompanies this distribution, and is available at
9 * http://www.eclipse.org/legal/cpl-v10.html
10 */
11 package de.jaret.util.date.iterator;
12
13
14 import de.jaret.util.date.JaretDate;
15
16 /**
17 * Interface describing an iterator for dates.
18 *
19 * @author kliem
20 * @version $Id: DateIterator.java 883 2009-10-07 21:03:00Z kliem $
21 */
22 public interface DateIterator {
23 /**
24 * Enumeration for the different format types.
25 */
26 enum Format {
27 /**
28 * SHORT, MEDIUM, LONG: denote the format of the label.
29 */
30 SHORT, MEDIUM, LONG
31 };
32
33 /**
34 * (re)initialize the iterator with a start and an end date.
35 *
36 * @param startDate first date that will be returned in subsequent calls
37 * @param endDate last date that will be returned
38 */
39 void reInitialize(JaretDate startDate, JaretDate endDate);
40
41 /**
42 * Retrieve the next date from the iterator.
43 *
44 * @return next date
45 */
46 JaretDate getNextDate();
47
48 /**
49 * Check whether the iterator will supply a next date.
50 *
51 * @return true if the next call to getNextDate() will return a valid date
52 */
53 boolean hasNextDate();
54
55 /**
56 * Retrieve the next date without modifying the iterator.
57 *
58 * @return the next valid date or <code>null</code> if no subsequent date is available
59 */
60 JaretDate previewNextDate();
61
62 /**
63 * Retrieve a label for a given date.
64 *
65 * @param date the date to format
66 * @param format short, medium or long
67 * @return label
68 */
69 String getLabel(JaretDate date, Format format);
70
71 /**
72 * Set a formatter to be used with this iterator overriding the default formatting.
73 *
74 * @param formatter the formatter to use.
75 */
76 void setFormatter(IIteratorFormatter formatter);
77
78 /**
79 * Return the approximate step between dates in milli seconds.
80 *
81 * @return approximate step between iterated dates in milli seconds
82 */
83 long getApproxStepMilliSeconds();
84
85 /**
86 * If the correct DST flag is set to true, the iterator will add/remove an hour if the
87 * DST switch time has been passed. This is false by default and you should only use it if you are knowing
88 * what you are doing. This uses the Default TimeZone for determining DST switches.
89 */
90 void setCorrectDST(boolean correctDST);
91
92 }