Replaced the folder deletion procedure with the new single DELETE request (issue...
authorChristos Stathis <chstath@ebs.gr>
Thu, 28 Jun 2012 12:27:25 +0000 (15:27 +0300)
committerChristos Stathis <chstath@ebs.gr>
Thu, 28 Jun 2012 12:27:25 +0000 (15:27 +0300)
src/gr/grnet/pithos/web/client/FolderPermissionsDialog.java
src/gr/grnet/pithos/web/client/Pithos.java

index de6877f..720b02e 100644 (file)
@@ -215,52 +215,7 @@ public class FolderPermissionsDialog extends DialogBox {
 \r
        void updateFolder() {\r
         final Map<String, Boolean[]> perms = (permList.hasChanges() ? permList.getPermissions() : null);\r
-        final String newName = folderName.getText().trim();\r
-        if (!folder.isContainer() && !folder.getName().equals(newName)) {\r
-            final String path = folder.getParent().getUri() + "/" + newName;\r
-            PutRequest newFolder = new PutRequest(app.getApiPath(), folder.getParent().getOwner(), path) {\r
-                @Override\r
-                public void onSuccess(Resource result) {\r
-                    Iterator<File> iter = folder.getFiles().iterator();\r
-                    app.copyFiles(iter, folder.getParent().getOwner(), folder.getParent().getUri() + "/" + newName, new Command() {\r
-                        @Override\r
-                        public void execute() {\r
-                            Iterator<Folder> iterf = folder.getSubfolders().iterator();\r
-                            app.copySubfolders(iterf, folder.getParent().getOwner(), folder.getParent().getUri() + "/" + newName, new Command() {\r
-                                @Override\r
-                                public void execute() {\r
-                                    app.deleteFolder(folder, null);\r
-                                    updateMetadata(path + "?update=", perms);\r
-                                }\r
-                            });\r
-                        }\r
-                    });\r
-                }\r
-\r
-                @Override\r
-                public void onError(Throwable t) {\r
-                    GWT.log("", t);\r
-                                       app.setError(t);\r
-                    if(t instanceof RestException){\r
-                        app.displayError("Unable to update folder: " + ((RestException) t).getHttpStatusText());\r
-                    }\r
-                    else\r
-                        app.displayError("System error modifying folder: " + t.getMessage());\r
-                }\r
-\r
-                               @Override\r
-                               protected void onUnauthorized(Response response) {\r
-                                       app.sessionExpired();\r
-                               }\r
-            };\r
-            newFolder.setHeader("X-Auth-Token", app.getToken());\r
-            newFolder.setHeader("Content-Type", "application/folder");\r
-            newFolder.setHeader("Accept", "*/*");\r
-            newFolder.setHeader("Content-Length", "0");\r
-            Scheduler.get().scheduleDeferred(newFolder);\r
-        }\r
-        else\r
-            updateMetadata(folder.getUri() + "?update=", perms);\r
+        updateMetadata(folder.getUri() + "?update=", perms);\r
        }\r
 \r
        protected void updateMetadata(final String path, final Map<String, Boolean[]> newPermissions) {\r
index fcf9fb2..ec098cc 100644 (file)
@@ -900,147 +900,44 @@ public class Pithos implements EntryPoint, ResizeHandler {
        }
 
     public void deleteFolder(final Folder folder, final Command callback) {
-        String path = getApiPath() + folder.getOwner() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(folder.getPrefix()) + "&t=" + System.currentTimeMillis();
-        RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);
-        builder.setHeader("X-Auth-Token", getToken());
-        try {
-            builder.sendRequest("", new RequestCallback() {
-                @Override
-                public void onResponseReceived(Request request, Response response) {
-                    if (response.getStatusCode() == Response.SC_OK) {
-                        JSONValue json = JSONParser.parseStrict(response.getText());
-                        JSONArray array = json.isArray();
-                        int i = 0;
-                        if (array != null) {
-                            deleteObject(folder, i, array, callback);
-                        }
-                    }
-                }
-
-                @Override
-                public void onError(Request request, Throwable exception) {
-                       setError(exception);
-                    displayError("System error unable to delete folder: " + exception.getMessage());
-                }
-            });
-        }
-        catch (RequestException e) {
-        }
-    }
-
-    void deleteObject(final Folder folder, final int i, final JSONArray array, final Command callback) {
-        if (i < array.size()) {
-            JSONObject o = array.get(i).isObject();
-            if (o != null && !o.containsKey("subdir")) {
-                JSONString name = o.get("name").isString();
-                String path = "/" + folder.getContainer() + "/" + name.stringValue();
-                DeleteRequest delete = new DeleteRequest(getApiPath(), folder.getOwner(), URL.encode(path)) {
-                    @Override
-                    public void onSuccess(Resource result) {
-                        deleteObject(folder, i + 1, array, callback);
-                    }
-
-                    @Override
-                    public void onError(Throwable t) {
-                        GWT.log("", t);
-                                               setError(t);
-                        displayError("System error unable to delete folder: " + t.getMessage());
-                        deleteObject(folder, i + 1, array, callback);
-                    }
-
-                               @Override
-                               protected void onUnauthorized(Response response) {
-                                       sessionExpired();
-                               }
-                };
-                delete.setHeader("X-Auth-Token", getToken());
-                Scheduler.get().scheduleDeferred(delete);
-            }
-            else if (o != null) {
-                String subdir = o.get("subdir").isString().stringValue();
-                subdir = subdir.substring(0, subdir.length() - 1);
-                String path = getApiPath() + folder.getOwner() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(subdir) + "&t=" + System.currentTimeMillis();
-                RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);
-                builder.setHeader("X-Auth-Token", getToken());
-                try {
-                    builder.sendRequest("", new RequestCallback() {
-                        @Override
-                        public void onResponseReceived(Request request, Response response) {
-                            if (response.getStatusCode() == Response.SC_OK) {
-                                JSONValue json = JSONParser.parseStrict(response.getText());
-                                JSONArray array2 = json.isArray();
-                                if (array2 != null) {
-                                    int l = array.size();
-                                    for (int j=0; j<array2.size(); j++) {
-                                        array.set(l++, array2.get(j));
-                                    }
-                                }
-                                deleteObject(folder, i + 1, array, callback);
-                            }
-                        }
-
-                        @Override
-                        public void onError(Request request, Throwable exception) {
-                               setError(exception);
-                            displayError("System error unable to delete folder: " + exception.getMessage());
-                        }
-                    });
-                }
-                catch (RequestException e) {
-                }
-            }
-        }
-        else {
-               if (folder.isContainer()) {
-                       updateFolder(folder, true, new Command() {
+        String path = "/" + folder.getContainer() + "/" + folder.getPrefix() + "?delimiter=/" + "&t=" + System.currentTimeMillis();
+        DeleteRequest deleteFolder = new DeleteRequest(getApiPath(), folder.getOwner(), path) {
+                       
+                       @Override
+                       protected void onUnauthorized(Response response) {
+                               sessionExpired();
+                       }
+                       
+                       @Override
+                       public void onSuccess(Resource result) {
+                updateFolder(folder.getParent(), true, new Command() {
                                        
                                        @Override
                                        public void execute() {
+                                               folderTreeSelectionModel.setSelected(folder.getParent(), true);
                                                updateStatistics();
                                                if (callback != null)
                                                        callback.execute();
                                        }
-                               }, false);
-                       return;
-               }
-            String path = folder.getUri();
-            DeleteRequest deleteFolder = new DeleteRequest(getApiPath(), getUsername(), URL.encode(path)) {
-                @Override
-                public void onSuccess(Resource result) {
-                    updateFolder(folder.getParent(), true, new Command() {
-                                               
-                                               @Override
-                                               public void execute() {
-                                                       folderTreeSelectionModel.setSelected(folder.getParent(), true);
-                                                       updateStatistics();
-                                                       if (callback != null)
-                                                               callback.execute();
-                                               }
-                                       }, true);
-                }
-
-                @Override
-                public void onError(Throwable t) {
-                    GWT.log("", t);
-                                       setError(t);
-                    if (t instanceof RestException) {
-                       if (((RestException) t).getHttpStatusCode() != Response.SC_NOT_FOUND)
-                               displayError("Unable to delete folder: "+((RestException) t).getHttpStatusText());
-                       else
-                               onSuccess(null);
-                    }
-                    else
-                        displayError("System error unable to delete folder: " + t.getMessage());
+                               }, true);
+                       }
+                       
+                       @Override
+                       public void onError(Throwable t) {
+                GWT.log("", t);
+                               setError(t);
+                if (t instanceof RestException) {
+                       if (((RestException) t).getHttpStatusCode() != Response.SC_NOT_FOUND)
+                               displayError("Unable to delete folder: "+((RestException) t).getHttpStatusText());
+                       else
+                               onSuccess(null);
                 }
-
-                               @Override
-                               protected void onUnauthorized(Response response) {
-                                       sessionExpired();
-                               }
-            };
-            deleteFolder.setHeader("X-Auth-Token", getToken());
-            Scheduler.get().scheduleDeferred(deleteFolder);
-        }
+                else
+                    displayError("System error unable to delete folder: " + t.getMessage());
+                       }
+               };
+               deleteFolder.setHeader("X-Auth-Token", getToken());
+               Scheduler.get().scheduleDeferred(deleteFolder);
     }
 
     public FolderTreeView getFolderTreeView() {