Class MeasureUnitImpl

java.lang.Object
com.ibm.icu.impl.units.MeasureUnitImpl

public class MeasureUnitImpl extends Object
  • Field Details

    • identifier

      private String identifier
      The full unit identifier. Null if not computed.
    • complexity

      private MeasureUnit.Complexity complexity
      The complexity, either SINGLE, COMPOUND, or MIXED.
    • constantDenominator

      private long constantDenominator
      The constant denominator. NOTE: when it is 0, it means there is no constant denominator.
    • singleUnits

      private final ArrayList<SingleUnitImpl> singleUnits
      The list of single units. These may be summed or multiplied, based on the value of the complexity field.

      The "dimensionless" unit (SingleUnitImpl default constructor) must not be added to this list.

      The "dimensionless" MeasureUnitImpl has an empty singleUnits.

  • Constructor Details

    • MeasureUnitImpl

      public MeasureUnitImpl()
    • MeasureUnitImpl

      public MeasureUnitImpl(SingleUnitImpl singleUnit)
  • Method Details

    • forIdentifier

      public static MeasureUnitImpl forIdentifier(String identifier)
      Parse a unit identifier into a MeasureUnitImpl.
      Parameters:
      identifier - The unit identifier string.
      Returns:
      A newly parsed object.
      Throws:
      IllegalArgumentException - in case of incorrect/non-parsed identifier.
    • forCurrencyCode

      public static MeasureUnitImpl forCurrencyCode(String currencyCode)
      Used for currency units.
    • copy

      public MeasureUnitImpl copy()
    • copyAndSimplify

      public MeasureUnitImpl copyAndSimplify()
      Returns a simplified version of the unit. NOTE: the simplification happen when there are two units equals in their base unit and their prefixes. Example 1: "square-meter-per-meter" --> "meter" Example 2: "square-millimeter-per-meter" --> "square-millimeter-per-meter"
    • getSingleUnits

      public ArrayList<SingleUnitImpl> getSingleUnits()
      Returns the list of simple units.
    • takeReciprocal

      public void takeReciprocal()
      Mutates this MeasureUnitImpl to take the reciprocal.
    • extractIndividualUnitsWithIndices

      public ArrayList<MeasureUnitImpl.MeasureUnitImplWithIndex> extractIndividualUnitsWithIndices()
    • applyDimensionality

      public void applyDimensionality(int dimensionality)
      Applies dimensionality to all the internal single units. For example: square-meter-per-second, when we apply dimensionality -2, it will be square-second-per-p4-meter
    • appendSingleUnit

      public boolean appendSingleUnit(SingleUnitImpl singleUnit)
      Mutates this MeasureUnitImpl to append a single unit.
      Returns:
      true if a new item was added. If unit is the dimensionless unit, it is never added: the return value will always be false.
    • build

      public MeasureUnit build()
      Transform this MeasureUnitImpl into a MeasureUnit, simplifying if possible.

      NOTE: this function must be called from a thread-safe class

    • getSingleUnitImpl

      public SingleUnitImpl getSingleUnitImpl()
      Returns:
      SingleUnitImpl
      Throws:
      UnsupportedOperationException - if the object could not be converted to SingleUnitImpl.
    • getIdentifier

      public String getIdentifier()
      Returns the CLDR unit identifier and null if not computed.
    • getComplexity

      public MeasureUnit.Complexity getComplexity()
    • setComplexity

      public void setComplexity(MeasureUnit.Complexity complexity)
    • getConstantDenominator

      public long getConstantDenominator()
      Get the constant denominator.
    • setConstantDenominator

      public void setConstantDenominator(long constantDenominator)
      Set the constant denominator.
    • countCharacter

      private int countCharacter(String str, char ch)
    • getConstantsString

      private String getConstantsString(long constantDenominator)
      Internal function that returns a string of the constants in the correct format. Example: 1000 --> "-per-1000" 1000000 --> "-per-1e6" NOTE: this function is only used when the constant denominator is greater than 0.
    • serialize

      public void serialize()
      Normalizes the MeasureUnitImpl and generates the identifier string in place.
    • toString

      public String toString()
      Overrides:
      toString in class Object