protected boolean isListOfExpressionsDynamic( final List<FormFieldAvailableValue> availableValues) { if (availableValues != null && availableValues.size() > 0) { for (final FormFieldAvailableValue formFieldAvailableValue : availableValues) { if (isExpressionDynamic(formFieldAvailableValue.getLabelExpression()) || isExpressionDynamic(formFieldAvailableValue.getValueExpression())) { return true; } } } return false; }
/** * @param formWidget * @param evaluatedExpressions */ protected void setAvailableValuesListsAndArrays( final FormWidget formWidget, final Map<String, Serializable> evaluatedExpressions) { final String widgetId = formWidget.getId(); if (WidgetType.TABLE.equals(formWidget.getType())) { if (evaluatedExpressions.containsKey( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_VALUE + 0 + INDEX_SEPARATOR + 0)) { int availableValueRowIndex = 0; do { int availableValueColumnIndex = 0; do { final Object availableValuelabel = evaluatedExpressions.get( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_LABEL + availableValueRowIndex + INDEX_SEPARATOR + availableValueColumnIndex); final Object availableValueValue = evaluatedExpressions.get( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_VALUE + availableValueRowIndex + INDEX_SEPARATOR + availableValueColumnIndex); final FormFieldAvailableValue availableValue = formWidget .getTableAvailableValues() .get(availableValueRowIndex) .get(availableValueColumnIndex); availableValue.setLabel(getStringValue(availableValuelabel)); availableValue.setValue(getStringValue(availableValueValue)); availableValueColumnIndex++; } while (evaluatedExpressions.containsKey( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_VALUE + availableValueRowIndex + INDEX_SEPARATOR + availableValueColumnIndex)); availableValueRowIndex++; } while (evaluatedExpressions.containsKey( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_VALUE + availableValueRowIndex + INDEX_SEPARATOR + 0)); } } else { if (evaluatedExpressions.containsKey( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_VALUE + 0)) { int availableValueIndex = 0; do { final Object availableValuelabel = evaluatedExpressions.get( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_LABEL + availableValueIndex); final Object availableValueValue = evaluatedExpressions.get( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_VALUE + availableValueIndex); final FormFieldAvailableValue availableValue = formWidget.getAvailableValues().get(availableValueIndex); availableValue.setLabel(getStringValue(availableValuelabel)); availableValue.setValue(getStringValue(availableValueValue)); availableValueIndex++; } while (evaluatedExpressions.containsKey( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_VALUE + availableValueIndex)); } } }
/** @param formWidget */ protected void addFormWidgetAvailableValuesExpressions( final FormWidget formWidget, final List<Expression> expressionsToEvaluate) { final String widgetId = formWidget.getId(); if (formWidget.getAvailableValuesExpression() != null && !WidgetType.SUGGESTBOX_ASYNC.equals(formWidget.getType())) { final Expression availableValuesExpression = formWidget.getAvailableValuesExpression(); availableValuesExpression.setName( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUES); expressionsToEvaluate.add(availableValuesExpression); } else { if (WidgetType.TABLE.equals(formWidget.getType())) { final List<List<FormFieldAvailableValue>> tableAvailableValues = formWidget.getTableAvailableValues(); if (tableAvailableValues != null && !tableAvailableValues.isEmpty()) { int availableValueRowIndex = 0; for (final List<FormFieldAvailableValue> formFieldAvailableValuesRow : tableAvailableValues) { int availableValueIndex = 0; for (final FormFieldAvailableValue formFieldAvailableValue : formFieldAvailableValuesRow) { final Expression availableValueLabelExpression = formFieldAvailableValue.getLabelExpression(); availableValueLabelExpression.setName( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_LABEL + availableValueRowIndex + INDEX_SEPARATOR + availableValueIndex); expressionsToEvaluate.add(availableValueLabelExpression); final Expression availableValueValueExpression = formFieldAvailableValue.getValueExpression(); availableValueValueExpression.setName( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_VALUE + availableValueRowIndex + INDEX_SEPARATOR + availableValueIndex); expressionsToEvaluate.add(availableValueValueExpression); availableValueIndex++; } availableValueRowIndex++; } } } else { final List<FormFieldAvailableValue> availableValues = formWidget.getAvailableValues(); if (availableValues != null && !availableValues.isEmpty()) { int availableValueIndex = 0; for (final FormFieldAvailableValue formFieldAvailableValue : availableValues) { final Expression availableValueLabelExpression = formFieldAvailableValue.getLabelExpression(); availableValueLabelExpression.setName( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_LABEL + availableValueIndex); expressionsToEvaluate.add(availableValueLabelExpression); final Expression availableValueValueExpression = formFieldAvailableValue.getValueExpression(); availableValueValueExpression.setName( widgetId + EXPRESSION_KEY_SEPARATOR + WIDGET_AVAILABLE_VALUE_VALUE + availableValueIndex); expressionsToEvaluate.add(availableValueValueExpression); availableValueIndex++; } } } } }