Fixed username in all API calls + some other fixes
authorChristos Stathis <chstath@ebs.gr>
Thu, 15 Sep 2011 16:04:50 +0000 (19:04 +0300)
committerChristos Stathis <chstath@ebs.gr>
Thu, 15 Sep 2011 16:04:50 +0000 (19:04 +0300)
src/gr/grnet/pithos/web/client/DeleteFileDialog.java
src/gr/grnet/pithos/web/client/FileContextMenu.java
src/gr/grnet/pithos/web/client/FileList.java
src/gr/grnet/pithos/web/client/FilePropertiesDialog.java
src/gr/grnet/pithos/web/client/FolderPropertiesDialog.java
src/gr/grnet/pithos/web/client/Pithos.java
src/gr/grnet/pithos/web/client/VersionsList.java
src/gr/grnet/pithos/web/client/commands/PasteCommand.java
src/gr/grnet/pithos/web/client/foldertree/FolderTreeViewModel.java
src/gr/grnet/pithos/web/client/mysharedtree/MysharedTreeViewModel.java
src/gr/grnet/pithos/web/client/othersharedtree/OtherSharedTreeViewModel.java

index 2694d52..5845397 100644 (file)
@@ -134,7 +134,7 @@ public class DeleteFileDialog extends DialogBox {
         if (iter.hasNext()) {\r
             File f = iter.next();\r
             String path = f.getUri();\r
-            DeleteRequest deleteFile = new DeleteRequest(app.getApiPath(), app.getUsername(), path) {\r
+            DeleteRequest deleteFile = new DeleteRequest(app.getApiPath(), f.getOwner(), path) {\r
                 @Override\r
                 public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
                     deleteFile(iter);\r
index 6c52a1c..3dff03b 100644 (file)
@@ -179,18 +179,27 @@ public class FileContextMenu extends PopupPanel {
         *
         * @param newImages the image bundle passed on by the parent object
         */
-       public FileContextMenu(final Pithos app, Images newImages, Folder selectedFolder, List<File> selectedFiles, boolean isTrash) {
+       public FileContextMenu(final Pithos app, Images newImages, TreeView selectedTree, Folder selectedFolder, List<File> selectedFiles, boolean isTrash) {
                // The popup's constructor's argument is a boolean specifying that it
                // auto-close itself when the user clicks outside of it.
                super(true);
                setAnimationEnabled(true);
                images = newImages;
         MenuBar contextMenu = new MenuBar(true);
+        Boolean[] permissions = null;
+        boolean canWrite = true;
+        if (selectedFolder != null) {
+               permissions = selectedFolder.getPermissions().get(app.getUsername());
+               canWrite = selectedFolder.getOwner().equals(app.getUsername()) || (permissions!= null && permissions[1] != null && permissions[1]);
+               }
+        else {
+               for (File f : selectedFiles) {
+                       permissions = f.getPermissions().get(app.getUsername());
+                       canWrite &= (f.getOwner().equals(app.getUsername()) || (permissions!= null && permissions[1] != null && permissions[1]));
+               }
+        }
 
-        Boolean[] permissions = selectedFolder.getPermissions().get(app.getUsername());
-       boolean canWrite = selectedFolder.getOwner().equals(app.getUsername()) || (permissions!= null && permissions[1] != null && permissions[1]);
-
-        if (!selectedFolder.isInTrash()) {
+        if (selectedFolder != null && !selectedFolder.isInTrash()) {
                if (canWrite && app.getClipboard().hasFiles()) {
                    pasteItem = new MenuItem("<span>" + AbstractImagePrototype.create(images.paste()).getHTML() + "&nbsp;Paste</span>", true, new PasteCommand(app, this, selectedFolder));
                    contextMenu.addItem(pasteItem);
@@ -207,7 +216,7 @@ public class FileContextMenu extends PopupPanel {
                        copyItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + "&nbsp;Copy</span>", true, new CopyCommand(app, this, selectedFiles));
             contextMenu.addItem(copyItem);
 
-            if (canWrite) {
+            if (selectedTree.equals(app.getFolderTreeView())) {
                                trashItem = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.emptyTrash()).getHTML() + "&nbsp;Move to Trash</span>", true, new ToTrashCommand(app, this, selectedFiles));
                    contextMenu.addItem(trashItem);
             }
index fb28e0f..d614f30 100644 (file)
@@ -317,7 +317,7 @@ public class FileList extends Composite {
                TreeView tree = app.getSelectedTree();
                if (tree != null && (tree.equals(app.getFolderTreeView()) || tree.equals(app.getOtherSharedTreeView()))) {
                        Folder selectedFolder = app.getSelection();
-                       FileContextMenu contextMenu = new FileContextMenu(app, images, selectedFolder, getSelectedFiles(), false);
+                       FileContextMenu contextMenu = new FileContextMenu(app, images, tree, selectedFolder, getSelectedFiles(), false);
                        int x = event.getNativeEvent().getClientX();
                        int y = event.getNativeEvent().getClientY();
                        contextMenu.setPopupPosition(x, y);
index 95c5edd..d5343a8 100644 (file)
@@ -398,7 +398,7 @@ public class FilePropertiesDialog extends AbstractPropertiesDialog {
             PutRequest updateFile = new PutRequest(app.getApiPath(), app.getUsername(), path) {\r
                 @Override\r
                 public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
-                    updateMetaData(app.getApiPath(), app.getUsername(), path + "?update=", newTags, finalPublished, perms);\r
+                    updateMetaData(app.getApiPath(), file.getOwner(), path + "?update=", newTags, finalPublished, perms);\r
                 }\r
 \r
                 @Override\r
index e6789cf..fa07817 100644 (file)
@@ -261,7 +261,7 @@ public class FolderPropertiesDialog extends DialogBox {
        private void createFolder() {\r
                String name = folderName.getText();\r
         String path = folder.getUri() + "/" + name;\r
-        PutRequest createFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {\r
+        PutRequest createFolder = new PutRequest(app.getApiPath(), folder.getOwner(), path) {\r
             @Override\r
             public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
                 app.updateFolder(folder, true, null);\r
@@ -302,15 +302,15 @@ public class FolderPropertiesDialog extends DialogBox {
         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(), app.getUsername(), path) {\r
+            PutRequest newFolder = new PutRequest(app.getApiPath(), folder.getParent().getOwner(), path) {\r
                 @Override\r
                 public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
                     Iterator<File> iter = folder.getFiles().iterator();\r
-                    app.copyFiles(iter, folder.getParent().getUri() + "/" + newName, new Command() {\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().getUri() + "/" + newName, new Command() {\r
+                            app.copySubfolders(iterf, folder.getParent().getOwner(), folder.getParent().getUri() + "/" + newName, new Command() {\r
                                 @Override\r
                                 public void execute() {\r
                                     app.deleteFolder(folder);\r
@@ -355,7 +355,7 @@ public class FolderPropertiesDialog extends DialogBox {
                     if (t instanceof RestException) {\r
                        if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND) { //Probably a virtual folder\r
                             final String path1 = folder.getUri();\r
-                            PutRequest newFolder = new PutRequest(app.getApiPath(), app.getUsername(), path1) {\r
+                            PutRequest newFolder = new PutRequest(app.getApiPath(), folder.getOwner(), path1) {\r
                                 @Override\r
                                 public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
                                        updateMetadata(path, newPermissions);\r
index 08fe20e..1b51721 100644 (file)
@@ -754,7 +754,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
        }
 
     public void deleteFolder(final Folder folder) {
-        String path = getApiPath() + getUsername() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + folder.getPrefix();
+        String path = getApiPath() + folder.getOwner() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + folder.getPrefix();
         RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path);
         builder.setHeader("If-Modified-Since", "0");
         builder.setHeader("X-Auth-Token", getToken());
@@ -788,7 +788,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
             if (o != null && !o.containsKey("subdir")) {
                 JSONString name = o.get("name").isString();
                 String path = "/" + folder.getContainer() + "/" + name.stringValue();
-                DeleteRequest delete = new DeleteRequest(getApiPath(), getUsername(), path) {
+                DeleteRequest delete = new DeleteRequest(getApiPath(), folder.getOwner(), path) {
                     @Override
                     public void onSuccess(@SuppressWarnings("unused") Resource result) {
                         deleteObject(folder, i + 1, array);
@@ -867,14 +867,14 @@ public class Pithos implements EntryPoint, ResizeHandler {
         return folderTreeView;
     }
 
-    public void copyFiles(final Iterator<File> iter, final String targetUri, final Command callback) {
+    public void copyFiles(final Iterator<File> iter, final String targetUsername, final String targetUri, final Command callback) {
         if (iter.hasNext()) {
             File file = iter.next();
             String path = targetUri + "/" + file.getName();
-            PutRequest copyFile = new PutRequest(getApiPath(), getUsername(), path) {
+            PutRequest copyFile = new PutRequest(getApiPath(), targetUsername, path) {
                 @Override
                 public void onSuccess(@SuppressWarnings("unused") Resource result) {
-                    copyFiles(iter, targetUri, callback);
+                    copyFiles(iter, targetUsername, targetUri, callback);
                 }
 
                 @Override
@@ -896,27 +896,27 @@ public class Pithos implements EntryPoint, ResizeHandler {
         }
     }
 
-    public void copySubfolders(final Iterator<Folder> iter, final String targetUri, final Command callback) {
+    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, targetUri, callback);
+            copyFolder(f, targetUsername, targetUri, callback);
         }
         else  if (callback != null) {
             callback.execute();
         }
     }
 
-    public void copyFolder(final Folder f, final String targetUri, final Command callback) {
+    public void copyFolder(final Folder f, final String targetUsername, final String targetUri, final Command callback) {
         String path = targetUri + "/" + f.getName();
-        PutRequest createFolder = new PutRequest(getApiPath(), getUsername(), path) {
+        PutRequest createFolder = new PutRequest(getApiPath(), targetUsername, path) {
             @Override
             public void onSuccess(@SuppressWarnings("unused") Resource result) {
                 Iterator<File> iter = f.getFiles().iterator();
-                copyFiles(iter, targetUri + "/" + f.getName(), new Command() {
+                copyFiles(iter, targetUsername, targetUri + "/" + f.getName(), new Command() {
                     @Override
                     public void execute() {
                         Iterator<Folder> iterf = f.getSubfolders().iterator();
-                        copySubfolders(iterf, targetUri + "/" + f.getName(), new Command() {
+                        copySubfolders(iterf, targetUsername, targetUri + "/" + f.getName(), new Command() {
                             @Override
                             public void execute() {
                                 callback.execute();
index 3e596f6..a62822d 100644 (file)
@@ -112,7 +112,7 @@ public class VersionsList extends Composite {
                        downloadHtml.addClickHandler(new ClickHandler() {
                                @Override
                                public void onClick(ClickEvent event) {
-                                       String fileUrl = app.getApiPath() + app.getUsername() + file.getUri() + "?X-Auth-Token=" + app.getToken() + "&version=" + v.getVersion();
+                                       String fileUrl = app.getApiPath() + file.getOwner() + file.getUri() + "?X-Auth-Token=" + app.getToken() + "&version=" + v.getVersion();
                                        Window.open(fileUrl, "_BLANK", "");
                                }
                        });
index a978b50..caee0e3 100644 (file)
@@ -74,7 +74,7 @@ public class PasteCommand implements Command {
         if (clipboardItem instanceof Folder) {
             final Folder tobeCopied = (Folder) clipboardItem;
             if (operation == Clipboard.COPY) {
-                app.copyFolder(tobeCopied, folder.getUri(), new Command() {
+                app.copyFolder(tobeCopied, folder.getOwner(), folder.getUri(), new Command() {
                     @Override
                     public void execute() {
                         app.getClipboard().clear();
@@ -83,7 +83,7 @@ public class PasteCommand implements Command {
                 });
             }
             else {
-                app.copyFolder(tobeCopied, folder.getUri(), new Command() {
+                app.copyFolder(tobeCopied, folder.getOwner(), folder.getUri(), new Command() {
                     @Override
                     public void execute() {
                         app.getClipboard().clear();
@@ -98,7 +98,7 @@ public class PasteCommand implements Command {
                        List<File> tobeCopied = (List<File>) clipboardItem;
             Iterator<File> iter = tobeCopied.iterator();
             if (operation == Clipboard.COPY) {
-                app.copyFiles(iter, folder.getUri(), new Command() {
+                app.copyFiles(iter, folder.getOwner(), folder.getUri(), new Command() {
                     @Override
                     public void execute() {
                         app.getClipboard().clear();
@@ -122,7 +122,7 @@ public class PasteCommand implements Command {
         if (iter.hasNext()) {
             File file = iter.next();
             String path = folder.getUri() + "/" + file.getName();
-            PutRequest copyFile = new PutRequest(app.getApiPath(), app.getUsername(), path) {
+            PutRequest copyFile = new PutRequest(app.getApiPath(), folder.getOwner(), path) {
                 @Override
                 public void onSuccess(@SuppressWarnings("unused") Resource result) {
                     moveFiles(iter, callback);
index 5323180..105b0d6 100644 (file)
@@ -137,7 +137,7 @@ public class FolderTreeViewModel implements TreeViewModel {
             final Folder f = iter.next();
 
             String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
-            GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), app.getUsername(), path, f) {
+            GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
                 @Override
                 public void onSuccess(@SuppressWarnings("unused") Folder _result) {
                     fetchFolder(iter, callback);
@@ -188,7 +188,7 @@ public class FolderTreeViewModel implements TreeViewModel {
             @Override
             public void execute() {
                 String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
-                GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), app.getUsername(), path, f) {
+                GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
                     @Override
                     public void onSuccess(final Folder _result) {
                         if (showfiles)
index 1c0eba1..e104fdf 100644 (file)
@@ -197,7 +197,7 @@ public class MysharedTreeViewModel implements TreeViewModel {
             final Folder f = iter.next();
 
             String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
-            GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), app.getUsername(), path, f) {
+            GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
                 @Override
                 public void onSuccess(Folder _result) {
                        if (!_result.isShared()) {
@@ -250,7 +250,7 @@ public class MysharedTreeViewModel implements TreeViewModel {
 
     public void fetchFolder(final Folder f, final ListDataProvider<Folder> dataProvider, final boolean showfiles) {
         String path = "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + f.getPrefix();
-        GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), app.getUsername(), path, f) {
+        GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), path, f) {
             @Override
             public void onSuccess(final Folder _result) {
                 if (showfiles)
index e97dac8..5119475 100644 (file)
@@ -153,6 +153,9 @@ public class OtherSharedTreeViewModel implements TreeViewModel {
                                app.deselectOthers(app.getOtherSharedTreeView(), selectionModel3);
                                app.applyPermissions(null);
                                String username = selectionModel3.getSelectedObject();
+                                       if (userDataProviderMap.get(username) == null) {
+                                               userDataProviderMap.put(username, new ListDataProvider<Folder>());
+                                       }
                                fetchSharedFiles(username, userDataProviderMap.get(username));
                            }
                        }