Class NumberTool

  • All Implemented Interfaces:
    java.io.Serializable

    @DefaultKey("number")
    public class NumberTool
    extends FormatConfig
    implements java.io.Serializable

    Tool for working with Number in Velocity templates. It is useful for accessing and formatting arbitrary Number objects. Also the tool can be used to retrieve NumberFormat instances or make conversions to and from various number types.

     Example uses:
      $myNumber                   -gt; 13.55
      $number.format($myNumber)   -gt; 13.6
      $number.currency($myNumber) -gt; $13.55
      $number.integer($myNumber)  -gt; 13
    
     Example tools.xml config (if you want to use this with VelocityView):
     <tools>
       <toolbox scope="application">
         <tool class="org.apache.velocity.tools.generic.MathTool"/>
       </toolbox>
     </tools>
     

    This tool is entirely threadsafe, and has no instance members. It may be used in any scope (request, session, or application). As such, the methods are highly interconnected, and overriding key methods provides an easy way to create subclasses that use a non-default format or locale.

    Since:
    VelocityTools 1.2
    Version:
    $Id$
    Author:
    Nathan Bubna, Mike Kienenberger
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      NumberTool()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.String currency​(java.lang.Object obj)
      Convenience method equivalent to $number.format("currency", $foo).
      java.lang.String format​(java.lang.Object obj)
      Converts the specified object to a number and formats it according to the pattern or style returned by FormatConfig.getFormat().
      java.lang.String format​(java.lang.String format, java.lang.Object obj)
      Converts the specified object to a number and returns a formatted string representing that number in the locale returned by LocaleConfig.getLocale().
      java.lang.String format​(java.lang.String format, java.lang.Object obj, java.util.Locale locale)
      Converts the specified object to a number and returns a formatted string representing that number in the specified Locale.
      java.text.NumberFormat getNumberFormat​(java.lang.String format, java.util.Locale locale)
      Returns a NumberFormat instance for the specified format and Locale.
      java.lang.String integer​(java.lang.Object obj)
      Convenience method equivalent to $number.format("integer", $foo).
      java.lang.String number​(java.lang.Object obj)
      Convenience method equivalent to $number.format("number", $foo).
      java.lang.String percent​(java.lang.Object obj)
      Convenience method equivalent to $number.format("percent", $foo).
      java.lang.Boolean toBoolean​(java.lang.Object value)
      Converts an object to an instance of Boolean if the object is not already an instance of Boolean.
      java.lang.Number toNumber​(java.lang.Object obj)
      Converts an object to an instance of Number using the format returned by FormatConfig.getFormat() and the Locale returned by LocaleConfig.getLocale() if the object is not already an instance of Number.
      java.lang.Number toNumber​(java.lang.String format, java.lang.Object obj)
      Converts an object to an instance of Number using the specified format and the Locale returned by LocaleConfig.getLocale() if the object is not already an instance of Number.
      java.lang.Number toNumber​(java.lang.String format, java.lang.Object obj, java.util.Locale locale)
      Converts an object to an instance of Number using the specified format and Locale if the object is not already an instance of Number.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • NumberTool

        public NumberTool()
    • Method Detail

      • currency

        public java.lang.String currency​(java.lang.Object obj)
        Convenience method equivalent to $number.format("currency", $foo).
        Parameters:
        obj - the number object to be formatted
        Returns:
        the specified number formatted as a currency
        Since:
        VelocityTools 1.3
      • integer

        public java.lang.String integer​(java.lang.Object obj)
        Convenience method equivalent to $number.format("integer", $foo).
        Parameters:
        obj - the number object to be formatted
        Returns:
        the specified number formatted as an integer
        Since:
        VelocityTools 1.3
      • number

        public java.lang.String number​(java.lang.Object obj)
        Convenience method equivalent to $number.format("number", $foo).
        Parameters:
        obj - the number object to be formatted
        Returns:
        the specified number formatted as a number
        Since:
        VelocityTools 1.3
      • percent

        public java.lang.String percent​(java.lang.Object obj)
        Convenience method equivalent to $number.format("percent", $foo).
        Parameters:
        obj - the number object to be formatted
        Returns:
        the specified number formatted as a percentage
        Since:
        VelocityTools 1.3
      • format

        public java.lang.String format​(java.lang.String format,
                                       java.lang.Object obj)
        Converts the specified object to a number and returns a formatted string representing that number in the locale returned by LocaleConfig.getLocale().
        Parameters:
        format - the formatting instructions
        obj - the number object to be formatted
        Returns:
        a formatted string for this locale representing the specified number or null if the parameters are invalid
        See Also:
        format(String format, Object obj, Locale locale)
      • format

        public java.lang.String format​(java.lang.String format,
                                       java.lang.Object obj,
                                       java.util.Locale locale)
        Converts the specified object to a number and returns a formatted string representing that number in the specified Locale.
        Parameters:
        format - the custom or standard pattern to be used
        obj - the number object to be formatted
        locale - the Locale to be used when formatting
        Returns:
        a formatted string representing the specified number or null if the parameters are invalid
      • getNumberFormat

        public java.text.NumberFormat getNumberFormat​(java.lang.String format,
                                                      java.util.Locale locale)
        Returns a NumberFormat instance for the specified format and Locale. If the format specified is a standard style pattern, then a number instance will be returned with the number style set to the specified style. If it is a custom format, then a customized NumberFormat will be returned.
        Parameters:
        format - the custom or standard formatting pattern to be used
        locale - the Locale to be used
        Returns:
        an instance of NumberFormat
        See Also:
        NumberFormat
      • toNumber

        public java.lang.Number toNumber​(java.lang.Object obj)
        Converts an object to an instance of Number using the format returned by FormatConfig.getFormat() and the Locale returned by LocaleConfig.getLocale() if the object is not already an instance of Number.
        Parameters:
        obj - the number to convert
        Returns:
        the object as a Number or null if no conversion is possible
      • toNumber

        public java.lang.Number toNumber​(java.lang.String format,
                                         java.lang.Object obj)
        Converts an object to an instance of Number using the specified format and the Locale returned by LocaleConfig.getLocale() if the object is not already an instance of Number.
        Parameters:
        format - - the format the number is in
        obj - - the number to convert
        Returns:
        the object as a Number or null if no conversion is possible
        See Also:
        toNumber(String format, Object obj, Locale locale)
      • toNumber

        public java.lang.Number toNumber​(java.lang.String format,
                                         java.lang.Object obj,
                                         java.util.Locale locale)
        Converts an object to an instance of Number using the specified format and Locale if the object is not already an instance of Number.
        Parameters:
        format - - the format the number is in
        obj - - the number to convert
        locale - - the Locale
        Returns:
        the object as a Number or null if no conversion is possible
        See Also:
        NumberFormat.parse(java.lang.String, java.text.ParsePosition)
      • toBoolean

        public java.lang.Boolean toBoolean​(java.lang.Object value)
        Converts an object to an instance of Boolean if the object is not already an instance of Boolean.
        Parameters:
        value - the object to be converted
        Returns:
        a Boolean object for the specified value or null if the value is null or the conversion failed