X-Git-Url: https://code.grnet.gr/git/pithos/blobdiff_plain/62f168b275b92a0032dcb5f0c016107f7cfb016b..98b5916320584c3e6ca5a75bcf5b8cb17ed378fc:/src/gr/ebs/gss/client/rest/resource/FolderResource.java diff --git a/src/gr/ebs/gss/client/rest/resource/FolderResource.java b/src/gr/ebs/gss/client/rest/resource/FolderResource.java index 3a3987a..84e4861 100644 --- a/src/gr/ebs/gss/client/rest/resource/FolderResource.java +++ b/src/gr/ebs/gss/client/rest/resource/FolderResource.java @@ -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,8 @@ 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; @@ -34,6 +36,7 @@ import com.google.gwt.http.client.URL; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; +import com.google.gwt.user.client.ui.TreeItem; /** * @author kman @@ -90,6 +93,7 @@ public class FolderResource extends RestResource { * * @return the name */ + @Override public String getName() { return name; } @@ -341,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) { @@ -482,7 +484,6 @@ public class FolderResource extends RestResource { c.uri=r.uri; result[i] = c; } - return result; } @@ -501,14 +502,83 @@ public class FolderResource extends RestResource { c.uri=r.uri; result[i] = c; } - return result; } + 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(); + } - public void setFilesExpanded(boolean filesExpanded) { - this.filesExpanded = filesExpanded; + 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(); + } + 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; + } + //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; + } + + } }