updateHistory removed from RestResource and other resources and implemented only...
[pithos] / src / gr / ebs / gss / client / rest / resource / FolderResource.java
index f7431d7..84e4861 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2009 Electronic Business Systems Ltd.
+ * Copyright 2009, 2010 Electronic Business Systems Ltd.
  *
  * This file is part of GSS.
  *
@@ -19,6 +19,7 @@
 
 package gr.ebs.gss.client.rest.resource;
 
+import gr.ebs.gss.client.DisplayHelper;
 import gr.ebs.gss.client.GSS;
 import gr.ebs.gss.client.rest.MultipleGetCommand;
 import gr.ebs.gss.client.rest.MultipleGetCommand.Cached;
@@ -92,6 +93,7 @@ public class FolderResource extends RestResource {
         *
         * @return the name
         */
+       @Override
        public String getName() {
                return name;
        }
@@ -343,8 +345,6 @@ public class FolderResource extends RestResource {
                        JSONObject parent = json.get("parent").isObject();
                        parentURI = unmarshallString(parent, "uri");
                        parentName = unmarshallString(parent, "name");
-                       if(parentName != null)
-                               parentName = URL.decodeComponent(parentName);
                }
 
                if (json.get("permissions") != null) {
@@ -508,43 +508,75 @@ public class FolderResource extends RestResource {
        public void setFilesExpanded(boolean newFilesExpanded) {
                filesExpanded = newFilesExpanded;
        }
+       /**
+        * construct the partial path of the selected TreeItem
+        *
+        * @param selectedItem the selectedItem to check
+        */
+       private String constructPartialPath(TreeItem selectedItem){
+          String result = DisplayHelper.trim(selectedItem.getText());
+          TreeItem parent = selectedItem.getParentItem();
+          while (!(DisplayHelper.trim(parent.getText()).equals("My Shared") || DisplayHelper.trim(parent.getText()).equals("Other's Shared")||DisplayHelper.trim(parent.getText()).equals("Trash"))){
+             result = DisplayHelper.trim(parent.getText()) + "/" + result;
+             if(result.equals("My Shared")||result.equals("Other's Shared")) return result;
+             parent = parent.getParentItem();
+          }
 
-       @Override
-       public void updateHistoryAbs(TreeItem item, String path){
-               try{
-                       if(getParentURI() == null){
-                               if(GSS.get().getFolders().getPopupTree().containsFolder(item, "Trash")){
-//                                     case: selected folders below Trash folder
-                                       String partialUri = GSS.get().getFolders().getPopupTree().constructPartialPath(item);
-                                       GSS.get().updateHistory("Files/trash/" + partialUri, item);
-                               } else
-//                                     case: home folders are selected
-                                       GSS.get().updateHistory("Files/files/" + getName(), item);
-                       }
-                       else if(item.getParentItem() == null){
-//                             this is the case when the user uses the browser's forward arrow to navigate through other's
-//                             shared folders and      item.getParentItem is null only inside other's shared folder
-                               String apiPath = GSS.get().getApiPath();
-                               String newPath = getParentURI().substring(apiPath.lastIndexOf("/"));
-                               GSS.get().updateHistory("Files"+ newPath + getName(), item);
-                       }
-                       else if(GSS.get().getFolders().getPopupTree().containsFolder(item, "My Shared")){
-//                             case: selected folders below My Shared folder
-                               String partialUri = GSS.get().getFolders().getPopupTree().constructPartialPath(item);
-                               GSS.get().updateHistory("Files/shared/" + partialUri, item);
-                       }else if(GSS.get().getFolders().getPopupTree().containsFolder(item, "Other's Shared")){
-//                             case: selected folders below Other's Shared folder
-                               String partialPath = GSS.get().getFolders().getPopupTree().constructPartialPath(item);
-                               GSS.get().updateHistory("Files/others/"+ partialPath, item);
+          return result;
+       }
+       /**
+        * examine whether a folder name like "Trash", "My Shared", "Other's Shared" is inside path
+        *
+        * @param selectedItem the selectedTreeItem to check
+        */
+
+       private boolean containsFolder(TreeItem selectedItem, String folderName){
+               TreeItem parent = selectedItem.getParentItem();
+               while (parent != null){
+                       String parentItemText = parent.getText();
+                       String parentItemTextTr = DisplayHelper.trim(parentItemText);
+                       if(parentItemTextTr.equals(folderName)) return true;
+                       parent = parent.getParentItem();
                        }
-                       else{
-//                             case:all folders in user's folders tree
-                               String finalUri = getParentURI().substring(path.lastIndexOf("/")) + getName();
-                               GSS.get().updateHistory("Files"+ finalUri, item);
+               return false;
+       }
+       @Override
+       public String constructUri(TreeItem treeItem, String path){
+               String constructedUri = "";
+               if(containsFolder(treeItem, "My Shared")){
+                       //case: selected folders below My Shared folder
+                       String partialUri = constructPartialPath(treeItem);
+                       constructedUri = constructedUri + "Files/shared/" + partialUri;
+                       return constructedUri;
+               }else if(containsFolder(treeItem, "Other's Shared")){
+                       //case: selected folders below Other's Shared folder
+                       String partialPath = constructPartialPath(treeItem);
+                       constructedUri = constructedUri + "Files/others/"+ partialPath;
+                       return constructedUri;
+               }
+               else if(getParentURI()==null){
+                       if(containsFolder(treeItem, "Trash")){
+                               //case: selected folders below Trash folder
+                               String partialUri = constructPartialPath(treeItem);
+                               constructedUri = constructedUri + "Files/trash/" + partialUri;
+                               return constructedUri;
                        }
-
-               }catch (Exception e){
-                       throw new UnsupportedOperationException(e);
+                       //case: home folder is selected
+                       constructedUri = constructedUri + "Files/files/" + getName();
+                       return constructedUri;
+               }
+               else if(treeItem.getParentItem() == null){
+                       //this is the case when the user uses the browser's forward arrow to navigate through other's
+                       //shared folders and item.getParentItem is null only inside other's shared folder
+                       String apiPath = GSS.get().getApiPath();
+                       String newPath = getParentURI().substring(apiPath.lastIndexOf("/"));
+                       constructedUri = constructedUri + "Files"+ newPath + getName();
+                       return constructedUri;
+               }
+               else{
+                       String finalUri = getParentURI().substring(path.lastIndexOf("/")) + getName();
+                       constructedUri = constructedUri + "Files"+ finalUri;
+                       return constructedUri;
                }
 
        }