Replaced move procedures with the new PUT with delimiter
authorChristos Stathis <chstath@ebs.gr>
Thu, 28 Jun 2012 14:16:38 +0000 (17:16 +0300)
committerChristos Stathis <chstath@ebs.gr>
Thu, 28 Jun 2012 14:16:38 +0000 (17:16 +0300)
src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java
src/gr/grnet/pithos/web/client/Pithos.java
src/gr/grnet/pithos/web/client/commands/PasteCommand.java
src/gr/grnet/pithos/web/client/commands/RestoreTrashCommand.java
src/gr/grnet/pithos/web/client/commands/ToTrashCommand.java

index d784cc9..245b059 100644 (file)
@@ -299,57 +299,19 @@ public class FolderPropertiesDialog extends DialogBox {
                return;\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, new Command() {\r
-                                                                               \r
-                                                                               @Override\r
-                                                                               public void execute() {\r
-                                                   app.updateFolder(folder.getParent(), false, new Command() {\r
-                                                               \r
-                                                               @Override\r
-                                                               public void execute() {\r
-                                                                       app.updateMySharedRoot();\r
-                                                               }\r
-                                                       }, true);\r
-                                                                               }\r
-                                                                       });\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
+            app.copyFolder(folder, folder.getOwner(), path, true, new Command() {\r
+                               \r
                                @Override\r
-                               protected void onUnauthorized(Response response) {\r
-                                       app.sessionExpired();\r
+                               public void execute() {\r
+                    app.updateFolder(folder.getParent(), false, new Command() {\r
+                               \r
+                               @Override\r
+                               public void execute() {\r
+                                       app.updateMySharedRoot();\r
+                               }\r
+                       }, true);\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
         }\r
         else\r
             app.updateFolder(folder.getParent(), false, new Command() {\r
index fc44b21..f288cc7 100644 (file)
@@ -982,24 +982,8 @@ public class Pithos implements EntryPoint, ResizeHandler {
         }
     }
 
-    public void copySubfolders(final Iterator<Folder> iter, final String targetUsername, final String targetUri, final Command callback) {
-        if (iter.hasNext()) {
-            final Folder f = iter.next();
-            copyFolder(f, targetUsername, targetUri, new Command() {
-                               
-                               @Override
-                               public void execute() {
-                                       copySubfolders(iter, targetUsername, targetUri, callback);
-                               }
-                       });
-        }
-        else  if (callback != null) {
-            callback.execute();
-        }
-    }
-
-    public void copyFolder(final Folder f, final String targetUsername, final String targetUri, final Command callback) {
-        String path = targetUri + "/" + f.getName() + "?delimiter=/";
+    public void copyFolder(final Folder f, final String targetUsername, final String targetUri, boolean move, final Command callback) {
+        String path = targetUri + "?delimiter=/";
         PutRequest copyFolder = new PutRequest(getApiPath(), targetUsername, path) {
             @Override
             public void onSuccess(Resource result) {
@@ -1029,7 +1013,10 @@ public class Pithos implements EntryPoint, ResizeHandler {
         copyFolder.setHeader("Content-Type", "application/directory");
         if (!f.getOwner().equals(targetUsername))
                copyFolder.setHeader("X-Source-Account", f.getOwner());
-        copyFolder.setHeader("X-Copy-From", URL.encodePathSegment(f.getUri()));
+        if (move)
+            copyFolder.setHeader("X-Move-From", URL.encodePathSegment(f.getUri()));
+        else
+               copyFolder.setHeader("X-Copy-From", URL.encodePathSegment(f.getUri()));
         Scheduler.get().scheduleDeferred(copyFolder);
     }
     
index e964a24..e46eeb6 100644 (file)
@@ -76,7 +76,8 @@ public class PasteCommand implements Command {
         if (clipboardItem instanceof Folder) {
             final Folder tobeCopied = (Folder) clipboardItem;
             if (operation == Clipboard.COPY) {
-                app.copyFolder(tobeCopied, folder.getOwner(), folder.getUri(), new Command() {
+               String targetUri = folder.getUri() + "/" + tobeCopied.getName();
+                app.copyFolder(tobeCopied, folder.getOwner(), targetUri, false, new Command() {
                     @Override
                     public void execute() {
                         app.getClipboard().clear();
@@ -91,11 +92,11 @@ public class PasteCommand implements Command {
                 });
             }
             else {
-                app.copyFolder(tobeCopied, folder.getOwner(), folder.getUri(), new Command() {
+               String targetUri = folder.getUri() + "/" + tobeCopied.getName();
+                app.copyFolder(tobeCopied, folder.getOwner(), targetUri, true, new Command() {
                     @Override
                     public void execute() {
                         app.getClipboard().clear();
-                        app.deleteFolder(tobeCopied, null);
                         app.updateFolder(folder, true, null, true);
                     }
                 });
index 7b2cf6d..564189a 100644 (file)
@@ -111,97 +111,7 @@ public class RestoreTrashCommand implements Command {
 
     private void untrashFolder(final Folder f, final Command callback) {
         String path = "/" + Pithos.HOME_CONTAINER + "/" + f.getPrefix();
-        PutRequest createFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {
-            @Override
-            public void onSuccess(Resource result) {
-               GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()), f) {
-
-                                       @Override
-                                       public void onSuccess(final Folder _f) {
-                               Iterator<File> iter = _f.getFiles().iterator();
-                               untrashFiles(iter, new Command() {
-                                   @Override
-                                   public void execute() {
-                                       Iterator<Folder> iterf = _f.getSubfolders().iterator();
-                                       untrashSubfolders(iterf, new Command() {
-                                                                       
-                                                                       @Override
-                                                                       public void execute() {
-                                                                               DeleteRequest deleteFolder = new DeleteRequest(app.getApiPath(), _f.getOwner(), URL.encode(_f.getUri())) {
-                                                                                       
-                                                                                       @Override
-                                                                                       public void onSuccess(Resource _result) {
-                                                                                               app.updateRootFolder(callback);
-                                                                                       }
-                                                                                       
-                                                                                       @Override
-                                                                                       public void onError(Throwable t) {
-                                                                           GWT.log("", t);
-                                                                                               app.setError(t);
-                                                                           if (t instanceof RestException) {
-                                                                               if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND)
-                                                                                       onSuccess(null);
-                                                                               else
-                                                                                       app.displayError("Unable to delete folder: " + ((RestException) t).getHttpStatusText());
-                                                                           }
-                                                                           else
-                                                                               app.displayError("System error unable to delete folder: "+t.getMessage());
-                                                                                       }
-
-                                                                                       @Override
-                                                                                       protected void onUnauthorized(Response response) {
-                                                                                               app.sessionExpired();
-                                                                                       }
-                                                                               };
-                                                                               deleteFolder.setHeader("X-Auth-Token", app.getToken());
-                                                                               Scheduler.get().scheduleDeferred(deleteFolder);
-                                                                       }
-                                                               });
-                                   }
-                               });
-                                       }
-
-                                       @Override
-                                       public void onError(Throwable t) {
-                               GWT.log("", t);
-                                               app.setError(t);
-                               if (t instanceof RestException) {
-                                   app.displayError("Unable to get folder: " + ((RestException) t).getHttpStatusText());
-                               }
-                               else
-                                   app.displayError("System error getting folder: " + t.getMessage());
-                                       }
-
-                                       @Override
-                                       protected void onUnauthorized(Response response) {
-                                               app.sessionExpired();
-                                       }
-                               };
-                               getFolder.setHeader("X-Auth-Token", app.getToken());
-                               Scheduler.get().scheduleDeferred(getFolder);
-            }
-
-            @Override
-            public void onError(Throwable t) {
-                GWT.log("", t);
-                               app.setError(t);
-                if (t instanceof RestException) {
-                    app.displayError("Unable to create folder:" + ((RestException) t).getHttpStatusText());
-                }
-                else
-                    app.displayError("System error creating folder:" + t.getMessage());
-            }
-
-                       @Override
-                       protected void onUnauthorized(Response response) {
-                               app.sessionExpired();
-                       }
-        };
-        createFolder.setHeader("X-Auth-Token", app.getToken());
-        createFolder.setHeader("Accept", "*/*");
-        createFolder.setHeader("Content-Length", "0");
-        createFolder.setHeader("Content-Type", "application/folder");
-        Scheduler.get().scheduleDeferred(createFolder);
+        app.copyFolder(f, app.getUsername(), path, true, callback);
     }
 
     protected void untrashFiles(final Iterator<File> iter, final Command callback) {
index 7b2afa2..cf5371c 100644 (file)
@@ -120,103 +120,10 @@ public class ToTrashCommand implements Command{
        }
 
     private void trashFolder(final Folder f, final Command callback) {
-        String path = "/" + Pithos.TRASH_CONTAINER + "/" + f.getPrefix();
-        PutRequest createFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {
-            @Override
-            public void onSuccess(Resource result) {
-               GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()), f) {
-
-                                       @Override
-                                       public void onSuccess(final Folder _f) {
-                                           Iterator<File> iter = _f.getFiles().iterator();
-                                           trashFiles(iter, new Command() {
-                                               @Override
-                                               public void execute() {
-                                                   Iterator<Folder> iterf = _f.getSubfolders().iterator();
-                                                   trashSubfolders(iterf, new Command() {
-                                                                       
-                                                                       @Override
-                                                                       public void execute() {
-                                                                               DeleteRequest deleteFolder = new DeleteRequest(app.getApiPath(), _f.getOwner(), URL.encode(_f.getUri())) {
-                                                                                       
-                                                                                       @Override
-                                                                                       public void onSuccess(Resource _result) {
-                                                                                               if (callback != null)
-                                                                                                       callback.execute();
-                                                                                       }
-                                                                                       
-                                                                                       @Override
-                                                                                       public void onError(Throwable t) {
-                                                                           GWT.log("", t);
-                                                                                               app.setError(t);
-                                                                           if (t instanceof RestException) {
-                                                                               if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND)
-                                                                                       onSuccess(null);
-                                                                               else
-                                                                                       app.displayError("Unable to delete folder: " + ((RestException) t).getHttpStatusText());
-                                                                           }
-                                                                           else
-                                                                               app.displayError("System error unable to delete folder: "+t.getMessage());
-                                                                                       }
-
-                                                                                       @Override
-                                                                                       protected void onUnauthorized(Response response) {
-                                                                                               app.sessionExpired();
-                                                                                       }
-                                                                               };
-                                                                               deleteFolder.setHeader("X-Auth-Token", app.getToken());
-                                                                               Scheduler.get().scheduleDeferred(deleteFolder);
-                                                                       }
-                                                               });
-                                               }
-                                           });
-                                       }
-
-                                       @Override
-                                       public void onError(Throwable t) {
-                               GWT.log("", t);
-                                               app.setError(t);
-                               if (t instanceof RestException) {
-                                   app.displayError("Unable to get folder: " + ((RestException) t).getHttpStatusText());
-                               }
-                               else
-                                   app.displayError("System error getting folder: " + t.getMessage());
-                                       }
-
-                                       @Override
-                                       protected void onUnauthorized(Response response) {
-                                               app.sessionExpired();
-                                       }
-                               };
-                               getFolder.setHeader("X-Auth-Token", app.getToken());
-                               Scheduler.get().scheduleDeferred(getFolder);
-            }
-
-            @Override
-            public void onError(Throwable t) {
-                GWT.log("", t);
-                               app.setError(t);
-                if (t instanceof RestException) {
-                    app.displayError("Unable to create folder:" + ((RestException) t).getHttpStatusText());
-                }
-                else
-                    app.displayError("System error creating folder:" + t.getMessage());
-            }
-
-                       @Override
-                       protected void onUnauthorized(Response response) {
-                               app.sessionExpired();
-                       }
-        };
-        createFolder.setHeader("X-Auth-Token", app.getToken());
-        createFolder.setHeader("Accept", "*/*");
-        createFolder.setHeader("Content-Length", "0");
-        createFolder.setHeader("Content-Type", "application/folder");
-        Scheduler.get().scheduleDeferred(createFolder);
+       String path = "/" + Pithos.TRASH_CONTAINER + "/" + f.getPrefix();
+       app.copyFolder(f, app.getUsername(), path, true, callback);
     }
-
-
-    
+  
     protected void trashFiles(final Iterator<File> iter, final Command callback) {
         if (iter.hasNext()) {
             File file = iter.next();