Class MeasureUnitImpl


  • public class MeasureUnitImpl
    extends java.lang.Object
    • Field Detail

      • identifier

        private java.lang.String identifier
        The full unit identifier. Null if not computed.
      • singleUnits

        private final java.util.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 Detail

      • MeasureUnitImpl

        public MeasureUnitImpl()
      • MeasureUnitImpl

        public MeasureUnitImpl​(SingleUnitImpl singleUnit)
    • Method Detail

      • forIdentifier

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

        public static MeasureUnitImpl forCurrencyCode​(java.lang.String currencyCode)
        Used for currency units.
      • 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 java.util.ArrayList<SingleUnitImpl> getSingleUnits()
        Returns the list of simple units.
      • takeReciprocal

        public void takeReciprocal()
        Mutates this MeasureUnitImpl to take the reciprocal.
      • 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:
        java.lang.UnsupportedOperationException - if the object could not be converted to SingleUnitImpl.
      • getIdentifier

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

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

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object