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