FieldRequiredRule fix

This commit is contained in:
akulikov 2023-04-06 11:16:12 +03:00
parent 7a3c1ec22c
commit 398307b6b5
2 changed files with 45 additions and 6 deletions

View file

@ -19,7 +19,7 @@ public record FieldRequiredRule<R, V>(
String fieldName,
Function<R, V> getter,
IErrorEnumId errorEmptyRequiredValue,
Function<R, IErrorEnumId>[] additionalChecks
Function<V, IErrorEnumId>[] additionalChecks
) implements IValidationRule<ImdgValidationContext<R>> {
/**
@ -33,7 +33,7 @@ public record FieldRequiredRule<R, V>(
public static <R, V> FieldRequiredRule<R, V> instance(String fieldName,
Function<R, V> getter,
IErrorEnumId errorEmptyRequiredValue,
Function<R, IErrorEnumId> ... additionalChecks) {
Function<V, IErrorEnumId> ... additionalChecks) {
if (errorEmptyRequiredValue == null) throw new IllegalArgumentException("Empty errorEmptyRequiredValue");
return new FieldRequiredRule<>(fieldName, getter, errorEmptyRequiredValue, additionalChecks);
}
@ -43,8 +43,8 @@ public record FieldRequiredRule<R, V>(
R validatedObject = context.getValidatedObject();
V value = getter.apply(validatedObject);
if (value == null) return of(errorEmptyRequiredValue, fieldName);
for (Function<R, IErrorEnumId> additionalCheck : additionalChecks) {
IErrorEnumId validationError = additionalCheck.apply(validatedObject);
for (Function<V, IErrorEnumId> additionalCheck : additionalChecks) {
IErrorEnumId validationError = additionalCheck.apply(value);
if (validationError != null)
return of(validationError, fieldName);
}

View file

@ -39,11 +39,11 @@ public class FixedIncomeCashFlowValidationConfig {
FieldRequiredRule.instance("securitySymbol",
FixedIncomeCashFlowNewRequest::getSecuritySymbol,
SecuritiesError.RequiredFieldIsEmpty,
request -> {
securitySymbol -> {
Imdg<FixedIncomeCashFlow> fixedIncomeCashFlowImdg = context.obtainMap(
IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class
);
Long securityId = Long.valueOf(request.getSecuritySymbol());
Long securityId = Long.valueOf(securitySymbol);
Collection<FixedIncomeCashFlow> fixedIncomeCashFlows = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues(Map.of("securityId", securityId));
if (!fixedIncomeCashFlows.isEmpty()) return SecuritiesError.CouponPeriodAlreadyExists;
return null;
@ -61,4 +61,43 @@ public class FixedIncomeCashFlowValidationConfig {
};
}
// @Bean("fixedIncomeCashFlowUpdateRequestValidator")
// public Function<FixedIncomeCashFlowUpdateRequest, IValidator> fixedIncomeCashFlowUpdateRequestValidator(
// Map<String, Imdg<? extends SpcexObjectBase>> imdgForValidation
// ) {
// return fixedIncomeCashFlowUpdateRequest -> {
// ImdgValidationContext<FixedIncomeCashFlowUpdateRequest> context = new ImdgValidationContext<>();
// context.setValidatedObject(fixedIncomeCashFlowUpdateRequest);
// Consumer<String> addImdg = (s) -> context.addImdg(s, imdgForValidation.get(s));
// addImdg.accept(IMDGDistributedNames.Map_FixedIncomeCashFlow);
// return new ValidatorImpl<>(context,
// IsLongValueRule.instance("securitySymbol",
// FixedIncomeCashFlowNewRequest::getSecuritySymbol,
// SecuritiesError.RequiredFieldIsEmpty,
// SecuritiesError.WrongFieldValue),
// FieldRequiredRule.instance("securitySymbol",
// FixedIncomeCashFlowNewRequest::getSecuritySymbol,
// SecuritiesError.RequiredFieldIsEmpty,
// request -> {
// Imdg<FixedIncomeCashFlow> fixedIncomeCashFlowImdg = context.obtainMap(
// IMDGDistributedNames.Map_FixedIncomeCashFlow, FixedIncomeCashFlow.class
// );
// Long securityId = Long.valueOf(request.getSecuritySymbol());
// Collection<FixedIncomeCashFlow> fixedIncomeCashFlows = fixedIncomeCashFlowImdg.getCollectionObjectsByFieldValues(Map.of("securityId", securityId));
// if (!fixedIncomeCashFlows.isEmpty()) return SecuritiesError.CouponPeriodAlreadyExists;
// return null;
// }),
// FieldRequiredRule.instance("accruedCoupon",
// FixedIncomeCashFlowNewRequest::getAccruedCoupon,
// SecuritiesError.RequiredFieldIsEmpty),
// FieldRequiredRule.instance("nominalValue",
// FixedIncomeCashFlowNewRequest::getNominalValue,
// SecuritiesError.RequiredFieldIsEmpty),
// FieldRequiredRule.instance("number",
// FixedIncomeCashFlowNewRequest::getNumber,
// SecuritiesError.RequiredFieldIsEmpty)
// );
// };
// }
}