001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.json.JSONFactoryUtil;
019 import com.liferay.portal.kernel.json.JSONObject;
020 import com.liferay.portal.kernel.social.SocialActivityManagerUtil;
021 import com.liferay.portal.kernel.util.OrderByComparator;
022 import com.liferay.portal.model.Subscription;
023 import com.liferay.portal.model.SubscriptionConstants;
024 import com.liferay.portal.model.User;
025 import com.liferay.portal.service.base.SubscriptionLocalServiceBaseImpl;
026 import com.liferay.portlet.asset.model.AssetEntry;
027 import com.liferay.portlet.social.model.SocialActivityConstants;
028
029 import java.util.List;
030
031
040 public class SubscriptionLocalServiceImpl
041 extends SubscriptionLocalServiceBaseImpl {
042
043
065 @Override
066 public Subscription addSubscription(
067 long userId, long groupId, String className, long classPK)
068 throws PortalException {
069
070 return addSubscription(
071 userId, groupId, className, classPK,
072 SubscriptionConstants.FREQUENCY_INSTANT);
073 }
074
075
097 @Override
098 public Subscription addSubscription(
099 long userId, long groupId, String className, long classPK,
100 String frequency)
101 throws PortalException {
102
103
104
105 User user = userPersistence.findByPrimaryKey(userId);
106 long classNameId = classNameLocalService.getClassNameId(className);
107
108 Subscription subscription = subscriptionPersistence.fetchByC_U_C_C(
109 user.getCompanyId(), userId, classNameId, classPK);
110
111 if (subscription == null) {
112 long subscriptionId = counterLocalService.increment();
113
114 subscription = subscriptionPersistence.create(subscriptionId);
115
116 subscription.setGroupId(groupId);
117 subscription.setCompanyId(user.getCompanyId());
118 subscription.setUserId(user.getUserId());
119 subscription.setUserName(user.getFullName());
120 subscription.setClassNameId(classNameId);
121 subscription.setClassPK(classPK);
122 subscription.setFrequency(frequency);
123
124 subscriptionPersistence.update(subscription);
125 }
126
127 if (groupId > 0) {
128
129
130
131 AssetEntry assetEntry = null;
132
133 try {
134 assetEntry = assetEntryLocalService.getEntry(
135 className, classPK);
136 }
137 catch (Exception e) {
138 assetEntry = assetEntryLocalService.updateEntry(
139 userId, groupId, subscription.getCreateDate(),
140 subscription.getModifiedDate(), className, classPK, null, 0,
141 null, null, false, null, null, null, null,
142 String.valueOf(groupId), null, null, null, null, 0, 0,
143 null);
144 }
145
146
147
148 JSONObject extraDataJSONObject = JSONFactoryUtil.createJSONObject();
149
150 extraDataJSONObject.put("title", assetEntry.getTitle());
151
152 SocialActivityManagerUtil.addActivity(
153 userId, assetEntry, SocialActivityConstants.TYPE_SUBSCRIBE,
154 extraDataJSONObject.toString(), 0);
155 }
156
157 return subscription;
158 }
159
160
168 @Override
169 public Subscription deleteSubscription(long subscriptionId)
170 throws PortalException {
171
172 Subscription subscription = subscriptionPersistence.findByPrimaryKey(
173 subscriptionId);
174
175 return deleteSubscription(subscription);
176 }
177
178
188 @Override
189 public void deleteSubscription(long userId, String className, long classPK)
190 throws PortalException {
191
192 User user = userPersistence.findByPrimaryKey(userId);
193 long classNameId = classNameLocalService.getClassNameId(className);
194
195 Subscription subscription = subscriptionPersistence.fetchByC_U_C_C(
196 user.getCompanyId(), userId, classNameId, classPK);
197
198 if (subscription != null) {
199 deleteSubscription(subscription);
200 }
201 }
202
203
211 @Override
212 public Subscription deleteSubscription(Subscription subscription)
213 throws PortalException {
214
215
216
217 subscriptionPersistence.remove(subscription);
218
219
220
221 AssetEntry assetEntry = assetEntryPersistence.fetchByC_C(
222 subscription.getClassNameId(), subscription.getClassPK());
223
224 if (assetEntry != null) {
225 JSONObject extraDataJSONObject = JSONFactoryUtil.createJSONObject();
226
227 extraDataJSONObject.put("title", assetEntry.getTitle());
228
229 SocialActivityManagerUtil.addActivity(
230 subscription.getUserId(), subscription,
231 SocialActivityConstants.TYPE_UNSUBSCRIBE,
232 extraDataJSONObject.toString(), 0);
233 }
234
235 return subscription;
236 }
237
238
244 @Override
245 public void deleteSubscriptions(long userId) throws PortalException {
246 List<Subscription> subscriptions = subscriptionPersistence.findByUserId(
247 userId);
248
249 for (Subscription subscription : subscriptions) {
250 deleteSubscription(subscription);
251 }
252 }
253
254 @Override
255 public void deleteSubscriptions(long userId, long groupId)
256 throws PortalException {
257
258 List<Subscription> subscriptions = subscriptionPersistence.findByG_U(
259 groupId, userId);
260
261 for (Subscription subscription : subscriptions) {
262 deleteSubscription(subscription);
263 }
264 }
265
266
274 @Override
275 public void deleteSubscriptions(
276 long companyId, String className, long classPK)
277 throws PortalException {
278
279 long classNameId = classNameLocalService.getClassNameId(className);
280
281 List<Subscription> subscriptions = subscriptionPersistence.findByC_C_C(
282 companyId, classNameId, classPK);
283
284 for (Subscription subscription : subscriptions) {
285 deleteSubscription(subscription);
286 }
287 }
288
289 @Override
290 public Subscription fetchSubscription(
291 long companyId, long userId, String className, long classPK) {
292
293 long classNameId = classNameLocalService.getClassNameId(className);
294
295 return subscriptionPersistence.fetchByC_U_C_C(
296 companyId, userId, classNameId, classPK);
297 }
298
299
309 @Override
310 public Subscription getSubscription(
311 long companyId, long userId, String className, long classPK)
312 throws PortalException {
313
314 long classNameId = classNameLocalService.getClassNameId(className);
315
316 return subscriptionPersistence.findByC_U_C_C(
317 companyId, userId, classNameId, classPK);
318 }
319
320
329 @Override
330 public List<Subscription> getSubscriptions(
331 long companyId, long userId, String className, long[] classPKs) {
332
333 long classNameId = classNameLocalService.getClassNameId(className);
334
335 return subscriptionPersistence.findByC_U_C_C(
336 companyId, userId, classNameId, classPKs);
337 }
338
339
347 @Override
348 public List<Subscription> getSubscriptions(
349 long companyId, String className, long classPK) {
350
351 long classNameId = classNameLocalService.getClassNameId(className);
352
353 return subscriptionPersistence.findByC_C_C(
354 companyId, classNameId, classPK);
355 }
356
357
366 @Override
367 public List<Subscription> getUserSubscriptions(
368 long userId, int start, int end,
369 OrderByComparator<Subscription> orderByComparator) {
370
371 return subscriptionPersistence.findByUserId(
372 userId, start, end, orderByComparator);
373 }
374
375
383 @Override
384 public List<Subscription> getUserSubscriptions(
385 long userId, String className) {
386
387 long classNameId = classNameLocalService.getClassNameId(className);
388
389 return subscriptionPersistence.findByU_C(userId, classNameId);
390 }
391
392
398 @Override
399 public int getUserSubscriptionsCount(long userId) {
400 return subscriptionPersistence.countByUserId(userId);
401 }
402
403
413 @Override
414 public boolean isSubscribed(
415 long companyId, long userId, String className, long classPK) {
416
417 long classNameId = classNameLocalService.getClassNameId(className);
418
419 Subscription subscription = subscriptionPersistence.fetchByC_U_C_C(
420 companyId, userId, classNameId, classPK);
421
422 if (subscription != null) {
423 return true;
424 }
425 else {
426 return false;
427 }
428 }
429
430
441 @Override
442 public boolean isSubscribed(
443 long companyId, long userId, String className, long[] classPKs) {
444
445 long classNameId = classNameLocalService.getClassNameId(className);
446
447 int count = subscriptionPersistence.countByC_U_C_C(
448 companyId, userId, classNameId, classPKs);
449
450 if (count > 0) {
451 return true;
452 }
453 else {
454 return false;
455 }
456 }
457
458 }