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.social.model;
016    
017    import com.liferay.portal.kernel.language.LanguageUtil;
018    import com.liferay.portal.kernel.util.HashUtil;
019    import com.liferay.portal.kernel.util.Validator;
020    
021    import java.io.Serializable;
022    
023    import java.util.ArrayList;
024    import java.util.Collection;
025    import java.util.HashMap;
026    import java.util.List;
027    import java.util.Locale;
028    import java.util.Map;
029    
030    /**
031     * @author Zsolt Berentey
032     */
033    public class SocialActivityDefinition implements Serializable {
034    
035            public void addCounter(
036                    SocialActivityCounterDefinition activityCounterDefinition) {
037    
038                    _activityCounterDefinitions.put(
039                            activityCounterDefinition.getName(), activityCounterDefinition);
040            }
041    
042            @Override
043            public SocialActivityDefinition clone() {
044                    SocialActivityDefinition activityDefinition =
045                            new SocialActivityDefinition();
046    
047                    for (SocialActivityCounterDefinition activityCounterDefinition :
048                                    _activityCounterDefinitions.values()) {
049    
050                            activityDefinition.addCounter(activityCounterDefinition.clone());
051                    }
052    
053                    List<SocialAchievement> achievements =
054                            activityDefinition.getAchievements();
055    
056                    achievements.addAll(_achievements);
057    
058                    activityDefinition.setActivityProcessor(_activityProcessor);
059                    activityDefinition.setActivityType(_activityType);
060                    activityDefinition.setCountersEnabled(_countersEnabled);
061                    activityDefinition.setLanguageKey(_languageKey);
062                    activityDefinition.setLogActivity(_logActivity);
063                    activityDefinition.setModelName(_modelName);
064    
065                    return activityDefinition;
066            }
067    
068            @Override
069            public boolean equals(Object obj) {
070                    if (this == obj) {
071                            return true;
072                    }
073    
074                    if (!(obj instanceof SocialActivityDefinition)) {
075                            return false;
076                    }
077    
078                    SocialActivityDefinition activityDefinition =
079                            (SocialActivityDefinition)obj;
080    
081                    if ((activityDefinition != null) &&
082                            Validator.equals(
083                                    _achievements, activityDefinition.getAchievements()) &&
084                            Validator.equals(
085                                    _activityCounterDefinitions,
086                                    activityDefinition._activityCounterDefinitions) &&
087                            Validator.equals(
088                                    _activityProcessor,
089                                    activityDefinition.getActivityProcessor()) &&
090                            Validator.equals(
091                                    _activityType, activityDefinition.getActivityType()) &&
092                            Validator.equals(
093                                    _countersEnabled, activityDefinition.isCountersEnabled()) &&
094                            Validator.equals(
095                                    _languageKey, activityDefinition.getLanguageKey()) &&
096                            Validator.equals(
097                                    _logActivity, activityDefinition.isLogActivity()) &&
098                            Validator.equals(_modelName, activityDefinition.getModelName())) {
099    
100                            return true;
101                    }
102    
103                    return false;
104            }
105    
106            public List<SocialAchievement> getAchievements() {
107                    return _achievements;
108            }
109    
110            public SocialActivityCounterDefinition getActivityCounterDefinition(
111                    String name) {
112    
113                    return _activityCounterDefinitions.get(name);
114            }
115    
116            public Collection<SocialActivityCounterDefinition>
117                    getActivityCounterDefinitions() {
118    
119                    return _activityCounterDefinitions.values();
120            }
121    
122            public SocialActivityProcessor getActivityProcessor() {
123                    return _activityProcessor;
124            }
125    
126            public int getActivityType() {
127                    return _activityType;
128            }
129    
130            public String getLanguageKey() {
131                    return _languageKey;
132            }
133    
134            public String getModelName() {
135                    return _modelName;
136            }
137    
138            public String getName(Locale locale) {
139                    return LanguageUtil.get(
140                            locale, "social.activity." + _modelName + "." + _languageKey);
141            }
142    
143            @Override
144            public int hashCode() {
145                    int hash = HashUtil.hash(0, _achievements);
146    
147                    hash = HashUtil.hash(hash, _activityCounterDefinitions);
148                    hash = HashUtil.hash(hash, _activityProcessor);
149                    hash = HashUtil.hash(hash, _activityType);
150                    hash = HashUtil.hash(hash, _countersEnabled);
151                    hash = HashUtil.hash(hash, _languageKey);
152                    hash = HashUtil.hash(hash, _logActivity);
153    
154                    return HashUtil.hash(hash, _modelName);
155            }
156    
157            public boolean isCountersEnabled() {
158                    return _countersEnabled;
159            }
160    
161            public boolean isLogActivity() {
162                    return _logActivity;
163            }
164    
165            public void setActivityProcessor(
166                    SocialActivityProcessor activityProcessor) {
167    
168                    _activityProcessor = activityProcessor;
169            }
170    
171            public void setActivityType(int activityKey) {
172                    _activityType = activityKey;
173            }
174    
175            public void setCounters(
176                    List<SocialActivityCounterDefinition> activityCounterDefinitions) {
177    
178                    _activityCounterDefinitions.clear();
179    
180                    for (SocialActivityCounterDefinition activityCounterDefinition :
181                                    activityCounterDefinitions) {
182    
183                            _activityCounterDefinitions.put(
184                                    activityCounterDefinition.getName(), activityCounterDefinition);
185                    }
186            }
187    
188            public void setCountersEnabled(boolean enabled) {
189                    _countersEnabled = enabled;
190            }
191    
192            public void setLanguageKey(String languageKey) {
193                    _languageKey = languageKey;
194            }
195    
196            public void setLogActivity(boolean logActivity) {
197                    _logActivity = logActivity;
198            }
199    
200            public void setModelName(String modelName) {
201                    _modelName = modelName;
202            }
203    
204            private final List<SocialAchievement> _achievements = new ArrayList<>();
205            private final Map<String, SocialActivityCounterDefinition>
206                    _activityCounterDefinitions = new HashMap<>();
207            private SocialActivityProcessor _activityProcessor;
208            private int _activityType;
209            private boolean _countersEnabled = true;
210            private String _languageKey;
211            private boolean _logActivity;
212            private String _modelName;
213    
214    }