diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2011-10-19 07:22:13 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2011-10-19 07:22:13 +0200 |
| commit | bc610e7cfa71b871c5fb50bf4485bc5cdc81590c (patch) | |
| tree | 65443c017709371aec5e8e7a0b6f542e6a311a56 /main/src/cgeo/geocaching/sorting/NameComparator.java | |
| parent | d30be334b017346e5db8b98882afb36e59cd50e9 (diff) | |
| download | cgeo-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.java | 29 |
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()); } } |
