Class NumberTool
If we need more tools in future, we should look at importing this instead
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 -> 13.55
$number.format('currency',$myNumber) -> $13.55
$number.format('integer',$myNumber) -> 13
Example toolbox.xml config (if you want to use this with VelocityView):
<tool>
<key>number</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.NumberTool</class>
</tool>
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: NumberTool.java,v 1.1 2004/09/16 01:14:57 mchai Exp $
- Author:
- Nathan Bubna, Mike Kienenberger
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe default format to be used when none is specified. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionConverts the specified object to a number and formats it according to the pattern or style returned bygetFormat().Converts the specified object to a number and returns a formatted string representing that number in the locale returned bygetLocale().Converts the specified object to a number and returns a formatted string representing that number in the specifiedLocale.Return the pattern or style to be used for formatting numbers when none is specified.This implementation returns the default locale.protected NumberFormatgetNumberFormat(int numberStyle, Locale locale) Returns aNumberFormatinstance for the specified number style andLocale.getNumberFormat(String format, Locale locale) Returns aNumberFormatinstance for the specified format andLocale.protected intgetStyleAsInt(String style) Checks a string to see if it matches one of the standard NumberFormat style patterns: NUMBER, CURRENCY, PERCENT, INTEGER, or DEFAULT.Converts an object to an instance ofNumberusing the format returned bygetFormat()and theLocalereturned bygetLocale()if the object is not already an instance of Number.Converts an object to an instance ofNumberusing the specified format and theLocalereturned bygetLocale()if the object is not already an instance of Number.
-
Field Details
-
DEFAULT_FORMAT
The default format to be used when none is specified.- See Also:
-
-
Constructor Details
-
NumberTool
public NumberTool()Default constructor. -
NumberTool
-
-
Method Details
-
getLocale
This implementation returns the default locale. Subclasses may override this to return alternate locales. Please note that doing so will affect all formatting methods where no locale is specified in the parameters.- Returns:
- the default
Locale
-
getFormat
Return the pattern or style to be used for formatting numbers when none is specified. This implementation gives a 'default' number format. Subclasses may override this to provide a different default format.NOTE: At some point in the future it may be feasible to configure this value via the toolbox definition, but at present, it is not possible to specify custom tool configurations there. For now you should just override this in a subclass to have a different default.
-
format
Converts the specified object to a number and formats it according to the pattern or style returned bygetFormat().- Parameters:
obj- the number object to be formatted- Returns:
- the specified number formatted as a string
- See Also:
-
format
Converts the specified object to a number and returns a formatted string representing that number in the locale returned bygetLocale().- Parameters:
format- the formatting instructionsobj- the number object to be formatted- Returns:
- a formatted string for this locale representing the specified
number or
nullif the parameters are invalid - See Also:
-
format
Converts the specified object to a number and returns a formatted string representing that number in the specifiedLocale.- Parameters:
format- the custom or standard pattern to be usedobj- the number object to be formattedlocale- theLocaleto be used when formatting- Returns:
- a formatted string representing the specified number or
nullif the parameters are invalid
-
getNumberFormat
Returns aNumberFormatinstance for the specified format andLocale. 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 customizedNumberFormatwill be returned.- Parameters:
format- the custom or standard formatting pattern to be usedlocale- theLocaleto be used- Returns:
- an instance of
NumberFormat - See Also:
-
getNumberFormat
Returns aNumberFormatinstance for the specified number style andLocale.- Parameters:
numberStyle- the number style (number will be ignored if this is less than zero or the number style is not recognized)locale- theLocaleto be used- Returns:
- an instance of
NumberFormatornullif an instance cannot be constructed with the given parameters
-
getStyleAsInt
Checks a string to see if it matches one of the standard NumberFormat style patterns: NUMBER, CURRENCY, PERCENT, INTEGER, or DEFAULT. if it does it will return the integer constant for that pattern. if not, it will return -1.- Parameters:
style- the string to be checked- Returns:
- the int identifying the style pattern
- See Also:
-
toNumber
Converts an object to an instance ofNumberusing the format returned bygetFormat()and theLocalereturned bygetLocale()if the object is not already an instance of Number.- Parameters:
obj- the number to convert- Returns:
- the object as a
Numberornullif no conversion is possible
-
toNumber
Converts an object to an instance ofNumberusing the specified format and theLocalereturned bygetLocale()if the object is not already an instance of Number.- Parameters:
format- - the format the number is inobj- - the number to convert- Returns:
- the object as a
Numberornullif no conversion is possible - See Also:
-
toNumber
-