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 public void addActivityInterpreter(
068 SocialActivityInterpreter activityInterpreter) {
069
070 List<SocialActivityInterpreter> activityInterpreters =
071 _activityInterpreters.get(activityInterpreter.getSelector());
072
073 if (activityInterpreters == null) {
074 activityInterpreters = new ArrayList<SocialActivityInterpreter>();
075 }
076
077 activityInterpreters.add(activityInterpreter);
078
079 _activityInterpreters.put(
080 activityInterpreter.getSelector(), activityInterpreters);
081 }
082
083
088 public void deleteActivityInterpreter(
089 SocialActivityInterpreter activityInterpreter) {
090
091 List<SocialActivityInterpreter> activityInterpreters =
092 _activityInterpreters.get(activityInterpreter.getSelector());
093
094 if (activityInterpreters == null) {
095 return;
096 }
097
098 activityInterpreters.remove(activityInterpreter);
099 }
100
101 public Map<String, List<SocialActivityInterpreter>>
102 getActivityInterpreters() {
103
104 return _activityInterpreters;
105 }
106
107
111 public SocialActivityFeedEntry interpret(
112 SocialActivity activity, ThemeDisplay themeDisplay) {
113
114 ServiceContext serviceContext = null;
115
116 try {
117 serviceContext = ServiceContextFactory.getInstance(
118 themeDisplay.getRequest());
119 }
120 catch (Exception e) {
121 return null;
122 }
123
124 return interpret(StringPool.BLANK, activity, serviceContext);
125 }
126
127
142 public SocialActivityFeedEntry interpret(
143 String selector, SocialActivity activity,
144 ServiceContext serviceContext) {
145
146 HttpServletRequest request = serviceContext.getRequest();
147
148 if (request == null) {
149 return null;
150 }
151
152 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
153 WebKeys.THEME_DISPLAY);
154
155 try {
156 if (activity.getUserId() == themeDisplay.getDefaultUserId()) {
157 return null;
158 }
159 }
160 catch (Exception e) {
161 _log.error(e, e);
162 }
163
164 if (activity.getMirrorActivityId() > 0) {
165 SocialActivity mirrorActivity = null;
166
167 try {
168 mirrorActivity = socialActivityLocalService.getActivity(
169 activity.getMirrorActivityId());
170 }
171 catch (Exception e) {
172 }
173
174 if (mirrorActivity != null) {
175 activity = mirrorActivity;
176 }
177 }
178
179 List<SocialActivityInterpreter> activityInterpreters =
180 _activityInterpreters.get(selector);
181
182 if (activityInterpreters == null) {
183 return null;
184 }
185
186 String className = PortalUtil.getClassName(activity.getClassNameId());
187
188 for (int i = 0; i < activityInterpreters.size(); i++) {
189 SocialActivityInterpreterImpl activityInterpreter =
190 (SocialActivityInterpreterImpl)activityInterpreters.get(i);
191
192 if (activityInterpreter.hasClassName(className)) {
193 SocialActivityFeedEntry activityFeedEntry =
194 activityInterpreter.interpret(activity, serviceContext);
195
196 if (activityFeedEntry != null) {
197 activityFeedEntry.setPortletId(
198 activityInterpreter.getPortletId());
199
200 return activityFeedEntry;
201 }
202 }
203 }
204
205 return null;
206 }
207
208 public SocialActivityFeedEntry interpret(
209 String selector, SocialActivitySet activitySet,
210 ServiceContext serviceContext) {
211
212 HttpServletRequest request = serviceContext.getRequest();
213
214 if (request == null) {
215 return null;
216 }
217
218 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
219 WebKeys.THEME_DISPLAY);
220
221 try {
222 if (activitySet.getUserId() == themeDisplay.getDefaultUserId()) {
223 return null;
224 }
225 }
226 catch (Exception e) {
227 _log.error(e, e);
228 }
229
230 List<SocialActivityInterpreter> activityInterpreters =
231 _activityInterpreters.get(selector);
232
233 if (activityInterpreters == null) {
234 return null;
235 }
236
237 String className = PortalUtil.getClassName(
238 activitySet.getClassNameId());
239
240 for (int i = 0; i < activityInterpreters.size(); i++) {
241 SocialActivityInterpreterImpl activityInterpreter =
242 (SocialActivityInterpreterImpl)activityInterpreters.get(i);
243
244 if (activityInterpreter.hasClassName(className)) {
245 SocialActivityFeedEntry activityFeedEntry =
246 activityInterpreter.interpret(activitySet, serviceContext);
247
248 if (activityFeedEntry != null) {
249 activityFeedEntry.setPortletId(
250 activityInterpreter.getPortletId());
251
252 return activityFeedEntry;
253 }
254 }
255 }
256
257 return null;
258 }
259
260 public void updateActivitySet(long activityId)
261 throws PortalException, SystemException {
262
263 List<SocialActivityInterpreter> activityInterpreters =
264 _activityInterpreters.get(
265 PropsValues.SOCIAL_ACTIVITY_SETS_SELECTOR);
266
267 if (activityInterpreters != null) {
268 SocialActivity activity =
269 socialActivityPersistence.findByPrimaryKey(activityId);
270
271 String className = PortalUtil.getClassName(
272 activity.getClassNameId());
273
274 for (int i = 0; i < activityInterpreters.size(); i++) {
275 SocialActivityInterpreterImpl activityInterpreter =
276 (SocialActivityInterpreterImpl)activityInterpreters.get(i);
277
278 if (activityInterpreter.hasClassName(className)) {
279 activityInterpreter.updateActivitySet(activityId);
280 }
281 }
282 }
283 }
284
285 private static Log _log = LogFactoryUtil.getLog(
286 SocialActivityInterpreterLocalServiceImpl.class);
287
288 private Map<String, List<SocialActivityInterpreter>> _activityInterpreters =
289 new HashMap<String, List<SocialActivityInterpreter>>();
290
291 }