protected void setNestedDDMFormFieldValues(
      Map<String, DDMFormFieldValue> ddmFormFieldValuesMap,
      List<DDMFormField> nestedDDMFormFields,
      DDMFormFieldValue parentDDMFormFieldValue,
      String parentEntryKey) {

    int i = 0;

    for (DDMFormField nestedDDMFormField : nestedDDMFormFields) {
      Set<String> entryKeys =
          getEntryKeys(ddmFormFieldValuesMap, parentEntryKey, nestedDDMFormField.getName());

      for (String entryKey : entryKeys) {
        DDMFormFieldValue ddmFormFieldValue = ddmFormFieldValuesMap.get(entryKey);

        int index = i + getDDMFormFieldValueIndex(entryKey);

        setNestedDDMFormFieldValues(
            ddmFormFieldValuesMap,
            nestedDDMFormField.getNestedDDMFormFields(),
            ddmFormFieldValue,
            entryKey);

        setDDMFormFieldValueAtIndex(
            parentDDMFormFieldValue.getNestedDDMFormFieldValues(), ddmFormFieldValue, index);
      }

      List<DDMFormFieldValue> parentNestedDDMFormFieldValues =
          parentDDMFormFieldValue.getNestedDDMFormFieldValues();

      i = parentNestedDDMFormFieldValues.size();
    }
  }
  protected List<DDMFormFieldValue> getDDMFormFieldValues(
      Map<String, DDMFormFieldValue> ddmFormFieldValuesMap, List<DDMFormField> ddmFormFields) {

    List<DDMFormFieldValue> ddmFormFieldValues = new ArrayList<>();

    int i = 0;

    for (DDMFormField ddmFormField : ddmFormFields) {
      Set<String> entryKeys =
          getEntryKeys(ddmFormFieldValuesMap, StringPool.BLANK, ddmFormField.getName());

      for (String entryKey : entryKeys) {
        DDMFormFieldValue ddmFormFieldValue = ddmFormFieldValuesMap.get(entryKey);

        int index = i + getDDMFormFieldValueIndex(entryKey);

        setNestedDDMFormFieldValues(
            ddmFormFieldValuesMap,
            ddmFormField.getNestedDDMFormFields(),
            ddmFormFieldValue,
            entryKey);

        setDDMFormFieldValueAtIndex(ddmFormFieldValues, ddmFormFieldValue, index);
      }

      i = ddmFormFieldValues.size();
    }

    return ddmFormFieldValues;
  }
  protected void validateDDMFormFields(
      List<DDMFormField> ddmFormFields,
      Set<String> ddmFormFieldNames,
      Set<Locale> ddmFormAvailableLocales,
      Locale ddmFormDefaultLocale)
      throws DDMFormValidationException {

    for (DDMFormField ddmFormField : ddmFormFields) {
      validateDDMFormFieldName(ddmFormField, ddmFormFieldNames);

      validateDDMFormFieldType(ddmFormField);

      validateDDMFormFieldIndexType(ddmFormField);

      validateDDMFormFieldOptions(ddmFormField, ddmFormAvailableLocales, ddmFormDefaultLocale);

      validateOptionalDDMFormFieldLocalizedProperty(
          ddmFormField, "label", ddmFormAvailableLocales, ddmFormDefaultLocale);

      validateOptionalDDMFormFieldLocalizedProperty(
          ddmFormField, "predefinedValue", ddmFormAvailableLocales, ddmFormDefaultLocale);

      validateOptionalDDMFormFieldLocalizedProperty(
          ddmFormField, "tip", ddmFormAvailableLocales, ddmFormDefaultLocale);

      validateDDMFormFieldVisibilityExpression(ddmFormField);

      validateDDMFormFields(
          ddmFormField.getNestedDDMFormFields(),
          ddmFormFieldNames,
          ddmFormAvailableLocales,
          ddmFormDefaultLocale);
    }
  }
示例#4
0
  protected JSONArray getDDMFormFieldsJSONArray(
      List<DDMFormField> ddmFormFields, Set<Locale> availableLocales, Locale defaultLocale) {

    JSONArray ddmFormFieldsJSONArray = JSONFactoryUtil.createJSONArray();

    for (DDMFormField ddmFormField : ddmFormFields) {
      JSONObject jsonObject = JSONFactoryUtil.createJSONObject();

      jsonObject.put("dataType", ddmFormField.getDataType());
      jsonObject.put("id", ddmFormField.getName());
      jsonObject.put("indexType", ddmFormField.getIndexType());
      jsonObject.put("localizable", ddmFormField.isLocalizable());
      jsonObject.put("multiple", ddmFormField.isMultiple());
      jsonObject.put("name", ddmFormField.getName());
      jsonObject.put("repeatable", ddmFormField.isRepeatable());
      jsonObject.put("required", ddmFormField.isRequired());
      jsonObject.put("showLabel", ddmFormField.isShowLabel());
      jsonObject.put("type", ddmFormField.getType());

      addDDMFormFieldLocalizedProperties(jsonObject, ddmFormField, defaultLocale, defaultLocale);

      addDDMFormFieldOptions(jsonObject, ddmFormField, availableLocales, defaultLocale);

      JSONObject localizationMapJSONObject = JSONFactoryUtil.createJSONObject();

      for (Locale availableLocale : availableLocales) {
        JSONObject localeMap = JSONFactoryUtil.createJSONObject();

        addDDMFormFieldLocalizedProperties(localeMap, ddmFormField, availableLocale, defaultLocale);

        localizationMapJSONObject.put(LocaleUtil.toLanguageId(availableLocale), localeMap);
      }

      jsonObject.put("localizationMap", localizationMapJSONObject);

      jsonObject.put(
          "fields",
          getDDMFormFieldsJSONArray(
              ddmFormField.getNestedDDMFormFields(), availableLocales, defaultLocale));

      ddmFormFieldsJSONArray.put(jsonObject);
    }

    return ddmFormFieldsJSONArray;
  }
  protected void poupulateDefaultDDMFormFieldParameterNames(
      List<DDMFormField> ddmFormFields,
      String parentDefaultDDMFormFieldParameterName,
      Set<String> defaultDDMFormFieldParameterNames) {

    for (DDMFormField ddmFormField : ddmFormFields) {
      String defaultDDMFormFieldParameterName =
          createDefaultDDMFormFieldParameterName(
              ddmFormField, parentDefaultDDMFormFieldParameterName);

      defaultDDMFormFieldParameterNames.add(defaultDDMFormFieldParameterName);

      poupulateDefaultDDMFormFieldParameterNames(
          ddmFormField.getNestedDDMFormFields(),
          defaultDDMFormFieldParameterName,
          defaultDDMFormFieldParameterNames);
    }
  }