Class BigDecimalValidator
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
CurrencyValidator, PercentValidator
java.math.BigDecimal).
This validator provides a number of methods for validating/converting a String value to a BigDecimal using NumberFormat to parse
either:
- using the default format for the default
Locale - using a specified pattern with the default
Locale - using the default format for a specified
Locale - using a specified pattern with a specified
Locale
Use one of the isValid() methods to just validate or one of the validate() methods to validate and receive a converted
BigDecimal value.
Fraction/decimal values are automatically trimmed to the appropriate length.
Once a value has been successfully converted the following methods can be used to perform minimum, maximum and range checks:
minValue()checks whether the value is greater than or equal to a specified minimum.maxValue()checks whether the value is less than or equal to a specified maximum.isInRange()checks whether the value is within a specified range of values.
So that the same mechanism used for parsing an input value for validation can be used to format output, corresponding format()
methods are also provided. That is you can format either:
- Since:
- 1.3.0
- See Also:
-
Field Summary
Fields inherited from class AbstractNumberValidator
CURRENCY_FORMAT, PERCENT_FORMAT, STANDARD_FORMATModifier and TypeFieldDescriptionstatic final intCurrencyNumberFormattype.static final intPercentNumberFormattype.static final intStandardNumberFormattype. -
Constructor Summary
ConstructorsModifierConstructorDescriptionConstructs a strict instance.BigDecimalValidator(boolean strict) Construct an instance with the specified strict setting.protectedBigDecimalValidator(boolean strict, int formatType, boolean allowFractions) Constructs an instance with the specified strict setting and format type. -
Method Summary
Modifier and TypeMethodDescriptionprotected FormatReturns aFormatthat parses to aBigDecimalso the exact value of the input is preserved.static BigDecimalValidatorGets the singleton instance of this validator.booleanisInRange(BigDecimal value, double min, double max) Tests if the value is within a specified range.booleanTests if the value is less than or equal to a maximum, comparing the exact values.booleanmaxValue(BigDecimal value, double max) Tests if the value is less than or equal to a maximum.booleanTests if the value is greater than or equal to a minimum, comparing the exact values.booleanminValue(BigDecimal value, double min) Tests if the value is greater than or equal to a minimum.protected ObjectprocessParsedValue(Object value, Format formatter) Converts the parsed value to aBigDecimal.Validates and converts aBigDecimalusing the defaultLocale.Validates and converts aBigDecimalusing the specified pattern.Validates and converts aBigDecimalusing the specified pattern and/ orLocale.Validates and converts aBigDecimalusing the specifiedLocale.Methods inherited from class AbstractNumberValidator
determineScale, getFormat, getFormatType, isAllowFractions, isInRange, isValid, parseModifier and TypeMethodDescriptionprotected intdetermineScale(NumberFormat format) Returns the multiplier of theNumberFormat.protected FormatGets theNumberFormatfor the specified Locale.intGets the type ofNumberFormatcreated by this validator instance.booleanTests whether the number being validated is a decimal or integer.booleanTests if the value is within a specified range.booleanTests validity using the specifiedLocale.protected ObjectParses the value using the specified pattern.Methods inherited from class AbstractFormatValidator
format, format, format, format, format, isStrict, isValid, isValid, isValid, parseModifier and TypeMethodDescriptionFormats an object into aStringusing the default Locale.Formats an object into aStringusing the specified pattern.Formats an object using the specified pattern and/orLocale.protected StringFormats a value with the specifiedFormat.Formats an object into aStringusing the specified Locale.booleanisStrict()Tests whether validated values should adhere strictly to theFormatused.booleanValidates using the defaultLocale.booleanValidates using the specified pattern.booleanValidates using the specifiedLocale.protected ObjectParses the value with the specifiedFormat.
-
Constructor Details
-
BigDecimalValidator
public BigDecimalValidator()Constructs a strict instance. -
BigDecimalValidator
Construct an instance with the specified strict setting.- Parameters:
strict-trueif strictFormatparsing should be used.
-
BigDecimalValidator
Constructs an instance with the specified strict setting and format type.The
formatTypespecified what type ofNumberFormatis created - valid types are:- AbstractNumberValidator.STANDARD_FORMAT -to create standard number formats (the default).
- AbstractNumberValidator.CURRENCY_FORMAT -to create currency number formats.
- AbstractNumberValidator.PERCENT_FORMAT -to create percent number formats (the default).
- Parameters:
strict-trueif strictFormatparsing should be used.formatType- TheNumberFormattype to create for validation, default is STANDARD_FORMAT.allowFractions-trueif fractions are allowed orfalseif integers only.
-
-
Method Details
-
getInstance
Gets the singleton instance of this validator.- Returns:
- A singleton instance of the BigDecimalValidator.
-
getFormat
Returns aFormatthat parses to aBigDecimalso the exact value of the input is preserved.The superclass leaves
DecimalFormatin its default mode, whereparseyields aDoublefor a fractional value and so rounds an input carrying more significant digits than adoublecan hold. EnablingDecimalFormat.setParseBigDecimal(boolean)keeps the value as aBigDecimalthrough parsing.- Overrides:
getFormatin classAbstractNumberValidator- Parameters:
pattern- The pattern used to validate the value against ornullto use the default for theLocale.locale- The locale to use for the format, system default if null.- Returns:
- The
Formatto use.
-
isInRange
Tests if the value is within a specified range.- Parameters:
value- TheNumbervalue to check.min- The minimum value of the range.max- The maximum value of the range.- Returns:
trueif the value is within the specified range.
-
maxValue
Tests if the value is less than or equal to a maximum.- Parameters:
value- The value validation is being performed on.max- The maximum value.- Returns:
trueif the value is less than or equal to the maximum.
-
maxValue
Tests if the value is less than or equal to a maximum, comparing the exact values.This overrides the
Numberoverload inherited from the superclass, which narrows the value to adoublebefore comparing and so loses precision for aBigDecimalthat differs from the bound only beyond double precision. A non-finiteDoubleorFloatoperand keeps thedoubleValue()comparison so the documented infinity behavior is unchanged.- Overrides:
maxValuein classAbstractNumberValidator- Parameters:
value- The value validation is being performed on.max- The maximum value.- Returns:
trueif the value is less than or equal to the maximum.
-
minValue
Tests if the value is greater than or equal to a minimum.- Parameters:
value- The value validation is being performed on.min- The minimum value.- Returns:
trueif the value is greater than or equal to the minimum.
-
minValue
Tests if the value is greater than or equal to a minimum, comparing the exact values.This overrides the
Numberoverload inherited from the superclass, which narrows the value to adoublebefore comparing and so loses precision for aBigDecimalthat differs from the bound only beyond double precision. A non-finiteDoubleorFloatoperand keeps thedoubleValue()comparison so the documented infinity behavior is unchanged.- Overrides:
minValuein classAbstractNumberValidator- Parameters:
value- The value validation is being performed on.min- The minimum value.- Returns:
trueif the value is greater than or equal to the minimum.
-
processParsedValue
Converts the parsed value to aBigDecimal.- Specified by:
processParsedValuein classAbstractNumberValidator- Parameters:
value- The parsedNumberobject created.formatter- The Format used to parse the value with.- Returns:
- The parsed
Numberconverted to aBigDecimal.
-
validate
Validates and converts aBigDecimalusing the defaultLocale.- Parameters:
value- The value validation is being performed on.- Returns:
- The parsed
BigDecimalif valid ornullif invalid.
-
validate
Validates and converts aBigDecimalusing the specifiedLocale.- Parameters:
value- The value validation is being performed on.locale- The locale to use for the number format, system default if null.- Returns:
- The parsed
BigDecimalif valid ornullif invalid.
-
validate
Validates and converts aBigDecimalusing the specified pattern.- Parameters:
value- The value validation is being performed on.pattern- The pattern used to validate the value against, or the default for theLocaleifnull.- Returns:
- The parsed
BigDecimalif valid ornullif invalid.
-
validate
Validates and converts aBigDecimalusing the specified pattern and/ orLocale.- Parameters:
value- The value validation is being performed on.pattern- The pattern used to validate the value against, or the default for theLocaleifnull.locale- The locale to use for the date format, system default if null.- Returns:
- The parsed
BigDecimalif valid ornullif invalid.
-