Class CopticChronology.YearRule

All Implemented Interfaces:
Serializable, Comparable<CalendricalRule<?>>, Comparator<Calendrical>
Enclosing class:
CopticChronology

private static final class CopticChronology.YearRule extends DateTimeFieldRule<Integer> implements Serializable
Rule implementation.
  • Field Details

    • INSTANCE

      private static final DateTimeFieldRule<Integer> INSTANCE
      Singleton instance.
    • serialVersionUID

      private static final long serialVersionUID
      A serialization identifier for this class.
      See Also:
  • Constructor Details

    • YearRule

      private YearRule()
      Constructor.
  • Method Details

    • readResolve

      private Object readResolve()
    • derive

      protected Integer derive(Calendrical calendrical)
      Description copied from class: CalendricalRule
      Derives the value of this rule from a calendrical.

      This method derives the value for this field from other fields in the calendrical without directly querying the calendrical for the value.

      For example, if this field is quarter-of-year, then the value can be derived from month-of-year.

      The implementation only needs to derive the value based on its immediate parents. The use of Calendrical.get(javax.time.calendar.CalendricalRule<T>) will extract any further parents on demand.

      A typical implementation of this method obtains the parent value and performs a calculation. For example, here is a simple implementation for the quarter-of-year field:

       Integer moyVal = calendrical.get(ISOChronology.monthOfYearRule());
       return (moyVal != null ? ((moyVal - 1) % 4) + 1) : null;
       

      This method is designed to be overridden in subclasses. The subclass implementation must be thread-safe. The subclass implementation must not request the value of this rule from the specified calendrical, otherwise a stack overflow error will occur.

      Overrides:
      derive in class CalendricalRule<Integer>
      Parameters:
      calendrical - the calendrical to derive from, not null
      Returns:
      the derived value, null if unable to derive
    • merge

      protected void merge(CalendricalMerger merger)
      Description copied from class: CalendricalRule
      Merges this field with other fields to form higher level fields.

      The aim of this method is to assist in the process of extracting the most date-time information possible from a map of field-value pairs. The merging process is controlled by the mutable merger instance and the input and output of the this merge are held there.

      Subclasses that override this method may use methods on the merger to obtain the values to merge. The value is guaranteed to be available for this field if this method is called.

      If the override successfully merged some fields then the following must be performed. The merged field must be stored using CalendricalMerger.storeMerged(javax.time.calendar.CalendricalRule<T>, T). Each field used in the merge must be marked as being used by calling CalendricalMerger.removeProcessed(javax.time.calendar.CalendricalRule<?>).

      An example to merge two fields into one - hour of AM/PM and AM/PM:

        Integer hapVal = merger.getValue(ISOChronology.hourOfAmPmRule());
        if (hapVal != null) {
          AmPmOfDay amPm = merger.getValue(this);
          int hourOfDay = MathUtils.safeAdd(MathUtils.safeMultiply(amPm, 12), hapVal);
          merger.storeMerged(ISOChronology.hourOfDayRule(), hourOfDay);
          merger.removeProcessed(this);
          merger.removeProcessed(ISOChronology.hourOfAmPmRule());
        }
       
      Overrides:
      merge in class CalendricalRule<Integer>
      Parameters:
      merger - the merger instance controlling the merge process, not null