# Class BigIntegerValidator

java.lang.Object
org.apache.commons.validator.routines.AbstractFormatValidator
org.apache.commons.validator.routines.AbstractNumberValidator
org.apache.commons.validator.routines.BigIntegerValidator

All Implemented Interfaces:
  `Serializable`

public class BigIntegerValidator extends AbstractNumberValidator
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:
  - Serialized Form

- ## Field Summary

  ### Fields inherited from class AbstractNumberValidator

  `CURRENCY_FORMAT, PERCENT_FORMAT, STANDARD_FORMAT`
  Modifier and Type
  Field
  Description
  `static final int`
  `CURRENCY_FORMAT`
  Currency `NumberFormat` type.
  `static final int`
  `PERCENT_FORMAT`
  Percent `NumberFormat` type.
  `static final int`
  `STANDARD_FORMAT`
  Standard `NumberFormat` type.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BigIntegerValidator()`
  Constructs a strict instance.
  `BigIntegerValidator(boolean strict, int formatType)`
  Construct an instance with the specified strict setting and format type.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected Format`
  `getFormat(String pattern, Locale locale)`
  Returns a `Format` that parses to a `BigDecimal` so the exact value of the input is preserved.
  `static BigIntegerValidator`
  `getInstance()`
  Gets the singleton instance of this validator.
  `boolean`
  `isInRange(BigInteger value, long min, long max)`
  Tests if the value is within a specified range.
  `boolean`
  `maxValue(Number value, Number max)`
  Tests if the value is less than or equal to a maximum, comparing the exact values.
  `boolean`
  `maxValue(BigInteger value, long max)`
  Tests if the value is less than or equal to a maximum.
  `boolean`
  `minValue(Number value, Number min)`
  Tests if the value is greater than or equal to a minimum, comparing the exact values.
  `boolean`
  `minValue(BigInteger value, long min)`
  Tests if the value is greater than or equal to a minimum.
  `protected Object`
  `processParsedValue(Object value, Format formatter)`
  Converts the parsed value to a `BigInteger`.
  `BigInteger`
  `validate(String value)`
  Validates and converts a `BigInteger` using the default `Locale`.
  `BigInteger`
  `validate(String value, String pattern)`
  Validates and converts a `BigInteger` using the specified pattern.
  `BigInteger`
  `validate(String value, String pattern, Locale locale)`
  Validates and converts a `BigInteger` using the specified pattern and/ or `Locale`.
  `BigInteger`
  `validate(String value, Locale locale)`
  Validates and converts a `BigInteger` using the specified `Locale`.

  ### Methods inherited from class AbstractNumberValidator

  `determineScale, getFormat, getFormatType, isAllowFractions, isInRange, isValid, parse`
  Modifier and Type
  Method
  Description
  `protected int`
  `determineScale(NumberFormat format)`
  Returns the multiplier of the `NumberFormat`.
  `protected Format`
  `getFormat(Locale locale)`
  Gets the `NumberFormat` for the specified Locale.
  `int`
  `getFormatType()`
  Gets the type of `NumberFormat` created by this validator instance.
  `boolean`
  `isAllowFractions()`
  Tests whether the number being validated is a decimal or integer.
  `boolean`
  `isInRange(Number value, Number min, Number max)`
  Tests if the value is within a specified range.
  `boolean`
  `isValid(String value, String pattern, Locale locale)`
  Tests validity using the specified `Locale`.
  `protected Object`
  `parse(String value, String pattern, Locale locale)`
  Parses the value using the specified pattern.

  ### Methods inherited from class AbstractFormatValidator

  `format, format, format, format, format, isStrict, isValid, isValid, isValid, parse`
  Modifier and Type
  Method
  Description
  `String`
  `format(Object value)`
  Formats an object into a `String` using the default Locale.
  `String`
  `format(Object value, String pattern)`
  Formats an object into a `String` using the specified pattern.
  `String`
  `format(Object value, String pattern, Locale locale)`
  Formats an object using the specified pattern and/or `Locale`.
  `protected String`
  `format(Object value, Format formatter)`
  Formats a value with the specified `Format`.
  `String`
  `format(Object value, Locale locale)`
  Formats an object into a `String` using the specified Locale.
  `boolean`
  `isStrict()`
  Tests whether validated values should adhere strictly to the `Format` used.
  `boolean`
  `isValid(String value)`
  Validates using the default `Locale`.
  `boolean`
  `isValid(String value, String pattern)`
  Validates using the specified pattern.
  `boolean`
  `isValid(String value, Locale locale)`
  Validates using the specified `Locale`.
  `protected Object`
  `parse(String value, Format formatter)`
  Parses the value with the specified `Format`.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### BigIntegerValidator

    public 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

    public static BigIntegerValidator 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.