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
52 public class CopyArticleAction extends PortletAction {
53
54 public void processAction(
55 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
56 ActionRequest actionRequest, ActionResponse actionResponse)
57 throws Exception {
58
59 try {
60 copyArticle(actionRequest);
61
62 sendRedirect(actionRequest, actionResponse);
63 }
64 catch (Exception e) {
65 if (e instanceof NoSuchArticleException ||
66 e instanceof PrincipalException) {
67
68 SessionErrors.add(actionRequest, e.getClass().getName());
69
70 setForward(actionRequest, "portlet.journal.error");
71 }
72 else if (e instanceof DuplicateArticleIdException ||
73 e instanceof ArticleIdException) {
74
75 SessionErrors.add(actionRequest, e.getClass().getName());
76 }
77 else {
78 throw e;
79 }
80 }
81 }
82
83 public ActionForward render(
84 ActionMapping mapping, ActionForm form, PortletConfig portletConfig,
85 RenderRequest renderRequest, RenderResponse renderResponse)
86 throws Exception {
87
88 return mapping.findForward(
89 getForward(renderRequest, "portlet.journal.copy_article"));
90 }
91
92 protected void copyArticle(ActionRequest actionRequest) throws Exception {
93 Layout layout = (Layout)actionRequest.getAttribute(WebKeys.LAYOUT);
94
95 long groupId = ParamUtil.getLong(actionRequest, "groupId");
96 String oldArticleId = ParamUtil.getString(
97 actionRequest, "oldArticleId");
98 String newArticleId = ParamUtil.getString(
99 actionRequest, "newArticleId");
100 boolean autoArticleId = ParamUtil.getBoolean(
101 actionRequest, "autoArticleId");
102 double version = ParamUtil.getDouble(actionRequest, "version");
103
104 JournalArticleServiceUtil.copyArticle(
105 groupId, oldArticleId, newArticleId, autoArticleId, version,
106 layout.getPlid());
107 }
108
109 }