protected void storeWidgetInCacheAndSetCacheID( final FormCacheUtil formCacheUtil, final String formID, final String pageID, final String locale, final Date processDeployementDate, final FormWidget formWidget) { if (isExpressionDynamic(formWidget.getInitialValueExpression()) || isArrayOfExpressionsDynamic(formWidget.getInitialValueExpressionArray()) || isExpressionDynamic(formWidget.getAvailableValuesExpression()) || isListOfExpressionsDynamic(formWidget.getAvailableValues()) || isListOfListOfExpressionsDynamic(formWidget.getTableAvailableValues()) || isExpressionDynamic(formWidget.getDisplayConditionExpression())) { formWidget.setHasDynamicValue(true); } final String formWidgetCacheId = formCacheUtil.storeFormWidget(formID, pageID, locale, processDeployementDate, formWidget); formWidget.setFormWidgetCacheId(formWidgetCacheId); if (formWidget.getValidators() != null) { formWidget.setValidatorsCacheId( formCacheUtil.storeFieldValidators( formID, pageID, formWidget.getId(), locale, processDeployementDate, formWidget.getValidators())); } }
/** * @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++; } } } } }