From 9bf9b85c89d1bfe64673ee6d8231d006248c1207 Mon Sep 17 00:00:00 2001 From: Belen Escobari Date: Tue, 23 Apr 2024 22:37:40 +0200 Subject: [PATCH] ref #10178: updated controller --- .../NameMatchingCombinedResult.java | 17 ++++++--- .../NameMatchingOtherCandidateResult.java | 25 +++++++++++++ .../controller/NameMatchingController.java | 35 +++++++++---------- .../bean/NameMatchingResultBeanProcessor.java | 2 +- .../api/service/NameMatchingServiceImpl.java | 3 +- 5 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 cdmlib-api/src/main/java/eu/etaxonomy/cdm/api/nameMatching/NameMatchingOtherCandidateResult.java diff --git a/cdmlib-api/src/main/java/eu/etaxonomy/cdm/api/nameMatching/NameMatchingCombinedResult.java b/cdmlib-api/src/main/java/eu/etaxonomy/cdm/api/nameMatching/NameMatchingCombinedResult.java index 365cfea2e7..be7b0d3b15 100644 --- a/cdmlib-api/src/main/java/eu/etaxonomy/cdm/api/nameMatching/NameMatchingCombinedResult.java +++ b/cdmlib-api/src/main/java/eu/etaxonomy/cdm/api/nameMatching/NameMatchingCombinedResult.java @@ -14,7 +14,8 @@ import java.util.List; public class NameMatchingCombinedResult{ private List exactMatches = new ArrayList<>(); - private List candidates = new ArrayList<>(); + private List closestMatches = new ArrayList<>(); + private List otherCandidates = new ArrayList<>(); public List getExactMatches() { return exactMatches; @@ -23,10 +24,16 @@ public class NameMatchingCombinedResult{ this.exactMatches = exactMatches; } - public List getCandidates() { - return candidates; + public List getClosestMatches() { + return closestMatches; } - public void setCandidates(List candidates) { - this.candidates = candidates; + public void setClosestMatches(List closestMatches) { + this.closestMatches = closestMatches; + } + public List getOtherCandidates() { + return otherCandidates; + } + public void setOtherCandidates(List otherCandidates) { + this.otherCandidates = otherCandidates; } } \ No newline at end of file diff --git a/cdmlib-api/src/main/java/eu/etaxonomy/cdm/api/nameMatching/NameMatchingOtherCandidateResult.java b/cdmlib-api/src/main/java/eu/etaxonomy/cdm/api/nameMatching/NameMatchingOtherCandidateResult.java new file mode 100644 index 0000000000..baaf8e2fb6 --- /dev/null +++ b/cdmlib-api/src/main/java/eu/etaxonomy/cdm/api/nameMatching/NameMatchingOtherCandidateResult.java @@ -0,0 +1,25 @@ +/** +* Copyright (C) 2024 EDIT +* European Distributed Institute of Taxonomy +* http://www.e-taxonomy.eu +* +* The contents of this file are subject to the Mozilla Public License Version 1.1 +* See LICENSE.TXT at the top of this package for the full license terms. +*/ +package eu.etaxonomy.cdm.api.nameMatching; + +/** + * @author andreabee90 + * @since 23.04.2024 + */ +public class NameMatchingOtherCandidateResult extends NameMatchingExactResult { + + private Integer distance; + + public Integer getDistance() { + return distance; + } + public void setDistance(Integer distance) { + this.distance = distance; + } +} \ No newline at end of file diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameMatchingController.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameMatchingController.java index 4837eee299..892e9e565c 100644 --- a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameMatchingController.java +++ b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/NameMatchingController.java @@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.RestController; import eu.etaxonomy.cdm.api.nameMatching.NameMatchingCandidateResult; import eu.etaxonomy.cdm.api.nameMatching.NameMatchingCombinedResult; import eu.etaxonomy.cdm.api.nameMatching.NameMatchingExactResult; +import eu.etaxonomy.cdm.api.nameMatching.NameMatchingOtherCandidateResult; import eu.etaxonomy.cdm.api.service.INameMatchingService; import eu.etaxonomy.cdm.api.service.NameMatchingServiceImpl.NameMatchingResult; import eu.etaxonomy.cdm.api.service.NameMatchingServiceImpl.SingleNameMatchingResult; @@ -53,6 +54,8 @@ public class NameMatchingController { @RequestParam(value="namecache", required = true) String nameCache, @RequestParam(value="author", required = false) boolean compareAuthor, @RequestParam(value="distance", required = false) int distance, + @RequestParam(value="relaxedsearch", required = false) boolean relaxedSearch, + @RequestParam(value="otherCandidates", required = false) boolean otherCandidates, HttpServletRequest request, @SuppressWarnings("unused") HttpServletResponse response) { @@ -60,24 +63,8 @@ public class NameMatchingController { NameMatchingResult result; - result = nameMatchingservice.findMatchingNames(nameCache, null, compareAuthor, distance); + result = nameMatchingservice.wrapperResults(nameCache, compareAuthor, distance, relaxedSearch, otherCandidates); return NameMatchingAdapter.invoke(result); - - -// -// if (nameCache!= null && !nameCache.isEmpty()) { -// nameCache= nameCache.substring(0,1).toUpperCase() + nameCache.substring(1); -// } -// if (compareAuthor) { -// List temp = nameMatchingservice.superExactResults(result.getExactResults(), nameCache, true); -// result.setExactResults(temp); -// } else { -// result = nameMatchingservice.findMatchingNames(nameCache, null, false); -// List xy= result.getExactResults(); -// List temp = nameMatchingservice.superExactResults(xy, nameCache, false); -// result.setExactResults(temp); -// } - } private static class NameMatchingAdapter { @@ -85,7 +72,8 @@ public class NameMatchingController { private static NameMatchingCombinedResult invoke(NameMatchingResult nameMatchingResult) { NameMatchingCombinedResult result = new NameMatchingCombinedResult(); result.setExactMatches(loadResultListFromPartsList(nameMatchingResult.getExactResults())); - result.setCandidates(loadCandiateResultListFromPartsList(nameMatchingResult.getClosestResults())); + result.setClosestMatches(loadCandiateResultListFromPartsList(nameMatchingResult.getClosestResults())); + result.setOtherCandidates(loadOtherCandiateResultListFromPartsList(nameMatchingResult.getOtherCandidatesResults())); return result; } @@ -97,6 +85,10 @@ public class NameMatchingController { return partsList.stream().map(p->loadCandidateResultFromParts(p)).collect(Collectors.toList()); } + private static List loadOtherCandiateResultListFromPartsList(List partsList) { + return partsList.stream().map(p->loadOtherCandidateResultFromParts(p)).collect(Collectors.toList()); + } + private static NameMatchingExactResult loadResultFromParts(NameMatchingParts parts) { return loadResultFromParts(parts, new NameMatchingExactResult()); } @@ -108,6 +100,13 @@ public class NameMatchingController { return result; } + private static NameMatchingOtherCandidateResult loadOtherCandidateResultFromParts(SingleNameMatchingResult parts) { + NameMatchingOtherCandidateResult result = new NameMatchingOtherCandidateResult(); + loadResultFromParts(parts, result); + result.setDistance(parts.getDistance()); + return result; + } + private static NameMatchingExactResult loadResultFromParts(NameMatchingParts parts, NameMatchingExactResult result) { result.setTaxonNameId(parts.getTaxonNameId()); result.setTaxonNameUuid(parts.getTaxonNameUuid()); diff --git a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/NameMatchingResultBeanProcessor.java b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/NameMatchingResultBeanProcessor.java index 7e45f0534b..5ea6f7c1e7 100644 --- a/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/NameMatchingResultBeanProcessor.java +++ b/cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/json/processor/bean/NameMatchingResultBeanProcessor.java @@ -28,7 +28,7 @@ public class NameMatchingResultBeanProcessor extends AbstractBeanProcessor preFilteredInfraSpecificListWithDistTemp = new ArrayList<>(); for (int i = 0; i < taxonNamePartsWithDistance.size(); i++) { - if (!(taxonNamePartsWithDistance.get(i).getInfraSpecificEpithet()).isEmpty()) { + String x = taxonNamePartsWithDistance.get(i).getInfraSpecificEpithet(); + if (x != null && !x.isEmpty()) { preFilteredInfraSpecificListWithDistTemp.add(taxonNamePartsWithDistance.get(i)); } } -- 2.34.1