/** * 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.model; import com.liferay.portal.kernel.util.HashUtil; import com.liferay.portal.kernel.util.MapUtil; import com.liferay.portal.kernel.util.Validator; import java.io.Serializable; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; /** * @author Pablo Carvalho * @author Marcellus Tavares */ public class DDMFormField implements Serializable { public DDMFormField() { _properties = new LinkedHashMap<>(); } public DDMFormField(DDMFormField ddmFormField) { _properties = new LinkedHashMap<>(ddmFormField._properties); setDDMFormFieldOptions( new DDMFormFieldOptions(ddmFormField.getDDMFormFieldOptions())); for (DDMFormFieldRule ddmFormFieldRule : ddmFormField._ddmFormFieldRules) { addDDMFormFieldRule(new DDMFormFieldRule(ddmFormFieldRule)); } DDMFormFieldValidation ddmFormFieldValidation = ddmFormField.getDDMFormFieldValidation(); if (ddmFormFieldValidation != null) { setDDMFormFieldValidation( new DDMFormFieldValidation(ddmFormFieldValidation)); } setLabel(new LocalizedValue(ddmFormField.getLabel())); setPredefinedValue( new LocalizedValue(ddmFormField.getPredefinedValue())); setStyle(new LocalizedValue(ddmFormField.getStyle())); setTip(new LocalizedValue(ddmFormField.getTip())); for (DDMFormField nestedDDMFormField : ddmFormField._nestedDDMFormFields) { addNestedDDMFormField(new DDMFormField(nestedDDMFormField)); } } public DDMFormField(String name, String type) { _properties = new LinkedHashMap<>(); setName(name); setType(type); setDDMFormFieldOptions(new DDMFormFieldOptions()); setLabel(new LocalizedValue()); setPredefinedValue(new LocalizedValue()); setStyle(new LocalizedValue()); setTip(new LocalizedValue()); } /** * @deprecated As of 3.5.0, with no direct replacement */ @Deprecated public void addDDMFormFieldRule(DDMFormFieldRule ddmFormFieldRule) { _ddmFormFieldRules.add(ddmFormFieldRule); } public void addNestedDDMFormField(DDMFormField nestedDDMFormField) { nestedDDMFormField.setDDMForm(_ddmForm); _nestedDDMFormFields.add(nestedDDMFormField); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!(obj instanceof DDMFormField)) { return false; } DDMFormField ddmFormField = (DDMFormField)obj; if (Objects.equals(_properties, ddmFormField._properties) && Objects.equals( _nestedDDMFormFields, ddmFormField._nestedDDMFormFields)) { return true; } return false; } public String getDataType() { return MapUtil.getString(_properties, "dataType"); } public DDMForm getDDMForm() { return _ddmForm; } public DDMFormFieldOptions getDDMFormFieldOptions() { return (DDMFormFieldOptions)_properties.get("options"); } /** * @deprecated As of 3.5.0, with no direct replacement */ @Deprecated public List<DDMFormFieldRule> getDDMFormFieldRules() { return _ddmFormFieldRules; } public DDMFormFieldValidation getDDMFormFieldValidation() { Object value = _properties.get("validation"); if (value instanceof DDMFormFieldValidation) { return (DDMFormFieldValidation)value; } return null; } public String getFieldNamespace() { return MapUtil.getString(_properties, "fieldNamespace"); } public String getIndexType() { return MapUtil.getString(_properties, "indexType"); } public LocalizedValue getLabel() { return (LocalizedValue)_properties.get("label"); } public String getName() { return MapUtil.getString(_properties, "name"); } public List<DDMFormField> getNestedDDMFormFields() { return _nestedDDMFormFields; } public Map<String, DDMFormField> getNestedDDMFormFieldsMap() { Map<String, DDMFormField> nestedDDMFormFieldsMap = new LinkedHashMap<>(); for (DDMFormField nestedDDMFormField : _nestedDDMFormFields) { nestedDDMFormFieldsMap.put( nestedDDMFormField.getName(), nestedDDMFormField); nestedDDMFormFieldsMap.putAll( nestedDDMFormField.getNestedDDMFormFieldsMap()); } return nestedDDMFormFieldsMap; } public LocalizedValue getPredefinedValue() { return (LocalizedValue)_properties.get("predefinedValue"); } public Map<String, Object> getProperties() { return _properties; } public Object getProperty(String name) { return _properties.get(name); } public LocalizedValue getStyle() { return (LocalizedValue)_properties.get("style"); } public LocalizedValue getTip() { return (LocalizedValue)_properties.get("tip"); } public String getType() { return MapUtil.getString(_properties, "type"); } public String getVisibilityExpression() { return MapUtil.getString(_properties, "visibilityExpression"); } @Override public int hashCode() { int hash = HashUtil.hash(0, _properties); return HashUtil.hash(hash, _nestedDDMFormFields); } public boolean isLocalizable() { return MapUtil.getBoolean(_properties, "localizable"); } public boolean isMultiple() { return MapUtil.getBoolean(_properties, "multiple"); } public boolean isReadOnly() { return MapUtil.getBoolean(_properties, "readOnly"); } public boolean isRepeatable() { return MapUtil.getBoolean(_properties, "repeatable"); } public boolean isRequired() { return MapUtil.getBoolean(_properties, "required"); } public boolean isShowLabel() { return MapUtil.getBoolean(_properties, "showLabel", true); } public boolean isTransient() { if (Validator.isNull(getDataType())) { return true; } return false; } public void setDataType(String dataType) { _properties.put("dataType", dataType); } public void setDDMForm(DDMForm ddmForm) { for (DDMFormField nestedDDMFormField : _nestedDDMFormFields) { nestedDDMFormField.setDDMForm(ddmForm); } _ddmForm = ddmForm; } public void setDDMFormFieldOptions( DDMFormFieldOptions ddmFormFieldOptions) { _properties.put("options", ddmFormFieldOptions); } /** * @deprecated As of 3.5.0, with no direct replacement */ @Deprecated public void setDDMFormFieldRules(List<DDMFormFieldRule> ddmFormFieldRules) { _ddmFormFieldRules = ddmFormFieldRules; } public void setDDMFormFieldValidation( DDMFormFieldValidation ddmFormFieldValidation) { _properties.put("validation", ddmFormFieldValidation); } public void setFieldNamespace(String fieldNamespace) { _properties.put("fieldNamespace", fieldNamespace); } public void setIndexType(String indexType) { _properties.put("indexType", indexType); } public void setLabel(LocalizedValue label) { _properties.put("label", label); } public void setLocalizable(boolean localizable) { _properties.put("localizable", localizable); } public void setMultiple(boolean multiple) { _properties.put("multiple", multiple); } public void setName(String name) { _properties.put("name", name); } public void setNestedDDMFormFields(List<DDMFormField> nestedDDMFormFields) { _nestedDDMFormFields = nestedDDMFormFields; } public void setPredefinedValue(LocalizedValue predefinedValue) { _properties.put("predefinedValue", predefinedValue); } public void setProperty(String name, Object value) { _properties.put(name, value); } public void setReadOnly(boolean readOnly) { _properties.put("readOnly", readOnly); } public void setRepeatable(boolean repeatable) { _properties.put("repeatable", repeatable); } public void setRequired(boolean required) { _properties.put("required", required); } public void setShowLabel(boolean showLabel) { _properties.put("showLabel", showLabel); } public void setStyle(LocalizedValue style) { _properties.put("style", style); } public void setTip(LocalizedValue tip) { _properties.put("tip", tip); } public void setType(String type) { _properties.put("type", type); } public void setVisibilityExpression(String visibilityExpression) { _properties.put("visibilityExpression", visibilityExpression); } private DDMForm _ddmForm; private List<DDMFormFieldRule> _ddmFormFieldRules = new ArrayList<>(); private List<DDMFormField> _nestedDDMFormFields = new ArrayList<>(); private final Map<String, Object> _properties; }