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