1 16 package org.joda.time; 17 18 24 public class IllegalFieldValueException extends IllegalArgumentException { 25 26 27 private static final long serialVersionUID = 6305711765985447737L; 28 29 38 private static String createMessage(String fieldName, Number value, 39 Number lowerBound, Number upperBound) { 40 StringBuffer buf = new StringBuffer () 41 .append("Value ").append(value).append(" for ").append(fieldName).append(' '); 42 43 if (lowerBound == null) { 44 if (upperBound == null) { 45 buf.append("is not supported"); 46 } else { 47 buf.append("must not be larger than ").append(upperBound); 48 } 49 } else if (upperBound == null) { 50 buf.append("must not be smaller than ").append(lowerBound); 51 } else { 52 buf.append("must be in the range [") 53 .append(lowerBound) 54 .append(',') 55 .append(upperBound) 56 .append(']'); 57 } 58 59 return buf.toString(); 60 } 61 62 69 private static String createMessage(String fieldName, String value) { 70 StringBuffer buf = new StringBuffer ().append("Value "); 71 72 if (value == null) { 73 buf.append("null"); 74 } else { 75 buf.append('"'); 76 buf.append(value); 77 buf.append('"'); 78 } 79 80 buf.append(" for ").append(fieldName).append(' ').append("is not supported"); 81 82 return buf.toString(); 83 } 84 85 private final DateTimeFieldType iDateTimeFieldType; 86 private final DurationFieldType iDurationFieldType; 87 private final String iFieldName; 88 private final Number iNumberValue; 89 private final String iStringValue; 90 private final Number iLowerBound; 91 private final Number iUpperBound; 92 private String iMessage; 93 94 102 public IllegalFieldValueException(DateTimeFieldType fieldType, 103 Number value, Number lowerBound, Number upperBound) { 104 super(createMessage(fieldType.getName(), value, lowerBound, upperBound)); 105 iDateTimeFieldType = fieldType; 106 iDurationFieldType = null; 107 iFieldName = fieldType.getName(); 108 iNumberValue = value; 109 iStringValue = null; 110 iLowerBound = lowerBound; 111 iUpperBound = upperBound; 112 iMessage = super.getMessage(); 113 } 114 115 123 public IllegalFieldValueException(DurationFieldType fieldType, 124 Number value, Number lowerBound, Number upperBound) { 125 super(createMessage(fieldType.getName(), value, lowerBound, upperBound)); 126 iDateTimeFieldType = null; 127 iDurationFieldType = fieldType; 128 iFieldName = fieldType.getName(); 129 iNumberValue = value; 130 iStringValue = null; 131 iLowerBound = lowerBound; 132 iUpperBound = upperBound; 133 iMessage = super.getMessage(); 134 } 135 136 144 public IllegalFieldValueException(String fieldName, 145 Number value, Number lowerBound, Number upperBound) { 146 super(createMessage(fieldName, value, lowerBound, upperBound)); 147 iDateTimeFieldType = null; 148 iDurationFieldType = null; 149 iFieldName = fieldName; 150 iNumberValue = value; 151 iStringValue = null; 152 iLowerBound = lowerBound; 153 iUpperBound = upperBound; 154 iMessage = super.getMessage(); 155 } 156 157 163 public IllegalFieldValueException(DateTimeFieldType fieldType, String value) { 164 super(createMessage(fieldType.getName(), value)); 165 iDateTimeFieldType = fieldType; 166 iDurationFieldType = null; 167 iFieldName = fieldType.getName(); 168 iStringValue = value; 169 iNumberValue = null; 170 iLowerBound = null; 171 iUpperBound = null; 172 iMessage = super.getMessage(); 173 } 174 175 181 public IllegalFieldValueException(DurationFieldType fieldType, String value) { 182 super(createMessage(fieldType.getName(), value)); 183 iDateTimeFieldType = null; 184 iDurationFieldType = fieldType; 185 iFieldName = fieldType.getName(); 186 iStringValue = value; 187 iNumberValue = null; 188 iLowerBound = null; 189 iUpperBound = null; 190 iMessage = super.getMessage(); 191 } 192 193 199 public IllegalFieldValueException(String fieldName, String value) { 200 super(createMessage(fieldName, value)); 201 iDateTimeFieldType = null; 202 iDurationFieldType = null; 203 iFieldName = fieldName; 204 iStringValue = value; 205 iNumberValue = null; 206 iLowerBound = null; 207 iUpperBound = null; 208 iMessage = super.getMessage(); 209 } 210 211 217 public DateTimeFieldType getDateTimeFieldType() { 218 return iDateTimeFieldType; 219 } 220 221 226 public DurationFieldType getDurationFieldType() { 227 return iDurationFieldType; 228 } 229 230 235 public String getFieldName() { 236 return iFieldName; 237 } 238 239 244 public Number getIllegalNumberValue() { 245 return iNumberValue; 246 } 247 248 253 public String getIllegalStringValue() { 254 return iStringValue; 255 } 256 257 262 public String getIllegalValueAsString() { 263 String value = iStringValue; 264 if (value == null) { 265 value = String.valueOf(iNumberValue); 266 } 267 return value; 268 } 269 270 275 public Number getLowerBound() { 276 return iLowerBound; 277 } 278 279 284 public Number getUpperBound() { 285 return iUpperBound; 286 } 287 288 public String getMessage() { 289 return iMessage; 290 } 291 292 297 public void prependMessage(String message) { 298 if (iMessage == null) { 299 iMessage = message; 300 } else if (message != null) { 301 iMessage = message + ": " + iMessage; 302 } 303 } 304 } 305 | Popular Tags |