1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   *
13   */
14  
15  package com.liferay.portlet.social.service.impl;
16  
17  import com.liferay.portal.PortalException;
18  import com.liferay.portal.SystemException;
19  import com.liferay.portal.kernel.dao.orm.QueryUtil;
20  import com.liferay.portal.model.Group;
21  import com.liferay.portal.model.Layout;
22  import com.liferay.portal.model.User;
23  import com.liferay.portal.util.PortalUtil;
24  import com.liferay.portlet.social.NoSuchActivityException;
25  import com.liferay.portlet.social.model.SocialActivity;
26  import com.liferay.portlet.social.service.base.SocialActivityLocalServiceBaseImpl;
27  import com.liferay.portlet.social.util.SocialActivityThreadLocal;
28  
29  import java.util.Date;
30  import java.util.List;
31  
32  /**
33   * <a href="SocialActivityLocalServiceImpl.java.html"><b><i>View Source</i></b>
34   * </a>
35   *
36   * @author Brian Wing Shun Chan
37   */
38  public class SocialActivityLocalServiceImpl
39      extends SocialActivityLocalServiceBaseImpl {
40  
41      public SocialActivity addActivity(
42              long userId, long groupId, Date createDate, String className,
43              long classPK, int type, String extraData, long receiverUserId)
44          throws PortalException, SystemException {
45  
46          if (!SocialActivityThreadLocal.isEnabled()) {
47              return null;
48          }
49  
50          User user = userPersistence.findByPrimaryKey(userId);
51          long classNameId = PortalUtil.getClassNameId(className);
52  
53          if (groupId > 0) {
54              Group group = groupLocalService.getGroup(groupId);
55  
56              if (group.isLayout()) {
57                  Layout layout = layoutLocalService.getLayout(
58                      group.getClassPK());
59  
60                  groupId = layout.getGroupId();
61              }
62          }
63  
64          long activityId = counterLocalService.increment(
65              SocialActivity.class.getName());
66  
67          SocialActivity activity = socialActivityPersistence.create(
68              activityId);
69  
70          activity.setGroupId(groupId);
71          activity.setCompanyId(user.getCompanyId());
72          activity.setUserId(user.getUserId());
73          activity.setCreateDate(createDate.getTime());
74          activity.setMirrorActivityId(0);
75          activity.setClassNameId(classNameId);
76          activity.setClassPK(classPK);
77          activity.setType(type);
78          activity.setExtraData(extraData);
79          activity.setReceiverUserId(receiverUserId);
80  
81          socialActivityPersistence.update(activity, false);
82  
83          if ((receiverUserId > 0) && (userId != receiverUserId)) {
84              long mirrorActivityId = counterLocalService.increment(
85                  SocialActivity.class.getName());
86  
87              SocialActivity mirrorActivity = socialActivityPersistence.create(
88                  mirrorActivityId);
89  
90              mirrorActivity.setGroupId(groupId);
91              mirrorActivity.setCompanyId(user.getCompanyId());
92              mirrorActivity.setUserId(receiverUserId);
93              mirrorActivity.setCreateDate(createDate.getTime());
94              mirrorActivity.setMirrorActivityId(activityId);
95              mirrorActivity.setClassNameId(classNameId);
96              mirrorActivity.setClassPK(classPK);
97              mirrorActivity.setType(type);
98              mirrorActivity.setExtraData(extraData);
99              mirrorActivity.setReceiverUserId(user.getUserId());
100 
101             socialActivityPersistence.update(mirrorActivity, false);
102         }
103 
104         return activity;
105     }
106 
107     public SocialActivity addActivity(
108             long userId, long groupId, String className, long classPK, int type,
109             String extraData, long receiverUserId)
110         throws PortalException, SystemException {
111 
112         Date createDate = new Date();
113 
114         long classNameId = PortalUtil.getClassNameId(className);
115 
116         while (true) {
117             SocialActivity socialActivity =
118                 socialActivityPersistence.fetchByG_U_CD_C_C_T_R(
119                     groupId, userId, createDate.getTime(), classNameId, classPK,
120                     type, receiverUserId);
121 
122             if (socialActivity != null) {
123                 createDate = new Date(createDate.getTime() + 1);
124             }
125             else {
126                 break;
127             }
128         }
129 
130         return addActivity(
131             userId, groupId, createDate, className, classPK, type, extraData,
132             receiverUserId);
133     }
134 
135     public SocialActivity addUniqueActivity(
136             long userId, long groupId, Date createDate, String className,
137             long classPK, int type, String extraData, long receiverUserId)
138         throws PortalException, SystemException {
139 
140         long classNameId = PortalUtil.getClassNameId(className);
141 
142         SocialActivity socialActivity =
143             socialActivityPersistence.fetchByG_U_CD_C_C_T_R(
144                 groupId, userId, createDate.getTime(), classNameId, classPK,
145                 type, receiverUserId);
146 
147         if (socialActivity != null) {
148             return socialActivity;
149         }
150 
151         return addActivity(
152             userId, groupId, createDate, className, classPK, type, extraData,
153             receiverUserId);
154     }
155 
156     public SocialActivity addUniqueActivity(
157             long userId, long groupId, String className, long classPK, int type,
158             String extraData, long receiverUserId)
159         throws PortalException, SystemException {
160 
161         return addUniqueActivity(
162             userId, groupId, new Date(), className, classPK, type, extraData,
163             receiverUserId);
164     }
165 
166     public void deleteActivities(long classNameId, long classPK)
167         throws SystemException {
168 
169         socialActivityPersistence.removeByC_C(classNameId, classPK);
170     }
171 
172     public void deleteActivities(String className, long classPK)
173         throws SystemException {
174 
175         long classNameId = PortalUtil.getClassNameId(className);
176 
177         deleteActivities(classNameId, classPK);
178     }
179 
180     public void deleteActivity(long activityId)
181         throws PortalException, SystemException {
182 
183         SocialActivity activity = socialActivityPersistence.findByPrimaryKey(
184             activityId);
185 
186         deleteActivity(activity);
187     }
188 
189     public void deleteActivity(SocialActivity activity) throws SystemException {
190         socialActivityPersistence.remove(activity);
191 
192         try {
193             socialActivityPersistence.removeByMirrorActivityId(
194                 activity.getActivityId());
195         }
196         catch (NoSuchActivityException nsae) {
197         }
198     }
199 
200     public void deleteUserActivities(long userId) throws SystemException {
201         List<SocialActivity> activities =
202             socialActivityPersistence.findByUserId(
203                 userId, QueryUtil.ALL_POS, QueryUtil.ALL_POS);
204 
205         for (SocialActivity activity : activities) {
206             socialActivityPersistence.remove(activity);
207         }
208 
209         activities = socialActivityPersistence.findByReceiverUserId(
210             userId, QueryUtil.ALL_POS, QueryUtil.ALL_POS);
211 
212         for (SocialActivity activity : activities) {
213             socialActivityPersistence.remove(activity);
214         }
215     }
216 
217     public List<SocialActivity> getActivities(
218             long classNameId, int start, int end)
219         throws SystemException {
220 
221         return socialActivityPersistence.findByClassNameId(
222             classNameId, start, end);
223     }
224 
225     public List<SocialActivity> getActivities(
226             long mirrorActivityId, long classNameId, long classPK, int start,
227             int end)
228         throws SystemException {
229 
230         return socialActivityPersistence.findByM_C_C(
231             mirrorActivityId, classNameId, classPK, start, end);
232     }
233 
234     public List<SocialActivity> getActivities(
235             long mirrorActivityId, String className, long classPK, int start,
236             int end)
237         throws SystemException {
238 
239         long classNameId = PortalUtil.getClassNameId(className);
240 
241         return getActivities(
242             mirrorActivityId, classNameId, classPK, start, end);
243     }
244 
245     public List<SocialActivity> getActivities(
246             String className, int start, int end)
247         throws SystemException {
248 
249         long classNameId = PortalUtil.getClassNameId(className);
250 
251         return getActivities(classNameId, start, end);
252     }
253 
254     public int getActivitiesCount(long classNameId) throws SystemException {
255         return socialActivityPersistence.countByClassNameId(classNameId);
256     }
257 
258     public int getActivitiesCount(
259             long mirrorActivityId, long classNameId, long classPK)
260         throws SystemException {
261 
262         return socialActivityPersistence.countByM_C_C(
263             mirrorActivityId, classNameId, classPK);
264     }
265 
266     public int getActivitiesCount(
267             long mirrorActivityId, String className, long classPK)
268         throws SystemException {
269 
270         long classNameId = PortalUtil.getClassNameId(className);
271 
272         return getActivitiesCount(mirrorActivityId, classNameId, classPK);
273     }
274 
275     public int getActivitiesCount(String className) throws SystemException {
276         long classNameId = PortalUtil.getClassNameId(className);
277 
278         return getActivitiesCount(classNameId);
279     }
280 
281     public SocialActivity getActivity(long activityId)
282         throws PortalException, SystemException {
283 
284         return socialActivityPersistence.findByPrimaryKey(activityId);
285     }
286 
287     public List<SocialActivity> getGroupActivities(
288             long groupId, int start, int end)
289         throws SystemException {
290 
291         return socialActivityFinder.findByGroupId(groupId, start, end);
292     }
293 
294     public int getGroupActivitiesCount(long groupId) throws SystemException {
295         return socialActivityFinder.countByGroupId(groupId);
296     }
297 
298     public List<SocialActivity> getGroupUsersActivities(
299             long groupId, int start, int end)
300         throws SystemException {
301 
302         return socialActivityFinder.findByGroupUsers(groupId, start, end);
303     }
304 
305     public int getGroupUsersActivitiesCount(long groupId)
306         throws SystemException {
307 
308         return socialActivityFinder.countByGroupUsers(groupId);
309     }
310 
311     public SocialActivity getMirrorActivity(long mirrorActivityId)
312         throws PortalException, SystemException {
313 
314         return socialActivityPersistence.findByMirrorActivityId(
315             mirrorActivityId);
316     }
317 
318     public List<SocialActivity> getOrganizationActivities(
319             long organizationId, int start, int end)
320         throws SystemException {
321 
322         return socialActivityFinder.findByOrganizationId(
323             organizationId, start, end);
324     }
325 
326     public int getOrganizationActivitiesCount(long organizationId)
327         throws SystemException {
328 
329         return socialActivityFinder.countByOrganizationId(organizationId);
330     }
331 
332     public List<SocialActivity> getOrganizationUsersActivities(
333             long organizationId, int start, int end)
334         throws SystemException {
335 
336         return socialActivityFinder.findByOrganizationUsers(
337             organizationId, start, end);
338     }
339 
340     public int getOrganizationUsersActivitiesCount(long organizationId)
341         throws SystemException {
342 
343         return socialActivityFinder.countByOrganizationUsers(organizationId);
344     }
345 
346     public List<SocialActivity> getRelationActivities(
347             long userId, int start, int end)
348         throws SystemException {
349 
350         return socialActivityFinder.findByRelation(userId, start, end);
351     }
352 
353     public List<SocialActivity> getRelationActivities(
354             long userId, int type, int start, int end)
355         throws SystemException {
356 
357         return socialActivityFinder.findByRelationType(
358             userId, type, start, end);
359     }
360 
361     public int getRelationActivitiesCount(long userId) throws SystemException {
362         return socialActivityFinder.countByRelation(userId);
363     }
364 
365     public int getRelationActivitiesCount(long userId, int type)
366         throws SystemException {
367 
368         return socialActivityFinder.countByRelationType(userId, type);
369     }
370 
371     public List<SocialActivity> getUserActivities(
372             long userId, int start, int end)
373         throws SystemException {
374 
375         return socialActivityPersistence.findByUserId(userId, start, end);
376     }
377 
378     public int getUserActivitiesCount(long userId) throws SystemException {
379         return socialActivityPersistence.countByUserId(userId);
380     }
381 
382     public List<SocialActivity> getUserGroupsActivities(
383             long userId, int start, int end)
384         throws SystemException {
385 
386         return socialActivityFinder.findByUserGroups(userId, start, end);
387     }
388 
389     public int getUserGroupsActivitiesCount(long userId)
390         throws SystemException {
391 
392         return socialActivityFinder.countByUserGroups(userId);
393     }
394 
395     public List<SocialActivity> getUserGroupsAndOrganizationsActivities(
396             long userId, int start, int end)
397         throws SystemException {
398 
399         return socialActivityFinder.findByUserGroupsAndOrganizations(
400             userId, start, end);
401     }
402 
403     public int getUserGroupsAndOrganizationsActivitiesCount(long userId)
404         throws SystemException {
405 
406         return socialActivityFinder.countByUserGroupsAndOrganizations(userId);
407     }
408 
409     public List<SocialActivity> getUserOrganizationsActivities(
410             long userId, int start, int end)
411         throws SystemException {
412 
413         return socialActivityFinder.findByUserOrganizations(userId, start, end);
414     }
415 
416     public int getUserOrganizationsActivitiesCount(long userId)
417         throws SystemException {
418 
419         return socialActivityFinder.countByUserOrganizations(userId);
420     }
421 
422 }