KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > contineo > actions > rest > DeleteFolderOrDocRESTAction


1 /* License: GNU General Public License (GPL) version 2 from June 1991; but not any newer version!
2  */

3 package org.contineo.actions.rest;
4
5 import javax.servlet.http.HttpServletResponse JavaDoc;
6
7 import org.contineo.admin.Menu;
8 import org.contineo.admin.dao.MenuDAO;
9 import org.contineo.apis.rest.HttpStatusCodes;
10 import org.contineo.documan.DeleteItemUtil;
11
12 /**
13  * answers a HTTP delete request to delete a given resource
14  * @author Sebastian Stein
15  */

16 public class DeleteFolderOrDocRESTAction extends RESTAction {
17     /** menu id of the document/folder to be deleted */
18     private final int menuId;
19     
20     /** flag specifies whether to delete folder or document */
21     private final boolean deleteFolder;
22     
23     /** constructor sets some initial values and calls the processing of the request */
24     public DeleteFolderOrDocRESTAction(HttpServletResponse JavaDoc p_response, String JavaDoc p_userName,
25             String JavaDoc requestedRESTUrl, int p_menuId, boolean p_deleteFolder) {
26         super(null, requestedRESTUrl, p_userName, p_response,
27                 p_deleteFolder == true ? new String JavaDoc("DELETE REST/folder/XX: delete folder XX") :
28                     new String JavaDoc("DELETE REST/document/XX: delete document XX"));
29         menuId = p_menuId;
30         deleteFolder = p_deleteFolder;
31
32         processRequest();
33     }
34
35     @Override JavaDoc
36     protected void processRequest() {
37         // check if we can find the folder
38
MenuDAO menuDao = new MenuDAO();
39         Menu menu = menuDao.findByPrimaryKey(menuId);
40         if (menu == null) {
41             setHttpStatusCode(HttpStatusCodes.NOT_FOUND);
42             return;
43         }
44         
45         // check that the menu represents what the user intended to delete: folder or doc
46
int menuType = menu.getMenuType();
47         if ((menuType == Menu.MENUTYPE_DIRECTORY && deleteFolder == false) ||
48             (menuType == Menu.MENUTYPE_FILE && deleteFolder == true)) {
49             setHttpStatusCode(HttpStatusCodes.BAD_REQUEST);
50             return;
51         }
52         
53         // check that the user has access to all items contained in the menu
54
if (!menuDao.hasWriteAccess(menu, userName)) {
55             setHttpStatusCode(HttpStatusCodes.FORBIDDEN);
56             return;
57         }
58
59         // try to delete recursively
60
if (DeleteItemUtil.deleteMenu(menuId, userName) == false) {
61             setHttpStatusCode(HttpStatusCodes.INTERNAL_SERVER_ERROR);
62             addLogMessage("Unable to delete document/folder with menu id: " + menuId);
63             return;
64         }
65         
66         // success
67
setHttpStatusCode(HttpStatusCodes.OK); // TODO is there DELETED?
68
return;
69     }
70 }
Popular Tags