diff --git a/src/main/java/ru/soune/nocopy/handler/LawCaseHandler.java b/src/main/java/ru/soune/nocopy/handler/LawCaseHandler.java index 379f50b..e09d9a7 100644 --- a/src/main/java/ru/soune/nocopy/handler/LawCaseHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/LawCaseHandler.java @@ -119,33 +119,32 @@ public class LawCaseHandler implements RequestHandler { } private void validateLawCaseRequestFilters(LawCaseRequest lawCaseRequest) { - if (lawCaseRequest.getFilterPriority() != null && !lawCaseRequest.getFilterPriority().equals(LawCasePriority.HIGH.name()) && - !lawCaseRequest.getFilterPriority().equals(LawCasePriority.MIDDLE.name()) && - !lawCaseRequest.getFilterPriority().equals(LawCasePriority.LOW.name()) && - !lawCaseRequest.getFilterPriority().equals(LawCasePriority.CRITICAL.name())) { - - throw new NotValidFieldException("Not valid filter priority", - new BaseResponse(30017, MessageCode.NOT_VALID_FIELD.getCode(), - MessageCode.NOT_VALID_FIELD.getDescription(), - Map.of("field", "filterPriority", - "valid_values", Arrays.stream(LawCasePriority.values()) - .map(LawCasePriority::name) - .collect(Collectors.toList()), - "received_value", lawCaseRequest.getFilterPriority()))); + if (lawCaseRequest.getFilterPriority() != null) { + validateEnumValue(lawCaseRequest.getFilterPriority(), + LawCasePriority.class, + "filterPriority"); } - if (lawCaseRequest.getFilterType() != null && - !lawCaseRequest.getFilterType().equals(LawCaseType.CLOSED.getName()) || - !Objects.equals(lawCaseRequest.getFilterType(), LawCaseType.ACTIVE.getName()) || - !lawCaseRequest.getFilterType().equals(LawCaseType.COMPLETED.getName())) { - throw new NotValidFieldException("Not valid filter type", + if (lawCaseRequest.getFilterType() != null) { + validateEnumValue(lawCaseRequest.getFilterType(), + LawCaseType.class, + "filterType"); + } + } + + private > void validateEnumValue(String value, Class enumClass, String fieldName) { + boolean valid = Arrays.stream(enumClass.getEnumConstants()) + .anyMatch(e -> e.name().equals(value)); + + if (!valid) { + throw new NotValidFieldException("Not valid " + fieldName, new BaseResponse(30017, MessageCode.NOT_VALID_FIELD.getCode(), MessageCode.NOT_VALID_FIELD.getDescription(), - Map.of("field", "filterType", - "valid_values", Arrays.stream(LawCaseType.values()) - .map(LawCaseType::name) + Map.of("field", fieldName, + "valid_values", Arrays.stream(enumClass.getEnumConstants()) + .map(Enum::name) .collect(Collectors.toList()), - "received_value", lawCaseRequest.getFilterType()))); + "received_value", value))); } }