IsLongValueRule
This commit is contained in:
parent
eb4e730bdf
commit
0c4d747dde
1 changed files with 66 additions and 0 deletions
|
|
@ -0,0 +1,66 @@
|
||||||
|
package ru.spcex.clearing.validation.common.rules;
|
||||||
|
|
||||||
|
import ru.spcex.platform.imdg.validation.ImdgValidationContext;
|
||||||
|
import ru.spcex.platform.utils.enumeration.EnumMessage;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IErrorEnumId;
|
||||||
|
import ru.spcex.platform.utils.validation.IValidationRule;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Проверка поля типа String на возможность преобразования в Long
|
||||||
|
*
|
||||||
|
* @param <R> Класс проверяемого объекта
|
||||||
|
*/
|
||||||
|
public record IsLongValueRule<R>(
|
||||||
|
String fieldName,
|
||||||
|
Function<R, String> getter,
|
||||||
|
IErrorEnumId errorEmptyRequiredField,
|
||||||
|
IErrorEnumId errorWrongFieldValue,
|
||||||
|
boolean required
|
||||||
|
) implements IValidationRule<ImdgValidationContext<R>> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param fieldName Название поля класса, используется для передачи ошибки
|
||||||
|
* @param getter Метод получения проверяемого поля
|
||||||
|
* @param errorEmptyRequiredField Ошибка, которая будет возвращена, если поле пустое
|
||||||
|
* @param errorWrongFieldValue Ошибка, которая будет возвращена, если поле нельзя преобразовать в Long
|
||||||
|
* @param required Флаг обязательности поля
|
||||||
|
* @param <R> Класс проверяемого объекта
|
||||||
|
*/
|
||||||
|
public static <R> IsLongValueRule<R> instance(String fieldName,
|
||||||
|
Function<R, String> getter,
|
||||||
|
IErrorEnumId errorEmptyRequiredField,
|
||||||
|
IErrorEnumId errorWrongFieldValue,
|
||||||
|
boolean required) {
|
||||||
|
return new IsLongValueRule<>(fieldName, getter, errorEmptyRequiredField, errorWrongFieldValue, required);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param fieldName Название поля класса, используется для передачи ошибки
|
||||||
|
* @param getter Метод получения проверяемого поля
|
||||||
|
* @param errorEmptyRequiredField Ошибка, которая будет возвращена, если поле пустое
|
||||||
|
* @param errorWrongFieldValue Ошибка, которая будет возвращена, если поле нельзя преобразовать в Long
|
||||||
|
* @param <R> Класс проверяемого объекта
|
||||||
|
*/
|
||||||
|
public static <R> IsLongValueRule<R> instance(String fieldName,
|
||||||
|
Function<R, String> getter,
|
||||||
|
IErrorEnumId errorEmptyRequiredField,
|
||||||
|
IErrorEnumId errorWrongFieldValue) {
|
||||||
|
return new IsLongValueRule<>(fieldName, getter, errorEmptyRequiredField, errorWrongFieldValue, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<EnumMessage> validate(ImdgValidationContext<R> context) {
|
||||||
|
R validatedObject = context.getValidatedObject();
|
||||||
|
String longValueStr = getter.apply(validatedObject);
|
||||||
|
if (longValueStr == null) return required ? of(errorEmptyRequiredField, fieldName) : Optional.empty();
|
||||||
|
try {
|
||||||
|
Long longValue = Long.valueOf(longValueStr);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
return of(errorWrongFieldValue, fieldName);
|
||||||
|
}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue