Class UnitsRouter


  • public class UnitsRouter
    extends java.lang.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.

    • Constructor Detail

      • UnitsRouter

        public UnitsRouter​(java.lang.String inputUnitIdentifier,
                           ULocale locale,
                           java.lang.String usage)
    • Method Detail

      • route

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

        private static Precision parseSkeletonToPrecision​(java.lang.String precisionSkeleton)
      • getOutputUnits

        public java.util.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.