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