001
014
015 package com.liferay.portlet.dynamicdatamapping.io;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.json.JSONArray;
019 import com.liferay.portal.kernel.json.JSONFactoryUtil;
020 import com.liferay.portal.kernel.json.JSONObject;
021 import com.liferay.portlet.dynamicdatamapping.model.DDMForm;
022 import com.liferay.portlet.dynamicdatamapping.registry.DDMFormFactory;
023 import com.liferay.portlet.dynamicdatamapping.registry.DDMFormFieldRenderer;
024 import com.liferay.portlet.dynamicdatamapping.registry.DDMFormFieldType;
025 import com.liferay.portlet.dynamicdatamapping.registry.DDMFormFieldTypeSettings;
026
027 import java.util.List;
028
029
032 public class DDMFormFieldTypesJSONSerializerImpl
033 implements DDMFormFieldTypesJSONSerializer {
034
035 @Override
036 public String serialize(List<DDMFormFieldType> ddmFormFieldTypes)
037 throws PortalException {
038
039 JSONArray jsonArray = JSONFactoryUtil.createJSONArray();
040
041 for (DDMFormFieldType ddmFormFieldType : ddmFormFieldTypes) {
042 jsonArray.put(toJSONObject(ddmFormFieldType));
043 }
044
045 return jsonArray.toString();
046 }
047
048 protected JSONObject toJSONObject(
049 Class<? extends DDMFormFieldTypeSettings> ddmFormFieldTypeSettings)
050 throws PortalException {
051
052 DDMForm ddmFormFieldTypeSettingsDDMForm = DDMFormFactory.create(
053 ddmFormFieldTypeSettings);
054
055 String serializedDDMFormFieldTypeSettings =
056 DDMFormJSONSerializerUtil.serialize(
057 ddmFormFieldTypeSettingsDDMForm);
058
059 return JSONFactoryUtil.createJSONObject(
060 serializedDDMFormFieldTypeSettings);
061 }
062
063 protected JSONObject toJSONObject(DDMFormFieldType ddmFormFieldType)
064 throws PortalException {
065
066 JSONObject jsonObject = JSONFactoryUtil.createJSONObject();
067
068 jsonObject.put("icon", ddmFormFieldType.getIcon());
069 jsonObject.put(
070 "javaScriptClass",
071 ddmFormFieldType.getDDMFormFieldTypeJavaScriptClass());
072 jsonObject.put(
073 "javaScriptModule",
074 ddmFormFieldType.getDDMFormFieldTypeJavaScriptModule());
075 jsonObject.put("name", ddmFormFieldType.getName());
076 jsonObject.put(
077 "settings",
078 toJSONObject(ddmFormFieldType.getDDMFormFieldTypeSettings()));
079
080 DDMFormFieldRenderer ddmFormFieldRenderer =
081 ddmFormFieldType.getDDMFormFieldRenderer();
082
083 jsonObject.put(
084 "templateNamespace", ddmFormFieldRenderer.getTemplateNamespace());
085
086 return jsonObject;
087 }
088
089 }