1
22
23 package com.liferay.portlet.documentlibrary.action;
24
25 import com.liferay.documentlibrary.DuplicateFileException;
26 import com.liferay.portal.kernel.util.Constants;
27 import com.liferay.portal.kernel.util.ParamUtil;
28 import com.liferay.portal.model.Layout;
29 import com.liferay.portal.security.auth.PrincipalException;
30 import com.liferay.portal.struts.PortletAction;
31 import com.liferay.portal.util.WebKeys;
32 import com.liferay.portlet.documentlibrary.DuplicateFolderNameException;
33 import com.liferay.portlet.documentlibrary.FolderNameException;
34 import com.liferay.portlet.documentlibrary.NoSuchFolderException;
35 import com.liferay.portlet.documentlibrary.service.DLFolderServiceUtil;
36 import com.liferay.util.servlet.SessionErrors;
37
38 import javax.portlet.ActionRequest;
39 import javax.portlet.ActionResponse;
40 import javax.portlet.PortletConfig;
41 import javax.portlet.RenderRequest;
42 import javax.portlet.RenderResponse;
43
44 import org.apache.struts.action.ActionForm;
45 import org.apache.struts.action.ActionForward;
46 import org.apache.struts.action.ActionMapping;
47
48
55 public class EditFolderAction extends PortletAction {
56
57 public void processAction(
58 ActionMapping mapping, ActionForm form, PortletConfig config,
59 ActionRequest req, ActionResponse res)
60 throws Exception {
61
62 String cmd = ParamUtil.getString(req, Constants.CMD);
63
64 try {
65 if (cmd.equals(Constants.ADD) || cmd.equals(Constants.UPDATE)) {
66 updateFolder(req);
67 }
68 else if (cmd.equals(Constants.DELETE)) {
69 deleteFolder(req);
70 }
71
72 sendRedirect(req, res);
73 }
74 catch (Exception e) {
75 if (e instanceof NoSuchFolderException ||
76 e instanceof PrincipalException) {
77
78 SessionErrors.add(req, e.getClass().getName());
79
80 setForward(req, "portlet.document_library.error");
81 }
82 else if (e instanceof DuplicateFileException ||
83 e instanceof DuplicateFolderNameException ||
84 e instanceof FolderNameException) {
85
86 SessionErrors.add(req, e.getClass().getName());
87 }
88 else {
89 throw e;
90 }
91 }
92 }
93
94 public ActionForward render(
95 ActionMapping mapping, ActionForm form, PortletConfig config,
96 RenderRequest req, RenderResponse res)
97 throws Exception {
98
99 try {
100 ActionUtil.getFolder(req);
101 }
102 catch (Exception e) {
103 if (e instanceof NoSuchFolderException ||
104 e instanceof PrincipalException) {
105
106 SessionErrors.add(req, e.getClass().getName());
107
108 return mapping.findForward("portlet.document_library.error");
109 }
110 else {
111 throw e;
112 }
113 }
114
115 return mapping.findForward(
116 getForward(req, "portlet.document_library.edit_folder"));
117 }
118
119 protected void deleteFolder(ActionRequest req) throws Exception {
120 long folderId = ParamUtil.getLong(req, "folderId");
121
122 DLFolderServiceUtil.deleteFolder(folderId);
123 }
124
125 protected void updateFolder(ActionRequest req) throws Exception {
126 Layout layout = (Layout)req.getAttribute(WebKeys.LAYOUT);
127
128 long folderId = ParamUtil.getLong(req, "folderId");
129
130 long parentFolderId = ParamUtil.getLong(req, "parentFolderId");
131 String name = ParamUtil.getString(req, "name");
132 String description = ParamUtil.getString(req, "description");
133
134 String[] communityPermissions = req.getParameterValues(
135 "communityPermissions");
136 String[] guestPermissions = req.getParameterValues("guestPermissions");
137
138 if (folderId <= 0) {
139
140
142 DLFolderServiceUtil.addFolder(
143 layout.getPlid(), parentFolderId, name, description,
144 communityPermissions, guestPermissions);
145 }
146 else {
147
148
150 DLFolderServiceUtil.updateFolder(
151 folderId, parentFolderId, name, description);
152 }
153 }
154
155 }