From 5b920f3e20ddfe5f9395c8c161fd73e018b9da33 Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Wed, 14 Oct 2009 09:31:30 +0000
Subject: [PATCH] LMS-1204 Calculated Columns: better exception message when
 column expression is wrong

SVN: 12963
---
 .../server/calculator/GridExpressionUtils.java | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/calculator/GridExpressionUtils.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/calculator/GridExpressionUtils.java
index ad541a2bb5a..8868dfa1e35 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/calculator/GridExpressionUtils.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/server/calculator/GridExpressionUtils.java
@@ -58,7 +58,7 @@ public class GridExpressionUtils
             EVALUATION_SERIOUS_ERROR_MSG + "applying the filter: ";
 
     private static final String COLUMN_EVALUATION_SERIOUS_ERROR_TEMPLATE =
-            "Error: calculating the value of a custom column '%s' failed, conntact you administrator: ";
+            "Error: calculating the value of a custom column '%s' failed, contact your administrator: ";
 
     private static final String COLUMN_EVALUATION_ERROR_TEMPLATE =
             COLUMN_EVALUATION_SERIOUS_ERROR_TEMPLATE + "invalid column definition. ";
@@ -115,8 +115,7 @@ public class GridExpressionUtils
         Map<String, RowCalculator<T>> calculators = new HashMap<String, RowCalculator<T>>();
         for (GridCustomColumn customColumn : customColumns)
         {
-            String expression = StringEscapeUtils.unescapeHtml(customColumn.getExpression());
-            RowCalculator<T> rowCalculator = new RowCalculator<T>(availableColumns, expression);
+            RowCalculator<T> rowCalculator = createRowCalculator(availableColumns, customColumn);
             calculators.put(customColumn.getCode(), rowCalculator);
         }
         for (T rowData : allRows)
@@ -135,6 +134,19 @@ public class GridExpressionUtils
         return result;
     }
 
+    private static <T> RowCalculator<T> createRowCalculator(
+            Set<IColumnDefinition<T>> availableColumns, GridCustomColumn customColumn)
+    {
+        String expression = StringEscapeUtils.unescapeHtml(customColumn.getExpression());
+        try
+        {
+            return new RowCalculator<T>(availableColumns, expression);
+        } catch (Exception ex)
+        {
+            throw new UserFailureException(createCustomColumnErrorMessage(customColumn, ex));
+        }
+    }
+
     private static List<GridCustomColumnInfo> extractColumnInfos(
             List<GridCustomColumn> customColumns)
     {
-- 
GitLab