commons.validator.routines.DoubleValidator Maven / Gradle / Ivy
Show all versions of android-saripaar Show documentation
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package commons.validator.routines;
import java.text.Format;
import java.util.Locale;
/**
* Double Validation and Conversion routines (java.lang.Double
).
*
* This validator provides a number of methods for
* validating/converting a String
value to
* a Double
using java.text.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 Double
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
*
*
* @version $Revision$
* @since Validator 1.3.0
*/
public class DoubleValidator extends AbstractNumberValidator {
private static final long serialVersionUID = 5867946581318211330L;
private static final DoubleValidator VALIDATOR = new DoubleValidator();
/**
* Return a singleton instance of this validator.
* @return A singleton instance of the DoubleValidator.
*/
public static DoubleValidator getInstance() {
return VALIDATOR;
}
/**
* Construct a strict instance.
*/
public DoubleValidator() {
this(true, STANDARD_FORMAT);
}
/**
* 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).
*
*
* @param strict true
if strict
* Format
parsing should be used.
* @param formatType The NumberFormat
type to
* create for validation, default is STANDARD_FORMAT.
*/
public DoubleValidator(boolean strict, int formatType) {
super(strict, formatType, true);
}
/**
* Validate/convert a Double
using the default
* Locale
.
*
* @param value The value validation is being performed on.
* @return The parsed Double
if valid or null
* if invalid.
*/
public Double validate(String value) {
return (Double)parse(value, (String)null, (Locale)null);
}
/**
*
Validate/convert a Double
using the
* specified pattern.
*
* @param value The value validation is being performed on.
* @param pattern The pattern used to validate the value against.
* @return The parsed BigDecimal
if valid or null
if invalid.
*/
public Double validate(String value, String pattern) {
return (Double)parse(value, pattern, (Locale)null);
}
/**
*
Validate/convert a Double
using the
* specified Locale
.
*
* @param value The value validation is being performed on.
* @param locale The locale to use for the number format, system default if null.
* @return The parsed Double
if valid or null
if invalid.
*/
public Double validate(String value, Locale locale) {
return (Double)parse(value, (String)null, locale);
}
/**
*
Validate/convert a Double
using the
* specified pattern and/ or Locale
.
*
* @param value The value validation is being performed on.
* @param pattern The pattern used to validate the value against, or the
* default for the Locale
if null
.
* @param locale The locale to use for the date format, system default if null.
* @return The parsed Double
if valid or null
if invalid.
*/
public Double validate(String value, String pattern, Locale locale) {
return (Double)parse(value, pattern, locale);
}
/**
* Check if the value is within a specified range.
*
* @param value The Number
value to check.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
* @return true
if the value is within the
* specified range.
*/
public boolean isInRange(double value, double min, double max) {
return (value >= min && value <= max);
}
/**
* Check if the value is within a specified range.
*
* @param value The Number
value to check.
* @param min The minimum value of the range.
* @param max The maximum value of the range.
* @return true
if the value is within the
* specified range.
*/
public boolean isInRange(Double value, double min, double max) {
return isInRange(value.doubleValue(), min, max);
}
/**
* Check if the value is greater than or equal to a minimum.
*
* @param value The value validation is being performed on.
* @param min The minimum value.
* @return true
if the value is greater than
* or equal to the minimum.
*/
public boolean minValue(double value, double min) {
return (value >= min);
}
/**
* Check if the value is greater than or equal to a minimum.
*
* @param value The value validation is being performed on.
* @param min The minimum value.
* @return true
if the value is greater than
* or equal to the minimum.
*/
public boolean minValue(Double value, double min) {
return minValue(value.doubleValue(), min);
}
/**
* Check if the value is less than or equal to a maximum.
*
* @param value The value validation is being performed on.
* @param max The maximum value.
* @return true
if the value is less than
* or equal to the maximum.
*/
public boolean maxValue(double value, double max) {
return (value <= max);
}
/**
* Check if the value is less than or equal to a maximum.
*
* @param value The value validation is being performed on.
* @param max The maximum value.
* @return true
if the value is less than
* or equal to the maximum.
*/
public boolean maxValue(Double value, double max) {
return maxValue(value.doubleValue(), max);
}
/**
* Convert the parsed value to a Double
.
*
* @param value The parsed Number
object created.
* @param formatter The Format used to parse the value with.
* @return The validated/converted Double
value if valid
* or null
if invalid.
*/
protected Object processParsedValue(Object value, Format formatter) {
if (value instanceof Double) {
return value;
}
return new Double(((Number)value).doubleValue());
}
}