From 590404735d3ee5c4da714cf4faf7ef16d3ed35bc Mon Sep 17 00:00:00 2001 From: Thomas <> Date: Fri, 1 Jul 2022 14:56:29 +0200 Subject: feat(matching): add configuration property to define max. results for address searching --- .../specific/modules/auth/eidas/v2/Constants.java | 6 +++++- .../eidas/v2/controller/AdresssucheController.java | 24 +++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) (limited to 'modules/authmodule-eIDAS-v2') diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java index 9bb7055b..ce1d2a11 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java @@ -130,7 +130,11 @@ public class Constants { /** Enable / Disable matching based on address search **/ public static final String CONFIG_PROP_MATCHING_BY_ADDRESS = CONIG_PROPS_EIDAS_PREFIX + ".matching.byaddress.enable"; - + + public static final String CONFIG_PROP_MATCHING_BY_ADDRESS_MAX_RESULTS = + CONIG_PROPS_EIDAS_PREFIX + ".matching.byaddress.maxresults"; + public static final String DEFAULT_MATCHING_BY_ADDRESS_MAX_RESULTS = "250"; + // ZMR Client configuration properties public static final String CONIG_PROPS_EIDAS_ZMRCLIENT = CONIG_PROPS_EIDAS_PREFIX + ".zmrclient"; diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/controller/AdresssucheController.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/controller/AdresssucheController.java index 1c47f02c..4bb1343a 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/controller/AdresssucheController.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/controller/AdresssucheController.java @@ -41,12 +41,14 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import at.asitplus.eidas.specific.core.MsEidasNodeConstants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrAddressSoapClient; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException; import at.gv.bmi.namespace.zmr_su.zrm._20040201_.address.Adressdaten; import at.gv.e_government.reference.namespace.persondata.de._20040201.PostAdresseTyp; import at.gv.e_government.reference.namespace.persondata.de._20040201.ZustelladresseTyp; import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.api.utils.IPendingRequestIdGenerationStrategy; import at.gv.egiz.eaaf.core.exceptions.PendingReqIdValidationException; import lombok.AllArgsConstructor; @@ -69,6 +71,8 @@ public class AdresssucheController { public static final String PARAM_STREET = "street"; public static final String PARAM_NUMBER = "number"; + @Autowired IConfiguration basicConfig; + @Autowired private ZmrAddressSoapClient client; @@ -128,11 +132,29 @@ public class AdresssucheController { it.getZustelladresse().getStrassenname(), it.getZustelladresse().getOrientierungsnummer())) .collect(Collectors.toSet()); // TODO Add configuration option for the limit of 30 - final List sorted = result.stream().sorted().limit(30).collect(Collectors.toList()); + + final List sorted = result.stream() + .sorted() + .limit(getMaxResults()) + .collect(Collectors.toList()); + return new AdresssucheResult(sorted, result.size()); } + private long getMaxResults() { + String maxSearchResults = basicConfig.getBasicConfiguration( + Constants.CONFIG_PROP_MATCHING_BY_ADDRESS_MAX_RESULTS, + Constants.DEFAULT_MATCHING_BY_ADDRESS_MAX_RESULTS); + try { + return Long.valueOf(maxSearchResults); + + } catch (Exception e) { + log.warn("Invalid number of max. addressSearchResults. Using default value", e); + return Long.valueOf(Constants.DEFAULT_MATCHING_BY_ADDRESS_MAX_RESULTS); + } + } + private Adressdaten buildSearchInput(String postleitzahl, String municipality, String village, -- cgit v1.2.3