Package org.apache.calcite.util
Class Template
java.lang.Object
java.text.Format
java.text.MessageFormat
org.apache.calcite.util.Template
- All Implemented Interfaces:
Serializable
,Cloneable
String template.
It is extended from MessageFormat
to allow parameters
to be substituted by name as well as by position.
The following example, using MessageFormat, yields "Happy 64th birthday, Ringo!":
MessageFormat f = new MessageFormat("Happy {0,number}th birthday, {1}!");
Object[] args = {64, "Ringo"};
System.out.println(f.format(args);
Here is the same example using a Template and named parameters:
Template f = new Template("Happy {age,number}th birthday, {name}!");
Map<Object, Object> args = new HashMap<Object, Object>();
args.put("age", 64);
args.put("name", "Ringo");
System.out.println(f.format(args);
Using a Template you can also use positional parameters:
Template f = new Template("Happy {age,number}th birthday, {name}!");
Object[] args = {64, "Ringo"};
System.out.println(f.format(args);
Or a hybrid; here, one argument is specified by name, another by position:
Template f = new Template("Happy {age,number}th birthday, {name}!");
Map<Object, Object> args = new HashMap<Object, Object>();
args.put(0, 64);
args.put("name", "Ringo");
System.out.println(f.format(args);
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class java.text.MessageFormat
MessageFormat.Field
-
Method Summary
Modifier and TypeMethodDescriptionFormats a set of arguments to produce a string.static String
formatByName
(String pattern, Map<Object, Object> argMap) Creates a Template with the given pattern and uses it to format the given arguments.Returns the names of the parameters, in the order that they appeared in the template string.static Template
Creates a Template for the default locale and the specified pattern.static Template
Creates a Template for the specified locale and pattern.Methods inherited from class java.text.MessageFormat
applyPattern, clone, equals, format, format, format, formatToCharacterIterator, getFormats, getFormatsByArgumentIndex, getLocale, hashCode, parse, parse, parseObject, setFormat, setFormatByArgumentIndex, setFormats, setFormatsByArgumentIndex, setLocale, toPattern
Methods inherited from class java.text.Format
format, parseObject
-
Method Details
-
of
Creates a Template for the default locale and the specified pattern.- Parameters:
pattern
- the pattern for this message format- Throws:
IllegalArgumentException
- if the pattern is invalid
-
of
Creates a Template for the specified locale and pattern.- Parameters:
pattern
- the pattern for this message formatlocale
- the locale for this message format- Throws:
IllegalArgumentException
- if the pattern is invalid
-
format
Formats a set of arguments to produce a string.Arguments may appear in the map using named keys (of type String), or positional keys (0-based ordinals represented either as type String or Integer).
- Parameters:
argMap
- A map containing the arguments as (key, value) pairs- Returns:
- Formatted string.
- Throws:
IllegalArgumentException
- if the Format cannot format the given object
-
formatByName
Creates a Template with the given pattern and uses it to format the given arguments. This is equivalent toTemplate
(pattern).format(java.util.Map<java.lang.Object, java.lang.Object>)
(args)- Throws:
IllegalArgumentException
- if the pattern is invalid, or if an argument in thearguments
array is not of the type expected by the format element(s) that use it.
-
getParameterNames
Returns the names of the parameters, in the order that they appeared in the template string.- Returns:
- List of parameter names
-