Class MixedUnitLongNameHandler

java.lang.Object
com.ibm.icu.impl.number.MixedUnitLongNameHandler
All Implemented Interfaces:
LongNameMultiplexer.ParentlessMicroPropsGenerator, MicroPropsGenerator, ModifierStore

public class MixedUnitLongNameHandler extends Object implements MicroPropsGenerator, ModifierStore, LongNameMultiplexer.ParentlessMicroPropsGenerator
Similar to LongNameHandler, but only for MIXED units.
  • Field Details

    • rules

      private final PluralRules rules
    • parent

      private final MicroPropsGenerator parent
    • fMixedUnitData

      private List<String[]> fMixedUnitData
      Stores unit data for each of the individual units. For each unit, it stores ARRAY_LENGTH strings, as returned by getMeasureData.
    • fIntegerFormatter

      private LocalizedNumberFormatter fIntegerFormatter
      A localized NumberFormatter used to format the integer-valued bigger units of Mixed Unit measurements.
    • fListFormatter

      private ListFormatter fListFormatter
      A localised list formatter for joining mixed units together.
  • Constructor Details

  • Method Details

    • forMeasureUnit

      public static MixedUnitLongNameHandler forMeasureUnit(ULocale locale, MeasureUnit mixedUnit, NumberFormatter.UnitWidth width, String unitDisplayCase, PluralRules rules, MicroPropsGenerator parent)
      Construct a localized MixedUnitLongNameHandler for the specified MeasureUnit. It must be a MIXED unit.

      Parameters:
      locale - The desired locale.
      mixedUnit - The mixed measure unit to construct a MixedUnitLongNameHandler for.
      width - Specifies the desired unit rendering.
      unitDisplayCase - Specifies the desired grammatical case. If the specified case is not found, we fall back to nominative or no-case.
      rules - PluralRules instance.
      parent - MicroPropsGenerator instance.
    • processQuantity

      public MicroProps processQuantity(DecimalQuantity quantity)
      Produces a plural-appropriate Modifier for a mixed unit: quantity is taken as the final smallest unit, while the larger unit values must be provided by micros.mixedMeasures, micros being the MicroProps instance returned by the parent. This function must not be called if this instance has no parent: call processQuantityWithMicros() instead.
      Specified by:
      processQuantity in interface MicroPropsGenerator
      Parameters:
      quantity - The quantity for consideration and optional mutation.
      Returns:
      A MicroProps instance resolved for the quantity.
    • processQuantityWithMicros

      public MicroProps processQuantityWithMicros(DecimalQuantity quantity, MicroProps micros)
      Produces a plural-appropriate Modifier for a mixed unit: quantity is taken as the final smallest unit, while the larger unit values must be provided via micros.mixedMeasures. Does not call parent.processQuantity, so cannot get a MicroProps instance that way. Instead, the instance is passed in as a parameter.
      Specified by:
      processQuantityWithMicros in interface LongNameMultiplexer.ParentlessMicroPropsGenerator
    • getModifier

      public Modifier getModifier(Modifier.Signum signum, StandardPlural plural)
      Required for ModifierStore. And ModifierStore is required by SimpleModifier constructor's last parameter. We assert his will never get called though.
      Specified by:
      getModifier in interface ModifierStore
    • getMixedUnitModifier

      private Modifier getMixedUnitModifier(DecimalQuantity quantity, MicroProps micros)
      For a mixed unit, returns a Modifier that takes only one parameter: the smallest and final unit of the set. The bigger units' values and labels get baked into this Modifier, together with the unit label of the final unit.