org.joda.time.field

Class DecoratedDateTimeField

Known Direct Subclasses:
DividedDateTimeField, OffsetDateTimeField, RemainderDateTimeField, ZeroIsMaxDateTimeField

public abstract class DecoratedDateTimeField
extends BaseDateTimeField

DecoratedDateTimeField extends BaseDateTimeField, implementing only the minimum required set of methods. These implemented methods delegate to a wrapped field.

This design allows new DateTimeField types to be defined that piggyback on top of another, inheriting all the safe method implementations from BaseDateTimeField. Should any method require pure delegation to the wrapped field, simply override and use the provided getWrappedField method.

DecoratedDateTimeField is thread-safe and immutable, and its subclasses must be as well.

Author:
Brian S O'Neill
Since:
1.0
See Also:
DelegatedDateTimeField

Constructor Summary

DecoratedDateTimeField(DateTimeField field, DateTimeFieldType type)
Constructor.

Method Summary

int
get(long instant)
Get the value of this field from the milliseconds.
DurationField
getDurationField()
Returns the duration per unit value of this field.
int
getMaximumValue()
Get the maximum allowable value for this field.
int
getMinimumValue()
Get the minimum allowable value for this field.
DurationField
getRangeDurationField()
Returns the range duration of this field.
DateTimeField
getWrappedField()
Gets the wrapped date time field.
boolean
isLenient()
long
roundFloor(long instant)
Round to the lowest whole unit of this field.
long
set(long instant, int value)
Sets a value in the milliseconds supplied.

Methods inherited from class org.joda.time.field.BaseDateTimeField

add, add, add, addWrapField, addWrapField, addWrapPartial, convertText, get, getAsShortText, getAsShortText, getAsShortText, getAsShortText, getAsShortText, getAsText, getAsText, getAsText, getAsText, getAsText, getDifference, getDifferenceAsLong, getDurationField, getLeapAmount, getLeapDurationField, getMaximumShortTextLength, getMaximumTextLength, getMaximumValue, getMaximumValue, getMaximumValue, getMaximumValue, getMinimumValue, getMinimumValue, getMinimumValue, getMinimumValue, getName, getRangeDurationField, getType, isLeap, isSupported, remainder, roundCeiling, roundFloor, roundHalfCeiling, roundHalfEven, roundHalfFloor, set, set, set, set, set, toString

Methods inherited from class org.joda.time.DateTimeField

add, add, add, addWrapField, addWrapField, addWrapPartial, get, getAsShortText, getAsShortText, getAsShortText, getAsShortText, getAsShortText, getAsText, getAsText, getAsText, getAsText, getAsText, getDifference, getDifferenceAsLong, getDurationField, getLeapAmount, getLeapDurationField, getMaximumShortTextLength, getMaximumTextLength, getMaximumValue, getMaximumValue, getMaximumValue, getMaximumValue, getMinimumValue, getMinimumValue, getMinimumValue, getMinimumValue, getName, getRangeDurationField, getType, isLeap, isLenient, isSupported, remainder, roundCeiling, roundFloor, roundHalfCeiling, roundHalfEven, roundHalfFloor, set, set, set, set, set, toString

Constructor Details

DecoratedDateTimeField

protected DecoratedDateTimeField(DateTimeField field,
                                 DateTimeFieldType type)
Constructor.
Parameters:
field - the field being decorated
type - allow type to be overridden

Method Details

get

public int get(long instant)
Get the value of this field from the milliseconds.
Overrides:
get in interface BaseDateTimeField
Parameters:
instant - the milliseconds from 1970-01-01T00:00:00Z to query
Returns:
the value of the field, in the units of the field

getDurationField

public DurationField getDurationField()
Returns the duration per unit value of this field. For example, if this field represents "hour of day", then the unit duration is an hour.
Overrides:
getDurationField in interface BaseDateTimeField
Returns:
the duration of this field, or UnsupportedDurationField if field has no duration

getMaximumValue

public int getMaximumValue()
Get the maximum allowable value for this field.
Overrides:
getMaximumValue in interface BaseDateTimeField
Returns:
the maximum valid value for this field, in the units of the field

getMinimumValue

public int getMinimumValue()
Get the minimum allowable value for this field.
Overrides:
getMinimumValue in interface BaseDateTimeField
Returns:
the minimum valid value for this field, in the units of the field

getRangeDurationField

public DurationField getRangeDurationField()
Returns the range duration of this field. For example, if this field represents "hour of day", then the range duration is a day.
Overrides:
getRangeDurationField in interface BaseDateTimeField
Returns:
the range duration of this field, or null if field has no range

getWrappedField

public final DateTimeField getWrappedField()
Gets the wrapped date time field.
Returns:
the wrapped DateTimeField

isLenient

public boolean isLenient()
Overrides:
isLenient in interface DateTimeField

roundFloor

public long roundFloor(long instant)
Round to the lowest whole unit of this field. After rounding, the value of this field and all fields of a higher magnitude are retained. The fractional millis that cannot be expressed in whole increments of this field are set to minimum.

For example, a datetime of 2002-11-02T23:34:56.789, rounded to the lowest whole hour is 2002-11-02T23:00:00.000.

Overrides:
roundFloor in interface BaseDateTimeField
Parameters:
instant - the milliseconds from 1970-01-01T00:00:00Z to round
Returns:
rounded milliseconds

set

public long set(long instant,
                int value)
Sets a value in the milliseconds supplied.

The value of this field will be set. If the value is invalid, an exception if thrown.

If setting this field would make other fields invalid, then those fields may be changed. For example if the current date is the 31st January, and the month is set to February, the day would be invalid. Instead, the day would be changed to the closest value - the 28th/29th February as appropriate.

Overrides:
set in interface BaseDateTimeField
Parameters:
instant - the milliseconds from 1970-01-01T00:00:00Z to set in
value - the value to set, in the units of the field
Returns:
the updated milliseconds

Copyright (c) 2001-2006 - Joda.org