/** * Set the tables parameters * * @param formWidget the widget * @param evaluatedExpressions the map of evaluated expressions * @param context the context including the URL parameters * @throws FormNotFoundException * @throws FormServiceProviderNotFoundException */ @SuppressWarnings("unchecked") public void setTablesParams( final FormWidget formWidget, final Map<String, Serializable> evaluatedExpressions, final Map<String, Object> context) throws FormNotFoundException, FormServiceProviderNotFoundException { final String widgetId = formWidget.getId(); if (WidgetType.TABLE.equals(formWidget.getType()) || WidgetType.EDITABLE_GRID.equals(formWidget.getType())) { final Object valueColumnIndex = evaluatedExpressions.get(widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_VALUE_COLUMN_INDEX); if (valueColumnIndex != null) { try { formWidget.setValueColumnIndex((Integer) valueColumnIndex); } catch (final Exception e) { if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.log( Level.WARNING, "The max number of columns has to be set with an integer or a groovy expression returning an integer."); } formWidget.setValueColumnIndex(0); } } final Object maxColumns = evaluatedExpressions.get(widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_MAX_COLUMNS); if (maxColumns != null) { try { formWidget.setMaxColumns((Integer) maxColumns); } catch (final Exception e) { if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.log( Level.WARNING, "The max number of columns has to be set with an integer or a groovy expression returning an integer."); } formWidget.setMaxColumns(-1); } } else { formWidget.setMaxColumns(-1); } final Object minColumns = evaluatedExpressions.get(widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_MIN_COLUMNS); if (minColumns != null) { try { formWidget.setMinColumns((Integer) minColumns); } catch (final Exception e) { if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.log( Level.WARNING, "The min number of columns has to be set with an integer or a groovy expression returning an integer."); } formWidget.setMinColumns(-1); } } else { formWidget.setMinColumns(-1); } final Object maxRows = evaluatedExpressions.get(widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_MAX_ROWS); if (maxRows != null) { try { formWidget.setMaxRows((Integer) maxRows); } catch (final Exception e) { if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.log( Level.WARNING, "The max number of rows has to be set with an integer or a groovy expression returning an integer."); } formWidget.setMaxRows(-1); } } else { formWidget.setMaxRows(-1); } final Object minRows = evaluatedExpressions.get(widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_MIN_ROWS); if (minRows != null) { try { formWidget.setMinRows((Integer) minRows); } catch (final Exception e) { if (LOGGER.isLoggable(Level.WARNING)) { LOGGER.log( Level.WARNING, "The max number of rows has to be set with an integer or a groovy expression returning an integer."); } formWidget.setMinRows(-1); } } else { formWidget.setMinRows(-1); } final Object verticalHeader = evaluatedExpressions.get(widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_VERTICAL_HEADER); List<String> verticalHeaderList = null; if (verticalHeader != null) { try { verticalHeaderList = new ArrayList<String>((Collection<String>) verticalHeader); } catch (final ClassCastException e) { if (LOGGER.isLoggable(Level.SEVERE)) { LOGGER.log( Level.SEVERE, "The vertical header expression for widget " + formWidget.getId() + " should return a Collection.", e); } } } else if (evaluatedExpressions.containsKey( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_VERTICAL_HEADER + 0)) { verticalHeaderList = new ArrayList<String>(); int verticalHeaderIndex = 0; do { final Object verticalHeaderCell = evaluatedExpressions.get( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_VERTICAL_HEADER + verticalHeaderIndex); try { verticalHeaderList.add((String) verticalHeaderCell); } catch (final ClassCastException e) { if (LOGGER.isLoggable(Level.SEVERE)) { LOGGER.log( Level.SEVERE, "All the vertical header expressions for widget " + formWidget.getId() + " should return a String.", e); } } verticalHeaderIndex++; } while (evaluatedExpressions.containsKey( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_VERTICAL_HEADER + verticalHeaderIndex)); } formWidget.setVerticalHeader(verticalHeaderList); final Object horizontalHeader = evaluatedExpressions.get(widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_HORIZONTAL_HEADER); List<String> horizontalHeaderList = null; if (horizontalHeader != null) { try { horizontalHeaderList = new ArrayList<String>((Collection<String>) horizontalHeader); } catch (final ClassCastException e) { if (LOGGER.isLoggable(Level.SEVERE)) { LOGGER.log( Level.SEVERE, "The horizontal header expression for widget " + formWidget.getId() + " should return a Collection.", e); } } } else if (evaluatedExpressions.containsKey( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_HORIZONTAL_HEADER + 0)) { horizontalHeaderList = new ArrayList<String>(); int horizontalHeaderIndex = 0; do { final Object horizontalHeaderCell = evaluatedExpressions.get( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_HORIZONTAL_HEADER + horizontalHeaderIndex); try { horizontalHeaderList.add((String) horizontalHeaderCell); } catch (final ClassCastException e) { if (LOGGER.isLoggable(Level.SEVERE)) { LOGGER.log( Level.SEVERE, "All the horizontal header expressions for widget " + formWidget.getId() + " should return a String.", e); } } horizontalHeaderIndex++; } while (evaluatedExpressions.containsKey( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_HORIZONTAL_HEADER + horizontalHeaderIndex)); } formWidget.setHorizontalHeader(horizontalHeaderList); } }