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