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