Class UnitsRouter

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

public class UnitsRouter extends Object
UnitsRouter responsible for converting from a single unit (such as meter or meter-per-second) to one of the complex units based on the limits. For example: if the input is meter and the output as following {foot+inch, limit: 3.0} {inch , limit: no value (-inf)} Thus means if the input in meter is greater than or equal to 3.0 feet, the output will be in foot+inch, otherwise, the output will be in inch.

NOTE: the output units and their limits MUST BE in order, for example, if the output units, from the previous example, are the following: {inch , limit: no value (-inf)} {foot+inch, limit: 3.0} IN THIS CASE THE OUTPUT WILL BE ALWAYS IN inch.

NOTE: the output units and their limits will be extracted from the units preferences database by knowing the followings: - input unit - locale - usage

DESIGN: UnitRouter uses internally ComplexUnitConverter in order to convert the input units to the desired complex units and to check the limit too.

  • Field Details

  • Constructor Details

  • Method Details

    • route

      public UnitsRouter.RouteResult route(BigDecimal quantity, MicroProps micros)
      If micros.rounder is a BogusRounder, this function replaces it with a valid one.
    • parseSkeletonToPrecision

      private static Precision parseSkeletonToPrecision(String precisionSkeleton)
    • getOutputUnits

      public List<MeasureUnit> getOutputUnits()
      Returns the list of possible output units, i.e. the full set of preferences, for the localized, usage-specific unit preferences.

      The returned pointer should be valid for the lifetime of the UnitsRouter instance.