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.storage;
016    
017    import com.liferay.portal.kernel.util.HashUtil;
018    import com.liferay.portal.kernel.util.Validator;
019    import com.liferay.portlet.dynamicdatamapping.model.DDMForm;
020    
021    import java.io.Serializable;
022    
023    import java.util.ArrayList;
024    import java.util.LinkedHashMap;
025    import java.util.LinkedHashSet;
026    import java.util.List;
027    import java.util.Locale;
028    import java.util.Map;
029    import java.util.Set;
030    
031    /**
032     * @author Marcellus Tavares
033     * @author Pablo Carvalho
034     */
035    public class DDMFormValues implements Serializable {
036    
037            public DDMFormValues(DDMForm ddmForm) {
038                    _ddmForm = ddmForm;
039            }
040    
041            public void addAvailableLocale(Locale locale) {
042                    _availableLocales.add(locale);
043            }
044    
045            public void addDDMFormFieldValue(DDMFormFieldValue ddmFormFieldValue) {
046                    ddmFormFieldValue.setDDMFormValues(this);
047    
048                    _ddmFormFieldValues.add(ddmFormFieldValue);
049            }
050    
051            @Override
052            public boolean equals(Object obj) {
053                    if (this == obj) {
054                            return true;
055                    }
056    
057                    if (!(obj instanceof DDMFormValues)) {
058                            return false;
059                    }
060    
061                    DDMFormValues ddmFormValues = (DDMFormValues)obj;
062    
063                    if (Validator.equals(
064                                    _availableLocales, ddmFormValues._availableLocales) &&
065                            Validator.equals(_defaultLocale, ddmFormValues._defaultLocale) &&
066                            Validator.equals(
067                                    _ddmFormFieldValues, ddmFormValues._ddmFormFieldValues)) {
068    
069                            return true;
070                    }
071    
072                    return false;
073            }
074    
075            public Set<Locale> getAvailableLocales() {
076                    return _availableLocales;
077            }
078    
079            public DDMForm getDDMForm() {
080                    return _ddmForm;
081            }
082    
083            public List<DDMFormFieldValue> getDDMFormFieldValues() {
084                    return _ddmFormFieldValues;
085            }
086    
087            public Map<String, List<DDMFormFieldValue>> getDDMFormFieldValuesMap() {
088                    Map<String, List<DDMFormFieldValue>> ddmFormFieldValuesMap =
089                            new LinkedHashMap<>();
090    
091                    for (DDMFormFieldValue ddmFormFieldValue : _ddmFormFieldValues) {
092                            List<DDMFormFieldValue> ddmFormFieldValues =
093                                    ddmFormFieldValuesMap.get(ddmFormFieldValue.getName());
094    
095                            if (ddmFormFieldValues == null) {
096                                    ddmFormFieldValues = new ArrayList<>();
097    
098                                    ddmFormFieldValuesMap.put(
099                                            ddmFormFieldValue.getName(), ddmFormFieldValues);
100                            }
101    
102                            ddmFormFieldValues.add(ddmFormFieldValue);
103                    }
104    
105                    return ddmFormFieldValuesMap;
106            }
107    
108            public Locale getDefaultLocale() {
109                    return _defaultLocale;
110            }
111    
112            @Override
113            public int hashCode() {
114                    int hash = HashUtil.hash(0, _availableLocales);
115    
116                    hash = HashUtil.hash(hash, _defaultLocale);
117    
118                    return HashUtil.hash(hash, _ddmFormFieldValues);
119            }
120    
121            public void setAvailableLocales(Set<Locale> availableLocales) {
122                    _availableLocales = availableLocales;
123            }
124    
125            public void setDDMFormFieldValues(
126                    List<DDMFormFieldValue> ddmFormFieldValues) {
127    
128                    for (DDMFormFieldValue ddmFormFieldValue : ddmFormFieldValues) {
129                            ddmFormFieldValue.setDDMFormValues(this);
130                    }
131    
132                    _ddmFormFieldValues = ddmFormFieldValues;
133            }
134    
135            public void setDefaultLocale(Locale defaultLocale) {
136                    _defaultLocale = defaultLocale;
137            }
138    
139            private Set<Locale> _availableLocales = new LinkedHashSet<>();
140            private final DDMForm _ddmForm;
141            private List<DDMFormFieldValue> _ddmFormFieldValues = new ArrayList<>();
142            private Locale _defaultLocale;
143    
144    }