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 c49e01a14477e99f1a8c72676a99a4416d96dd2b..54568a6f8c7c537f9da3053ef8a402ee6a9a65e0 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)); + } } }