org.joda.time.base
Class AbstractPartial

java.lang.Object
  extended by org.joda.time.base.AbstractPartial
All Implemented Interfaces:
Comparable<ReadablePartial>, ReadablePartial
Direct Known Subclasses:
BaseLocal, BasePartial, Partial

public abstract class AbstractPartial
extends Object
implements ReadablePartial, Comparable<ReadablePartial>

AbstractPartial provides a standard base implementation of most methods in the ReadablePartial interface.

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
protected AbstractPartial()
          Constructor.
 
Method Summary
 int compareTo(ReadablePartial other)
          Compares this partial with another returning an integer indicating the order.
 boolean equals(Object partial)
          Compares this ReadablePartial with another returning true if the chronology, field types and values are equal.
 int get(DateTimeFieldType type)
          Get the value of one of the fields of a datetime.
 DateTimeField getField(int index)
          Gets the field at the specifed index.
protected abstract  DateTimeField getField(int index, Chronology chrono)
          Gets the field for a specific index in the chronology specified.
 DateTimeField[] getFields()
          Gets an array of the fields that this partial supports.
 DateTimeFieldType getFieldType(int index)
          Gets the field type at the specifed index.
 DateTimeFieldType[] getFieldTypes()
          Gets an array of the field types that this partial supports.
 int[] getValues()
          Gets an array of the value of each of the fields that this partial supports.
 int hashCode()
          Gets a hash code for the ReadablePartial that is compatible with the equals method.
 int indexOf(DateTimeFieldType type)
          Gets the index of the specified field, or -1 if the field is unsupported.
protected  int indexOf(DurationFieldType type)
          Gets the index of the first fields to have the specified duration, or -1 if the field is unsupported.
protected  int indexOfSupported(DateTimeFieldType type)
          Gets the index of the specified field, throwing an exception if the field is unsupported.
protected  int indexOfSupported(DurationFieldType type)
          Gets the index of the first fields to have the specified duration, throwing an exception if the field is unsupported.
 boolean isAfter(ReadablePartial partial)
          Is this partial later than the specified partial.
 boolean isBefore(ReadablePartial partial)
          Is this partial earlier than the specified partial.
 boolean isEqual(ReadablePartial partial)
          Is this partial the same as the specified partial.
 boolean isSupported(DateTimeFieldType type)
          Checks whether the field specified is supported by this partial.
 DateTime toDateTime(ReadableInstant baseInstant)
          Resolves this partial against another complete instant to create a new full instant.
 String 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, wait
 
Methods inherited from interface org.joda.time.ReadablePartial
getChronology, getValue, size, toString
 

Constructor Detail

AbstractPartial

protected AbstractPartial()
Constructor.

Method Detail

getField

protected abstract DateTimeField getField(int index,
                                          Chronology chrono)
Gets the field for a specific index in the chronology specified.

This method must not use any instance variables.

Parameters:
index - the index to retrieve
chrono - the chronology to use
Returns:
the field
Throws:
IndexOutOfBoundsException - if the index is invalid

getFieldType

public DateTimeFieldType getFieldType(int index)
Gets the field type at the specifed index.

Specified by:
getFieldType in interface ReadablePartial
Parameters:
index - the index
Returns:
the field type
Throws:
IndexOutOfBoundsException - if the index is invalid

getFieldTypes

public DateTimeFieldType[] 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

public DateTimeField getField(int index)
Gets the field at the specifed index.

Specified by:
getField in interface ReadablePartial
Parameters:
index - the index
Returns:
the field
Throws:
IndexOutOfBoundsException - if the index is invalid

getFields

public DateTimeField[] 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

public int get(DateTimeFieldType type)
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:
get in interface ReadablePartial
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

public boolean isSupported(DateTimeFieldType type)
Checks whether the field specified is supported by this partial.

Specified by:
isSupported in interface ReadablePartial
Parameters:
type - the type to check, may be null which returns false
Returns:
true if the field is supported

indexOf

public int indexOf(DateTimeFieldType type)
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

protected int indexOfSupported(DateTimeFieldType type)
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

protected int indexOf(DurationFieldType type)
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

protected int indexOfSupported(DurationFieldType type)
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

public DateTime toDateTime(ReadableInstant baseInstant)
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:
toDateTime in interface ReadablePartial
Parameters:
baseInstant - the instant that provides the missing fields, null means now
Returns:
the combined datetime

equals

public boolean equals(Object partial)
Compares this ReadablePartial with another returning true if the chronology, field types and values are equal.

Specified by:
equals in interface ReadablePartial
Overrides:
equals in class Object
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:
hashCode in interface ReadablePartial
Overrides:
hashCode in class Object
Returns:
a suitable hash code

compareTo

public int compareTo(ReadablePartial other)
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 Comparable interface was only implemented in this class and not in the ReadablePartial interface.

Specified by:
compareTo in interface Comparable<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 match
NullPointerException - if the partial is null
Since:
1.1

isAfter

public boolean isAfter(ReadablePartial partial)
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 after the date passed in
Throws:
IllegalArgumentException - if the specified partial is null
ClassCastException - if the partial has field types that don't match
Since:
1.1

isBefore

public boolean isBefore(ReadablePartial partial)
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 before the date passed in
Throws:
IllegalArgumentException - if the specified partial is null
ClassCastException - if the partial has field types that don't match
Since:
1.1

isEqual

public boolean isEqual(ReadablePartial partial)
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 null
ClassCastException - if the partial has field types that don't match
Since:
1.1

toString

public String toString(DateTimeFormatter formatter)
Uses the specified formatter to convert this partial to a String.

Parameters:
formatter - the formatter to use, null means use toString().
Returns:
the formatted string
Since:
1.1


Copyright © 2002-2012 Joda.org. All Rights Reserved.