aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/sorting/NameComparator.java
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2011-10-19 07:22:13 +0200
committerBananeweizen <bananeweizen@gmx.de>2011-10-19 07:22:13 +0200
commitbc610e7cfa71b871c5fb50bf4485bc5cdc81590c (patch)
tree65443c017709371aec5e8e7a0b6f542e6a311a56 /main/src/cgeo/geocaching/sorting/NameComparator.java
parentd30be334b017346e5db8b98882afb36e59cd50e9 (diff)
downloadcgeo-bc610e7cfa71b871c5fb50bf4485bc5cdc81590c.zip
cgeo-bc610e7cfa71b871c5fb50bf4485bc5cdc81590c.tar.gz
cgeo-bc610e7cfa71b871c5fb50bf4485bc5cdc81590c.tar.bz2
#671, cache normalized name for sorting
Diffstat (limited to 'main/src/cgeo/geocaching/sorting/NameComparator.java')
-rw-r--r--main/src/cgeo/geocaching/sorting/NameComparator.java29
1 files changed, 1 insertions, 28 deletions
diff --git a/main/src/cgeo/geocaching/sorting/NameComparator.java b/main/src/cgeo/geocaching/sorting/NameComparator.java
index fb98492..bfc05c0 100644
--- a/main/src/cgeo/geocaching/sorting/NameComparator.java
+++ b/main/src/cgeo/geocaching/sorting/NameComparator.java
@@ -4,17 +4,12 @@ import cgeo.geocaching.cgCache;
import org.apache.commons.lang3.StringUtils;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
/**
* sorts caches by name
*
*/
public class NameComparator extends AbstractCacheComparator {
- private static final Pattern NUMBER_PATTERN = Pattern.compile("\\d+");
-
@Override
protected boolean canCompare(cgCache cache1, cgCache cache2) {
return StringUtils.isNotBlank(cache1.name) && StringUtils.isNotBlank(cache2.name);
@@ -22,28 +17,6 @@ public class NameComparator extends AbstractCacheComparator {
@Override
protected int compareCaches(cgCache cache1, cgCache cache2) {
- // if the caches have a common prefix followed by a number, sort by the numerical value
- // so 2 is before 11, although "11" comes before "2"
- final String prefix = StringUtils.getCommonPrefix(cache1.name, cache2.name);
- if (StringUtils.length(prefix) > 0) {
- final String remaining1 = cache1.name.substring(prefix.length()).trim();
- if (remaining1.length() > 0 && Character.isDigit(remaining1.charAt(0))) {
- final String remaining2 = cache2.name.substring(prefix.length()).trim();
- if (remaining2.length() > 0 && Character.isDigit(remaining2.charAt(0))) {
- final Integer number1 = getNumber(remaining1);
- final Integer number2 = getNumber(remaining2);
- return number1.compareTo(number2);
- }
- }
- }
- return cache1.name.compareToIgnoreCase(cache2.name);
- }
-
- private static Integer getNumber(final String string) {
- Matcher matcher = NUMBER_PATTERN.matcher(string);
- if (matcher.find()) {
- return Integer.valueOf(matcher.group());
- }
- return 0;
+ return cache1.getNameForSorting().compareToIgnoreCase(cache2.getNameForSorting());
}
}