From 97a78bbc66828be6eaceb5dbeceec61abd8355aa Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 17 May 2013 11:04:44 +0200 Subject: [PATCH] OO-608: make the sorting methods bullet proof --- .../components/table/DefaultColumnDescriptor.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java index ebd0744b91f..94c52b6eab7 100644 --- a/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java +++ b/src/main/java/org/olat/core/gui/components/table/DefaultColumnDescriptor.java @@ -166,16 +166,27 @@ public class DefaultColumnDescriptor implements ColumnDescriptor { } protected int compareString(final String a, final String b) { - return collator.compare(a, b); + if (a == null || b == null) { + return compareNullObjects(a, b); + } + return collator == null ? a.compareTo(b) : collator.compare(a, b); } protected int compareBooleans(final Boolean a, final Boolean b) { + if (a == null || b == null) { + return compareNullObjects(a, b); + } + boolean ba = a.booleanValue(); boolean bb = b.booleanValue(); return ba? (bb? 0: -1):(bb? 1: 0); } protected int compareDateAndTimestamps(Date a, Date b) { + if (a == null || b == null) { + return compareNullObjects(a, b); + } + if (a instanceof Timestamp) { // a timestamp (a) cannot compare a date (b), but vice versa is ok. if(b instanceof Timestamp) { return ((Timestamp)a).compareTo((Timestamp)b); -- GitLab