001
014
015 package com.liferay.portlet.social.service.impl;
016
017 import com.liferay.portal.kernel.json.JSONException;
018 import com.liferay.portal.kernel.json.JSONFactoryUtil;
019 import com.liferay.portal.kernel.json.JSONObject;
020 import com.liferay.portal.kernel.log.Log;
021 import com.liferay.portal.kernel.log.LogFactoryUtil;
022 import com.liferay.portal.kernel.util.StringPool;
023 import com.liferay.portal.kernel.util.Validator;
024 import com.liferay.portal.theme.ThemeDisplay;
025 import com.liferay.portal.util.PortalUtil;
026 import com.liferay.portlet.social.model.SocialRequest;
027 import com.liferay.portlet.social.model.SocialRequestFeedEntry;
028 import com.liferay.portlet.social.model.SocialRequestInterpreter;
029 import com.liferay.portlet.social.model.impl.SocialRequestInterpreterImpl;
030 import com.liferay.portlet.social.service.base.SocialRequestInterpreterLocalServiceBaseImpl;
031
032 import java.util.ArrayList;
033 import java.util.List;
034
035
053 public class SocialRequestInterpreterLocalServiceImpl
054 extends SocialRequestInterpreterLocalServiceBaseImpl {
055
056
062 @Override
063 public void addRequestInterpreter(
064 SocialRequestInterpreter requestInterpreter) {
065
066 _requestInterpreters.add(requestInterpreter);
067 }
068
069
075 @Override
076 public void deleteRequestInterpreter(
077 SocialRequestInterpreter requestInterpreter) {
078
079 if (requestInterpreter != null) {
080 _requestInterpreters.remove(requestInterpreter);
081 }
082 }
083
084
100 @Override
101 public SocialRequestFeedEntry interpret(
102 SocialRequest request, ThemeDisplay themeDisplay) {
103
104 String className = PortalUtil.getClassName(request.getClassNameId());
105
106 for (int i = 0; i < _requestInterpreters.size(); i++) {
107 SocialRequestInterpreterImpl requestInterpreter =
108 (SocialRequestInterpreterImpl)_requestInterpreters.get(i);
109
110 if (matches(requestInterpreter, className, request)) {
111 SocialRequestFeedEntry requestFeedEntry =
112 requestInterpreter.interpret(request, themeDisplay);
113
114 if (requestFeedEntry != null) {
115 requestFeedEntry.setPortletId(
116 requestInterpreter.getPortletId());
117
118 return requestFeedEntry;
119 }
120 }
121 }
122
123 return null;
124 }
125
126
140 @Override
141 public void processConfirmation(
142 SocialRequest request, ThemeDisplay themeDisplay) {
143
144 String className = PortalUtil.getClassName(request.getClassNameId());
145
146 for (int i = 0; i < _requestInterpreters.size(); i++) {
147 SocialRequestInterpreterImpl requestInterpreter =
148 (SocialRequestInterpreterImpl)_requestInterpreters.get(i);
149
150 if (matches(requestInterpreter, className, request)) {
151 boolean value = requestInterpreter.processConfirmation(
152 request, themeDisplay);
153
154 if (value) {
155 return;
156 }
157 }
158 }
159 }
160
161
176 @Override
177 public void processRejection(
178 SocialRequest request, ThemeDisplay themeDisplay) {
179
180 String className = PortalUtil.getClassName(request.getClassNameId());
181
182 for (int i = 0; i < _requestInterpreters.size(); i++) {
183 SocialRequestInterpreterImpl requestInterpreter =
184 (SocialRequestInterpreterImpl)_requestInterpreters.get(i);
185
186 if (matches(requestInterpreter, className, request)) {
187 boolean value = requestInterpreter.processRejection(
188 request, themeDisplay);
189
190 if (value) {
191 return;
192 }
193 }
194 }
195 }
196
197 protected String getSocialRequestPortletId(SocialRequest request) {
198 try {
199 JSONObject extraDataJSONObject = JSONFactoryUtil.createJSONObject(
200 request.getExtraData());
201
202 return extraDataJSONObject.getString("portletId");
203 }
204 catch (JSONException jsone) {
205 _log.error(
206 "Unable to create JSON object from " + request.getExtraData());
207
208 return StringPool.BLANK;
209 }
210 }
211
212 protected boolean matches(
213 SocialRequestInterpreterImpl requestInterpreter, String className,
214 SocialRequest request) {
215
216 if (!requestInterpreter.hasClassName(className)) {
217 return false;
218 }
219
220 String requestPortletId = getSocialRequestPortletId(request);
221
222 if (Validator.isNull(requestPortletId) ||
223 requestPortletId.equals(requestInterpreter.getPortletId())) {
224
225 return true;
226 }
227
228 return false;
229 }
230
231 private static Log _log = LogFactoryUtil.getLog(
232 SocialRequestInterpreterLocalServiceImpl.class);
233
234 private List<SocialRequestInterpreter> _requestInterpreters =
235 new ArrayList<SocialRequestInterpreter>();
236
237 }