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 boolean unique = ParamUtil.getBoolean(
121 actionRequest,
122 equityActionMapping.getClassName() + "." +
123 equityActionMapping.getActionId() + ".unique");
124
125 mergedMapping.setUnique(unique);
126
127 return mergedMapping;
128 }
129
130 protected SocialEquityActionMapping getMergedEquityActionMapping(
131 long groupId, SocialEquityActionMapping equityActionMapping)
132 throws Exception {
133
134 SocialEquityActionMapping mergedEquityActionMapping =
135 equityActionMapping.clone();
136
137 List<SocialEquitySetting> equitySettings =
138 SocialEquitySettingLocalServiceUtil.getEquitySettings(
139 groupId, equityActionMapping.getClassName(),
140 equityActionMapping.getActionId());
141
142 for (SocialEquitySetting equitySetting : equitySettings) {
143 if (equitySetting.getType() ==
144 SocialEquitySettingConstants.TYPE_INFORMATION) {
145
146 mergedEquityActionMapping.setInformationDailyLimit(
147 equitySetting.getDailyLimit());
148 mergedEquityActionMapping.setInformationLifespan(
149 equitySetting.getLifespan());
150 mergedEquityActionMapping.setInformationValue(
151 equitySetting.getValue());
152 }
153 else {
154 mergedEquityActionMapping.setParticipationDailyLimit(
155 equitySetting.getDailyLimit());
156 mergedEquityActionMapping.setParticipationLifespan(
157 equitySetting.getLifespan());
158 mergedEquityActionMapping.setParticipationValue(
159 equitySetting.getValue());
160 }
161
162 mergedEquityActionMapping.setUnique(equitySetting.isUniqueEntry());
163 }
164
165 return mergedEquityActionMapping;
166 }
167
168 protected List<SocialEquityActionMapping> getMergedEquityActionMappings(
169 ActionRequest actionRequest, String className)
170 throws Exception {
171
172 List<SocialEquityActionMapping> mergedEquityActionMappings =
173 new ArrayList<SocialEquityActionMapping>();
174
175 List<SocialEquityActionMapping> equityActionMappings =
176 PortalUtil.getSocialEquityActionMappings(className);
177
178 for (SocialEquityActionMapping equityActionMapping :
179 equityActionMappings) {
180
181 SocialEquityActionMapping mergedEquityActionMapping =
182 getMergedEquityActionMapping(
183 actionRequest, equityActionMapping);
184
185 mergedEquityActionMappings.add(mergedEquityActionMapping);
186 }
187
188 return mergedEquityActionMappings;
189 }
190
191 protected List<SocialEquityActionMapping> getMergedEquityActionMappings(
192 long groupId, String className)
193 throws Exception {
194
195 List<SocialEquityActionMapping> mergedEquityActionMappings =
196 new ArrayList<SocialEquityActionMapping>();
197
198 List<SocialEquityActionMapping> equityActionMappings =
199 PortalUtil.getSocialEquityActionMappings(className);
200
201 for (SocialEquityActionMapping equityActionMapping :
202 equityActionMappings) {
203
204 SocialEquityActionMapping mergedEquityActionMapping =
205 getMergedEquityActionMapping(groupId, equityActionMapping);
206
207 mergedEquityActionMappings.add(mergedEquityActionMapping);
208 }
209
210 return mergedEquityActionMappings;
211 }
212
213 protected void updateModel(
214 ActionRequest actionRequest,
215 SocialEquityActionMapping equityActionMapping, String param)
216 throws Exception {
217
218 String className = equityActionMapping.getClassName();
219
220 int value = ParamUtil.getInteger(
221 actionRequest,
222 className + "." + equityActionMapping.getActionId() + "." + param,
223 -1);
224
225 if (value >= 0) {
226 BeanPropertiesUtil.setProperty(equityActionMapping, param, value);
227 }
228 }
229
230 protected void updateRanks(ActionRequest actionRequest) throws Exception {
231 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
232 WebKeys.THEME_DISPLAY);
233
234 SocialEquityLogLocalServiceUtil.updateRanks(
235 themeDisplay.getScopeGroupId());
236 }
237
238 protected void updateSettings(ActionRequest actionRequest)
239 throws Exception {
240
241 ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
242 WebKeys.THEME_DISPLAY);
243
244 boolean enabled = ParamUtil.getBoolean(actionRequest, "enabled");
245
246 SocialEquityGroupSettingLocalServiceUtil.updateEquityGroupSetting(
247 themeDisplay.getScopeGroupId(), Group.class.getName(),
248 SocialEquitySettingConstants.TYPE_INFORMATION, enabled);
249
250 SocialEquityGroupSettingLocalServiceUtil.updateEquityGroupSetting(
251 themeDisplay.getScopeGroupId(), Group.class.getName(),
252 SocialEquitySettingConstants.TYPE_PARTICIPATION, enabled);
253
254 String[] classNames = PortalUtil.getSocialEquityClassNames();
255
256 for (String className : classNames) {
257 List<SocialEquityActionMapping> mergedEquityActionMappings =
258 getMergedEquityActionMappings(actionRequest, className);
259
260 SocialEquitySettingLocalServiceUtil.updateEquitySettings(
261 themeDisplay.getScopeGroupId(), className,
262 mergedEquityActionMappings);
263
264 enabled = ParamUtil.getBoolean(
265 actionRequest, className + ".enabled");
266
267 SocialEquityGroupSettingLocalServiceUtil.updateEquityGroupSetting(
268 themeDisplay.getScopeGroupId(), className,
269 SocialEquitySettingConstants.TYPE_INFORMATION,
270 enabled);
271
272 SocialEquityGroupSettingLocalServiceUtil.updateEquityGroupSetting(
273 themeDisplay.getScopeGroupId(), className,
274 SocialEquitySettingConstants.TYPE_PARTICIPATION,
275 enabled);
276 }
277 }
278
279 }