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.service.impl;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portlet.social.model.SocialActivity;
019    import com.liferay.portlet.social.model.SocialActivitySet;
020    import com.liferay.portlet.social.service.base.SocialActivitySetLocalServiceBaseImpl;
021    import com.liferay.portlet.social.util.comparator.SocialActivitySetModifiedDateComparator;
022    
023    import java.util.List;
024    
025    /**
026     * @author Matthew Kong
027     */
028    public class SocialActivitySetLocalServiceImpl
029            extends SocialActivitySetLocalServiceBaseImpl {
030    
031            @Override
032            public SocialActivitySet addActivitySet(long activityId)
033                    throws PortalException {
034    
035                    // Activity set
036    
037                    SocialActivity activity = socialActivityPersistence.findByPrimaryKey(
038                            activityId);
039    
040                    long activitySetId = counterLocalService.increment();
041    
042                    SocialActivitySet activitySet = socialActivitySetPersistence.create(
043                            activitySetId);
044    
045                    activitySet.setGroupId(activity.getGroupId());
046                    activitySet.setCompanyId(activity.getCompanyId());
047                    activitySet.setUserId(activity.getUserId());
048                    activitySet.setCreateDate(activity.getCreateDate());
049                    activitySet.setModifiedDate(activity.getCreateDate());
050                    activitySet.setClassName(activity.getClassName());
051                    activitySet.setClassPK(activity.getClassPK());
052                    activitySet.setType(activity.getType());
053                    activitySet.setActivityCount(1);
054    
055                    socialActivitySetPersistence.update(activitySet);
056    
057                    // Activity
058    
059                    activity.setActivitySetId(activitySetId);
060    
061                    socialActivityPersistence.update(activity);
062    
063                    return activitySet;
064            }
065    
066            @Override
067            public void decrementActivityCount(long activitySetId)
068                    throws PortalException {
069    
070                    if (activitySetId == 0) {
071                            return;
072                    }
073    
074                    SocialActivitySet activitySet =
075                            socialActivitySetPersistence.findByPrimaryKey(activitySetId);
076    
077                    if (activitySet.getActivityCount() == 1) {
078                            socialActivitySetPersistence.remove(activitySetId);
079    
080                            return;
081                    }
082    
083                    activitySet.setActivityCount(activitySet.getActivityCount() - 1);
084    
085                    socialActivitySetPersistence.update(activitySet);
086            }
087    
088            @Override
089            public void decrementActivityCount(long classNameId, long classPK)
090                    throws PortalException {
091    
092                    List<SocialActivity> activities = socialActivityPersistence.findByC_C(
093                            classNameId, classPK);
094    
095                    for (SocialActivity activity : activities) {
096                            decrementActivityCount(activity.getActivitySetId());
097                    }
098            }
099    
100            @Override
101            public SocialActivitySet getClassActivitySet(
102                    long classNameId, long classPK, int type) {
103    
104                    return socialActivitySetPersistence.fetchByC_C_T_First(
105                            classNameId, classPK, type,
106                            new SocialActivitySetModifiedDateComparator());
107            }
108    
109            @Override
110            public SocialActivitySet getClassActivitySet(
111                    long userId, long classNameId, long classPK, int type) {
112    
113                    return socialActivitySetPersistence.fetchByU_C_C_T_First(
114                            userId, classNameId, classPK, type,
115                            new SocialActivitySetModifiedDateComparator());
116            }
117    
118            @Override
119            public List<SocialActivitySet> getGroupActivitySets(
120                    long groupId, int start, int end) {
121    
122                    return socialActivitySetPersistence.findByGroupId(
123                            groupId, start, end, new SocialActivitySetModifiedDateComparator());
124            }
125    
126            @Override
127            public int getGroupActivitySetsCount(long groupId) {
128                    return socialActivitySetPersistence.countByGroupId(groupId);
129            }
130    
131            @Override
132            public List<SocialActivitySet> getRelationActivitySets(
133                    long userId, int start, int end) {
134    
135                    return socialActivitySetFinder.findByRelation(userId, start, end);
136            }
137    
138            @Override
139            public List<SocialActivitySet> getRelationActivitySets(
140                    long userId, int type, int start, int end) {
141    
142                    return socialActivitySetFinder.findByRelationType(
143                            userId, type, start, end);
144            }
145    
146            @Override
147            public int getRelationActivitySetsCount(long userId) {
148                    return socialActivitySetFinder.countByRelation(userId);
149            }
150    
151            @Override
152            public int getRelationActivitySetsCount(long userId, int type) {
153                    return socialActivitySetFinder.countByRelationType(userId, type);
154            }
155    
156            @Override
157            public SocialActivitySet getUserActivitySet(
158                    long groupId, long userId, int type) {
159    
160                    return socialActivitySetPersistence.fetchByG_U_T_First(
161                            groupId, userId, type,
162                            new SocialActivitySetModifiedDateComparator());
163            }
164    
165            @Override
166            public SocialActivitySet getUserActivitySet(
167                    long groupId, long userId, long classNameId, int type) {
168    
169                    return socialActivitySetPersistence.fetchByG_U_C_T_First(
170                            groupId, userId, classNameId, type,
171                            new SocialActivitySetModifiedDateComparator());
172            }
173    
174            @Override
175            public List<SocialActivitySet> getUserActivitySets(
176                    long userId, int start, int end) {
177    
178                    return socialActivitySetPersistence.findByUserId(userId, start, end);
179            }
180    
181            @Override
182            public int getUserActivitySetsCount(long userId) {
183                    return socialActivitySetPersistence.countByUserId(userId);
184            }
185    
186            @Override
187            public List<SocialActivitySet> getUserGroupsActivitySets(
188                    long userId, int start, int end) {
189    
190                    return socialActivitySetFinder.findByUserGroups(userId, start, end);
191            }
192    
193            @Override
194            public int getUserGroupsActivitySetsCount(long userId) {
195                    return socialActivitySetFinder.countByUserGroups(userId);
196            }
197    
198            @Override
199            public List<SocialActivitySet> getUserViewableActivitySets(
200                    long userId, int start, int end) {
201    
202                    return socialActivitySetFinder.findByUser(userId, start, end);
203            }
204    
205            @Override
206            public int getUserViewableActivitySetsCount(long userId) {
207                    return socialActivitySetFinder.countByUser(userId);
208            }
209    
210            @Override
211            public void incrementActivityCount(long activitySetId, long activityId)
212                    throws PortalException {
213    
214                    // Activity set
215    
216                    SocialActivitySet activitySet =
217                            socialActivitySetPersistence.findByPrimaryKey(activitySetId);
218    
219                    SocialActivity activity = socialActivityPersistence.findByPrimaryKey(
220                            activityId);
221    
222                    activitySet.setModifiedDate(activity.getCreateDate());
223                    activitySet.setUserId(activity.getUserId());
224    
225                    activitySet.setActivityCount(activitySet.getActivityCount() + 1);
226    
227                    socialActivitySetPersistence.update(activitySet);
228    
229                    // Activity
230    
231                    activity.setActivitySetId(activitySetId);
232    
233                    socialActivityPersistence.update(activity);
234            }
235    
236    }