1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.joda.time;
17
18
19
20
21
22
23
24 public class IllegalFieldValueException extends IllegalArgumentException {
25
26
27 private static final long serialVersionUID = 6305711765985447737L;
28
29
30
31
32
33
34
35
36
37
38
39 private static String createMessage(String fieldName, Number value,
40 Number lowerBound, Number upperBound, String explain) {
41 StringBuilder buf = new StringBuilder()
42 .append("Value ").append(value).append(" for ").append(fieldName).append(' ');
43
44 if (lowerBound == null) {
45 if (upperBound == null) {
46 buf.append("is not supported");
47 } else {
48 buf.append("must not be larger than ").append(upperBound);
49 }
50 } else if (upperBound == null) {
51 buf.append("must not be smaller than ").append(lowerBound);
52 } else {
53 buf.append("must be in the range [")
54 .append(lowerBound)
55 .append(',')
56 .append(upperBound)
57 .append(']');
58 }
59 if (explain != null) {
60 buf.append(": ").append(explain);
61 }
62
63 return buf.toString();
64 }
65
66
67
68
69
70
71
72
73 private static String createMessage(String fieldName, String value) {
74 StringBuffer buf = new StringBuffer().append("Value ");
75
76 if (value == null) {
77 buf.append("null");
78 } else {
79 buf.append('"');
80 buf.append(value);
81 buf.append('"');
82 }
83
84 buf.append(" for ").append(fieldName).append(' ').append("is not supported");
85
86 return buf.toString();
87 }
88
89 private final DateTimeFieldType iDateTimeFieldType;
90 private final DurationFieldType iDurationFieldType;
91 private final String iFieldName;
92 private final Number iNumberValue;
93 private final String iStringValue;
94 private final Number iLowerBound;
95 private final Number iUpperBound;
96 private String iMessage;
97
98
99
100
101
102
103
104
105
106 public IllegalFieldValueException(DateTimeFieldType fieldType,
107 Number value, Number lowerBound, Number upperBound) {
108 super(createMessage(fieldType.getName(), value, lowerBound, upperBound, null));
109 iDateTimeFieldType = fieldType;
110 iDurationFieldType = null;
111 iFieldName = fieldType.getName();
112 iNumberValue = value;
113 iStringValue = null;
114 iLowerBound = lowerBound;
115 iUpperBound = upperBound;
116 iMessage = super.getMessage();
117 }
118
119
120
121
122
123
124
125
126
127 public IllegalFieldValueException(DateTimeFieldType fieldType,
128 Number value, String explain) {
129 super(createMessage(fieldType.getName(), value, null, null, explain));
130 iDateTimeFieldType = fieldType;
131 iDurationFieldType = null;
132 iFieldName = fieldType.getName();
133 iNumberValue = value;
134 iStringValue = null;
135 iLowerBound = null;
136 iUpperBound = null;
137 iMessage = super.getMessage();
138 }
139
140
141
142
143
144
145
146
147
148 public IllegalFieldValueException(DurationFieldType fieldType,
149 Number value, Number lowerBound, Number upperBound) {
150 super(createMessage(fieldType.getName(), value, lowerBound, upperBound, null));
151 iDateTimeFieldType = null;
152 iDurationFieldType = fieldType;
153 iFieldName = fieldType.getName();
154 iNumberValue = value;
155 iStringValue = null;
156 iLowerBound = lowerBound;
157 iUpperBound = upperBound;
158 iMessage = super.getMessage();
159 }
160
161
162
163
164
165
166
167
168
169 public IllegalFieldValueException(String fieldName,
170 Number value, Number lowerBound, Number upperBound) {
171 super(createMessage(fieldName, value, lowerBound, upperBound, null));
172 iDateTimeFieldType = null;
173 iDurationFieldType = null;
174 iFieldName = fieldName;
175 iNumberValue = value;
176 iStringValue = null;
177 iLowerBound = lowerBound;
178 iUpperBound = upperBound;
179 iMessage = super.getMessage();
180 }
181
182
183
184
185
186
187
188 public IllegalFieldValueException(DateTimeFieldType fieldType, String value) {
189 super(createMessage(fieldType.getName(), value));
190 iDateTimeFieldType = fieldType;
191 iDurationFieldType = null;
192 iFieldName = fieldType.getName();
193 iStringValue = value;
194 iNumberValue = null;
195 iLowerBound = null;
196 iUpperBound = null;
197 iMessage = super.getMessage();
198 }
199
200
201
202
203
204
205
206 public IllegalFieldValueException(DurationFieldType fieldType, String value) {
207 super(createMessage(fieldType.getName(), value));
208 iDateTimeFieldType = null;
209 iDurationFieldType = fieldType;
210 iFieldName = fieldType.getName();
211 iStringValue = value;
212 iNumberValue = null;
213 iLowerBound = null;
214 iUpperBound = null;
215 iMessage = super.getMessage();
216 }
217
218
219
220
221
222
223
224 public IllegalFieldValueException(String fieldName, String value) {
225 super(createMessage(fieldName, value));
226 iDateTimeFieldType = null;
227 iDurationFieldType = null;
228 iFieldName = fieldName;
229 iStringValue = value;
230 iNumberValue = null;
231 iLowerBound = null;
232 iUpperBound = null;
233 iMessage = super.getMessage();
234 }
235
236
237
238
239
240
241
242 public DateTimeFieldType getDateTimeFieldType() {
243 return iDateTimeFieldType;
244 }
245
246
247
248
249
250
251 public DurationFieldType getDurationFieldType() {
252 return iDurationFieldType;
253 }
254
255
256
257
258
259
260 public String getFieldName() {
261 return iFieldName;
262 }
263
264
265
266
267
268
269 public Number getIllegalNumberValue() {
270 return iNumberValue;
271 }
272
273
274
275
276
277
278 public String getIllegalStringValue() {
279 return iStringValue;
280 }
281
282
283
284
285
286
287 public String getIllegalValueAsString() {
288 String value = iStringValue;
289 if (value == null) {
290 value = String.valueOf(iNumberValue);
291 }
292 return value;
293 }
294
295
296
297
298
299
300 public Number getLowerBound() {
301 return iLowerBound;
302 }
303
304
305
306
307
308
309 public Number getUpperBound() {
310 return iUpperBound;
311 }
312
313 public String getMessage() {
314 return iMessage;
315 }
316
317
318
319
320
321
322 public void prependMessage(String message) {
323 if (iMessage == null) {
324 iMessage = message;
325 } else if (message != null) {
326 iMessage = message + ": " + iMessage;
327 }
328 }
329 }