diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSailNumberCanonicalizerAndMatcher.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSailNumberCanonicalizerAndMatcher.java index 63f63374c64..ea776a5201c 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSailNumberCanonicalizerAndMatcher.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/AbstractSailNumberCanonicalizerAndMatcher.java @@ -109,6 +109,11 @@ public abstract class AbstractSailNumberCanonicalizerAndMatcher if (canonicalizedSailID != null) { result.put(canonicalizedSailID, competitor); } + final String canonicalizedSailIDWithoutDefaultNationality = canonicalizeSailID( + competitorIdentifyingText.trim(), /* defaultNationality */ null); + if (canonicalizedSailIDWithoutDefaultNationality != null) { + result.put(canonicalizedSailIDWithoutDefaultNationality, competitor); + } } return result; } diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/SailNumberCanonicalizationTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/SailNumberCanonicalizationTest.java new file mode 100644 index 00000000000..71e47b2ed0c --- /dev/null +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/common/SailNumberCanonicalizationTest.java @@ -0,0 +1,51 @@ +package com.sap.sailing.domain.common; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; + +import java.util.Collections; +import java.util.Map; +import java.util.UUID; + +import org.junit.jupiter.api.Test; + +import com.sap.sailing.domain.base.Competitor; +import com.sap.sailing.domain.base.CompetitorWithBoat; +import com.sap.sailing.domain.base.SailNumberCanonicalizerAndMatcher; +import com.sap.sailing.domain.base.impl.BoatClassImpl; +import com.sap.sailing.domain.base.impl.BoatImpl; +import com.sap.sailing.domain.base.impl.CompetitorWithBoatImpl; +import com.sap.sailing.domain.base.impl.NationalityImpl; +import com.sap.sailing.domain.base.impl.PersonImpl; +import com.sap.sailing.domain.base.impl.TeamImpl; +import com.sap.sse.common.Color; + +public class SailNumberCanonicalizationTest { + private SailNumberCanonicalizerAndMatcher canonicalizer = new SailNumberCanonicalizerAndMatcher(); + + @Test + public void testSimpleSailNumberMatching() { + assertEquals("GER123", canonicalizer.canonicalizeSailID("GER 123", /* defaultNationality */ null)); + } + + @Test + public void testSailNumberWithoutNationalityMatching() { + assertEquals("117911", canonicalizer.canonicalizeSailID("117911", /* defaultNationality */ null)); + } + + @Test + public void testSailNumberWithoutNationalityMatchingAgainstCompetitor() { + final CompetitorWithBoat competitor = new CompetitorWithBoatImpl(UUID.randomUUID(), "TestCompetitor", + "TC", Color.BLACK, /* email */ null, /* flagImage */ null, + new TeamImpl("TestTeam", + Collections.singleton(new PersonImpl("TestPerson", new NationalityImpl("NED"), + /* dateOfBirth */ null, + /* description */ null)), + /* coach */ null), /* timeOnTimeFactor */ 1.0, + /* timeOnDistanceAllowancePerNauticalMile */ null, /* searchTag */ null, + new BoatImpl(UUID.randomUUID(), "TestBoat", new BoatClassImpl(BoatClassMasterdata._12M), "117911")); + final Map map = canonicalizer + .canonicalizeLeaderboardSailIDs(Collections.singleton(competitor)); + assertSame(competitor, map.get("117911")); + } +}