com.liferay.dynamic.data.mapping.io.internal.DDMFormLayoutJSONDeserializerImpl Maven / Gradle / Ivy
/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.dynamic.data.mapping.io.internal;
import com.liferay.dynamic.data.mapping.io.DDMFormLayoutJSONDeserializer;
import com.liferay.dynamic.data.mapping.model.DDMFormLayout;
import com.liferay.dynamic.data.mapping.model.DDMFormLayoutColumn;
import com.liferay.dynamic.data.mapping.model.DDMFormLayoutPage;
import com.liferay.dynamic.data.mapping.model.DDMFormLayoutRow;
import com.liferay.dynamic.data.mapping.model.LocalizedValue;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.json.JSONArray;
import com.liferay.portal.kernel.json.JSONFactory;
import com.liferay.portal.kernel.json.JSONObject;
import com.liferay.portal.kernel.util.LocaleUtil;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
/**
* @author Marcellus Tavares
*/
@Component(immediate = true)
public class DDMFormLayoutJSONDeserializerImpl
implements DDMFormLayoutJSONDeserializer {
@Override
public DDMFormLayout deserialize(String serializedDDMFormLayout)
throws PortalException {
JSONObject jsonObject = _jsonFactory.createJSONObject(
serializedDDMFormLayout);
DDMFormLayout ddmFormLayout = new DDMFormLayout();
setDDMFormLayoutDefaultLocale(
jsonObject.getString("defaultLanguageId"), ddmFormLayout);
setDDMFormLayoutPages(jsonObject.getJSONArray("pages"), ddmFormLayout);
setDDMFormLayoutPageTitlesDefaultLocale(ddmFormLayout);
setDDMFormLayoutPaginationMode(
jsonObject.getString("paginationMode"), ddmFormLayout);
return ddmFormLayout;
}
protected DDMFormLayoutColumn getDDMFormLayoutColumn(
JSONObject jsonObject) {
DDMFormLayoutColumn ddmFormLayoutColumn = new DDMFormLayoutColumn(
jsonObject.getInt("size"));
setDDMFormLayouColumnFieldNames(
jsonObject.getJSONArray("fieldNames"), ddmFormLayoutColumn);
return ddmFormLayoutColumn;
}
protected List getDDMFormLayoutColumnFieldNames(
JSONArray jsonArray) {
List ddmFormFieldNames = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
ddmFormFieldNames.add(jsonArray.getString(i));
}
return ddmFormFieldNames;
}
protected List getDDMFormLayoutColumns(
JSONArray jsonArray) {
List ddmFormLayoutColumns = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
DDMFormLayoutColumn ddmFormLayoutColumn = getDDMFormLayoutColumn(
jsonArray.getJSONObject(i));
ddmFormLayoutColumns.add(ddmFormLayoutColumn);
}
return ddmFormLayoutColumns;
}
protected DDMFormLayoutPage getDDMFormLayoutPage(JSONObject jsonObject) {
DDMFormLayoutPage ddmFormLayoutPage = new DDMFormLayoutPage();
setDDMFormLayoutPageDescription(
jsonObject.getJSONObject("description"), ddmFormLayoutPage);
setDDMFormLayoutPageRows(
jsonObject.getJSONArray("rows"), ddmFormLayoutPage);
setDDMFormLayoutPageTitle(
jsonObject.getJSONObject("title"), ddmFormLayoutPage);
return ddmFormLayoutPage;
}
protected List getDDMFormLayoutPages(
JSONArray jsonArray) {
List ddmFormLayoutPages = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
DDMFormLayoutPage ddmFormLayoutPage = getDDMFormLayoutPage(
jsonArray.getJSONObject(i));
ddmFormLayoutPages.add(ddmFormLayoutPage);
}
return ddmFormLayoutPages;
}
protected DDMFormLayoutRow getDDMFormLayoutRow(JSONObject jsonObject) {
DDMFormLayoutRow ddmFormLayoutRow = new DDMFormLayoutRow();
setDDMFormLayoutRowColumns(
jsonObject.getJSONArray("columns"), ddmFormLayoutRow);
return ddmFormLayoutRow;
}
protected List getDDMFormLayoutRows(JSONArray jsonArray) {
List ddmFormLayoutRows = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
DDMFormLayoutRow ddmFormLayoutRow = getDDMFormLayoutRow(
jsonArray.getJSONObject(i));
ddmFormLayoutRows.add(ddmFormLayoutRow);
}
return ddmFormLayoutRows;
}
protected LocalizedValue getDescription(JSONObject jsonObject) {
if (jsonObject == null) {
return null;
}
LocalizedValue description = new LocalizedValue();
Iterator itr = jsonObject.keys();
while (itr.hasNext()) {
String languageId = itr.next();
description.addString(
LocaleUtil.fromLanguageId(languageId),
jsonObject.getString(languageId));
}
return description;
}
protected LocalizedValue getTitle(JSONObject jsonObject) {
if (jsonObject == null) {
return null;
}
LocalizedValue title = new LocalizedValue();
Iterator itr = jsonObject.keys();
while (itr.hasNext()) {
String languageId = itr.next();
title.addString(
LocaleUtil.fromLanguageId(languageId),
jsonObject.getString(languageId));
}
return title;
}
protected void setDDMFormLayouColumnFieldNames(
JSONArray jsonArray, DDMFormLayoutColumn ddmFormLayoutColumn) {
List ddmFormLayoutColumnNames =
getDDMFormLayoutColumnFieldNames(jsonArray);
ddmFormLayoutColumn.setDDMFormFieldNames(ddmFormLayoutColumnNames);
}
protected void setDDMFormLayoutDefaultLocale(
String defaultLanguageId, DDMFormLayout ddmFormLayout) {
Locale defaultLocale = LocaleUtil.fromLanguageId(defaultLanguageId);
ddmFormLayout.setDefaultLocale(defaultLocale);
}
protected void setDDMFormLayoutPageDescription(
JSONObject jsonObject, DDMFormLayoutPage ddmFormLayoutPage) {
LocalizedValue description = getDescription(jsonObject);
if (description == null) {
return;
}
ddmFormLayoutPage.setDescription(description);
}
protected void setDDMFormLayoutPageRows(
JSONArray jsonArray, DDMFormLayoutPage ddmFormLayoutPage) {
List ddmFormLayoutRows = getDDMFormLayoutRows(
jsonArray);
ddmFormLayoutPage.setDDMFormLayoutRows(ddmFormLayoutRows);
}
protected void setDDMFormLayoutPages(
JSONArray jsonArray, DDMFormLayout ddmFormLayout) {
List ddmFormLayoutPages = getDDMFormLayoutPages(
jsonArray);
ddmFormLayout.setDDMFormLayoutPages(ddmFormLayoutPages);
}
protected void setDDMFormLayoutPageTitle(
JSONObject jsonObject, DDMFormLayoutPage ddmFormLayoutPage) {
LocalizedValue title = getTitle(jsonObject);
if (title == null) {
return;
}
ddmFormLayoutPage.setTitle(title);
}
protected void setDDMFormLayoutPageTitlesDefaultLocale(
DDMFormLayout ddmFormLayout) {
for (DDMFormLayoutPage ddmFormLayoutPage :
ddmFormLayout.getDDMFormLayoutPages()) {
LocalizedValue title = ddmFormLayoutPage.getTitle();
title.setDefaultLocale(ddmFormLayout.getDefaultLocale());
}
}
protected void setDDMFormLayoutPaginationMode(
String paginationMode, DDMFormLayout ddmFormLayout) {
ddmFormLayout.setPaginationMode(paginationMode);
}
protected void setDDMFormLayoutRowColumns(
JSONArray jsonArray, DDMFormLayoutRow ddmFormLayoutRow) {
List ddmFormLayoutColumns =
getDDMFormLayoutColumns(jsonArray);
ddmFormLayoutRow.setDDMFormLayoutColumns(ddmFormLayoutColumns);
}
@Reference(unbind = "-")
protected void setJSONFactory(JSONFactory jsonFactory) {
_jsonFactory = jsonFactory;
}
private JSONFactory _jsonFactory;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy