1
22
23 package com.liferay.portlet.journal.action;
24
25 import com.liferay.portal.kernel.servlet.SessionErrors;
26 import com.liferay.portal.kernel.util.ParamUtil;
27 import com.liferay.portal.model.Layout;
28 import com.liferay.portal.security.auth.PrincipalException;
29 import com.liferay.portal.struts.PortletAction;
30 import com.liferay.portal.util.WebKeys;
31 import com.liferay.portlet.journal.ArticleIdException;
32 import com.liferay.portlet.journal.DuplicateArticleIdException;
33 import com.liferay.portlet.journal.NoSuchArticleException;
34 import com.liferay.portlet.journal.service.JournalArticleServiceUtil;
35
36 import javax.portlet.ActionRequest;
37 import javax.portlet.ActionResponse;
38 import javax.portlet.PortletConfig;
39 import javax.portlet.RenderRequest;
40 import javax.portlet.RenderResponse;
41
42 import org.apache.struts.action.ActionForm;
43 import org.apache.struts.action.ActionForward;
44 import org.apache.struts.action.ActionMapping;
45
46
51 public class CopyArticleAction extends PortletAction {
52
53 public void processAction(
54 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
55 ActionRequest actionRequest, ActionResponse actionResponse)
56 throws Exception {
57
58 try {
59 copyArticle(actionRequest);
60
61 sendRedirect(actionRequest, actionResponse);
62 }
63 catch (Exception e) {
64 if (e instanceof NoSuchArticleException ||
65 e instanceof PrincipalException) {
66
67 SessionErrors.add(actionRequest, e.getClass().getName());
68
69 setForward(actionRequest, "portlet.journal.error");
70 }
71 else if (e instanceof DuplicateArticleIdException ||
72 e instanceof ArticleIdException) {
73
74 SessionErrors.add(actionRequest, e.getClass().getName());
75 }
76 else {
77 throw e;
78 }
79 }
80 }
81
82 public ActionForward render(
83 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
84 RenderRequest renderRequest, RenderResponse renderResponse)
85 throws Exception {
86
87 return mapping.findForward(
88 getForward(renderRequest, "portlet.journal.copy_article"));
89 }
90
91 protected void copyArticle(ActionRequest actionRequest) throws Exception {
92 Layout layout = (Layout)actionRequest.getAttribute(WebKeys.LAYOUT);
93
94 long groupId = ParamUtil.getLong(actionRequest, "groupId");
95 String oldArticleId = ParamUtil.getString(
96 actionRequest, "oldArticleId");
97 String newArticleId = ParamUtil.getString(
98 actionRequest, "newArticleId");
99 boolean autoArticleId = ParamUtil.getBoolean(
100 actionRequest, "autoArticleId");
101 double version = ParamUtil.getDouble(actionRequest, "version");
102
103 JournalArticleServiceUtil.copyArticle(
104 groupId, oldArticleId, newArticleId, autoArticleId, version,
105 layout.getPlid());
106 }
107
108 }