Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.joda.time.base
Class BaseSingleFieldPeriod

    java.lang.Object
      org.joda.time.base.BaseSingleFieldPeriod

All Implemented Interfaces:
  java.io.Serializable, java.lang.Comparable, ReadablePeriod

Direct Known Subclasses:
  Days, Hours, Minutes, Months, Seconds, Weeks, Years

    public abstract class BaseSingleFieldPeriod

extends java.lang.Object
implements ReadablePeriod, java.lang.Comparable, java.io.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
Author:
  Stephen Colebourne
See Also:
  Serialized Form

Constructor Summary
`protected` | `BaseSingleFieldPeriod(int period)` Creates a new instance representing the specified period.

Method Summary
`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(java.lang.Object other)` Compares this period to another object of the same class.
`boolean` | `equals(java.lang.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 a `MutablePeriod`.
`Period` | `toPeriod()` Get this period as an immutable `Period` 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`

Constructor Detail

### BaseSingleFieldPeriod

    protected BaseSingleFieldPeriod(int period)

  Creates a new instance representing the specified period.

  Parameters:
    `period` - the period to represent

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 null
    `end` - the end instant, validated to not be null
    `field` - the field type to use, must not be null
  Returns:
    the period
  Throws:
    `java.lang.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 null
    `end` - the end partial date, validated to not be null
    `zeroInstance` - the zero instance constant, must not be null
  Returns:
    the period
  Throws:
    `java.lang.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.
  Months and Years are imprecise and periods containing these values cannot be converted.

  Parameters:
    `period` - the period to get the number of hours from, must not be null
    `millisPerUnit` - the number of milliseconds in one standard unit of this period
  Throws:
    `java.lang.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 interface `ReadablePeriod`
  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 interface `ReadablePeriod`
  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 interface `ReadablePeriod`
  Parameters:
    `index` - the index to retrieve, which must be zero
  Returns:
    the field at the specified index
  Throws:
    `java.lang.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 interface `ReadablePeriod`
  Parameters:
    `index` - the index to retrieve, which must be zero
  Returns:
    the value of the field at the specified index
  Throws:
    `java.lang.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 interface `ReadablePeriod`
  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 interface `ReadablePeriod`
  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 immutable `Period` object. The period will use `PeriodType.standard()`.

  Specified by:
    `toPeriod` in interface `ReadablePeriod`
  Returns:
    a `Period` representing the same number of days

### toMutablePeriod

    public MutablePeriod toMutablePeriod()

  Get this object as a `MutablePeriod`.

  This will always return a new `MutablePeriod` with the same fields. The period will use `PeriodType.standard()`.

  Specified by:
    `toMutablePeriod` in interface `ReadablePeriod`
  Returns:
    a MutablePeriod using the same field set and values

### equals

    public boolean equals(java.lang.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 matching `PeriodType` can return true.

  Specified by:
    `equals` in interface `ReadablePeriod`
  Overrides:
    `equals` in class `java.lang.Object`
  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 interface `ReadablePeriod`
  Overrides:
    `hashCode` in class `java.lang.Object`
  Returns:
    a hash code

### compareTo

    public int compareTo(java.lang.Object other)

  Compares this period to another object of the same class.

  Specified by:
    `compareTo` in interface `java.lang.Comparable`
  Parameters:
    `other` - the other period, must not be null
  Returns:
    zero if equal, positive if greater, negative if less
  Throws:
    `java.lang.NullPointerException` - if the other period is null
    `java.lang.ClassCastException` - if the other period is of a different type

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD