Class MoneyFormatter

  • All Implemented Interfaces:
    Serializable

    public final class MoneyFormatter
    extends Object
    implements Serializable
    Formats instances of money to and from a String.

    Instances of MoneyFormatter can be created by MoneyFormatterBuilder.

    This class is immutable and thread-safe.

    See Also:
    Serialized Form
    • Method Detail

      • getLocale

        public Locale getLocale()
        Gets the locale to use.
        Returns:
        the locale, never null
      • withLocale

        public MoneyFormatter withLocale​(Locale locale)
        Returns a copy of this instance with the specified locale.

        Changing the locale may change the style of output depending on how the formatter has been configured.

        Parameters:
        locale - the locale, not null
        Returns:
        the new instance, never null
      • isPrinter

        public boolean isPrinter()
        Checks whether this formatter can print.

        If the formatter cannot print, an UnsupportedOperationException will be thrown from the print methods.

        Returns:
        true if the formatter can print
      • isParser

        public boolean isParser()
        Checks whether this formatter can parse.

        If the formatter cannot parse, an UnsupportedOperationException will be thrown from the parse methods.

        Returns:
        true if the formatter can parse
      • print

        public String print​(BigMoneyProvider moneyProvider)
        Prints a monetary value to a String.
        Parameters:
        moneyProvider - the money to print, not null
        Returns:
        the string printed using the settings of this formatter
        Throws:
        UnsupportedOperationException - if the formatter is unable to print
        MoneyFormatException - if there is a problem while printing
      • print

        public void print​(Appendable appendable,
                          BigMoneyProvider moneyProvider)
        Prints a monetary value to an Appendable converting any IOException to a MoneyFormatException.

        Example implementations of Appendable are StringBuilder, StringBuffer or Writer. Note that StringBuilder and StringBuffer never throw an IOException.

        Parameters:
        appendable - the appendable to add to, not null
        moneyProvider - the money to print, not null
        Throws:
        UnsupportedOperationException - if the formatter is unable to print
        MoneyFormatException - if there is a problem while printing
      • printIO

        public void printIO​(Appendable appendable,
                            BigMoneyProvider moneyProvider)
                     throws IOException
        Prints a monetary value to an Appendable potentially throwing an IOException.

        Example implementations of Appendable are StringBuilder, StringBuffer or Writer. Note that StringBuilder and StringBuffer never throw an IOException.

        Parameters:
        appendable - the appendable to add to, not null
        moneyProvider - the money to print, not null
        Throws:
        UnsupportedOperationException - if the formatter is unable to print
        MoneyFormatException - if there is a problem while printing
        IOException - if an IO error occurs
      • parseBigMoney

        public BigMoney parseBigMoney​(CharSequence text)
        Fully parses the text into a BigMoney.

        The parse must complete normally and parse the entire text (currency and amount). If the parse completes without reading the entire length of the text, an exception is thrown. If any other problem occurs during parsing, an exception is thrown.

        Parameters:
        text - the text to parse, not null
        Returns:
        the parsed monetary value, never null
        Throws:
        UnsupportedOperationException - if the formatter is unable to parse
        MoneyFormatException - if there is a problem while parsing
      • parseMoney

        public Money parseMoney​(CharSequence text)
        Fully parses the text into a Money requiring that the parsed amount has the correct number of decimal places.

        The parse must complete normally and parse the entire text (currency and amount). If the parse completes without reading the entire length of the text, an exception is thrown. If any other problem occurs during parsing, an exception is thrown.

        Parameters:
        text - the text to parse, not null
        Returns:
        the parsed monetary value, never null
        Throws:
        UnsupportedOperationException - if the formatter is unable to parse
        MoneyFormatException - if there is a problem while parsing
        ArithmeticException - if the scale of the parsed money exceeds the scale of the currency
      • parse

        public MoneyParseContext parse​(CharSequence text,
                                       int startIndex)
        Parses the text extracting monetary information.

        This method parses the input providing low-level access to the parsing state. The resulting context contains the parsed text, indicator of error, position following the parse and the parsed currency and amount. Together, these provide enough information for higher level APIs to use.

        Parameters:
        text - the text to parse, not null
        startIndex - the start index to parse from
        Returns:
        the parsed monetary value, null only if the parse results in an error
        Throws:
        IndexOutOfBoundsException - if the start index is invalid
        UnsupportedOperationException - if this formatter cannot parse
      • toString

        public String toString()
        Gets a string summary of the formatter.
        Overrides:
        toString in class Object
        Returns:
        a string summarising the formatter, never null