001
014
015 package com.liferay.portal.social;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.social.SocialActivityManager;
019 import com.liferay.portal.model.ClassedModel;
020 import com.liferay.portal.model.GroupedModel;
021 import com.liferay.registry.ServiceReference;
022 import com.liferay.registry.collections.ServiceReferenceMapper;
023 import com.liferay.registry.collections.ServiceTrackerCollections;
024 import com.liferay.registry.collections.ServiceTrackerMap;
025
026 import java.util.Date;
027
028
031 public class SocialActivityManagerImpl<T extends ClassedModel & GroupedModel>
032 implements SocialActivityManager<T> {
033
034 public SocialActivityManagerImpl(
035 SocialActivityManager<T> defaultSocialActivityManager) {
036
037 _defaultSocialActivityManager = defaultSocialActivityManager;
038 }
039
040 @Override
041 public void addActivity(
042 long userId, T model, int type, String extraData,
043 long receiverUserId)
044 throws PortalException {
045
046 SocialActivityManager<T> socialActivityManager =
047 getSocialActivityManager(model.getModelClassName());
048
049 socialActivityManager.addActivity(
050 userId, model, type, extraData, receiverUserId);
051 }
052
053 @Override
054 public void addUniqueActivity(
055 long userId, Date createDate, T model, int type, String extraData,
056 long receiverUserId)
057 throws PortalException {
058
059 SocialActivityManager<T> socialActivityManager =
060 getSocialActivityManager(model.getModelClassName());
061
062 socialActivityManager.addUniqueActivity(
063 userId, createDate, model, type, extraData, receiverUserId);
064 }
065
066 @Override
067 public void addUniqueActivity(
068 long userId, T model, int type, String extraData,
069 long receiverUserId)
070 throws PortalException {
071
072 SocialActivityManager<T> socialActivityManager =
073 getSocialActivityManager(model.getModelClassName());
074
075 socialActivityManager.addUniqueActivity(
076 userId, model, type, extraData, receiverUserId);
077 }
078
079 @Override
080 public void deleteActivities(T model) throws PortalException {
081 SocialActivityManager<T> socialActivityManager =
082 getSocialActivityManager(model.getModelClassName());
083
084 socialActivityManager.deleteActivities(model);
085 }
086
087 @Override
088 public void updateLastSocialActivity(
089 long userId, T model, int type, Date createDate)
090 throws PortalException {
091
092 SocialActivityManager<T> socialActivityManager =
093 getSocialActivityManager(model.getModelClassName());
094
095 socialActivityManager.updateLastSocialActivity(
096 userId, model, type, createDate);
097 }
098
099 protected SocialActivityManager<T> getSocialActivityManager(
100 String className) {
101
102 SocialActivityManager<T> socialActivityManager =
103 _serviceTrackerMap.getService(className);
104
105 if (socialActivityManager != null) {
106 return socialActivityManager;
107 }
108
109 return _defaultSocialActivityManager;
110 }
111
112 private final SocialActivityManager<T> _defaultSocialActivityManager;
113
114 private final ServiceTrackerMap<String, SocialActivityManager<T>>
115 _serviceTrackerMap = ServiceTrackerCollections.openSingleValueMap(
116 (Class<SocialActivityManager<T>>)(Class<?>)
117 SocialActivityManager.class,
118 "(model.class.name=*)",
119 new ServiceReferenceMapper<String, SocialActivityManager<T>>() {
120
121 @Override
122 public void map(
123 ServiceReference<SocialActivityManager<T>> serviceReference,
124 Emitter<String> emitter) {
125
126 String modelClassName =
127 (String)serviceReference.getProperty(
128 "model.class.name");
129
130 emitter.emit(modelClassName);
131 }
132
133 });
134
135 }