made CompetitorImportMatcher a bit more lenient, matching sail numbers ignoring whitespace and ignoring case in general

Change-Id: If9d7c4b6792750ba9feaf284c43fab295b7f4b2e
This commit is contained in:
Axel Uhl committed 2016-12-15 17:05:21 +01:00
1 parent 93f5150490
commit 98cf3a643f
4 files changed
+51 -14

No files matched your search

@@ -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;
@@ -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);
}
}
@@ -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