mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-04 03:13:49 +00:00
made CompetitorImportMatcher a bit more lenient, matching sail numbers ignoring whitespace and ignoring case in general
Change-Id: If9d7c4b6792750ba9feaf284c43fab295b7f4b2e
This commit is contained in:
1 parent
93f5150490
commit
98cf3a643f
4 files changed
+51
-14
No files matched your search
+3
-3
@@ -188,9 +188,9 @@ public class CompetitorDescriptorTableWrapper<S extends RefreshableSelectionMode
|
||||
|
||||
@Override
|
||||
public int compare(CompetitorDescriptorDTO cd1, CompetitorDescriptorDTO cd2) {
|
||||
Boolean hasMathes1 = competitorImportMatcher.getMatchesCompetitors(cd1).isEmpty();
|
||||
Boolean hasMathes2 = competitorImportMatcher.getMatchesCompetitors(cd2).isEmpty();
|
||||
return hasMathes1 == hasMathes2 ? 0 : hasMathes1 ? 1 : -1;
|
||||
Boolean hasMatches1 = competitorImportMatcher.getMatchesCompetitors(cd1).isEmpty();
|
||||
Boolean hasMatches2 = competitorImportMatcher.getMatchesCompetitors(cd2).isEmpty();
|
||||
return hasMatches1 == hasMatches2 ? 0 : hasMatches1 ? 1 : -1;
|
||||
}
|
||||
});
|
||||
return competitorColumnListHandler;
|
||||
|
||||
+16
-11
@@ -1,16 +1,17 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDescriptorDTO;
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
/**
|
||||
* Using to finding existing competitors which match with imported competitor.
|
||||
* Currently use the simple exact match comparison.
|
||||
* @author Alexander_Tatarinovich
|
||||
* Used to find existing competitors which match with imported competitor. Currently use the simple exact match
|
||||
* comparison.
|
||||
*
|
||||
* @author Alexander Tatarinovich
|
||||
*
|
||||
*/
|
||||
public class CompetitorImportMatcher {
|
||||
@@ -35,16 +36,20 @@ public class CompetitorImportMatcher {
|
||||
}
|
||||
|
||||
private boolean isEqual(CompetitorDescriptorDTO competitorDescriptor, CompetitorDTO existingCompetitor) {
|
||||
return Objects.equals(competitorDescriptor.getName(), existingCompetitor.getName())
|
||||
&& Objects.equals(competitorDescriptor.getSailNumber(), existingCompetitor.getSailID())
|
||||
return Util.equalsWithNull(competitorDescriptor.getName(), existingCompetitor.getName(), /* ignoreCase */ true)
|
||||
&& Util.equalsWithNull(removeSpaces(competitorDescriptor.getSailNumber()), removeSpaces(existingCompetitor.getSailID()), /* ignoreCase */ true)
|
||||
&& compareCountryCode(competitorDescriptor, existingCompetitor);
|
||||
}
|
||||
|
||||
private String removeSpaces(String s) {
|
||||
return s==null?null:s.replace(" ", "").replace("\t", "");
|
||||
}
|
||||
|
||||
private boolean compareCountryCode(CompetitorDescriptorDTO competitorDescriptor, CompetitorDTO existingCompetitor) {
|
||||
return Objects.equals(competitorDescriptor.getCountryName(), existingCompetitor.getCountryName())
|
||||
&& Objects.equals(competitorDescriptor.getThreeLetterIocCountryCode(),
|
||||
existingCompetitor.getThreeLetterIocCountryCode())
|
||||
&& Objects.equals(competitorDescriptor.getTwoLetterIsoCountryCode(),
|
||||
existingCompetitor.getTwoLetterIsoCountryCode());
|
||||
return Util.equalsWithNull(competitorDescriptor.getCountryName(), existingCompetitor.getCountryName(), /* ignoreCase */ true)
|
||||
&& Util.equalsWithNull(competitorDescriptor.getThreeLetterIocCountryCode(),
|
||||
existingCompetitor.getThreeLetterIocCountryCode(), /* ignoreCase */ true)
|
||||
&& Util.equalsWithNull(competitorDescriptor.getTwoLetterIsoCountryCode(),
|
||||
existingCompetitor.getTwoLetterIsoCountryCode(), /* ignoreCase */ true);
|
||||
}
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package com.sap.sse.common.test;
|
||||
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import com.sap.sse.common.Util;
|
||||
|
||||
public class StringCompareTest {
|
||||
@Test
|
||||
public void testStringCompare() {
|
||||
assertTrue(Util.equalsWithNull("a", "A", /* ignoreCase */ true));
|
||||
assertTrue(Util.equalsWithNull("a", "a", /* ignoreCase */ true));
|
||||
assertFalse(Util.equalsWithNull("a", "A", /* ignoreCase */ false));
|
||||
assertTrue(Util.equalsWithNull(null, null, /* ignoreCase */ true));
|
||||
assertFalse(Util.equalsWithNull("a", null, /* ignoreCase */ true));
|
||||
assertTrue(Util.equalsWithNull(null, null, /* ignoreCase */ false));
|
||||
assertFalse(Util.equalsWithNull("a", null, /* ignoreCase */ false));
|
||||
assertFalse(Util.equalsWithNull("A", null, /* ignoreCase */ true));
|
||||
assertTrue(Util.equalsWithNull(null, null, /* ignoreCase */ false));
|
||||
assertFalse(Util.equalsWithNull("A", null, /* ignoreCase */ false));
|
||||
assertFalse(Util.equalsWithNull(null, "b", /* ignoreCase */ true));
|
||||
assertFalse(Util.equalsWithNull(null, "B", /* ignoreCase */ true));
|
||||
}
|
||||
}
|
||||
@@ -339,6 +339,12 @@ public class Util {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean equalsWithNull(String s1, String s2, boolean ignoreCase) {
|
||||
final String s1LC = ignoreCase?s1==null?null:s1.toLowerCase():s1;
|
||||
final String s2LC = ignoreCase?s2==null?null:s2.toLowerCase():s2;
|
||||
return equalsWithNull(s1LC, s2LC);
|
||||
}
|
||||
|
||||
/**
|
||||
* <code>null</code> is permissible for both, <code>o1</code> and <code>o2</code>, where a <code>null</code> value
|
||||
|
||||
Reference in new issue
Block a user