Class UnitServices

Object
ServiceProvider
UnitServices
All Implemented Interfaces:
FormatService, SystemOfUnitsService

public class UnitServices extends ServiceProvider implements SystemOfUnitsService, FormatService
The central point from which all unit services (parsing, formatting, listing, etc) can be obtained. Seshat does not use this class (Seshat rather uses Units predefined constants and UnitFormat directly since they are designed specifically for Seshat needs). This class is provided for allowing other applications to discover Seshat implementation of JSR-385 without direct dependency. A UnitServices instance can be obtained by call to ServiceProvider.current().
Since:
1.0
  • Constructor Details

    • UnitServices

      public UnitServices()
      Creates a new service provider. UnitServices should not be instantiated directly unless the caller wants specifically the Seshat implementation. For obtaining the default implementation, use ServiceProvider.current() instead.
  • Method Details

    • getSystemOfUnits

      public SystemOfUnits getSystemOfUnits()
      Returns the default system of units used by Seshat. This include the International System of Units (SI) together with some imperial units and other units. This system includes at least all the constants defined in the Units class.
      Specified by:
      getSystemOfUnits in interface SystemOfUnitsService
      Returns:
      the system of units used by Seshat.
    • getSystemOfUnits

      public SystemOfUnits getSystemOfUnits(String name)
      Returns the system of units having the specified name, or null if none. The argument can be any name in the following table:
      Available system of units
      Name Examples
      SI m, km, m³, s, m∕s, K, °C, hPa, rad, µrad
      SI + accepted s, min, h, m∕s, km∕h, °, ′, ″, ha
      Imperial in, ft, mi (statute mile)
      SI + other m, m∕s, km∕h, ft, mi, M (nautical mile)
      The search for name is case-insensitive and ignore whitespaces.
      Specified by:
      getSystemOfUnits in interface SystemOfUnitsService
      Parameters:
      name - the name of the desired system of units.
      Returns:
      the system of units for the given name, or null if none.
    • getAvailableSystemsOfUnits

      public Collection<SystemOfUnits> getAvailableSystemsOfUnits()
      Returns the list of all available systems of units.
      Specified by:
      getAvailableSystemsOfUnits in interface SystemOfUnitsService
      Returns:
      list of available systems of units.
    • getSystemOfUnitsService

      public SystemOfUnitsService getSystemOfUnitsService()
      Returns the service to obtain a SystemOfUnits instances. The default implementation returns this since this UnitServices class implements directly all relevant interfaces. The methods related to system of units are:
      Specified by:
      getSystemOfUnitsService in class ServiceProvider
      Returns:
      the service to obtain a SystemOfUnits, or null if none.
    • getUnitFormat

      public UnitFormat getUnitFormat()
      Returns an unit format instance for human-readable unit symbols in the default locale. The format style is UnitFormat.Style.SYMBOL. This style requires support for Unicode characters; for example square metres are formatted as “m²”, not “m2”.
      Specified by:
      getUnitFormat in interface FormatService
      Returns:
      a UnitFormat instance for unit symbols.
    • getUnitFormat

      public UnitFormat getUnitFormat(String name)
      Returns the unit format for the given name. The argument can be the name of any value in the UnitFormat.Style enumeration. The argument can be any name in the following table:
      Available unit format name
      Name Examples
      SYMBOL km, m³, m∕s, N⋅m, K, °C, hPa, rad, µrad
      UCUM km, m3, m/s, N.m
      NAME kilometre, cubic metre, metres per second
      The "NAME" format is locale-sensitive. The format locale can be modified by a call to UnitFormat.setLocale(Locale) on the returned object.
      Specified by:
      getUnitFormat in interface FormatService
      Parameters:
      name - the name of the desired format.
      Returns:
      the corresponding unit format, or null if none.
    • getUnitFormat

      public UnitFormat getUnitFormat(String name, String variant)
      Returns the unit format having the specified name or null if none. The variant is an optional argument for requesting e.g. ASCII-only format, or for choosing case-sensitive versus case-insensitive variants. In current implementation the variant argument is ignored.
      Specified by:
      getUnitFormat in interface FormatService
      Parameters:
      name - the name of the desired format.
      variant - indicates a variation of a unit format.
      Returns:
      the corresponding unit format, or null if none.
    • getQuantityFormat

      public QuantityFormat getQuantityFormat()
      Returns a quantity format for the default locale.
      Specified by:
      getQuantityFormat in interface FormatService
      Returns:
      a QuantityFormat instance for quantities.
      Since:
      1.2
    • getQuantityFormat

      public QuantityFormat getQuantityFormat(String name)
      Returns the quantity format having the specified name or null if none. The names accepted by this method are those documented in getUnitFormat(String).
      Specified by:
      getQuantityFormat in interface FormatService
      Parameters:
      name - the name of the format.
      Returns:
      the corresponding quantity format, or null if none.
      Since:
      1.2
    • getAvailableFormatNames

      public Set<String> getAvailableFormatNames(FormatService.FormatType type)
      Returns a list of available format names. The default implementation returns the names of all values in the UnitFormat.Style enumeration.
      Specified by:
      getAvailableFormatNames in interface FormatService
      Parameters:
      type - the type of formats (for units or for quantities).
      Returns:
      list of available formats.
    • getFormatService

      public FormatService getFormatService()
      Returns the service to obtain a UnitFormat instances. The default implementation returns this since this UnitServices class implements directly all relevant interfaces. The methods related to unit formats are:
      Specified by:
      getFormatService in class ServiceProvider
      Returns:
      the service to obtain a UnitFormat, or null if none.
    • getQuantityFactory

      public <Q extends Quantity<Q>> QuantityFactory<Q> getQuantityFactory(Class<Q> type)
      Return a factory for the given Quantity type. In the particular case of Seshat implementation, Quantities.create(double, Unit) provides a more direct way to instantiate quantities.
      Specified by:
      getQuantityFactory in class ServiceProvider
      Type Parameters:
      Q - compile-time value of the type argument.
      Parameters:
      type - type of the desired the quantity.
      Returns:
      the service to obtain Quantity instances.
      See Also: