package org.springframework.data.simpledb.util; import java.util.Comparator; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Used to compare Strings starting numbers and delimited with <tt>@</tt>. * <p/> * "10@attr" should be <b>bigger</b> than "2@attr" with this comparator */ public class AlphanumStringComparator implements Comparator<String> { private static Pattern prefixRexp = Pattern.compile("^(\\d+)@"); @Override public int compare(String s1, String s2) { int c = 0; Matcher m1 = prefixRexp.matcher(s1); Matcher m2 = prefixRexp.matcher(s2); if (m1.find() && m2.find()) { Integer i1 = Integer.valueOf(m1.group(1)); Integer i2 = Integer.valueOf(m2.group(1)); c = i1.compareTo(i2); } else { throw new IllegalArgumentException("Can not compare strings missing 'digit@' pattern"); } return c; } }