public class ExtendedMessageFormat
extends java.text.MessageFormat
java.text.MessageFormat
to allow pluggable/additional formatting
options for embedded format elements. Client code should specify a registry
of FormatFactory
instances associated with String
format names. This registry will be consulted when the format elements are
parsed from the message pattern. In this way custom patterns can be specified,
and the formats supported by java.text.MessageFormat
can be overridden
at the format and/or format style level (see MessageFormat). A "format element"
embedded in the message pattern is specified (()? signifies optionality):{
argument-number(,
format-name(,
format-style)?)?}
format-name and format-style values are trimmed of surrounding whitespace
in the manner of java.text.MessageFormat
. If format-name denotes
FormatFactory formatFactoryInstance
in registry
, a Format
matching format-name and format-style is requested from
formatFactoryInstance
. If this is successful, the Format
found is used for this format element.
NOTICE:: The various subformat mutator methods are considered unnecessary; they exist on the parent
class to allow the type of customization which it is the job of this class to provide in
a configurable fashion. These methods have thus been disabled and will throw
UnsupportedOperationException
if called.
Limitations inherited from java.text.MessageFormat
:
Format
s, including MessageFormat
and thus
ExtendedMessageFormat
, is not guaranteed.Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
DUMMY_PATTERN |
private static char |
END_FE |
private static java.lang.String |
ESCAPED_QUOTE |
private static int |
HASH_SEED |
private static char |
QUOTE |
private java.util.Map |
registry |
private static long |
serialVersionUID |
private static char |
START_FE |
private static char |
START_FMT |
private java.lang.String |
toPattern |
Constructor and Description |
---|
ExtendedMessageFormat(java.lang.String pattern)
Create a new ExtendedMessageFormat for the default locale.
|
ExtendedMessageFormat(java.lang.String pattern,
java.util.Locale locale)
Create a new ExtendedMessageFormat.
|
ExtendedMessageFormat(java.lang.String pattern,
java.util.Locale locale,
java.util.Map registry)
Create a new ExtendedMessageFormat.
|
ExtendedMessageFormat(java.lang.String pattern,
java.util.Map registry)
Create a new ExtendedMessageFormat for the default locale.
|
Modifier and Type | Method and Description |
---|---|
private StrBuilder |
appendQuotedString(java.lang.String pattern,
java.text.ParsePosition pos,
StrBuilder appendTo,
boolean escapingOn)
Consume a quoted string, adding it to
appendTo if
specified. |
void |
applyPattern(java.lang.String pattern)
Apply the specified pattern.
|
private boolean |
containsElements(java.util.Collection coll)
Learn whether the specified Collection contains non-null elements.
|
boolean |
equals(java.lang.Object obj)
Check if this extended message format is equal to another object.
|
private java.text.Format |
getFormat(java.lang.String desc)
Get a custom format from a format description.
|
private void |
getQuotedString(java.lang.String pattern,
java.text.ParsePosition pos,
boolean escapingOn)
Consume quoted string only
|
int |
hashCode()
Return the hashcode.
|
private java.lang.String |
insertFormats(java.lang.String pattern,
java.util.ArrayList customPatterns)
Insert formats back into the pattern for toPattern() support.
|
private java.text.ParsePosition |
next(java.text.ParsePosition pos)
Convenience method to advance parse position by 1
|
private java.lang.String |
parseFormatDescription(java.lang.String pattern,
java.text.ParsePosition pos)
Parse the format component of a format element.
|
private int |
readArgumentIndex(java.lang.String pattern,
java.text.ParsePosition pos)
Read the argument index from the current format element
|
private void |
seekNonWs(java.lang.String pattern,
java.text.ParsePosition pos)
Consume whitespace from the current parse position.
|
void |
setFormat(int formatElementIndex,
java.text.Format newFormat)
Throws UnsupportedOperationException - see class Javadoc for details.
|
void |
setFormatByArgumentIndex(int argumentIndex,
java.text.Format newFormat)
Throws UnsupportedOperationException - see class Javadoc for details.
|
void |
setFormats(java.text.Format[] newFormats)
Throws UnsupportedOperationException - see class Javadoc for details.
|
void |
setFormatsByArgumentIndex(java.text.Format[] newFormats)
Throws UnsupportedOperationException - see class Javadoc for details.
|
java.lang.String |
toPattern() |
private static final long serialVersionUID
private static final int HASH_SEED
private static final java.lang.String DUMMY_PATTERN
private static final java.lang.String ESCAPED_QUOTE
private static final char START_FMT
private static final char END_FE
private static final char START_FE
private static final char QUOTE
private java.lang.String toPattern
private final java.util.Map registry
public ExtendedMessageFormat(java.lang.String pattern)
pattern
- the pattern to use, not nulljava.lang.IllegalArgumentException
- in case of a bad pattern.public ExtendedMessageFormat(java.lang.String pattern, java.util.Locale locale)
pattern
- the pattern to use, not nulllocale
- the locale to use, not nulljava.lang.IllegalArgumentException
- in case of a bad pattern.public ExtendedMessageFormat(java.lang.String pattern, java.util.Map registry)
pattern
- the pattern to use, not nullregistry
- the registry of format factories, may be nulljava.lang.IllegalArgumentException
- in case of a bad pattern.public ExtendedMessageFormat(java.lang.String pattern, java.util.Locale locale, java.util.Map registry)
pattern
- the pattern to use, not nulllocale
- the locale to use, not nullregistry
- the registry of format factories, may be nulljava.lang.IllegalArgumentException
- in case of a bad pattern.public java.lang.String toPattern()
toPattern
in class java.text.MessageFormat
public final void applyPattern(java.lang.String pattern)
applyPattern
in class java.text.MessageFormat
pattern
- Stringpublic void setFormat(int formatElementIndex, java.text.Format newFormat)
setFormat
in class java.text.MessageFormat
formatElementIndex
- format element indexnewFormat
- the new formatjava.lang.UnsupportedOperationException
public void setFormatByArgumentIndex(int argumentIndex, java.text.Format newFormat)
setFormatByArgumentIndex
in class java.text.MessageFormat
argumentIndex
- argument indexnewFormat
- the new formatjava.lang.UnsupportedOperationException
public void setFormats(java.text.Format[] newFormats)
setFormats
in class java.text.MessageFormat
newFormats
- new formatsjava.lang.UnsupportedOperationException
public void setFormatsByArgumentIndex(java.text.Format[] newFormats)
setFormatsByArgumentIndex
in class java.text.MessageFormat
newFormats
- new formatsjava.lang.UnsupportedOperationException
public boolean equals(java.lang.Object obj)
equals
in class java.text.MessageFormat
obj
- the object to compare topublic int hashCode()
hashCode
in class java.text.MessageFormat
private java.text.Format getFormat(java.lang.String desc)
desc
- Stringprivate int readArgumentIndex(java.lang.String pattern, java.text.ParsePosition pos)
pattern
- pattern to parsepos
- current parse positionprivate java.lang.String parseFormatDescription(java.lang.String pattern, java.text.ParsePosition pos)
pattern
- string to parsepos
- current parse positionprivate java.lang.String insertFormats(java.lang.String pattern, java.util.ArrayList customPatterns)
pattern
- sourcecustomPatterns
- The custom patterns to re-insert, if anyprivate void seekNonWs(java.lang.String pattern, java.text.ParsePosition pos)
pattern
- String to readpos
- current positionprivate java.text.ParsePosition next(java.text.ParsePosition pos)
pos
- ParsePositionpos
private StrBuilder appendQuotedString(java.lang.String pattern, java.text.ParsePosition pos, StrBuilder appendTo, boolean escapingOn)
appendTo
if
specified.pattern
- pattern to parsepos
- current parse positionappendTo
- optional StringBuffer to appendescapingOn
- whether to process escaped quotesappendTo
private void getQuotedString(java.lang.String pattern, java.text.ParsePosition pos, boolean escapingOn)
pattern
- pattern to parsepos
- current parse positionescapingOn
- whether to process escaped quotesprivate boolean containsElements(java.util.Collection coll)
coll
- to checktrue
if some Object was found, false
otherwise.