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.service.base.SocialActivitySetLocalServiceBaseImpl;
019    import com.liferay.social.kernel.model.SocialActivity;
020    import com.liferay.social.kernel.model.SocialActivitySet;
021    import com.liferay.social.kernel.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> getOrganizationActivitySets(
133                    long organizationId, int start, int end) {
134    
135                    return socialActivitySetFinder.findByOrganizationId(
136                            organizationId, start, end);
137            }
138    
139            @Override
140            public List<SocialActivitySet> getRelationActivitySets(
141                    long userId, int start, int end) {
142    
143                    return socialActivitySetFinder.findByRelation(userId, start, end);
144            }
145    
146            @Override
147            public List<SocialActivitySet> getRelationActivitySets(
148                    long userId, int type, int start, int end) {
149    
150                    return socialActivitySetFinder.findByRelationType(
151                            userId, type, start, end);
152            }
153    
154            @Override
155            public int getRelationActivitySetsCount(long userId) {
156                    return socialActivitySetFinder.countByRelation(userId);
157            }
158    
159            @Override
160            public int getRelationActivitySetsCount(long userId, int type) {
161                    return socialActivitySetFinder.countByRelationType(userId, type);
162            }
163    
164            @Override
165            public SocialActivitySet getUserActivitySet(
166                    long groupId, long userId, int type) {
167    
168                    return socialActivitySetPersistence.fetchByG_U_T_First(
169                            groupId, userId, type,
170                            new SocialActivitySetModifiedDateComparator());
171            }
172    
173            @Override
174            public SocialActivitySet getUserActivitySet(
175                    long groupId, long userId, long classNameId, int type) {
176    
177                    return socialActivitySetPersistence.fetchByG_U_C_T_First(
178                            groupId, userId, classNameId, type,
179                            new SocialActivitySetModifiedDateComparator());
180            }
181    
182            @Override
183            public List<SocialActivitySet> getUserActivitySets(
184                    long userId, int start, int end) {
185    
186                    return socialActivitySetPersistence.findByUserId(userId, start, end);
187            }
188    
189            @Override
190            public int getUserActivitySetsCount(long userId) {
191                    return socialActivitySetPersistence.countByUserId(userId);
192            }
193    
194            @Override
195            public List<SocialActivitySet> getUserGroupsActivitySets(
196                    long userId, int start, int end) {
197    
198                    return socialActivitySetFinder.findByUserGroups(userId, start, end);
199            }
200    
201            @Override
202            public int getUserGroupsActivitySetsCount(long userId) {
203                    return socialActivitySetFinder.countByUserGroups(userId);
204            }
205    
206            @Override
207            public List<SocialActivitySet> getUserViewableActivitySets(
208                    long userId, int start, int end) {
209    
210                    return socialActivitySetFinder.findByUser(userId, start, end);
211            }
212    
213            @Override
214            public int getUserViewableActivitySetsCount(long userId) {
215                    return socialActivitySetFinder.countByUser(userId);
216            }
217    
218            @Override
219            public void incrementActivityCount(long activitySetId, long activityId)
220                    throws PortalException {
221    
222                    // Activity set
223    
224                    SocialActivitySet activitySet =
225                            socialActivitySetPersistence.findByPrimaryKey(activitySetId);
226    
227                    SocialActivity activity = socialActivityPersistence.findByPrimaryKey(
228                            activityId);
229    
230                    activitySet.setModifiedDate(activity.getCreateDate());
231                    activitySet.setUserId(activity.getUserId());
232    
233                    activitySet.setActivityCount(activitySet.getActivityCount() + 1);
234    
235                    socialActivitySetPersistence.update(activitySet);
236    
237                    // Activity
238    
239                    activity.setActivitySetId(activitySetId);
240    
241                    socialActivityPersistence.update(activity);
242            }
243    
244    }