Class AbstractPartial
- All Implemented Interfaces:
Comparable<ReadablePartial>,ReadablePartial
- Direct Known Subclasses:
BaseLocal,BasePartial,Partial
Calculations on are performed using a Chronology.
This chronology is set to be in the UTC time zone for all calculations.
The methods on this class use ReadablePartial.size(),
getField(int, Chronology) and
ReadablePartial.getValue(int) to calculate their results.
Subclasses may have a better implementation.
AbstractPartial allows subclasses may be mutable and not thread-safe.
- Since:
- 1.0
- Author:
- Stephen Colebourne
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintcompareTo(ReadablePartial other) Compares this partial with another returning an integer indicating the order.booleanCompares this ReadablePartial with another returning true if the chronology, field types and values are equal.intget(DateTimeFieldType type) Get the value of one of the fields of a datetime.getField(int index) Gets the field at the specified index.protected abstract DateTimeFieldgetField(int index, Chronology chrono) Gets the field for a specific index in the chronology specified.Gets an array of the fields that this partial supports.getFieldType(int index) Gets the field type at the specified index.Gets an array of the field types that this partial supports.int[]Gets an array of the value of each of the fields that this partial supports.inthashCode()Gets a hash code for the ReadablePartial that is compatible with the equals method.intindexOf(DateTimeFieldType type) Gets the index of the specified field, or -1 if the field is unsupported.protected intindexOf(DurationFieldType type) Gets the index of the first fields to have the specified duration, or -1 if the field is unsupported.protected intGets the index of the specified field, throwing an exception if the field is unsupported.protected intGets the index of the first fields to have the specified duration, throwing an exception if the field is unsupported.booleanisAfter(ReadablePartial partial) Is this partial later than the specified partial.booleanisBefore(ReadablePartial partial) Is this partial earlier than the specified partial.booleanisEqual(ReadablePartial partial) Is this partial the same as the specified partial.booleanisSupported(DateTimeFieldType type) Checks whether the field specified is supported by this partial.toDateTime(ReadableInstant baseInstant) Resolves this partial against another complete instant to create a new full instant.toString(DateTimeFormatter formatter) Uses the specified formatter to convert this partial to a String.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.joda.time.ReadablePartial
getChronology, getValue, size, toString
-
Constructor Details
-
AbstractPartial
protected AbstractPartial()Constructor.
-
-
Method Details
-
getField
Gets the field for a specific index in the chronology specified.This method must not use any instance variables.
- Parameters:
index- the index to retrievechrono- the chronology to use- Returns:
- the field
- Throws:
IndexOutOfBoundsException- if the index is invalid
-
getFieldType
Gets the field type at the specified index.- Specified by:
getFieldTypein interfaceReadablePartial- Parameters:
index- the index- Returns:
- the field type
- Throws:
IndexOutOfBoundsException- if the index is invalid
-
getFieldTypes
Gets an array of the field types that this partial supports.The fields are returned largest to smallest, for example Hour, Minute, Second.
- Returns:
- the fields supported in an array that may be altered, largest to smallest
-
getField
Gets the field at the specified index.- Specified by:
getFieldin interfaceReadablePartial- Parameters:
index- the index- Returns:
- the field
- Throws:
IndexOutOfBoundsException- if the index is invalid
-
getFields
Gets an array of the fields that this partial supports.The fields are returned largest to smallest, for example Hour, Minute, Second.
- Returns:
- the fields supported in an array that may be altered, largest to smallest
-
getValues
public int[] getValues()Gets an array of the value of each of the fields that this partial supports.The fields are returned largest to smallest, for example Hour, Minute, Second. Each value corresponds to the same array index as
getFields()- Returns:
- the current values of each field in an array that may be altered, largest to smallest
-
get
Get the value of one of the fields of a datetime.The field specified must be one of those that is supported by the partial.
- Specified by:
getin interfaceReadablePartial- Parameters:
type- a DateTimeFieldType instance that is supported by this partial- Returns:
- the value of that field
- Throws:
IllegalArgumentException- if the field is null or not supported
-
isSupported
Checks whether the field specified is supported by this partial.- Specified by:
isSupportedin interfaceReadablePartial- Parameters:
type- the type to check, may be null which returns false- Returns:
- true if the field is supported
-
indexOf
Gets the index of the specified field, or -1 if the field is unsupported.- Parameters:
type- the type to check, may be null which returns -1- Returns:
- the index of the field, -1 if unsupported
-
indexOfSupported
Gets the index of the specified field, throwing an exception if the field is unsupported.- Parameters:
type- the type to check, not null- Returns:
- the index of the field
- Throws:
IllegalArgumentException- if the field is null or not supported
-
indexOf
Gets the index of the first fields to have the specified duration, or -1 if the field is unsupported.- Parameters:
type- the type to check, may be null which returns -1- Returns:
- the index of the field, -1 if unsupported
-
indexOfSupported
Gets the index of the first fields to have the specified duration, throwing an exception if the field is unsupported.- Parameters:
type- the type to check, not null- Returns:
- the index of the field
- Throws:
IllegalArgumentException- if the field is null or not supported
-
toDateTime
Resolves this partial against another complete instant to create a new full instant. The combination is performed using the chronology of the specified instant.For example, if this partial represents a time, then the result of this method will be the datetime from the specified base instant plus the time from this partial.
- Specified by:
toDateTimein interfaceReadablePartial- Parameters:
baseInstant- the instant that provides the missing fields, null means now- Returns:
- the combined datetime
-
equals
Compares this ReadablePartial with another returning true if the chronology, field types and values are equal.- Specified by:
equalsin interfaceReadablePartial- Overrides:
equalsin classObject- Parameters:
partial- an object to check against- Returns:
- true if fields and values are equal
-
hashCode
public int hashCode()Gets a hash code for the ReadablePartial that is compatible with the equals method.- Specified by:
hashCodein interfaceReadablePartial- Overrides:
hashCodein classObject- Returns:
- a suitable hash code
-
compareTo
Compares this partial with another returning an integer indicating the order.The fields are compared in order, from largest to smallest. The first field that is non-equal is used to determine the result.
The specified object must be a partial instance whose field types match those of this partial.
NOTE: Prior to v2.0, the
Comparableinterface was only implemented in this class and not in theReadablePartialinterface.- Specified by:
compareToin interfaceComparable<ReadablePartial>- Parameters:
other- an object to check against- Returns:
- negative if this is less, zero if equal, positive if greater
- Throws:
ClassCastException- if the partial is the wrong class or if it has field types that don't matchNullPointerException- if the partial is null- Since:
- 1.1
-
isAfter
Is this partial later than the specified partial.The fields are compared in order, from largest to smallest. The first field that is non-equal is used to determine the result.
You may not pass null into this method. This is because you need a time zone to accurately determine the current date.
- Parameters:
partial- a partial to check against, must not be null- Returns:
- true if this date is strictly after the date passed in
- Throws:
IllegalArgumentException- if the specified partial is nullClassCastException- if the partial has field types that don't match- Since:
- 1.1
-
isBefore
Is this partial earlier than the specified partial.The fields are compared in order, from largest to smallest. The first field that is non-equal is used to determine the result.
You may not pass null into this method. This is because you need a time zone to accurately determine the current date.
- Parameters:
partial- a partial to check against, must not be null- Returns:
- true if this date is strictly before the date passed in
- Throws:
IllegalArgumentException- if the specified partial is nullClassCastException- if the partial has field types that don't match- Since:
- 1.1
-
isEqual
Is this partial the same as the specified partial.The fields are compared in order, from largest to smallest. If all fields are equal, the result is true.
You may not pass null into this method. This is because you need a time zone to accurately determine the current date.
- Parameters:
partial- a partial to check against, must not be null- Returns:
- true if this date is the same as the date passed in
- Throws:
IllegalArgumentException- if the specified partial is nullClassCastException- if the partial has field types that don't match- Since:
- 1.1
-
toString
Uses the specified formatter to convert this partial to a String.- Parameters:
formatter- the formatter to use, null means usetoString().- Returns:
- the formatted string
- Since:
- 1.1
-