Class SimpleUnitFormat

  • All Implemented Interfaces:
    javax.measure.format.UnitFormat
    Direct Known Subclasses:
    SimpleUnitFormat.DefaultFormat

    public abstract class SimpleUnitFormat
    extends AbstractUnitFormat

    This class implements the UnitFormat 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. Units are directly recognized. For example:
    AbstractUnit.parse("m°C").equals(MetricPrefix.MILLI(Units.CELSIUS)) AbstractUnit.parse("kW").equals(MetricPrefix.KILO(Units.WATT)) AbstractUnit.parse("ft").equals(Units.METRE.multiply(0.3048))

    Since:
    1.0
    Version:
    1.5, April 15, 2019
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected SimpleUnitFormat()
      Base constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract void alias​(javax.measure.Unit<?> unit, java.lang.String alias)
      Attaches a system-wide alias to this unit.
      private static java.lang.String asciiPrefix​(java.lang.String prefix)  
      private static java.lang.String asciiSymbol​(java.lang.String s)  
      java.lang.StringBuffer format​(java.lang.Object unit, java.lang.StringBuffer toAppendTo, java.text.FieldPosition pos)
      Formats an unit and appends the resulting text to a given string buffer (implements java.text.Format).
      abstract java.lang.Appendable format​(javax.measure.Unit<?> unit, java.lang.Appendable appendable)
      Formats the specified unit.
      static SimpleUnitFormat getInstance()
      Returns the unit format for the default locale (format used by AbstractUnit.parse(CharSequence) and Unit.toString()).
      static SimpleUnitFormat getInstance​(SimpleUnitFormat.Flavor flavor)
      Returns the SimpleUnitFormat in the desired SimpleUnitFormat.Flavor
      protected static boolean isAllASCII​(java.lang.String input)
      to check if a string only contains US-ASCII characters
      abstract boolean isValidIdentifier​(java.lang.String name)
      Indicates if the specified name can be used as unit identifier.
      abstract void label​(javax.measure.Unit<?> unit, java.lang.String label)
      Attaches a system-wide label to the specified unit.
      javax.measure.Unit<?> parseObject​(java.lang.String source, java.text.ParsePosition pos)
      Parses the text from a string to produce an object (implements java.text.Format).
      abstract javax.measure.Unit<? extends javax.measure.Quantity> parseProductUnit​(java.lang.CharSequence csq, java.text.ParsePosition pos)
      Parses a sequence of character to produce a unit or a rational product of unit.
      abstract javax.measure.Unit<? extends javax.measure.Quantity> parseSingleUnit​(java.lang.CharSequence csq, java.text.ParsePosition pos)
      Parses a sequence of character to produce a single unit.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface javax.measure.format.UnitFormat

        isLocaleSensitive, parse
    • Field Detail

      • SI_UNITS

        private static final javax.measure.Unit<?>[] SI_UNITS
      • PREFIXES

        private static final Prefix[] PREFIXES
      • PREFIX_SYMBOLS

        private static final java.lang.String[] PREFIX_SYMBOLS
      • PREFIX_CONVERTERS

        private static final javax.measure.UnitConverter[] PREFIX_CONVERTERS
      • SYMBOL_TO_UNIT

        private static final java.util.Map<java.lang.String,​javax.measure.Unit<?>> SYMBOL_TO_UNIT
        Holds the unique symbols collection (base units or alternate units).
    • Constructor Detail

      • SimpleUnitFormat

        protected SimpleUnitFormat()
        Base constructor.
    • Method Detail

      • format

        public abstract java.lang.Appendable format​(javax.measure.Unit<?> unit,
                                                    java.lang.Appendable appendable)
                                             throws java.io.IOException
        Formats the specified unit.
        Specified by:
        format in interface javax.measure.format.UnitFormat
        Specified by:
        format in class AbstractUnitFormat
        Parameters:
        unit - the unit to format.
        appendable - the appendable destination.
        Returns:
        The appendable destination passed in as appendable, with formatted text appended.
        Throws:
        java.io.IOException - if an error occurs.
      • parseProductUnit

        public abstract javax.measure.Unit<? extends javax.measure.Quantity> parseProductUnit​(java.lang.CharSequence csq,
                                                                                              java.text.ParsePosition pos)
                                                                                       throws javax.measure.format.ParserException
        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:
        java.lang.IllegalArgumentException - if the character sequence contains an illegal syntax.
        javax.measure.format.ParserException
      • parseSingleUnit

        public abstract javax.measure.Unit<? extends javax.measure.Quantity> parseSingleUnit​(java.lang.CharSequence csq,
                                                                                             java.text.ParsePosition pos)
                                                                                      throws javax.measure.format.ParserException
        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:
        java.lang.IllegalArgumentException - if the character sequence does not contain a valid unit identifier.
        javax.measure.format.ParserException
      • label

        public abstract void label​(javax.measure.Unit<?> unit,
                                   java.lang.String label)
        Attaches a system-wide label to the specified unit. For example: SimpleUnitFormat.getInstance().label(DAY.multiply(365), "year"); SimpleUnitFormat.getInstance().label(METER.multiply(0.3048), "ft"); If the specified label is already associated to an unit the previous association is discarded or ignored.
        Specified by:
        label in interface javax.measure.format.UnitFormat
        Overrides:
        label in class AbstractUnitFormat
        Parameters:
        unit - the unit being labeled.
        label - the new label for this unit.
        Throws:
        java.lang.IllegalArgumentException - if the label is not a isValidIdentifier(String) valid identifier.
      • alias

        public abstract void alias​(javax.measure.Unit<?> unit,
                                   java.lang.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: SimpleUnitFormat.getInstance().alias(METER.multiply(0.3048), "foot"); SimpleUnitFormat.getInstance().alias(METER.multiply(0.3048), "feet"); SimpleUnitFormat.getInstance().alias(METER, "meter"); SimpleUnitFormat.getInstance().alias(METER, "metre"); 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:
        java.lang.IllegalArgumentException - if the label is not a isValidIdentifier(String) valid identifier.
      • isValidIdentifier

        public abstract boolean isValidIdentifier​(java.lang.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 java.lang.StringBuffer format​(java.lang.Object unit,
                                                   java.lang.StringBuffer toAppendTo,
                                                   java.text.FieldPosition pos)
        Formats an unit and appends the resulting text to a given string buffer (implements java.text.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 javax.measure.Unit<?> parseObject​(java.lang.String source,
                                                       java.text.ParsePosition pos)
                                                throws javax.measure.format.ParserException
        Parses the text from a string to produce an object (implements java.text.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.
        Throws:
        javax.measure.format.ParserException
      • asciiPrefix

        private static java.lang.String asciiPrefix​(java.lang.String prefix)
      • asciiSymbol

        private static java.lang.String asciiSymbol​(java.lang.String s)
      • isAllASCII

        protected static boolean isAllASCII​(java.lang.String input)
        to check if a string only contains US-ASCII characters