Class UnitFormat

  • All Implemented Interfaces:
    Serializable, Cloneable
    Direct Known Subclasses:
    UnitFormat.DefaultFormat

    public abstract class UnitFormat
    extends Format

    This class provides the interface for formatting and parsing units.

    For all SI units, the 20 SI prefixes used to form decimal multiples and sub-multiples of SI units are recognized. NonSI units are directly recognized. For example:[code] Unit.valueOf("m°C").equals(SI.MILLI(SI.CELSIUS)) Unit.valueOf("kW").equals(SI.KILO(SI.WATT)) Unit.valueOf("ft").equals(SI.METER.multiply(0.3048))[/code]

    See Also:
    Serialized Form
    • Constructor Detail

      • UnitFormat

        protected UnitFormat()
        Base constructor.
    • Method Detail

      • getInstance

        public static UnitFormat getInstance​(Locale inLocale)
        Returns the unit format for the specified locale.
        Returns:
        the unit format for the specified locale.
      • getUCUMInstance

        public static UnitFormat getUCUMInstance()
        Returns the UCUM international unit format; this format uses characters range 0000-007F exclusively and is not locale-sensitive. For example: kg.m/s2
        Returns:
        the UCUM international format.
      • format

        public abstract Appendable format​(Unit<?> unit,
                                          Appendable appendable)
                                   throws IOException
        Formats the specified unit.
        Parameters:
        unit - the unit to format.
        appendable - the appendable destination.
        Throws:
        IOException - if an error occurs.
      • parseProductUnit

        public abstract Unit<? extends Quantity> parseProductUnit​(CharSequence csq,
                                                                  ParsePosition pos)
                                                           throws ParseException
        Parses a sequence of character to produce a unit or a rational product of unit.
        Parameters:
        csq - the CharSequence to parse.
        pos - an object holding the parsing index and error position.
        Returns:
        an Unit parsed from the character sequence.
        Throws:
        IllegalArgumentException - if the character sequence contains an illegal syntax.
        ParseException
      • parseSingleUnit

        public abstract Unit<? extends Quantity> parseSingleUnit​(CharSequence csq,
                                                                 ParsePosition pos)
                                                          throws ParseException
        Parses a sequence of character to produce a single unit.
        Parameters:
        csq - the CharSequence to parse.
        pos - an object holding the parsing index and error position.
        Returns:
        an Unit parsed from the character sequence.
        Throws:
        IllegalArgumentException - if the character sequence does not contain a valid unit identifier.
        ParseException
      • label

        public abstract void label​(Unit<?> unit,
                                   String label)
        Attaches a system-wide label to the specified unit. For example: [code] UnitFormat.getInstance().label(DAY.multiply(365), "year"); UnitFormat.getInstance().label(METER.multiply(0.3048), "ft"); [/code] If the specified label is already associated to an unit the previous association is discarded or ignored.
        Parameters:
        unit - the unit being labelled.
        label - the new label for this unit.
        Throws:
        IllegalArgumentException - if the label is not a isValidIdentifier(String) valid identifier.
      • alias

        public abstract void alias​(Unit<?> unit,
                                   String alias)
        Attaches a system-wide alias to this unit. Multiple aliases may be attached to the same unit. Aliases are used during parsing to recognize different variants of the same unit. For example: [code] UnitFormat.getLocaleInstance().alias(METER.multiply(0.3048), "foot"); UnitFormat.getLocaleInstance().alias(METER.multiply(0.3048), "feet"); UnitFormat.getLocaleInstance().alias(METER, "meter"); UnitFormat.getLocaleInstance().alias(METER, "metre"); [/code] If the specified label is already associated to an unit the previous association is discarded or ignored.
        Parameters:
        unit - the unit being aliased.
        alias - the alias attached to this unit.
        Throws:
        IllegalArgumentException - if the label is not a isValidIdentifier(String) valid identifier.
      • isValidIdentifier

        public abstract boolean isValidIdentifier​(String name)
        Indicates if the specified name can be used as unit identifier.
        Parameters:
        name - the identifier to be tested.
        Returns:
        true if the name specified can be used as label or alias for this format;false otherwise.
      • format

        public final StringBuffer format​(Object unit,
                                         StringBuffer toAppendTo,
                                         FieldPosition pos)
        Formats an unit and appends the resulting text to a given string buffer (implements java.text.Format).
        Specified by:
        format in class Format
        Parameters:
        unit - the unit to format.
        toAppendTo - where the text is to be appended
        pos - the field position (not used).
        Returns:
        toAppendTo
      • parseObject

        public final Unit<?> parseObject​(String source,
                                         ParsePosition pos)
        Parses the text from a string to produce an object (implements java.text.Format).
        Specified by:
        parseObject in class Format
        Parameters:
        source - the string source, part of which should be parsed.
        pos - the cursor position.
        Returns:
        the corresponding unit or null if the string cannot be parsed.