1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portlet.socialequityadmin.action;
16  
17  import com.liferay.portal.kernel.util.ParamUtil;
18  import com.liferay.portal.struts.PortletAction;
19  import com.liferay.portal.theme.ThemeDisplay;
20  import com.liferay.portal.util.PortalUtil;
21  import com.liferay.portal.util.WebKeys;
22  import com.liferay.portlet.social.model.SocialEquityActionMapping;
23  import com.liferay.portlet.social.model.SocialEquitySetting;
24  import com.liferay.portlet.social.model.SocialEquitySettingConstants;
25  import com.liferay.portlet.social.service.SocialEquitySettingLocalServiceUtil;
26  
27  import java.util.ArrayList;
28  import java.util.HashMap;
29  import java.util.List;
30  import java.util.Map;
31  
32  import javax.portlet.ActionRequest;
33  import javax.portlet.ActionResponse;
34  import javax.portlet.PortletConfig;
35  import javax.portlet.RenderRequest;
36  import javax.portlet.RenderResponse;
37  
38  import org.apache.struts.action.ActionForm;
39  import org.apache.struts.action.ActionForward;
40  import org.apache.struts.action.ActionMapping;
41  
42  /**
43   * <a href="ViewAction.java.html"><b><i>View Source</i></b></a>
44   *
45   * @author Zsolt Balogh
46   * @author Zsolt Berentey
47   * @author Brian Wing Shun Chan
48   */
49  public class ViewAction extends PortletAction {
50  
51      public void processAction(
52              ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
53              ActionRequest actionRequest, ActionResponse actionResponse)
54          throws Exception {
55  
56          ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(
57              WebKeys.THEME_DISPLAY);
58  
59          String[] classNames = PortalUtil.getSocialEquityClassNames();
60  
61          for (String className : classNames) {
62              List<SocialEquityActionMapping> mergedEquityActionMappings =
63                  getMergedEquityActionMappings(actionRequest, className);
64  
65              SocialEquitySettingLocalServiceUtil.updateSocialEquitySettings(
66                  themeDisplay.getScopeGroupId(), className,
67                  mergedEquityActionMappings);
68          }
69  
70          sendRedirect(actionRequest, actionResponse);
71      }
72  
73      public ActionForward render(
74              ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
75              RenderRequest renderRequest, RenderResponse renderResponse)
76          throws Exception {
77  
78          ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(
79              WebKeys.THEME_DISPLAY);
80  
81          Map<String, List<SocialEquityActionMapping>> equityActionMappingsMap =
82              new HashMap<String, List<SocialEquityActionMapping>>();
83  
84          String[] classNames = PortalUtil.getSocialEquityClassNames();
85  
86          for (String className : classNames) {
87              List<SocialEquityActionMapping> mergedEquityActionMappings =
88                  getMergedEquityActionMappings(
89                      themeDisplay.getScopeGroupId(), className);
90  
91              equityActionMappingsMap.put(className, mergedEquityActionMappings);
92          }
93  
94          renderRequest.setAttribute(
95              WebKeys.SOCIAL_EQUITY_ACTION_MAPPINGS_MAP, equityActionMappingsMap);
96  
97          return mapping.findForward("portlet.social_equity_admin.view");
98      }
99  
100     protected SocialEquityActionMapping getMergedEquityActionMapping(
101             ActionRequest actionRequest,
102             SocialEquityActionMapping equityActionMapping)
103         throws Exception {
104 
105         SocialEquityActionMapping mergedEquityActionMapping =
106             equityActionMapping.clone();
107 
108         String className = equityActionMapping.getClassName();
109 
110         int informationLifespan = ParamUtil.getInteger(
111             actionRequest,
112             className + "." + mergedEquityActionMapping.getActionId() +
113                 ".informationLifespan",
114             -1);
115 
116         if (informationLifespan >= 0) {
117             mergedEquityActionMapping.setInformationLifespan(
118                 informationLifespan);
119         }
120 
121         int informationValue = ParamUtil.getInteger(
122             actionRequest,
123             className + "." + mergedEquityActionMapping.getActionId() +
124                 ".informationValue",
125             -1);
126 
127         if (informationValue >= 0) {
128             mergedEquityActionMapping.setInformationValue(informationValue);
129         }
130 
131         int participationLifespan = ParamUtil.getInteger(
132             actionRequest,
133             className + "." + mergedEquityActionMapping.getActionId() +
134                 ".participationLifespan",
135             -1);
136 
137         if (participationLifespan >= 0) {
138             mergedEquityActionMapping.setParticipationLifespan(
139                 participationLifespan);
140         }
141 
142         int participationValue = ParamUtil.getInteger(
143             actionRequest,
144             className + "." + mergedEquityActionMapping.getActionId() +
145                 ".participationValue",
146             -1);
147 
148         if (participationValue >= 0) {
149             mergedEquityActionMapping.setParticipationValue(participationValue);
150         }
151 
152         return mergedEquityActionMapping;
153     }
154 
155     protected SocialEquityActionMapping getMergedEquityActionMapping(
156             long groupId, SocialEquityActionMapping equityActionMapping)
157         throws Exception {
158 
159         SocialEquityActionMapping mergedEquityActionMapping =
160             equityActionMapping.clone();
161 
162         List<SocialEquitySetting> equitySettings =
163             SocialEquitySettingLocalServiceUtil.getEquitySettings(
164                 groupId, equityActionMapping.getClassName(),
165                 equityActionMapping.getActionId());
166 
167         for (SocialEquitySetting equitySetting : equitySettings) {
168             if (equitySetting.getType() ==
169                     SocialEquitySettingConstants.TYPE_INFORMATION) {
170 
171                 mergedEquityActionMapping.setInformationLifespan(
172                     equitySetting.getValidity());
173                 mergedEquityActionMapping.setInformationValue(
174                     equitySetting.getValue());
175             }
176             else {
177                 mergedEquityActionMapping.setParticipationLifespan(
178                     equitySetting.getValidity());
179                 mergedEquityActionMapping.setParticipationValue(
180                     equitySetting.getValue());
181             }
182         }
183 
184         return mergedEquityActionMapping;
185     }
186 
187     protected List<SocialEquityActionMapping> getMergedEquityActionMappings(
188             ActionRequest actionRequest, String className)
189         throws Exception {
190 
191         List<SocialEquityActionMapping> mergedEquityActionMappings =
192             new ArrayList<SocialEquityActionMapping>();
193 
194         List<SocialEquityActionMapping> equityActionMappings =
195             PortalUtil.getSocialEquityActionMappings(className);
196 
197         for (SocialEquityActionMapping equityActionMapping :
198                 equityActionMappings) {
199 
200             SocialEquityActionMapping mergedEquityActionMapping =
201                 getMergedEquityActionMapping(
202                     actionRequest, equityActionMapping);
203 
204             mergedEquityActionMappings.add(mergedEquityActionMapping);
205         }
206 
207         return mergedEquityActionMappings;
208     }
209 
210     protected List<SocialEquityActionMapping> getMergedEquityActionMappings(
211             long groupId, String className)
212         throws Exception {
213 
214         List<SocialEquityActionMapping> mergedEquityActionMappings =
215             new ArrayList<SocialEquityActionMapping>();
216 
217         List<SocialEquityActionMapping> equityActionMappings =
218             PortalUtil.getSocialEquityActionMappings(className);
219 
220         for (SocialEquityActionMapping equityActionMapping :
221                 equityActionMappings) {
222 
223             SocialEquityActionMapping mergedEquityActionMapping =
224                 getMergedEquityActionMapping(groupId, equityActionMapping);
225 
226             mergedEquityActionMappings.add(mergedEquityActionMapping);
227         }
228 
229         return mergedEquityActionMappings;
230     }
231 
232 }