
net.contargo.validation.bigdecimal.BigDecimalConstraintValidator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of validation Show documentation
Show all versions of validation Show documentation
Validation is a small library for validation purposes
The newest version!
package net.contargo.validation.bigdecimal;
import java.math.BigDecimal;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
/**
* BigDecimal Validator to validate a BigDecimal by his maximum and minimum precision and maxFractionalPlaces. Because
* the annotation {@link javax.validation.constraints.Digits Digits} can only take longs and no floatingnumbers.
*
* Use this Validator with the supported annotation
* {@link net.contargo.validation.bigdecimal.BigDecimalValidate BigDecimalValidate}
*
* @author Tobias Schneider - [email protected]
*/
public final class BigDecimalConstraintValidator implements ConstraintValidator {
private long maxDecimalPlaces;
private long minDecimalPlaces;
private long maxFractionalPlaces;
private double minValue;
private double maxValue;
private BigDecimalValidator bigDecimalValidator;
@Override
public void initialize(final BigDecimalValidate bigDecimalValidate) {
maxDecimalPlaces = bigDecimalValidate.maxDecimalPlaces();
minDecimalPlaces = bigDecimalValidate.minDecimalPlaces();
maxFractionalPlaces = bigDecimalValidate.maxFractionalPlaces();
minValue = bigDecimalValidate.minValue();
maxValue = bigDecimalValidate.maxValue();
bigDecimalValidator = new BigDecimalValidator();
}
@Override
public boolean isValid(final Object object, final ConstraintValidatorContext constraintValidatorContext) {
if (object == null) {
// default validator will check that
return true;
} else if (object instanceof BigDecimal) {
BigDecimal bigDecimal = new BigDecimal(object.toString());
BigDecimalValidationRules bigDecimalValidationRules = new BigDecimalValidationRules.Builder()
.maxDecimalPlaces(maxDecimalPlaces).minDecimalPlaces(minDecimalPlaces).maxFractionalPlaces(
maxFractionalPlaces).minValue(minValue).maxValue(maxValue).build();
BigDecimalValidationResult result = bigDecimalValidator.validate(bigDecimal, bigDecimalValidationRules);
if (!result.isValid()) {
addMessage(constraintValidatorContext, result.getFailMessage());
return false;
}
} else {
return false;
}
return true;
}
public void setBigDecimalValidator(BigDecimalValidator bigDecimalValidator) {
this.bigDecimalValidator = bigDecimalValidator;
}
private void addMessage(ConstraintValidatorContext constraintValidatorContext, String message) {
if (constraintValidatorContext != null) {
constraintValidatorContext.disableDefaultConstraintViolation();
constraintValidatorContext.buildConstraintViolationWithTemplate(message).addConstraintViolation();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy