From: Belen Escobari Date: Wed, 23 Aug 2023 12:40:21 +0000 (+0200) Subject: ref #10377: matching names including infrageneric epith. Tests X-Git-Tag: 5.40.0^2~24 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/cdmlib.git/commitdiff_plain/35f3b5334c96927a6a6f1a4cfc68992f1c6abbe1 ref #10377: matching names including infrageneric epith. Tests --- diff --git a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NameMatchingServiceImpl.java b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NameMatchingServiceImpl.java index d0948bb8c1..dec8190660 100644 --- a/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NameMatchingServiceImpl.java +++ b/cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/NameMatchingServiceImpl.java @@ -149,7 +149,7 @@ public class NameMatchingServiceImpl } else { return bestResults; } - } else if (infraGenericQuery == null){ + } else if (epithetQuery != null && infraGenericQuery == null){ String normalizedEphitetQuery = NameMatchingUtils.normalize(epithetQuery); String phoneticNormalizedEpithetQuery = NameMatchingUtils.nearMatch(normalizedEphitetQuery); @@ -307,12 +307,18 @@ public class NameMatchingServiceImpl private int nameMatchingComputeDistance(String strQuery, String strDB) { int computedDistanceTemp; String trimmedStrings = trimCommonChar(strQuery, strDB); + String restantTrimmedQuery = ""; + String restantTrimmedDB=""; if ("".equals(trimmedStrings)) { computedDistanceTemp = 0; } else { - String restantTrimmedQuery = trimmedStrings.split(" ")[0]; - String restantTrimmedDB = trimmedStrings.split(" ")[1]; + try { + restantTrimmedQuery = trimmedStrings.split(" ")[0]; + restantTrimmedDB = trimmedStrings.split(" ")[1];} + catch (Exception e) { + System.out.println("error"); + } computedDistanceTemp = NameMatchingUtils.modifiedDamerauLevenshteinDistance(restantTrimmedQuery, restantTrimmedDB); } diff --git a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameMatchingServiceImplTest.java b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameMatchingServiceImplTest.java index 6bd29976b9..5761710b19 100644 --- a/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameMatchingServiceImplTest.java +++ b/cdmlib-services/src/test/java/eu/etaxonomy/cdm/api/service/NameMatchingServiceImplTest.java @@ -153,55 +153,55 @@ public class NameMatchingServiceImplTest extends CdmTransactionalIntegrationTest // if the binomial query comprises genus and subgenus - // for exact match return exact matching name -// inputName = "Nectandra (Nectrina)"; -// matchResult = nameMatchingService.findMatchingNames(inputName, null, null); -// Assert.assertEquals(1, matchResult.size()); -// matchRes = matchResult.get(0); -// Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); -// Assert.assertEquals("Nectrina", matchRes.getFirstResult().getInfraGenericEpithet()); -// Assert.assertEquals(41, (int)matchRes.getFirstResult().getTaxonNameId()); -// Assert.assertEquals("08ab2653-a4da-4c9b-8330-1bf4268cab88", matchRes.getFirstResult().getTaxonNameUuid().toString()); -// Assert.assertEquals(0,(int) matchRes.getSecondResult()); -// -// // non exact match return the best results -// inputName = "Nectandra (Nextrina)"; -// matchResult = nameMatchingService.findMatchingNames(inputName, null, null); -// Assert.assertEquals(2, matchResult.size()); -// matchRes = matchResult.get(0); -// Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); -// Assert.assertEquals("Nectrina", matchRes.getFirstResult().getInfraGenericEpithet()); -// Assert.assertEquals(41, (int)matchRes.getFirstResult().getTaxonNameId()); -// Assert.assertEquals("08ab2653-a4da-4c9b-8330-1bf4268cab88", matchRes.getFirstResult().getTaxonNameUuid().toString()); -// Assert.assertEquals(1,(int) matchRes.getSecondResult()); -// -// matchRes = matchResult.get(1); -// Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); -// Assert.assertEquals("Nexxxina", matchRes.getFirstResult().getInfraGenericEpithet()); -// Assert.assertEquals(42, (int)matchRes.getFirstResult().getTaxonNameId()); -// Assert.assertEquals("c955a8ab-8501-421a-bfa3-5748237e8942", matchRes.getFirstResult().getTaxonNameUuid().toString()); -// Assert.assertEquals(2,(int) matchRes.getSecondResult()); +// for exact match return exact matching name + inputName = "Nectandra subgen. Nectrina"; + matchResult = nameMatchingService.findMatchingNames(inputName, null, null); + Assert.assertEquals(1, matchResult.size()); + matchRes = matchResult.get(0); + Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); + Assert.assertEquals("Nectrina", matchRes.getFirstResult().getInfraGenericEpithet()); + Assert.assertEquals(41, (int)matchRes.getFirstResult().getTaxonNameId()); + Assert.assertEquals("08ab2653-a4da-4c9b-8330-1bf4268cab88", matchRes.getFirstResult().getTaxonNameUuid().toString()); + Assert.assertEquals(0,(int) matchRes.getSecondResult()); + + // non exact match return the best results + inputName = "Nectandra subgen. Nextrina"; + matchResult = nameMatchingService.findMatchingNames(inputName, null, null); + Assert.assertEquals(2, matchResult.size()); + matchRes = matchResult.get(0); + Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); + Assert.assertEquals("Nectrina", matchRes.getFirstResult().getInfraGenericEpithet()); + Assert.assertEquals(41, (int)matchRes.getFirstResult().getTaxonNameId()); + Assert.assertEquals("08ab2653-a4da-4c9b-8330-1bf4268cab88", matchRes.getFirstResult().getTaxonNameUuid().toString()); + Assert.assertEquals(1,(int) matchRes.getSecondResult()); + + matchRes = matchResult.get(1); + Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); + Assert.assertEquals("Nexxxina", matchRes.getFirstResult().getInfraGenericEpithet()); + Assert.assertEquals(42, (int)matchRes.getFirstResult().getTaxonNameId()); + Assert.assertEquals("c955a8ab-8501-421a-bfa3-5748237e8942", matchRes.getFirstResult().getTaxonNameUuid().toString()); + Assert.assertEquals(2,(int) matchRes.getSecondResult()); -// inputName = "Nectandra subg. Nectrina"; -// matchResult = nameMatchingService.findMatchingNames(inputName, null, null); -// Assert.assertEquals(1, matchResult.size()); -// matchRes = matchResult.get(0); -// Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); -// Assert.assertEquals("Nectrina", matchRes.getFirstResult().getInfraGenericEpithet()); -// Assert.assertEquals(41, (int)matchRes.getFirstResult().getTaxonNameId()); -// Assert.assertEquals("08ab2653-a4da-4c9b-8330-1bf4268cab88", matchRes.getFirstResult().getTaxonNameUuid().toString()); -// Assert.assertEquals(0,(int) matchRes.getSecondResult()); -// -// // non exact match return the best results -// inputName = "Nectandra subg. Nextrina"; -// matchResult = nameMatchingService.findMatchingNames(inputName, null, null); -// Assert.assertEquals(2, matchResult.size()); -// matchRes = matchResult.get(0); -// Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); -// Assert.assertEquals("Nectrina", matchRes.getFirstResult().getInfraGenericEpithet()); -// Assert.assertEquals(41, (int)matchRes.getFirstResult().getTaxonNameId()); -// Assert.assertEquals("08ab2653-a4da-4c9b-8330-1bf4268cab88", matchRes.getFirstResult().getTaxonNameUuid().toString()); -// Assert.assertEquals(1,(int) matchRes.getSecondResult()); + inputName = "Nectandra subg. Nectrina"; + matchResult = nameMatchingService.findMatchingNames(inputName, null, null); + Assert.assertEquals(1, matchResult.size()); + matchRes = matchResult.get(0); + Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); + Assert.assertEquals("Nectrina", matchRes.getFirstResult().getInfraGenericEpithet()); + Assert.assertEquals(41, (int)matchRes.getFirstResult().getTaxonNameId()); + Assert.assertEquals("08ab2653-a4da-4c9b-8330-1bf4268cab88", matchRes.getFirstResult().getTaxonNameUuid().toString()); + Assert.assertEquals(0,(int) matchRes.getSecondResult()); + + // non exact match return the best results + inputName = "Nectandra subg. Nextrina"; + matchResult = nameMatchingService.findMatchingNames(inputName, null, null); + Assert.assertEquals(2, matchResult.size()); + matchRes = matchResult.get(0); + Assert.assertEquals("Nectandra", matchRes.getFirstResult().getGenusOrUninomial()); + Assert.assertEquals("Nectrina", matchRes.getFirstResult().getInfraGenericEpithet()); + Assert.assertEquals(41, (int)matchRes.getFirstResult().getTaxonNameId()); + Assert.assertEquals("08ab2653-a4da-4c9b-8330-1bf4268cab88", matchRes.getFirstResult().getTaxonNameUuid().toString()); + Assert.assertEquals(1,(int) matchRes.getSecondResult()); } @Override diff --git a/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/NameMatchingServiceImplTest.testFindMatchingNames.xml b/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/NameMatchingServiceImplTest.testFindMatchingNames.xml index 657fb186db..4362b6442b 100644 --- a/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/NameMatchingServiceImplTest.testFindMatchingNames.xml +++ b/cdmlib-services/src/test/resources/eu/etaxonomy/cdm/api/service/NameMatchingServiceImplTest.testFindMatchingNames.xml @@ -5,7 +5,7 @@ - +