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.
| Modifier and Type | Class and Description |
|---|---|
static class |
UnitsRouter.ConverterPreference
Contains the complex unit converter and the limit which representing the smallest value that the
converter should accept.
|
class |
UnitsRouter.RouteResult |
| Constructor and Description |
|---|
UnitsRouter(MeasureUnitImpl inputUnit,
ULocale locale,
String usage) |
UnitsRouter(String inputUnitIdentifier,
ULocale locale,
String usage) |
| Modifier and Type | Method and Description |
|---|---|
List<MeasureUnit> |
getOutputUnits()
Returns the list of possible output units, i.e.
|
UnitsRouter.RouteResult |
route(BigDecimal quantity,
MicroProps micros)
If micros.rounder is a BogusRounder, this function replaces it with a valid one.
|
public UnitsRouter(MeasureUnitImpl inputUnit, ULocale locale, String usage)
public UnitsRouter.RouteResult route(BigDecimal quantity, MicroProps micros)
public List<MeasureUnit> getOutputUnits()
The returned pointer should be valid for the lifetime of the UnitsRouter instance.