From d58c0da567dec1080a53da7d9940c62048574958 Mon Sep 17 00:00:00 2001 From: Christos Stathis Date: Thu, 28 Jun 2012 17:16:38 +0300 Subject: [PATCH] Replaced move procedures with the new PUT with delimiter --- .../pithos/web/client/FolderPropertiesDialog.java | 60 +++--------- src/gr/grnet/pithos/web/client/Pithos.java | 25 ++--- .../pithos/web/client/commands/PasteCommand.java | 7 +- .../web/client/commands/RestoreTrashCommand.java | 92 +----------------- .../pithos/web/client/commands/ToTrashCommand.java | 99 +------------------- 5 files changed, 25 insertions(+), 258 deletions(-) diff --git a/src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java b/src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java index d784cc9..245b059 100644 --- a/src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java +++ b/src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java @@ -299,57 +299,19 @@ public class FolderPropertiesDialog extends DialogBox { return; if (!folder.isContainer() && !folder.getName().equals(newName)) { final String path = folder.getParent().getUri() + "/" + newName; - PutRequest newFolder = new PutRequest(app.getApiPath(), folder.getParent().getOwner(), path) { - @Override - public void onSuccess(Resource result) { - Iterator iter = folder.getFiles().iterator(); - app.copyFiles(iter, folder.getParent().getOwner(), folder.getParent().getUri() + "/" + newName, new Command() { - @Override - public void execute() { - Iterator iterf = folder.getSubfolders().iterator(); - app.copySubfolders(iterf, folder.getParent().getOwner(), folder.getParent().getUri() + "/" + newName, new Command() { - @Override - public void execute() { - app.deleteFolder(folder, new Command() { - - @Override - public void execute() { - app.updateFolder(folder.getParent(), false, new Command() { - - @Override - public void execute() { - app.updateMySharedRoot(); - } - }, true); - } - }); - } - }); - } - }); - } - - @Override - public void onError(Throwable t) { - GWT.log("", t); - app.setError(t); - if(t instanceof RestException){ - app.displayError("Unable to update folder: " + ((RestException) t).getHttpStatusText()); - } - else - app.displayError("System error modifying folder: " + t.getMessage()); - } - + app.copyFolder(folder, folder.getOwner(), path, true, new Command() { + @Override - protected void onUnauthorized(Response response) { - app.sessionExpired(); + public void execute() { + app.updateFolder(folder.getParent(), false, new Command() { + + @Override + public void execute() { + app.updateMySharedRoot(); + } + }, true); } - }; - newFolder.setHeader("X-Auth-Token", app.getToken()); - newFolder.setHeader("Content-Type", "application/folder"); - newFolder.setHeader("Accept", "*/*"); - newFolder.setHeader("Content-Length", "0"); - Scheduler.get().scheduleDeferred(newFolder); + }); } else app.updateFolder(folder.getParent(), false, new Command() { diff --git a/src/gr/grnet/pithos/web/client/Pithos.java b/src/gr/grnet/pithos/web/client/Pithos.java index fc44b21..f288cc7 100644 --- a/src/gr/grnet/pithos/web/client/Pithos.java +++ b/src/gr/grnet/pithos/web/client/Pithos.java @@ -982,24 +982,8 @@ public class Pithos implements EntryPoint, ResizeHandler { } } - public void copySubfolders(final Iterator 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); } diff --git a/src/gr/grnet/pithos/web/client/commands/PasteCommand.java b/src/gr/grnet/pithos/web/client/commands/PasteCommand.java index e964a24..e46eeb6 100644 --- a/src/gr/grnet/pithos/web/client/commands/PasteCommand.java +++ b/src/gr/grnet/pithos/web/client/commands/PasteCommand.java @@ -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); } }); diff --git a/src/gr/grnet/pithos/web/client/commands/RestoreTrashCommand.java b/src/gr/grnet/pithos/web/client/commands/RestoreTrashCommand.java index 7b2cf6d..564189a 100644 --- a/src/gr/grnet/pithos/web/client/commands/RestoreTrashCommand.java +++ b/src/gr/grnet/pithos/web/client/commands/RestoreTrashCommand.java @@ -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 getFolder = new GetRequest(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 iter = _f.getFiles().iterator(); - untrashFiles(iter, new Command() { - @Override - public void execute() { - Iterator 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 iter, final Command callback) { diff --git a/src/gr/grnet/pithos/web/client/commands/ToTrashCommand.java b/src/gr/grnet/pithos/web/client/commands/ToTrashCommand.java index 7b2afa2..cf5371c 100644 --- a/src/gr/grnet/pithos/web/client/commands/ToTrashCommand.java +++ b/src/gr/grnet/pithos/web/client/commands/ToTrashCommand.java @@ -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 getFolder = new GetRequest(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 iter = _f.getFiles().iterator(); - trashFiles(iter, new Command() { - @Override - public void execute() { - Iterator 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 iter, final Command callback) { if (iter.hasNext()) { File file = iter.next(); -- 1.7.10.4