diff --git a/main/src/com/google/refine/sorting/Criterion.java b/main/src/com/google/refine/sorting/Criterion.java index a26b64a26..a41374fb0 100644 --- a/main/src/com/google/refine/sorting/Criterion.java +++ b/main/src/com/google/refine/sorting/Criterion.java @@ -75,6 +75,13 @@ abstract public class Criterion { } } + + // TODO: We'd like things to be more strongly typed a la the following, but + // it's too involved to change right now +// abstract public class Key implements Comparable { +// abstract public int compareTo(Key key); +// } + abstract public class KeyMaker { public Object makeKey(Project project, Record record) { Object error = null; diff --git a/main/src/com/google/refine/sorting/StringCriterion.java b/main/src/com/google/refine/sorting/StringCriterion.java index 9930c8df5..2a342e6ae 100644 --- a/main/src/com/google/refine/sorting/StringCriterion.java +++ b/main/src/com/google/refine/sorting/StringCriterion.java @@ -33,6 +33,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. package com.google.refine.sorting; +import java.text.CollationKey; import java.text.Collator; import org.json.JSONException; @@ -71,12 +72,12 @@ public class StringCriterion extends Criterion { @Override protected Object makeKey(Object value) { return (ExpressionUtils.isNonBlankData(value) && !(value instanceof String)) ? - value.toString() : value; + collator.getCollationKey(value.toString()) : value; } @Override public int compareKeys(Object key1, Object key2) { - return collator.compare(key1, key2); + return ((CollationKey)key1).compareTo((CollationKey)key2); } }; }