From 10e4077ab8ffff46946dd1322f9531a185e7a56b Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 24 Jun 2024 13:10:21 +0200 Subject: [PATCH] OZG-5841 OZG-5952 Refactor the validator --- ...ehoerdenschluesselPropertiesValidator.java | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidator.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidator.java index c49e01a144..54568a6f8c 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidator.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidator.java @@ -1,5 +1,8 @@ package de.ozgcloud.alfa.export; +import java.util.Optional; +import java.util.function.Supplier; + import org.springframework.validation.Errors; import org.springframework.validation.Validator; @@ -12,24 +15,33 @@ public class BehoerdenschluesselPropertiesValidator implements Validator { @Override public void validate(Object target, Errors errors) { - var props = getBehoerdenschluesselProperties((XdomeaProperties) target); - if (props.getBehoerdenschluessel().isEmpty()) { - return; + var properties = getBehoerdenschluesselProperties((XdomeaProperties) target); + if (properties.getBehoerdenschluessel().isPresent()) { + validateProperties(properties, errors); } + } + + BehoerdenschluesselProperties getBehoerdenschluesselProperties(XdomeaProperties xdomeaProperties) { + return new BehoerdenschluesselProperties(xdomeaProperties); + } + + private void validateProperties(BehoerdenschluesselProperties props, Errors errors) { try { - if (props.getBehoerdenschluesselUri().isEmpty()) { - errors.rejectValue("behoerdenschluesselUri", "ozgcloud.xdomea.behoerdenschluessel-uri.empty", "behoerdenschluessel-uri must be set"); - } - if (props.getBehoerdenschluesselVersion().isEmpty()) { - errors.rejectValue("behoerdenschluesselVersion", "ozgcloud.xdomea.behoerdenschluessel-version.empty", - "behoerdenschluessel-version must be set"); - } + validateNotEmpty(props, errors); } catch (AmbiguousCodelistePatternException e) { errors.reject("ozgcloud.xdomea.codeliste.pattern.ambiguous", e.getMessage()); } } - BehoerdenschluesselProperties getBehoerdenschluesselProperties(XdomeaProperties xdomeaProperties) { - return new BehoerdenschluesselProperties(xdomeaProperties); + private void validateNotEmpty(BehoerdenschluesselProperties props, Errors errors) { + validateNotEmpty(props::getBehoerdenschluesselUri, "behoerdenschluesselUri", "behoerdenschluessel-uri", errors); + validateNotEmpty(props::getBehoerdenschluesselVersion, "behoerdenschluesselVersion", "behoerdenschluessel-version", errors); + } + + private <T> void validateNotEmpty(Supplier<Optional<T>> propertyAccessor, String fieldName, String propertyName, Errors errors) { + var propertyValue = propertyAccessor.get(); + if (propertyValue.isEmpty()) { + errors.rejectValue(fieldName, String.format("ozgcloud.xdomea.%s.empty", propertyName), String.format("%s must be set", propertyName)); + } } } -- GitLab