/** * Validates whether the fields stored in a partial instant are valid. * * <p>This implementation uses {@link DateTimeField#getMinimumValue(ReadablePartial, int[])} and * {@link DateTimeField#getMaximumValue(ReadablePartial, int[])}. * * @param partial the partial instant to validate * @param values the values to validate, not null * @throws IllegalArgumentException if the instant is invalid */ public void validate(ReadablePartial partial, int[] values) { // check values in standard range, catching really stupid cases like -1 // this means that the second check will not hit trouble int size = partial.size(); for (int i = 0; i < size; i++) { int value = values[i]; DateTimeField field = partial.getField(i); if (value < field.getMinimumValue()) { throw new IllegalFieldValueException( field.getType(), new Integer(value), new Integer(field.getMinimumValue()), null); } if (value > field.getMaximumValue()) { throw new IllegalFieldValueException( field.getType(), new Integer(value), null, new Integer(field.getMaximumValue())); } } // check values in specific range, catching really odd cases like 30th Feb for (int i = 0; i < size; i++) { int value = values[i]; DateTimeField field = partial.getField(i); if (value < field.getMinimumValue(partial, values)) { throw new IllegalFieldValueException( field.getType(), new Integer(value), new Integer(field.getMinimumValue(partial, values)), null); } if (value > field.getMaximumValue(partial, values)) { throw new IllegalFieldValueException( field.getType(), new Integer(value), null, new Integer(field.getMaximumValue(partial, values))); } } }
public int getMinimumValue(ReadablePartial instant, int[] values) { return iField.getMinimumValue(instant, values); }
public int getMinimumValue(ReadablePartial instant) { return iField.getMinimumValue(instant); }
public int getMinimumValue(long instant) { long localInstant = iZone.convertUTCToLocal(instant); return iField.getMinimumValue(localInstant); }
public int getMinimumValue() { return iField.getMinimumValue(); }
/** * Constructor. * * @param field the base field * @param type the field type this field will actually use * @throws IllegalArgumentException if wrapped field's minimum value is not zero */ public ZeroIsMaxDateTimeField(DateTimeField field, DateTimeFieldType type) { super(field, type); if (field.getMinimumValue() != 0) { throw new IllegalArgumentException("Wrapped field's minumum value must be zero"); } }
/** Tests the dayOfMonth DateTimeField */ @Test public void testDayOfMonthField() { DateTimeField dayOfMonthField = CHRON_NOLEAP.dayOfMonth(); assertEquals(1, dayOfMonthField.getMinimumValue()); assertEquals(31, dayOfMonthField.getMaximumValue()); }