/*
- * Copyright 2009 Electronic Business Systems Ltd.
+ * Copyright 2009, 2010 Electronic Business Systems Ltd.
*
* This file is part of GSS.
*
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;
*
* @return the name
*/
+ @Override
public String getName() {
return name;
}
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) {
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;
}
}