001
014
015 package com.liferay.portlet.mobiledevicerules.action;
016
017 import com.liferay.portal.kernel.bean.BeanParamUtil;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
020 import com.liferay.portal.kernel.json.JSONArray;
021 import com.liferay.portal.kernel.json.JSONFactoryUtil;
022 import com.liferay.portal.kernel.json.JSONObject;
023 import com.liferay.portal.kernel.servlet.SessionErrors;
024 import com.liferay.portal.kernel.util.Constants;
025 import com.liferay.portal.kernel.util.ParamUtil;
026 import com.liferay.portal.security.auth.PrincipalException;
027 import com.liferay.portal.struts.PortletAction;
028 import com.liferay.portal.util.WebKeys;
029 import com.liferay.portlet.mobiledevicerules.NoSuchRuleGroupException;
030 import com.liferay.portlet.mobiledevicerules.model.MDRRuleGroup;
031 import com.liferay.portlet.mobiledevicerules.model.MDRRuleGroupInstance;
032 import com.liferay.portlet.mobiledevicerules.service.MDRRuleGroupInstanceLocalServiceUtil;
033 import com.liferay.portlet.mobiledevicerules.service.MDRRuleGroupInstanceServiceUtil;
034 import com.liferay.portlet.mobiledevicerules.service.MDRRuleGroupLocalServiceUtil;
035
036 import javax.portlet.ActionRequest;
037 import javax.portlet.ActionResponse;
038 import javax.portlet.PortletConfig;
039 import javax.portlet.RenderRequest;
040 import javax.portlet.RenderResponse;
041
042 import org.apache.struts.action.ActionForm;
043 import org.apache.struts.action.ActionForward;
044 import org.apache.struts.action.ActionMapping;
045
046
049 public class EditRuleGroupInstanceAction extends PortletAction {
050
051 @Override
052 public void processAction(
053 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
054 ActionRequest actionRequest, ActionResponse actionResponse)
055 throws Exception {
056
057 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
058
059 try {
060 if (cmd.equals(Constants.DELETE)) {
061 deleteRuleGroupInstance(actionRequest);
062 }
063 else if (cmd.equals(Constants.UPDATE)) {
064 updateRuleGroupInstancesPriorities(actionRequest);
065 }
066
067 sendRedirect(actionRequest, actionResponse);
068 }
069 catch (Exception e) {
070 if (e instanceof PrincipalException) {
071 SessionErrors.add(actionRequest, e.getClass().getName());
072
073 setForward(actionRequest, "portlet.mobile_device_rules.error");
074 }
075 else if (e instanceof NoSuchRuleGroupException) {
076 SessionErrors.add(actionRequest, e.getClass().getName());
077 }
078 else {
079 throw e;
080 }
081 }
082 }
083
084 @Override
085 public ActionForward render(
086 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
087 RenderRequest renderRequest, RenderResponse renderResponse)
088 throws Exception {
089
090 long ruleGroupInstanceId = ParamUtil.getLong(
091 renderRequest, "ruleGroupInstanceId");
092
093 MDRRuleGroupInstance ruleGroupInstance =
094 MDRRuleGroupInstanceLocalServiceUtil.fetchRuleGroupInstance(
095 ruleGroupInstanceId);
096
097 renderRequest.setAttribute(
098 WebKeys.MOBILE_DEVICE_RULES_RULE_INSTANCE, ruleGroupInstance);
099
100 long ruleGroupId = BeanParamUtil.getLong(
101 ruleGroupInstance, renderRequest, "ruleGroupId");
102
103 MDRRuleGroup ruleGroup = MDRRuleGroupLocalServiceUtil.fetchRuleGroup(
104 ruleGroupId);
105
106 renderRequest.setAttribute(
107 WebKeys.MOBILE_DEVICE_RULES_RULE_GROUP, ruleGroup);
108
109 return mapping.findForward(
110 "portlet.mobile_device_rules.edit_rule_group_instance_priorities");
111 }
112
113 protected void deleteRuleGroupInstance(ActionRequest actionRequest)
114 throws PortalException, SystemException {
115
116 long ruleGroupInstanceId = ParamUtil.getLong(
117 actionRequest, "ruleGroupInstanceId");
118
119 MDRRuleGroupInstanceServiceUtil.deleteRuleGroupInstance(
120 ruleGroupInstanceId);
121 }
122
123 protected void updateRuleGroupInstancesPriorities(
124 ActionRequest actionRequest)
125 throws PortalException, SystemException {
126
127 String ruleGroupsInstancesJSON = ParamUtil.getString(
128 actionRequest, "ruleGroupsInstancesJSON");
129
130 JSONArray ruleGroupsInstancesJSONArray =
131 JSONFactoryUtil.createJSONArray(ruleGroupsInstancesJSON);
132
133 for (int i = 0; i < ruleGroupsInstancesJSONArray.length(); i++) {
134 JSONObject ruleGroupInstanceJSONObject =
135 ruleGroupsInstancesJSONArray.getJSONObject(i);
136
137 long ruleGroupInstanceId = ruleGroupInstanceJSONObject.getLong(
138 "ruleGroupInstanceId");
139
140 int priority = ruleGroupInstanceJSONObject.getInt("priority");
141
142 MDRRuleGroupInstanceServiceUtil.updateRuleGroupInstance(
143 ruleGroupInstanceId, priority);
144 }
145 }
146
147 }