Class BaseSingleFieldPeriod
- java.lang.Object
-
- org.joda.time.base.BaseSingleFieldPeriod
-
- All Implemented Interfaces:
Serializable
,Comparable<BaseSingleFieldPeriod>
,ReadablePeriod
public abstract class BaseSingleFieldPeriod extends Object implements ReadablePeriod, Comparable<BaseSingleFieldPeriod>, Serializable
BaseSingleFieldPeriod is an abstract implementation of ReadablePeriod that manages a single duration field, such as days or minutes.This class should generally not be used directly by API users. The
ReadablePeriod
interface should be used when different kinds of period objects are to be referenced.BaseSingleFieldPeriod subclasses may be mutable and not thread-safe.
- Since:
- 1.4
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
BaseSingleFieldPeriod(int period)
Creates a new instance representing the specified period.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected static int
between(ReadableInstant start, ReadableInstant end, DurationFieldType field)
Calculates the number of whole units between the two specified datetimes.protected static int
between(ReadablePartial start, ReadablePartial end, ReadablePeriod zeroInstance)
Calculates the number of whole units between the two specified partial datetimes.int
compareTo(BaseSingleFieldPeriod other)
Compares this period to another object of the same class.boolean
equals(Object period)
Compares this object with the specified object for equality based on the value of each field.int
get(DurationFieldType type)
Gets the value of a duration field represented by this period.abstract DurationFieldType
getFieldType()
Gets the single duration field type.DurationFieldType
getFieldType(int index)
Gets the field type at the specified index.abstract PeriodType
getPeriodType()
Gets the period type which matches the duration field type.protected int
getValue()
Gets the amount of this period.int
getValue(int index)
Gets the value at the specified index.int
hashCode()
Gets a hash code for the period as defined by ReadablePeriod.boolean
isSupported(DurationFieldType type)
Checks whether the duration field specified is supported by this period.protected void
setValue(int value)
Sets the amount of this period.int
size()
Gets the number of fields that this period supports, which is one.protected static int
standardPeriodIn(ReadablePeriod period, long millisPerUnit)
Creates a new instance representing the number of complete standard length units in the specified period.MutablePeriod
toMutablePeriod()
Get this object as aMutablePeriod
.Period
toPeriod()
Get this period as an immutablePeriod
object.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.joda.time.ReadablePeriod
toString
-
-
-
-
Method Detail
-
between
protected static int between(ReadableInstant start, ReadableInstant end, DurationFieldType field)
Calculates the number of whole units between the two specified datetimes.- Parameters:
start
- the start instant, validated to not be nullend
- the end instant, validated to not be nullfield
- the field type to use, must not be null- Returns:
- the period
- Throws:
IllegalArgumentException
- if the instants are null or invalid
-
between
protected static int between(ReadablePartial start, ReadablePartial end, ReadablePeriod zeroInstance)
Calculates the number of whole units between the two specified partial datetimes.The two partials must contain the same fields, for example you can specify two
LocalDate
objects.- Parameters:
start
- the start partial date, validated to not be nullend
- the end partial date, validated to not be nullzeroInstance
- the zero instance constant, must not be null- Returns:
- the period
- Throws:
IllegalArgumentException
- if the partials are null or invalid
-
standardPeriodIn
protected static int standardPeriodIn(ReadablePeriod period, long millisPerUnit)
Creates a new instance representing the number of complete standard length units in the specified period.This factory method converts all fields from the period to hours using standardised durations for each field. Only those fields which have a precise duration in the ISO UTC chronology can be converted.
- One week consists of 7 days.
- One day consists of 24 hours.
- One hour consists of 60 minutes.
- One minute consists of 60 seconds.
- One second consists of 1000 milliseconds.
- Parameters:
period
- the period to get the number of hours from, must not be nullmillisPerUnit
- the number of milliseconds in one standard unit of this period- Throws:
IllegalArgumentException
- if the period contains imprecise duration values
-
getValue
protected int getValue()
Gets the amount of this period.- Returns:
- the period value
-
setValue
protected void setValue(int value)
Sets the amount of this period. To make a subclass immutable you must declare it final, or block this method.- Parameters:
value
- the period value
-
getFieldType
public abstract DurationFieldType getFieldType()
Gets the single duration field type.- Returns:
- the duration field type, not null
-
getPeriodType
public abstract PeriodType getPeriodType()
Gets the period type which matches the duration field type.- Specified by:
getPeriodType
in interfaceReadablePeriod
- Returns:
- the period type, not null
-
size
public int size()
Gets the number of fields that this period supports, which is one.- Specified by:
size
in interfaceReadablePeriod
- Returns:
- the number of fields supported, which is one
-
getFieldType
public DurationFieldType getFieldType(int index)
Gets the field type at the specified index.The only index supported by this period is zero which returns the field type of this class.
- Specified by:
getFieldType
in interfaceReadablePeriod
- Parameters:
index
- the index to retrieve, which must be zero- Returns:
- the field at the specified index
- Throws:
IndexOutOfBoundsException
- if the index is invalid
-
getValue
public int getValue(int index)
Gets the value at the specified index.The only index supported by this period is zero.
- Specified by:
getValue
in interfaceReadablePeriod
- Parameters:
index
- the index to retrieve, which must be zero- Returns:
- the value of the field at the specified index
- Throws:
IndexOutOfBoundsException
- if the index is invalid
-
get
public int get(DurationFieldType type)
Gets the value of a duration field represented by this period.If the field type specified does not match the type used by this class then zero is returned.
- Specified by:
get
in interfaceReadablePeriod
- Parameters:
type
- the field type to query, null returns zero- Returns:
- the value of that field, zero if field not supported
-
isSupported
public boolean isSupported(DurationFieldType type)
Checks whether the duration field specified is supported by this period.- Specified by:
isSupported
in interfaceReadablePeriod
- Parameters:
type
- the type to check, may be null which returns false- Returns:
- true if the field is supported
-
toPeriod
public Period toPeriod()
Get this period as an immutablePeriod
object. The period will usePeriodType.standard()
.- Specified by:
toPeriod
in interfaceReadablePeriod
- Returns:
- a
Period
representing the same number of days
-
toMutablePeriod
public MutablePeriod toMutablePeriod()
Get this object as aMutablePeriod
.This will always return a new
MutablePeriod
with the same fields. The period will usePeriodType.standard()
.- Specified by:
toMutablePeriod
in interfaceReadablePeriod
- Returns:
- a MutablePeriod using the same field set and values
-
equals
public boolean equals(Object period)
Compares this object with the specified object for equality based on the value of each field. All ReadablePeriod instances are accepted, but only those with a matchingPeriodType
can return true.- Specified by:
equals
in interfaceReadablePeriod
- Overrides:
equals
in classObject
- Parameters:
period
- a readable period to check against- Returns:
- true if all the field values are equal, false if not or the period is null or of an incorrect type
-
hashCode
public int hashCode()
Gets a hash code for the period as defined by ReadablePeriod.- Specified by:
hashCode
in interfaceReadablePeriod
- Overrides:
hashCode
in classObject
- Returns:
- a hash code
-
compareTo
public int compareTo(BaseSingleFieldPeriod other)
Compares this period to another object of the same class.- Specified by:
compareTo
in interfaceComparable<BaseSingleFieldPeriod>
- Parameters:
other
- the other period, must not be null- Returns:
- zero if equal, positive if greater, negative if less
- Throws:
NullPointerException
- if the other period is nullClassCastException
- if the other period is of a different type
-
-