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
114 @Override
115 public SocialActivityFeedEntry interpret(
116 SocialActivity activity, ThemeDisplay themeDisplay) {
117
118 ServiceContext serviceContext = null;
119
120 try {
121 serviceContext = ServiceContextFactory.getInstance(
122 themeDisplay.getRequest());
123 }
124 catch (Exception e) {
125 return null;
126 }
127
128 return interpret(StringPool.BLANK, activity, serviceContext);
129 }
130
131
146 @Override
147 public SocialActivityFeedEntry interpret(
148 String selector, SocialActivity activity,
149 ServiceContext serviceContext) {
150
151 HttpServletRequest request = serviceContext.getRequest();
152
153 if (request == null) {
154 return null;
155 }
156
157 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
158 WebKeys.THEME_DISPLAY);
159
160 try {
161 if (activity.getUserId() == themeDisplay.getDefaultUserId()) {
162 return null;
163 }
164 }
165 catch (Exception e) {
166 _log.error(e, e);
167 }
168
169 if (activity.getMirrorActivityId() > 0) {
170 SocialActivity mirrorActivity = null;
171
172 try {
173 mirrorActivity = socialActivityLocalService.getActivity(
174 activity.getMirrorActivityId());
175 }
176 catch (Exception e) {
177 }
178
179 if (mirrorActivity != null) {
180 activity = mirrorActivity;
181 }
182 }
183
184 List<SocialActivityInterpreter> activityInterpreters =
185 _activityInterpreters.get(selector);
186
187 if (activityInterpreters == null) {
188 return null;
189 }
190
191 String className = PortalUtil.getClassName(activity.getClassNameId());
192
193 for (int i = 0; i < activityInterpreters.size(); i++) {
194 SocialActivityInterpreterImpl activityInterpreter =
195 (SocialActivityInterpreterImpl)activityInterpreters.get(i);
196
197 if (activityInterpreter.hasClassName(className)) {
198 SocialActivityFeedEntry activityFeedEntry =
199 activityInterpreter.interpret(activity, serviceContext);
200
201 if (activityFeedEntry != null) {
202 activityFeedEntry.setPortletId(
203 activityInterpreter.getPortletId());
204
205 return activityFeedEntry;
206 }
207 }
208 }
209
210 return null;
211 }
212
213 @Override
214 public SocialActivityFeedEntry interpret(
215 String selector, SocialActivitySet activitySet,
216 ServiceContext serviceContext) {
217
218 HttpServletRequest request = serviceContext.getRequest();
219
220 if (request == null) {
221 return null;
222 }
223
224 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
225 WebKeys.THEME_DISPLAY);
226
227 try {
228 if (activitySet.getUserId() == themeDisplay.getDefaultUserId()) {
229 return null;
230 }
231 }
232 catch (Exception e) {
233 _log.error(e, e);
234 }
235
236 List<SocialActivityInterpreter> activityInterpreters =
237 _activityInterpreters.get(selector);
238
239 if (activityInterpreters == null) {
240 return null;
241 }
242
243 String className = PortalUtil.getClassName(
244 activitySet.getClassNameId());
245
246 for (int i = 0; i < activityInterpreters.size(); i++) {
247 SocialActivityInterpreterImpl activityInterpreter =
248 (SocialActivityInterpreterImpl)activityInterpreters.get(i);
249
250 if (activityInterpreter.hasClassName(className)) {
251 SocialActivityFeedEntry activityFeedEntry =
252 activityInterpreter.interpret(activitySet, serviceContext);
253
254 if (activityFeedEntry != null) {
255 activityFeedEntry.setPortletId(
256 activityInterpreter.getPortletId());
257
258 return activityFeedEntry;
259 }
260 }
261 }
262
263 return null;
264 }
265
266 @Override
267 public void updateActivitySet(long activityId)
268 throws PortalException, SystemException {
269
270 if (!PropsValues.SOCIAL_ACTIVITY_SETS_BUNDLING_ENABLED) {
271 socialActivitySetLocalService.addActivitySet(activityId);
272
273 return;
274 }
275
276 List<SocialActivityInterpreter> activityInterpreters =
277 _activityInterpreters.get(
278 PropsValues.SOCIAL_ACTIVITY_SETS_SELECTOR);
279
280 if (activityInterpreters != null) {
281 SocialActivity activity =
282 socialActivityPersistence.findByPrimaryKey(activityId);
283
284 String className = PortalUtil.getClassName(
285 activity.getClassNameId());
286
287 for (int i = 0; i < activityInterpreters.size(); i++) {
288 SocialActivityInterpreterImpl activityInterpreter =
289 (SocialActivityInterpreterImpl)activityInterpreters.get(i);
290
291 if (activityInterpreter.hasClassName(className)) {
292 activityInterpreter.updateActivitySet(activityId);
293
294 return;
295 }
296 }
297 }
298 }
299
300 private static Log _log = LogFactoryUtil.getLog(
301 SocialActivityInterpreterLocalServiceImpl.class);
302
303 private Map<String, List<SocialActivityInterpreter>> _activityInterpreters =
304 new HashMap<String, List<SocialActivityInterpreter>>();
305
306 }