001    /**
002     * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.dynamicdatamapping;
016    
017    import com.liferay.portal.kernel.util.MapUtil;
018    import com.liferay.portal.kernel.util.Validator;
019    
020    import java.io.Serializable;
021    
022    import java.util.ArrayList;
023    import java.util.LinkedHashMap;
024    import java.util.List;
025    import java.util.Map;
026    
027    /**
028     * @author Pablo Carvalho
029     * @author Marcellus Tavares
030     */
031    public class DDMFormField implements Serializable {
032    
033            public DDMFormField(String name, String type) {
034                    setName(name);
035                    setType(type);
036    
037                    setDDMFormFieldOptions(new DDMFormFieldOptions());
038                    setLabel(new LocalizedValue());
039                    setPredefinedValue(new LocalizedValue());
040                    setStyle(new LocalizedValue());
041                    setTip(new LocalizedValue());
042            }
043    
044            public void addNestedDDMFormField(DDMFormField nestedDDMFormField) {
045                    nestedDDMFormField.setDDMForm(_ddmForm);
046    
047                    _nestedDDMFormFields.add(nestedDDMFormField);
048            }
049    
050            public String getDataType() {
051                    return MapUtil.getString(_properties, "dataType");
052            }
053    
054            public DDMForm getDDMForm() {
055                    return _ddmForm;
056            }
057    
058            public DDMFormFieldOptions getDDMFormFieldOptions() {
059                    return (DDMFormFieldOptions)_properties.get("options");
060            }
061    
062            public String getFieldNamespace() {
063                    return MapUtil.getString(_properties, "fieldNamespace");
064            }
065    
066            public String getIndexType() {
067                    return MapUtil.getString(_properties, "indexType");
068            }
069    
070            public LocalizedValue getLabel() {
071                    return (LocalizedValue)_properties.get("label");
072            }
073    
074            public String getName() {
075                    return MapUtil.getString(_properties, "name");
076            }
077    
078            public List<DDMFormField> getNestedDDMFormFields() {
079                    return _nestedDDMFormFields;
080            }
081    
082            public Map<String, DDMFormField> getNestedDDMFormFieldsMap() {
083                    Map<String, DDMFormField> nestedDDMFormFieldsMap =
084                            new LinkedHashMap<>();
085    
086                    for (DDMFormField nestedDDMFormField : _nestedDDMFormFields) {
087                            nestedDDMFormFieldsMap.put(
088                                    nestedDDMFormField.getName(), nestedDDMFormField);
089    
090                            nestedDDMFormFieldsMap.putAll(
091                                    nestedDDMFormField.getNestedDDMFormFieldsMap());
092                    }
093    
094                    return nestedDDMFormFieldsMap;
095            }
096    
097            public LocalizedValue getPredefinedValue() {
098                    return (LocalizedValue)_properties.get("predefinedValue");
099            }
100    
101            public Object getProperty(String name) {
102                    return _properties.get(name);
103            }
104    
105            public LocalizedValue getStyle() {
106                    return (LocalizedValue)_properties.get("style");
107            }
108    
109            public LocalizedValue getTip() {
110                    return (LocalizedValue)_properties.get("tip");
111            }
112    
113            public String getType() {
114                    return MapUtil.getString(_properties, "type");
115            }
116    
117            public boolean isLocalizable() {
118                    return MapUtil.getBoolean(_properties, "localizable");
119            }
120    
121            public boolean isMultiple() {
122                    return MapUtil.getBoolean(_properties, "multiple");
123            }
124    
125            public boolean isReadOnly() {
126                    return MapUtil.getBoolean(_properties, "readOnly");
127            }
128    
129            public boolean isRepeatable() {
130                    return MapUtil.getBoolean(_properties, "repeatable");
131            }
132    
133            public boolean isRequired() {
134                    return MapUtil.getBoolean(_properties, "required");
135            }
136    
137            public boolean isShowLabel() {
138                    return MapUtil.getBoolean(_properties, "showLabel");
139            }
140    
141            public boolean isTransient() {
142                    if (Validator.isNull(getDataType())) {
143                            return true;
144                    }
145    
146                    return false;
147            }
148    
149            public void setDataType(String dataType) {
150                    _properties.put("dataType", dataType);
151            }
152    
153            public void setDDMForm(DDMForm ddmForm) {
154                    for (DDMFormField nestedDDMFormField : _nestedDDMFormFields) {
155                            nestedDDMFormField.setDDMForm(ddmForm);
156                    }
157    
158                    _ddmForm = ddmForm;
159            }
160    
161            public void setDDMFormFieldOptions(
162                    DDMFormFieldOptions ddmFormFieldOptions) {
163    
164                    _properties.put("options", ddmFormFieldOptions);
165            }
166    
167            public void setFieldNamespace(String fieldNamespace) {
168                    _properties.put("fieldNamespace", fieldNamespace);
169            }
170    
171            public void setIndexType(String indexType) {
172                    _properties.put("indexType", indexType);
173            }
174    
175            public void setLabel(LocalizedValue label) {
176                    _properties.put("label", label);
177            }
178    
179            public void setLocalizable(boolean localizable) {
180                    _properties.put("localizable", localizable);
181            }
182    
183            public void setMultiple(boolean multiple) {
184                    _properties.put("multiple", multiple);
185            }
186    
187            public void setName(String name) {
188                    _properties.put("name", name);
189            }
190    
191            public void setNestedDDMFormFields(List<DDMFormField> nestedDDMFormFields) {
192                    _nestedDDMFormFields = nestedDDMFormFields;
193            }
194    
195            public void setPredefinedValue(LocalizedValue predefinedValue) {
196                    _properties.put("predefinedValue", predefinedValue);
197            }
198    
199            public void setProperty(String name, Object value) {
200                    _properties.put(name, value);
201            }
202    
203            public void setReadOnly(boolean readOnly) {
204                    _properties.put("readOnly", readOnly);
205            }
206    
207            public void setRepeatable(boolean repeatable) {
208                    _properties.put("repeatable", repeatable);
209            }
210    
211            public void setRequired(boolean required) {
212                    _properties.put("required", required);
213            }
214    
215            public void setShowLabel(boolean showLabel) {
216                    _properties.put("showLabel", showLabel);
217            }
218    
219            public void setStyle(LocalizedValue style) {
220                    _properties.put("style", style);
221            }
222    
223            public void setTip(LocalizedValue tip) {
224                    _properties.put("tip", tip);
225            }
226    
227            public void setType(String type) {
228                    _properties.put("type", type);
229            }
230    
231            private DDMForm _ddmForm;
232            private List<DDMFormField> _nestedDDMFormFields = new ArrayList<>();
233            private final Map<String, Object> _properties = new LinkedHashMap<>();
234    
235    }