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