Class BigIntegerValidator

All Implemented Interfaces:
Serializable

BigInteger Validation and Conversion routines (java.math.BigInteger).

This validator provides a number of methods for validating/converting a String value to a BigInteger 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 BigInteger value.

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:

  • 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
Since:
1.3.0
See Also:
  • Constructor Details

    • BigIntegerValidator

      Constructs a strict instance.
    • BigIntegerValidator

      public BigIntegerValidator(boolean strict, int formatType)
      Construct an instance with the specified strict setting and format type.

      The formatType specified what type of NumberFormat is 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 - true if strict Format parsing should be used.
      formatType - The NumberFormat type to create for validation, default is STANDARD_FORMAT.
  • Method Details

    • getInstance

      Gets the singleton instance of this validator.
      Returns:
      A singleton instance of the BigIntegerValidator.
    • getFormat

      protected Format getFormat(String pattern, Locale locale)
      Returns a Format that parses to a BigDecimal so the exact value of the input is preserved.

      The superclass leaves DecimalFormat in its default mode, where parse yields a Double for a value outside the long range and so rounds an integer carrying more significant digits than a double can hold. Enabling DecimalFormat.setParseBigDecimal(boolean) keeps the full magnitude through parsing before it is converted to a BigInteger.

      Overrides:
      getFormat in class AbstractNumberValidator
      Parameters:
      pattern - The pattern used to validate the value against or null to use the default for the Locale.
      locale - The locale to use for the format, system default if null.
      Returns:
      The Format to use.
    • isInRange

      public boolean isInRange(BigInteger value, long min, long max)
      Tests if the value is within a specified range.
      Parameters:
      value - The Number value to check.
      min - The minimum value of the range.
      max - The maximum value of the range.
      Returns:
      true if the value is within the specified range.
    • maxValue

      public boolean maxValue(BigInteger value, long max)
      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:
      true if the value is less than or equal to the maximum.
    • maxValue

      public boolean maxValue(Number value, Number max)
      Tests if the value is less than or equal to a maximum, comparing the exact values.

      This overrides the Number overload inherited from the superclass, which narrows the value to a long before comparing and so loses magnitude for a BigInteger outside the long range. The operands are compared as BigDecimal so a non-integer bound keeps its fractional part instead of being truncated towards zero. A non-finite Double or Float operand keeps the doubleValue() comparison, since BigDecimal cannot represent NaN or an infinity.

      Overrides:
      maxValue in class AbstractNumberValidator
      Parameters:
      value - The value validation is being performed on.
      max - The maximum value.
      Returns:
      true if the value is less than or equal to the maximum.
    • minValue

      public boolean minValue(BigInteger value, long min)
      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:
      true if the value is greater than or equal to the minimum.
    • minValue

      public boolean minValue(Number value, Number min)
      Tests if the value is greater than or equal to a minimum, comparing the exact values.

      This overrides the Number overload inherited from the superclass, which narrows the value to a long before comparing and so loses magnitude for a BigInteger outside the long range. The operands are compared as BigDecimal so a non-integer bound keeps its fractional part instead of being truncated towards zero. A non-finite Double or Float operand keeps the doubleValue() comparison, since BigDecimal cannot represent NaN or an infinity.

      Overrides:
      minValue in class AbstractNumberValidator
      Parameters:
      value - The value validation is being performed on.
      min - The minimum value.
      Returns:
      true if the value is greater than or equal to the minimum.
    • processParsedValue

      protected Object processParsedValue(Object value, Format formatter)
      Converts the parsed value to a BigInteger.
      Specified by:
      processParsedValue in class AbstractNumberValidator
      Parameters:
      value - The parsed Number object created.
      formatter - The Format used to parse the value with.
      Returns:
      The parsed Number converted to a BigInteger.
    • validate

      public BigInteger validate(String value)
      Validates and converts a BigInteger using the default Locale.
      Parameters:
      value - The value validation is being performed on.
      Returns:
      The parsed BigInteger if valid or null if invalid.
    • validate

      public BigInteger validate(String value, Locale locale)
      Validates and converts a BigInteger using the specified Locale.
      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 BigInteger if valid or null if invalid.
    • validate

      public BigInteger validate(String value, String pattern)
      Validates and converts a BigInteger using the specified pattern.
      Parameters:
      value - The value validation is being performed on.
      pattern - The pattern used to validate the value against.
      Returns:
      The parsed BigInteger if valid or null if invalid.
    • validate

      public BigInteger validate(String value, String pattern, Locale locale)
      Validates and converts a BigInteger using the specified pattern and/ or Locale.
      Parameters:
      value - The value validation is being performed on.
      pattern - The pattern used to validate the value against, or the default for the Locale if null.
      locale - The locale to use for the date format, system default if null.
      Returns:
      The parsed BigInteger if valid or null if invalid.