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