001
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.portal.kernel.log.Log;
020 import com.liferay.portal.kernel.log.LogFactoryUtil;
021 import com.liferay.portal.kernel.util.StringPool;
022 import com.liferay.portal.kernel.util.WebKeys;
023 import com.liferay.portal.service.ServiceContext;
024 import com.liferay.portal.service.ServiceContextFactory;
025 import com.liferay.portal.theme.ThemeDisplay;
026 import com.liferay.portal.util.PortalUtil;
027 import com.liferay.portal.util.PropsValues;
028 import com.liferay.portlet.social.model.SocialActivity;
029 import com.liferay.portlet.social.model.SocialActivityFeedEntry;
030 import com.liferay.portlet.social.model.SocialActivityInterpreter;
031 import com.liferay.portlet.social.model.SocialActivitySet;
032 import com.liferay.portlet.social.model.impl.SocialActivityInterpreterImpl;
033 import com.liferay.portlet.social.service.base.SocialActivityInterpreterLocalServiceBaseImpl;
034
035 import java.util.ArrayList;
036 import java.util.HashMap;
037 import java.util.List;
038 import java.util.Map;
039
040 import javax.servlet.http.HttpServletRequest;
041
042
059 public class SocialActivityInterpreterLocalServiceImpl
060 extends SocialActivityInterpreterLocalServiceBaseImpl {
061
062
067 @Override
068 public void addActivityInterpreter(
069 SocialActivityInterpreter activityInterpreter) {
070
071 List<SocialActivityInterpreter> activityInterpreters =
072 _activityInterpreters.get(activityInterpreter.getSelector());
073
074 if (activityInterpreters == null) {
075 activityInterpreters = new ArrayList<SocialActivityInterpreter>();
076 }
077
078 activityInterpreters.add(activityInterpreter);
079
080 _activityInterpreters.put(
081 activityInterpreter.getSelector(), activityInterpreters);
082 }
083
084
089 @Override
090 public void deleteActivityInterpreter(
091 SocialActivityInterpreter activityInterpreter) {
092
093 List<SocialActivityInterpreter> activityInterpreters =
094 _activityInterpreters.get(activityInterpreter.getSelector());
095
096 if (activityInterpreters == null) {
097 return;
098 }
099
100 activityInterpreters.remove(activityInterpreter);
101 }
102
103 @Override
104 public Map<String, List<SocialActivityInterpreter>>
105 getActivityInterpreters() {
106
107 return _activityInterpreters;
108 }
109
110 @Override
111 public List<SocialActivityInterpreter> getActivityInterpreters(
112 String selector) {
113
114 return _activityInterpreters.get(selector);
115 }
116
117
121 @Override
122 public SocialActivityFeedEntry interpret(
123 SocialActivity activity, ThemeDisplay themeDisplay) {
124
125 ServiceContext serviceContext = null;
126
127 try {
128 serviceContext = ServiceContextFactory.getInstance(
129 themeDisplay.getRequest());
130 }
131 catch (Exception e) {
132 return null;
133 }
134
135 return interpret(StringPool.BLANK, activity, serviceContext);
136 }
137
138
153 @Override
154 public SocialActivityFeedEntry interpret(
155 String selector, SocialActivity activity,
156 ServiceContext serviceContext) {
157
158 HttpServletRequest request = serviceContext.getRequest();
159
160 if (request == null) {
161 return null;
162 }
163
164 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
165 WebKeys.THEME_DISPLAY);
166
167 try {
168 if (activity.getUserId() == themeDisplay.getDefaultUserId()) {
169 return null;
170 }
171 }
172 catch (Exception e) {
173 _log.error(e, e);
174 }
175
176 if (activity.getMirrorActivityId() > 0) {
177 SocialActivity mirrorActivity = null;
178
179 try {
180 mirrorActivity = socialActivityLocalService.getActivity(
181 activity.getMirrorActivityId());
182 }
183 catch (Exception e) {
184 }
185
186 if (mirrorActivity != null) {
187 activity = mirrorActivity;
188 }
189 }
190
191 List<SocialActivityInterpreter> activityInterpreters =
192 _activityInterpreters.get(selector);
193
194 if (activityInterpreters == null) {
195 return null;
196 }
197
198 String className = PortalUtil.getClassName(activity.getClassNameId());
199
200 for (int i = 0; i < activityInterpreters.size(); i++) {
201 SocialActivityInterpreterImpl activityInterpreter =
202 (SocialActivityInterpreterImpl)activityInterpreters.get(i);
203
204 if (activityInterpreter.hasClassName(className)) {
205 SocialActivityFeedEntry activityFeedEntry =
206 activityInterpreter.interpret(activity, serviceContext);
207
208 if (activityFeedEntry != null) {
209 activityFeedEntry.setPortletId(
210 activityInterpreter.getPortletId());
211
212 return activityFeedEntry;
213 }
214 }
215 }
216
217 return null;
218 }
219
220 @Override
221 public SocialActivityFeedEntry interpret(
222 String selector, SocialActivitySet activitySet,
223 ServiceContext serviceContext) {
224
225 HttpServletRequest request = serviceContext.getRequest();
226
227 if (request == null) {
228 return null;
229 }
230
231 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
232 WebKeys.THEME_DISPLAY);
233
234 try {
235 if (activitySet.getUserId() == themeDisplay.getDefaultUserId()) {
236 return null;
237 }
238 }
239 catch (Exception e) {
240 _log.error(e, e);
241 }
242
243 List<SocialActivityInterpreter> activityInterpreters =
244 _activityInterpreters.get(selector);
245
246 if (activityInterpreters == null) {
247 return null;
248 }
249
250 String className = PortalUtil.getClassName(
251 activitySet.getClassNameId());
252
253 for (int i = 0; i < activityInterpreters.size(); i++) {
254 SocialActivityInterpreterImpl activityInterpreter =
255 (SocialActivityInterpreterImpl)activityInterpreters.get(i);
256
257 if (activityInterpreter.hasClassName(className)) {
258 SocialActivityFeedEntry activityFeedEntry =
259 activityInterpreter.interpret(activitySet, serviceContext);
260
261 if (activityFeedEntry != null) {
262 activityFeedEntry.setPortletId(
263 activityInterpreter.getPortletId());
264
265 return activityFeedEntry;
266 }
267 }
268 }
269
270 return null;
271 }
272
273 @Override
274 public void updateActivitySet(long activityId)
275 throws PortalException, SystemException {
276
277 if (!PropsValues.SOCIAL_ACTIVITY_SETS_BUNDLING_ENABLED) {
278 socialActivitySetLocalService.addActivitySet(activityId);
279
280 return;
281 }
282
283 List<SocialActivityInterpreter> activityInterpreters =
284 _activityInterpreters.get(
285 PropsValues.SOCIAL_ACTIVITY_SETS_SELECTOR);
286
287 if (activityInterpreters != null) {
288 SocialActivity activity =
289 socialActivityPersistence.findByPrimaryKey(activityId);
290
291 String className = PortalUtil.getClassName(
292 activity.getClassNameId());
293
294 for (int i = 0; i < activityInterpreters.size(); i++) {
295 SocialActivityInterpreterImpl activityInterpreter =
296 (SocialActivityInterpreterImpl)activityInterpreters.get(i);
297
298 if (activityInterpreter.hasClassName(className)) {
299 activityInterpreter.updateActivitySet(activityId);
300
301 return;
302 }
303 }
304 }
305 }
306
307 private static Log _log = LogFactoryUtil.getLog(
308 SocialActivityInterpreterLocalServiceImpl.class);
309
310 private Map<String, List<SocialActivityInterpreter>> _activityInterpreters =
311 new HashMap<String, List<SocialActivityInterpreter>>();
312
313 }