1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package net.fortuna.ical4j.model.property;
35
36 import java.text.ParseException;
37 import java.util.Date;
38
39 import net.fortuna.ical4j.model.Parameter;
40 import net.fortuna.ical4j.model.ParameterList;
41 import net.fortuna.ical4j.model.Property;
42 import net.fortuna.ical4j.model.ValidationException;
43 import net.fortuna.ical4j.model.parameter.Value;
44 import net.fortuna.ical4j.util.DateFormat;
45 import net.fortuna.ical4j.util.DateTimeFormat;
46 import net.fortuna.ical4j.util.ParameterValidator;
47
48 /***
49 * Defines a DUE iCalendar component property.
50 *
51 * @author benf
52 */
53 public class Due extends Property {
54
55 private Date time;
56
57
58
59 private boolean utc = true;
60
61 /***
62 * @param aList
63 * a list of parameters for this component
64 * @param aValue
65 * a value string for this component
66 * @throws ParseException
67 * when the specified string is not a valid date/date-time
68 * representation
69 */
70 public Due(final ParameterList aList, final String aValue)
71 throws ParseException {
72 super(DUE, aList);
73
74
75 if (aList.getParameter(Parameter.VALUE) != null
76 && Value.DATE.equals(aList.getParameter(Parameter.VALUE).getValue())) {
77
78 time = DateFormat.getInstance().parse(aValue);
79 }
80 else {
81 time = DateTimeFormat.getInstance().parse(aValue);
82 }
83 }
84
85 /***
86 * Constructor. Date or Date-Time format is determined based
87 * on the presence of a VALUE parameter.
88 * @param aList
89 * a list of parameters for this component
90 * @param aDate
91 * a date
92 */
93 public Due(final ParameterList aList, final Date aDate) {
94 super(DUE, aList);
95
96 time = aDate;
97 }
98
99 /***
100 * @see net.fortuna.ical4j.model.Property#validate()
101 */
102 public final void validate() throws ValidationException {
103
104
105
106
107
108
109 ParameterValidator.getInstance().validateOneOrLess(Parameter.VALUE,
110 getParameters());
111
112 Parameter valueParam = getParameters().getParameter(Parameter.VALUE);
113
114 if (valueParam != null
115 && !Value.DATE_TIME.equals(valueParam.getValue())
116 && !Value.DATE.equals(valueParam.getValue())) {
117 throw new ValidationException(
118 "Parameter [" + Parameter.VALUE + "] is invalid");
119 }
120
121 ParameterValidator.getInstance().validateOneOrLess(Parameter.TZID,
122 getParameters());
123
124
125
126
127
128
129 }
130
131 /***
132 * @return Returns the time.
133 */
134 public final Date getTime() {
135 return time;
136 }
137
138
139
140
141 public String getValue() {
142 if (getParameters().getParameter(Parameter.VALUE) != null
143 && Value.DATE.equals(getParameters().getParameter(Parameter.VALUE).getValue())) {
144 return DateFormat.getInstance().format(getTime());
145 }
146
147 return DateTimeFormat.getInstance().format(getTime(), isUtc());
148 }
149
150 /***
151 * @return Returns the utc.
152 */
153 public boolean isUtc() {
154 return utc;
155 }
156
157 /***
158 * @param utc The utc to set.
159 */
160 public void setUtc(boolean utc) {
161 this.utc = utc;
162 }
163 }