001
014
015 package com.liferay.portlet.socialequityadmin.action;
016
017 import com.liferay.portal.kernel.bean.BeanPropertiesUtil;
018 import com.liferay.portal.kernel.util.Constants;
019 import com.liferay.portal.kernel.util.ParamUtil;
020 import com.liferay.portal.model.Group;
021 import com.liferay.portal.security.permission.comparator.ModelResourceComparator;
022 import com.liferay.portal.struts.PortletAction;
023 import com.liferay.portal.theme.ThemeDisplay;
024 import com.liferay.portal.util.PortalUtil;
025 import com.liferay.portal.util.WebKeys;
026 import com.liferay.portlet.social.model.SocialEquityActionMapping;
027 import com.liferay.portlet.social.model.SocialEquitySetting;
028 import com.liferay.portlet.social.model.SocialEquitySettingConstants;
029 import com.liferay.portlet.social.service.SocialEquityGroupSettingLocalServiceUtil;
030 import com.liferay.portlet.social.service.SocialEquityLogLocalServiceUtil;
031 import com.liferay.portlet.social.service.SocialEquitySettingLocalServiceUtil;
032
033 import java.util.ArrayList;
034 import java.util.Arrays;
035 import java.util.Comparator;
036 import java.util.LinkedHashMap;
037 import java.util.List;
038 import java.util.Map;
039
040 import javax.portlet.ActionRequest;
041 import javax.portlet.ActionResponse;
042 import javax.portlet.PortletConfig;
043 import javax.portlet.RenderRequest;
044 import javax.portlet.RenderResponse;
045
046 import org.apache.struts.action.ActionForm;
047 import org.apache.struts.action.ActionForward;
048 import org.apache.struts.action.ActionMapping;
049
050
055 public class ViewAction extends PortletAction {
056
057 public void processAction(
058 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
059 ActionRequest actionRequest, ActionResponse actionResponse)
060 throws Exception {
061
062 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
063
064 if (cmd.equals("updateRanks")) {
065 updateRanks(actionRequest);
066 }
067 else if (cmd.equals("updateSettings")) {
068 updateSettings(actionRequest);
069 }
070
071 sendRedirect(actionRequest, actionResponse);
072 }
073
074 public ActionForward render(
075 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
076 RenderRequest renderRequest, RenderResponse renderResponse)
077 throws Exception {
078
079 ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(
080 WebKeys.THEME_DISPLAY);
081
082 Map<String, List<SocialEquityActionMapping>> equityActionMappingsMap =
083 new LinkedHashMap<String, List<SocialEquityActionMapping>>();
084
085 String[] classNames = PortalUtil.getSocialEquityClassNames();
086
087 Comparator<String> comparator = new ModelResourceComparator(
088 themeDisplay.getLocale());
089
090 Arrays.sort(classNames, comparator);
091
092 for (String className : classNames) {
093 List<SocialEquityActionMapping> mergedEquityActionMappings =
094 getMergedEquityActionMappings(
095 themeDisplay.getScopeGroupId(), className);
096
097 equityActionMappingsMap.put(className, mergedEquityActionMappings);
098 }
099
100 renderRequest.setAttribute(
101 WebKeys.SOCIAL_EQUITY_ACTION_MAPPINGS_MAP, equityActionMappingsMap);
102
103 return mapping.findForward("portlet.social_equity_admin.view");
104 }
105
106 protected SocialEquityActionMapping getMergedEquityActionMapping(
107 ActionRequest actionRequest,
108 SocialEquityActionMapping equityActionMapping)
109 throws Exception {
110
111 SocialEquityActionMapping mergedMapping = equityActionMapping.clone();
112
113 updateModel(actionRequest, mergedMapping, "informationDailyLimit");
114 updateModel(actionRequest, mergedMapping, "informationLifespan");
115 updateModel(actionRequest, mergedMapping, "informationValue");
116 updateModel(actionRequest, mergedMapping, "participationDailyLimit");
117 updateModel(actionRequest, mergedMapping, "participationLifespan");
118 updateModel(actionRequest, mergedMapping, "participationValue");
119
120 return mergedMapping;
121 }
122
123 protected SocialEquityActionMapping getMergedEquityActionMapping(
124 long groupId, SocialEquityActionMapping equityActionMapping)
125 throws Exception {
126
127 SocialEquityActionMapping mergedEquityActionMapping =
128 equityActionMapping.clone();
129
130 List<SocialEquitySetting> equitySettings =
131 SocialEquitySettingLocalServiceUtil.getEquitySettings(
132 groupId, equityActionMapping.getClassName(),
133 equityActionMapping.getActionId());
134
135 for (SocialEquitySetting equitySetting : equitySettings) {
136 if (equitySetting.getType() ==
137 SocialEquitySettingConstants.TYPE_INFORMATION) {
138
139 mergedEquityActionMapping.setInformationDailyLimit(
140 equitySetting.getDailyLimit());
141 mergedEquityActionMapping.setInformationLifespan(
142 equitySetting.getLifespan());
143 mergedEquityActionMapping.setInformationValue(
144 equitySetting.getValue());
145 }
146 else {
147 mergedEquityActionMapping.setParticipationDailyLimit(
148 equitySetting.getDailyLimit());
149 mergedEquityActionMapping.setParticipationLifespan(
150 equitySetting.getLifespan());
151 mergedEquityActionMapping.setParticipationValue(
152 equitySetting.getValue());
153 }
154 }
155
156 return mergedEquityActionMapping;
157 }
158
159 protected List<SocialEquityActionMapping> getMergedEquityActionMappings(
160 ActionRequest actionRequest, String className)
161 throws Exception {
162
163 List<SocialEquityActionMapping> mergedEquityActionMappings =
164 new ArrayList<SocialEquityActionMapping>();
165
166 List<SocialEquityActionMapping> equityActionMappings =
167 PortalUtil.getSocialEquityActionMappings(className);
168
169 for (SocialEquityActionMapping equityActionMapping :
170 equityActionMappings) {
171
172 SocialEquityActionMapping mergedEquityActionMapping =
173 getMergedEquityActionMapping(
174 actionRequest, equityActionMapping);
175
176 mergedEquityActionMappings.add(mergedEquityActionMapping);
177 }
178
179 return mergedEquityActionMappings;
180 }
181
182 protected List<SocialEquityActionMapping> getMergedEquityActionMappings(
183 long groupId, String className)
184 throws Exception {
185
186 List<SocialEquityActionMapping> mergedEquityActionMappings =
187 new ArrayList<SocialEquityActionMapping>();
188
189 List<SocialEquityActionMapping> equityActionMappings =
190 PortalUtil.getSocialEquityActionMappings(className);
191
192 for (SocialEquityActionMapping equityActionMapping :
193 equityActionMappings) {
194
195 SocialEquityActionMapping mergedEquityActionMapping =
196 getMergedEquityActionMapping(groupId, equityActionMapping);
197
198 mergedEquityActionMappings.add(mergedEquityActionMapping);
199 }
200
201 return mergedEquityActionMappings;
202 }
203
204 protected void updateModel(
205 ActionRequest actionRequest,
206 SocialEquityActionMapping equityActionMapping, String param)
207 throws Exception {
208
209 String className = equityActionMapping.getClassName();
210
211 int value = ParamUtil.getInteger(
212 actionRequest,
213 className + "." + equityActionMapping.getActionId() + "." + param,
214 -1);
215
216 if (value >= 0) {
217 BeanPropertiesUtil.setProperty(equityActionMapping, param, value);
218 }
219 }
220
221 protected void updateRanks(ActionRequest actionRequest) throws Exception {
222 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
223 WebKeys.THEME_DISPLAY);
224
225 SocialEquityLogLocalServiceUtil.updateRanks(
226 themeDisplay.getScopeGroupId());
227 }
228
229 protected void updateSettings(ActionRequest actionRequest)
230 throws Exception {
231
232 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
233 WebKeys.THEME_DISPLAY);
234
235 boolean enabled = ParamUtil.getBoolean(actionRequest, "enabled");
236
237 SocialEquityGroupSettingLocalServiceUtil.updateEquityGroupSetting(
238 themeDisplay.getScopeGroupId(), Group.class.getName(),
239 SocialEquitySettingConstants.TYPE_INFORMATION, enabled);
240
241 SocialEquityGroupSettingLocalServiceUtil.updateEquityGroupSetting(
242 themeDisplay.getScopeGroupId(), Group.class.getName(),
243 SocialEquitySettingConstants.TYPE_PARTICIPATION, enabled);
244
245 String[] classNames = PortalUtil.getSocialEquityClassNames();
246
247 for (String className : classNames) {
248 List<SocialEquityActionMapping> mergedEquityActionMappings =
249 getMergedEquityActionMappings(actionRequest, className);
250
251 SocialEquitySettingLocalServiceUtil.updateEquitySettings(
252 themeDisplay.getScopeGroupId(), className,
253 mergedEquityActionMappings);
254
255 enabled = ParamUtil.getBoolean(
256 actionRequest, className + ".enabled");
257
258 SocialEquityGroupSettingLocalServiceUtil.updateEquityGroupSetting(
259 themeDisplay.getScopeGroupId(), className,
260 SocialEquitySettingConstants.TYPE_INFORMATION,
261 enabled);
262
263 SocialEquityGroupSettingLocalServiceUtil.updateEquityGroupSetting(
264 themeDisplay.getScopeGroupId(), className,
265 SocialEquitySettingConstants.TYPE_PARTICIPATION,
266 enabled);
267 }
268 }
269
270 }