1
22
23 package com.liferay.portlet.workflow.action;
24
25 import com.liferay.portal.kernel.servlet.SessionErrors;
26 import com.liferay.portal.kernel.util.Constants;
27 import com.liferay.portal.kernel.util.ParamUtil;
28 import com.liferay.portal.security.auth.PrincipalException;
29 import com.liferay.portal.struts.PortletAction;
30 import com.liferay.portlet.workflow.DefinitionXmlException;
31 import com.liferay.portlet.workflow.NoSuchDefinitionException;
32 import com.liferay.portlet.workflow.service.WorkflowDefinitionServiceUtil;
33
34 import javax.portlet.ActionRequest;
35 import javax.portlet.ActionResponse;
36 import javax.portlet.PortletConfig;
37 import javax.portlet.RenderRequest;
38 import javax.portlet.RenderResponse;
39
40 import org.apache.commons.logging.Log;
41 import org.apache.commons.logging.LogFactory;
42 import org.apache.struts.action.ActionForm;
43 import org.apache.struts.action.ActionForward;
44 import org.apache.struts.action.ActionMapping;
45
46
52 public class EditDefinitionAction extends PortletAction {
53
54 public void processAction(
55 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
56 ActionRequest actionRequest, ActionResponse actionResponse)
57 throws Exception {
58
59 String cmd = ParamUtil.getString(actionRequest, Constants.CMD);
60
61 try {
62 if (cmd.equals(Constants.ADD)) {
63 addDefinition(actionRequest);
64 }
65
66 sendRedirect(actionRequest, actionResponse);
67 }
68 catch (Exception e) {
69 if (e instanceof NoSuchDefinitionException ||
70 e instanceof PrincipalException) {
71
72 SessionErrors.add(actionRequest, e.getClass().getName());
73
74 setForward(actionRequest, "portlet.workflow.error");
75 }
76 else {
77 _log.error(e, e);
78
79 SessionErrors.add(
80 actionRequest, DefinitionXmlException.class.getName());
81
82 setForward(actionRequest, "portlet.workflow.edit_definition");
83 }
84 }
85 }
86
87 public ActionForward render(
88 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
89 RenderRequest renderRequest, RenderResponse renderResponse)
90 throws Exception {
91
92 try {
93 ActionUtil.getDefinition(renderRequest);
94 }
95 catch (Exception e) {
96 if (e instanceof NoSuchDefinitionException ||
97 e instanceof PrincipalException) {
98
99 SessionErrors.add(renderRequest, e.getClass().getName());
100
101 return mapping.findForward("portlet.workflow.error");
102 }
103 else {
104 throw e;
105 }
106 }
107
108 return mapping.findForward(
109 getForward(renderRequest, "portlet.workflow.edit_definition"));
110 }
111
112 protected void addDefinition(ActionRequest actionRequest) throws Exception {
113 String xml = ParamUtil.getString(actionRequest, "xml");
114
115 String[] communityPermissions = actionRequest.getParameterValues(
116 "communityPermissions");
117 String[] guestPermissions = actionRequest.getParameterValues(
118 "guestPermissions");
119
120 WorkflowDefinitionServiceUtil.addDefinition(
121 xml, communityPermissions, guestPermissions);
122 }
123
124 private static Log _log = LogFactory.getLog(EditDefinitionAction.class);
125
126 }