Package com.inductiveautomation.rm.base
Class RMNumberFormat
java.lang.Object
java.text.Format
java.text.NumberFormat
java.text.DecimalFormat
com.inductiveautomation.rm.base.RMNumberFormat
- All Implemented Interfaces:
- Archivable,- RMFormat,- Serializable,- Cloneable
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.
 
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 preceded 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=.".
Removed arbitrary decimal and grouping separators in 7.8.1
- See Also:
- 
Nested Class SummaryNested classes/interfaces inherited from class java.text.NumberFormatNumberFormat.Field, NumberFormat.Style
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final RMNumberFormatstatic final RMNumberFormatstatic final RMNumberFormatstatic final RMNumberFormatFields inherited from class java.text.NumberFormatFRACTION_FIELD, INTEGER_FIELD
- 
Constructor SummaryConstructorsConstructorDescriptionCreates an uninitialized number format.RMNumberFormat(RMNumberFormat aFormat) Creates a number format identical to the given format.RMNumberFormat(String aFormatString) Creates a number format for the given format string.
- 
Method SummaryModifier and TypeMethodDescriptionprotected DecimalFormatSymbolsCreates new decimal format symbols.booleanStandard equals implementation.Returns a formatted version of the given object.fromXML(RXArchiver anArchiver, RXElement anElement) XML unarchival.Returns the decimal separator.static LocaleReturns the default locale.Returns the format string for this format.Returns the Currency symbol used for this locale.Returns the String that is substituted when this format is asked to provide stringForObjectValue(null).Returns the thousands separator.booleanReturns whether currency symbol is used (dollars, local or international).booleanReturns whether local currency symbol is used.booleanReturns whether this format shows negative values in red.booleanReturns whether percent symbol is used.voidsetDecimalSeparator(String aValue) Sets the decimal separator.static voidsetDefaultLocale(Locale aLocale) Sets the default locale.voidsetFormatString(String aFormat) Sets the format string for this format.protected voidsetFormatStringSafe(String aFormat) Used when deserializing, because we don't want an exception messing with opening the report.voidsetLocalCurrencySymbolUsed(boolean aFlag) Sets whether local currency symbol is used.voidsetNegativeInRed(boolean aFlag) Sets whether this format shows negative values in red.voidsetNullString(String aString) Sets the String that is substituted when this format is asked to provide stringForObjectValue(null).voidsetPercentSymbolUsed(boolean aFlag) Returns whether percent symbol is used.voidsetThousandsSeparator(String aValue) Sets the thousands separator.toXML(RXArchiver anArchiver) XML archival.Methods inherited from class java.text.DecimalFormatapplyLocalizedPattern, 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, toPatternMethods inherited from class java.text.NumberFormatformat, format, getAvailableLocales, getCompactNumberInstance, getCompactNumberInstance, getCurrencyInstance, getCurrencyInstance, getInstance, getInstance, getIntegerInstance, getIntegerInstance, getNumberInstance, getNumberInstance, getPercentInstance, getPercentInstance, isGroupingUsed, isParseIntegerOnly, parse, parseObject, setParseIntegerOnlyMethods inherited from class java.text.Formatformat, parseObject
- 
Field Details- 
PLAIN
- 
BASIC
- 
DOLLARS
- 
CURRENCY
 
- 
- 
Constructor Details- 
RMNumberFormatpublic RMNumberFormat()Creates an uninitialized number format.
- 
RMNumberFormatCreates a number format for the given format string.
- 
RMNumberFormatCreates a number format identical to the given format.
 
- 
- 
Method Details- 
createDecimalFormatSymbolsCreates new decimal format symbols.
- 
getNullStringReturns the String that is substituted when this format is asked to provide stringForObjectValue(null).
- 
setNullStringSets the String that is substituted when this format is asked to provide stringForObjectValue(null).
- 
isNegativeInRedpublic boolean isNegativeInRed()Returns whether this format shows negative values in red.
- 
setNegativeInRedpublic void setNegativeInRed(boolean aFlag) Sets whether this format shows negative values in red.
- 
getLocalCurrencySymbolReturns the Currency symbol used for this locale.
- 
isLocalCurrencySymbolUsedpublic boolean isLocalCurrencySymbolUsed()Returns whether local currency symbol is used.
- 
setLocalCurrencySymbolUsedpublic void setLocalCurrencySymbolUsed(boolean aFlag) Sets whether local currency symbol is used.
- 
isCurrencySymbolUsedpublic boolean isCurrencySymbolUsed()Returns whether currency symbol is used (dollars, local or international).
- 
isPercentSymbolUsedpublic boolean isPercentSymbolUsed()Returns whether percent symbol is used.
- 
setPercentSymbolUsedpublic void setPercentSymbolUsed(boolean aFlag) Returns whether percent symbol is used.
- 
getThousandsSeparatorReturns the thousands separator.
- 
setThousandsSeparatorSets the thousands separator.
- 
getDecimalSeparatorReturns the decimal separator.
- 
setDecimalSeparatorSets the decimal separator.
- 
getFormatStringReturns 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. Ability to set arbitrary decimal and grouping separators removed in 7.8.1, but left this intact in case someone set them in 7.8.0. And then removed altogether in 7.8.2, because it plays havoc in non-English locales. If users need a whacky formatting, they need to do it themselves in scripting.- Specified by:
- getFormatStringin interface- RMFormat
 
- 
setFormatStringSets the format string for this format. This is basically the default applyPattern() of DecimalFormat. Removed ability to set arbitrary decimal and grouping separators in 7.8.1, in favor of compatibility with rest of ignition.- Specified by:
- setFormatStringin interface- RMFormat
 
- 
setFormatStringSafeUsed when deserializing, because we don't want an exception messing with opening the report. We'll prevent users from setting a bad string themselves with setFormatString
- 
formatRMReturns a formatted version of the given object.
- 
getDefaultLocaleReturns the default locale.
- 
setDefaultLocaleSets the default locale.
- 
equalsStandard equals implementation.- Overrides:
- equalsin class- DecimalFormat
 
- 
toXMLXML archival.- Specified by:
- toXMLin interface- Archivable
 
- 
fromXMLXML unarchival.- Specified by:
- fromXMLin interface- Archivable
 
 
-