/**
* 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.util;
import com.liferay.dynamic.data.mapping.model.DDMForm;
import com.liferay.dynamic.data.mapping.model.DDMFormField;
import com.liferay.dynamic.data.mapping.model.Value;
import com.liferay.dynamic.data.mapping.storage.DDMFormFieldValue;
import com.liferay.dynamic.data.mapping.storage.DDMFormValues;
import com.liferay.dynamic.data.mapping.storage.FieldConstants;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* @author Marcellus Tavares
* @deprecated As of 3.5.0, with no direct replacement
*/
@Deprecated
public class DDMFormInstanceFactoryHelper {
public DDMFormInstanceFactoryHelper(
Class<?> clazz, DDMFormValues ddmFormValues, Locale locale) {
_locale = locale;
setDDMFormFieldNameMethodMap(clazz);
DDMForm ddmForm = ddmFormValues.getDDMForm();
_ddmForm = ddmForm;
_ddmFormFieldValuesMap = ddmFormValues.getDDMFormFieldValuesMap();
}
public Map<String, Object> getProperties() {
Map<String, Object> properties = new HashMap<>();
for (DDMFormField ddmFormField : _ddmForm.getDDMFormFields()) {
String methodName = _ddmFormFieldMethodNameMap.get(
ddmFormField.getName());
Object value = null;
List<DDMFormFieldValue> ddmFormFieldValues =
_ddmFormFieldValuesMap.get(ddmFormField.getName());
if (ddmFormField.isRepeatable()) {
value = toArrayValue(ddmFormField, ddmFormFieldValues);
}
else {
value = toSimpleValue(ddmFormField, ddmFormFieldValues.get(0));
}
properties.put(methodName, value);
}
return properties;
}
protected void setDDMFormFieldNameMethodMap(Class<?> clazz) {
DDMFormFactoryHelper ddmFormFactoryHelper = new DDMFormFactoryHelper(
clazz);
for (Method method : ddmFormFactoryHelper.getDDMFormFieldMethods()) {
DDMFormFieldFactoryHelper ddmFormFieldFactoryHelper =
new DDMFormFieldFactoryHelper(method);
_ddmFormFieldMethodNameMap.put(
ddmFormFieldFactoryHelper.getDDMFormFieldName(),
method.getName());
}
}
protected Object toArrayValue(
DDMFormField ddmFormField, List<DDMFormFieldValue> ddmFormFieldValues) {
List<Serializable> values = new ArrayList<>();
for (DDMFormFieldValue ddmFormFieldValue : ddmFormFieldValues) {
Serializable value = toSimpleValue(ddmFormField, ddmFormFieldValue);
values.add(value);
}
return FieldConstants.getSerializable(
ddmFormField.getDataType(), values);
}
protected Serializable toSimpleValue(
DDMFormField ddmFormField, DDMFormFieldValue ddmFormFieldValue) {
Value value = ddmFormFieldValue.getValue();
return FieldConstants.getSerializable(
ddmFormField.getDataType(), value.getString(_locale));
}
private final DDMForm _ddmForm;
private final Map<String, String> _ddmFormFieldMethodNameMap =
new HashMap<>();
private final Map<String, List<DDMFormFieldValue>> _ddmFormFieldValuesMap;
private final Locale _locale;
}