Class RMNumberFormat
- java.lang.Object
-
- java.text.Format
-
- java.text.NumberFormat
-
- java.text.DecimalFormat
-
- com.reportmill.base.RMNumberFormat
-
- All Implemented Interfaces:
RMArchiver.Archiving
,RMFormat
,java.io.Serializable
,java.lang.Cloneable
public class RMNumberFormat extends java.text.DecimalFormat implements RMFormat, RMArchiver.Archiving
This subclass extends DecimalFormat to implement ReportMill's RMFormat interface and to support the extended features "Negative in Red" and "Null String". It also has a toPattern like method, getFormatString, for the purposes of archival.Those getFormatString/setFormatString support arbitrary decimal and grouping separators. This may be dangerous since when people use the default English versions of those, I think they change depending on the default JVM Locale. Only dangerous if someone wants to generate English Separators from a foreign local, I guess.
Also, our modified pattern format can be ambiguous if either decimal or grouping separator not included. In this case we assume any separator preceded by a '0' is the decimal separator. This seems reasonable since a decimal separator preceded by # could result in an empty string or a fractional number with no leading zero (like ".123" instead of "0.123") which seems somewhat rare. And also a grouping separator preceeded by 0 seems somewhat rare because it could result in a long zero string like "0,000".
I suppose we should instead have a syntax explicitly declaring decimal and group separators: "$ #,##0.00;ds=,;gs=.".
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static RMNumberFormat
BASIC
static RMNumberFormat
DOLLARS
static RMNumberFormat
PLAIN
-
Constructor Summary
Constructors Constructor Description RMNumberFormat()
Creates an uninitialized number format.RMNumberFormat(RMNumberFormat aFormat)
Creates a number format identical to the given format.RMNumberFormat(java.lang.String aFormatString)
Creates a number format for the given format string.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object anObj)
Standard equals implementation.java.lang.Object
formatRM(java.lang.Object anObj)
Returns a formatted version of the given object.java.lang.Object
fromXML(RXArchiver anArchiver, RXElement anElement)
XML unarchival.java.lang.String
getDecimalSeparator()
Returns the decimal separator.java.lang.String
getFormatString()
Returns the format string for this format.java.lang.String
getNullString()
Returns the String that is substituted when this format is asked to provide stringForObjectValue(null).java.lang.String
getThousandsSeparator()
Returns the thousands separator.java.lang.Object
initWithArchiver(RMArchiver anArchiver)
Legacy archival.boolean
isNegativeInRed()
Returns whether this format shows negative values in red.void
setDecimalSeparator(java.lang.String aValue)
Sets the decimal separator.void
setFormatString(java.lang.String aFormat)
Sets the format string for this format.void
setNegativeInRed(boolean aFlag)
Sets whether this format shows negative values in red.void
setNullString(java.lang.String aString)
Sets the String that is substituted when this format is asked to provide stringForObjectValue(null).void
setThousandsSeparator(java.lang.String aValue)
Sets the thousands separator.RXElement
toXML(RXArchiver anArchiver)
XML archival.-
Methods inherited from class java.text.DecimalFormat
applyLocalizedPattern, applyPattern, clone, format, format, format, formatToCharacterIterator, getCurrency, getDecimalFormatSymbols, getGroupingSize, getMaximumFractionDigits, getMaximumIntegerDigits, getMinimumFractionDigits, getMinimumIntegerDigits, getMultiplier, getNegativePrefix, getNegativeSuffix, getPositivePrefix, getPositiveSuffix, getRoundingMode, hashCode, isDecimalSeparatorAlwaysShown, isParseBigDecimal, parse, setCurrency, setDecimalFormatSymbols, setDecimalSeparatorAlwaysShown, setGroupingSize, setGroupingUsed, setMaximumFractionDigits, setMaximumIntegerDigits, setMinimumFractionDigits, setMinimumIntegerDigits, setMultiplier, setNegativePrefix, setNegativeSuffix, setParseBigDecimal, setPositivePrefix, setPositiveSuffix, setRoundingMode, toLocalizedPattern, toPattern
-
Methods inherited from class java.text.NumberFormat
format, format, getAvailableLocales, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getIntegerInstance, getIntegerInstance, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, isGroupingUsed, isParseIntegerOnly, parse, parseObject, setParseIntegerOnly
-
-
-
-
Field Detail
-
PLAIN
public static RMNumberFormat PLAIN
-
BASIC
public static RMNumberFormat BASIC
-
DOLLARS
public static RMNumberFormat DOLLARS
-
-
Constructor Detail
-
RMNumberFormat
public RMNumberFormat()
Creates an uninitialized number format.
-
RMNumberFormat
public RMNumberFormat(java.lang.String aFormatString)
Creates a number format for the given format string.
-
RMNumberFormat
public RMNumberFormat(RMNumberFormat aFormat)
Creates a number format identical to the given format.
-
-
Method Detail
-
getNullString
public java.lang.String getNullString()
Returns the String that is substituted when this format is asked to provide stringForObjectValue(null).
-
setNullString
public void setNullString(java.lang.String aString)
Sets the String that is substituted when this format is asked to provide stringForObjectValue(null).
-
isNegativeInRed
public boolean isNegativeInRed()
Returns whether this format shows negative values in red.
-
setNegativeInRed
public void setNegativeInRed(boolean aFlag)
Sets whether this format shows negative values in red.
-
getThousandsSeparator
public java.lang.String getThousandsSeparator()
Returns the thousands separator.
-
setThousandsSeparator
public void setThousandsSeparator(java.lang.String aValue)
Sets the thousands separator.
-
getDecimalSeparator
public java.lang.String getDecimalSeparator()
Returns the decimal separator.
-
setDecimalSeparator
public void setDecimalSeparator(java.lang.String aValue)
Sets the decimal separator.
-
getFormatString
public java.lang.String getFormatString()
Returns the format string for this format. This is basically the default toPattern() of DecimalFormat, except that it allows for a arbitrary decimal and grouping separators.- Specified by:
getFormatString
in interfaceRMFormat
-
setFormatString
public void setFormatString(java.lang.String aFormat)
Sets the format string for this format. This is basically the default applyPattern() of DecimalFormat, except that it allows for arbitrary decimal and grouping separators.- Specified by:
setFormatString
in interfaceRMFormat
-
formatRM
public java.lang.Object formatRM(java.lang.Object anObj)
Returns a formatted version of the given object.
-
equals
public boolean equals(java.lang.Object anObj)
Standard equals implementation.- Overrides:
equals
in classjava.text.DecimalFormat
-
toXML
public RXElement toXML(RXArchiver anArchiver)
XML archival.
-
fromXML
public java.lang.Object fromXML(RXArchiver anArchiver, RXElement anElement)
XML unarchival.
-
initWithArchiver
public java.lang.Object initWithArchiver(RMArchiver anArchiver)
Legacy archival.- Specified by:
initWithArchiver
in interfaceRMArchiver.Archiving
-
-