001    /**
002     * Copyright (c) 2000-2013 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.portal.kernel.exception.SystemException;
019    import com.liferay.portlet.social.model.SocialActivity;
020    import com.liferay.portlet.social.model.SocialActivitySet;
021    import com.liferay.portlet.social.service.base.SocialActivitySetLocalServiceBaseImpl;
022    import com.liferay.portlet.social.util.comparator.SocialActivitySetModifiedDateComparator;
023    
024    import java.util.List;
025    
026    /**
027     * @author Matthew Kong
028     */
029    public class SocialActivitySetLocalServiceImpl
030            extends SocialActivitySetLocalServiceBaseImpl {
031    
032            public SocialActivitySet addActivitySet(long activityId)
033                    throws PortalException, SystemException {
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            public void decrementActivityCount(long activitySetId)
067                    throws PortalException, SystemException {
068    
069                    if (activitySetId == 0) {
070                            return;
071                    }
072    
073                    SocialActivitySet activitySet =
074                            socialActivitySetPersistence.findByPrimaryKey(activitySetId);
075    
076                    if (activitySet.getActivityCount() == 1) {
077                            socialActivitySetPersistence.remove(activitySetId);
078    
079                            return;
080                    }
081    
082                    activitySet.setActivityCount(activitySet.getActivityCount() - 1);
083    
084                    socialActivitySetPersistence.update(activitySet);
085            }
086    
087            public void decrementActivityCount(long classNameId, long classPK)
088                    throws PortalException, SystemException {
089    
090                    List<SocialActivity> activities = socialActivityPersistence.findByC_C(
091                            classNameId, classPK);
092    
093                    for (SocialActivity activity : activities) {
094                            decrementActivityCount(activity.getActivitySetId());
095                    }
096            }
097    
098            public SocialActivitySet getClassActivitySet(
099                            long classNameId, long classPK, int type)
100                    throws SystemException {
101    
102                    return socialActivitySetPersistence.fetchByC_C_T_First(
103                            classNameId, classPK, type,
104                            new SocialActivitySetModifiedDateComparator());
105            }
106    
107            public SocialActivitySet getClassActivitySet(
108                            long userId, long classNameId, long classPK, int type)
109                    throws SystemException {
110    
111                    return socialActivitySetPersistence.fetchByU_C_C_T_First(
112                            userId, classNameId, classPK, type,
113                            new SocialActivitySetModifiedDateComparator());
114            }
115    
116            public SocialActivitySet getUserActivitySet(
117                            long groupId, long userId, int type)
118                    throws SystemException {
119    
120                    return socialActivitySetPersistence.fetchByG_U_T_First(
121                            groupId, userId, type,
122                            new SocialActivitySetModifiedDateComparator());
123            }
124    
125            public void incrementActivityCount(long activitySetId, long activityId)
126                    throws PortalException, SystemException {
127    
128                    // Activity set
129    
130                    SocialActivitySet activitySet =
131                            socialActivitySetPersistence.findByPrimaryKey(activitySetId);
132    
133                    SocialActivity activity = socialActivityPersistence.findByPrimaryKey(
134                            activityId);
135    
136                    activitySet.setModifiedDate(activity.getCreateDate());
137    
138                    activitySet.setActivityCount(activitySet.getActivityCount() + 1);
139    
140                    socialActivitySetPersistence.update(activitySet);
141    
142                    // Activity
143    
144                    activity.setActivitySetId(activitySetId);
145    
146                    socialActivityPersistence.update(activity);
147            }
148    
149    }