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.social.kernel.model;
016    
017    import com.liferay.portal.kernel.language.LanguageUtil;
018    import com.liferay.portal.kernel.util.HashUtil;
019    
020    import java.io.Serializable;
021    
022    import java.util.ArrayList;
023    import java.util.Collection;
024    import java.util.HashMap;
025    import java.util.List;
026    import java.util.Locale;
027    import java.util.Map;
028    import java.util.Objects;
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                            Objects.equals(
083                                    _achievements, activityDefinition.getAchievements()) &&
084                            Objects.equals(
085                                    _activityCounterDefinitions,
086                                    activityDefinition._activityCounterDefinitions) &&
087                            Objects.equals(
088                                    _activityProcessor,
089                                    activityDefinition.getActivityProcessor()) &&
090                            (_activityType == activityDefinition.getActivityType()) &&
091                            (_countersEnabled == activityDefinition.isCountersEnabled()) &&
092                            Objects.equals(
093                                    _languageKey, activityDefinition.getLanguageKey()) &&
094                            (_logActivity == activityDefinition.isLogActivity()) &&
095                            Objects.equals(_modelName, activityDefinition.getModelName())) {
096    
097                            return true;
098                    }
099    
100                    return false;
101            }
102    
103            public List<SocialAchievement> getAchievements() {
104                    return _achievements;
105            }
106    
107            public SocialActivityCounterDefinition getActivityCounterDefinition(
108                    String name) {
109    
110                    return _activityCounterDefinitions.get(name);
111            }
112    
113            public Collection<SocialActivityCounterDefinition>
114                    getActivityCounterDefinitions() {
115    
116                    return _activityCounterDefinitions.values();
117            }
118    
119            public SocialActivityProcessor getActivityProcessor() {
120                    return _activityProcessor;
121            }
122    
123            public int getActivityType() {
124                    return _activityType;
125            }
126    
127            public String getLanguageKey() {
128                    return _languageKey;
129            }
130    
131            public String getModelName() {
132                    return _modelName;
133            }
134    
135            public String getName(Locale locale) {
136                    return LanguageUtil.get(
137                            locale, "social.activity." + _modelName + "." + _languageKey);
138            }
139    
140            @Override
141            public int hashCode() {
142                    int hash = HashUtil.hash(0, _achievements);
143    
144                    hash = HashUtil.hash(hash, _activityCounterDefinitions);
145                    hash = HashUtil.hash(hash, _activityProcessor);
146                    hash = HashUtil.hash(hash, _activityType);
147                    hash = HashUtil.hash(hash, _countersEnabled);
148                    hash = HashUtil.hash(hash, _languageKey);
149                    hash = HashUtil.hash(hash, _logActivity);
150    
151                    return HashUtil.hash(hash, _modelName);
152            }
153    
154            public boolean isCountersEnabled() {
155                    return _countersEnabled;
156            }
157    
158            public boolean isLogActivity() {
159                    return _logActivity;
160            }
161    
162            public void setActivityProcessor(
163                    SocialActivityProcessor activityProcessor) {
164    
165                    _activityProcessor = activityProcessor;
166            }
167    
168            public void setActivityType(int activityKey) {
169                    _activityType = activityKey;
170            }
171    
172            public void setCounters(
173                    List<SocialActivityCounterDefinition> activityCounterDefinitions) {
174    
175                    _activityCounterDefinitions.clear();
176    
177                    for (SocialActivityCounterDefinition activityCounterDefinition :
178                                    activityCounterDefinitions) {
179    
180                            _activityCounterDefinitions.put(
181                                    activityCounterDefinition.getName(), activityCounterDefinition);
182                    }
183            }
184    
185            public void setCountersEnabled(boolean enabled) {
186                    _countersEnabled = enabled;
187            }
188    
189            public void setLanguageKey(String languageKey) {
190                    _languageKey = languageKey;
191            }
192    
193            public void setLogActivity(boolean logActivity) {
194                    _logActivity = logActivity;
195            }
196    
197            public void setModelName(String modelName) {
198                    _modelName = modelName;
199            }
200    
201            private final List<SocialAchievement> _achievements = new ArrayList<>();
202            private final Map<String, SocialActivityCounterDefinition>
203                    _activityCounterDefinitions = new HashMap<>();
204            private SocialActivityProcessor _activityProcessor;
205            private int _activityType;
206            private boolean _countersEnabled = true;
207            private String _languageKey;
208            private boolean _logActivity;
209            private String _modelName;
210    
211    }