From fb8236b739a329d2e7a1d706f216c97e7b6981d7 Mon Sep 17 00:00:00 2001
From: felmer <felmer>
Date: Thu, 24 Sep 2009 15:48:03 +0000
Subject: [PATCH] LMS-1186 use property data type for cell value type

SVN: 12702
---
 .../columns/framework/EntityPropertyColDef.java  | 16 ++++++++++++++++
 .../client/web/server/util/FilterUtils.java      |  4 ++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/EntityPropertyColDef.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/EntityPropertyColDef.java
index 0bb141aedb6..3c4a1c8a8cc 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/EntityPropertyColDef.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/columns/framework/EntityPropertyColDef.java
@@ -106,6 +106,22 @@ public class EntityPropertyColDef<T extends IEntityPropertiesHolder> extends
         return null;
     }
 
+    @Override
+    public Comparable<?> getComparableValue(T rowModel)
+    {
+        String valueAsString = tryGetValue(rowModel);
+        DataTypeCode dataType = propertyType.getDataType().getCode();
+        switch (dataType)
+        {
+            case INTEGER:
+                return valueAsString == null ? new Integer(Integer.MIN_VALUE) : new Integer(valueAsString);
+            case REAL:
+                return valueAsString == null ? new Double(-Double.MAX_VALUE) : new Double(valueAsString);
+            default:
+                return super.getComparableValue(rowModel);
+        }
+    }
+
     public IEntityProperty tryGetProperty(T entity)
     {
         for (IEntityProperty prop : getProperties(entity))
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/FilterUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/FilterUtils.java
index 45d5f36fc55..32f3742a80b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/FilterUtils.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/util/FilterUtils.java
@@ -55,14 +55,14 @@ public class FilterUtils
             this.row = row;
         }
 
-        public String get(String columnID)
+        public Object get(String columnID)
         {
             IColumnDefinition<T> columnDefinition = map.get(columnID);
             if (columnDefinition == null)
             {
                 throw new IllegalArgumentException("Undefined column: " + columnID);
             }
-            return columnDefinition.getValue(row);
+            return columnDefinition.getComparableValue(row);
         }
     }
     
-- 
GitLab