- updateMetadata(folder.getUri() + "?update=", perms);\r
- }\r
-\r
- protected void updateMetadata(final String path, final Map<String, Boolean[]> newPermissions) {\r
- if (newPermissions != null) {\r
- PostRequest updateFolder = new PostRequest(app.getApiPath(), folder.getOwner(), path) {\r
- @Override\r
- public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
- app.updateFolder(folder.getParent(), false, null);\r
- }\r
-\r
- @Override\r
- public void onError(Throwable t) {\r
- GWT.log("", t);\r
- 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(), folder.getOwner(), path1) {\r
- @Override\r
- public void onSuccess(@SuppressWarnings("unused") Resource result) {\r
- updateMetadata(path, newPermissions);\r
- }\r
-\r
- @Override\r
- public void onError(Throwable _t) {\r
- GWT.log("", _t);\r
- if(_t instanceof RestException){\r
- app.displayError("Unable to update folder: " + ((RestException) _t).getHttpStatusText());\r
- }\r
- else\r
- app.displayError("System error modifying folder: " + _t.getMessage());\r
- }\r
-\r
- @Override\r
- protected void onUnauthorized(Response response) {\r
- app.sessionExpired();\r
- }\r
- };\r
- newFolder.setHeader("X-Auth-Token", app.getToken());\r
- newFolder.setHeader("Content-Type", "application/folder");\r
- newFolder.setHeader("Accept", "*/*");\r
- newFolder.setHeader("Content-Length", "0");\r
- Scheduler.get().scheduleDeferred(newFolder);\r
- }\r
- else if (((RestException) t).getHttpStatusCode() == Response.SC_CONFLICT) {\r
- app.displayError("Cannot set permissions. Probably subfolders or files already have permissions set");\r
- }\r
- else\r
- app.displayError("Wrror modifying folder: " + t.getMessage());\r
- }\r
- else\r
- app.displayError("System error modifying folder: " + t.getMessage());\r
- }\r
-\r
- @Override\r
- protected void onUnauthorized(Response response) {\r
- app.sessionExpired();\r
- }\r
- };\r
- updateFolder.setHeader("X-Auth-Token", app.getToken());\r
- String readPermHeader = "read=";\r
- String writePermHeader = "write=";\r
- for (String u : newPermissions.keySet()) {\r
- Boolean[] p = newPermissions.get(u);\r
- if (p[0] != null && p[0])\r
- readPermHeader += u + ",";\r
- if (p[1] != null && p[1])\r
- writePermHeader += u + ",";\r
- }\r
- if (readPermHeader.endsWith("="))\r
- readPermHeader = "";\r
- else if (readPermHeader.endsWith(","))\r
- readPermHeader = readPermHeader.substring(0, readPermHeader.length() - 1);\r
- if (writePermHeader.endsWith("="))\r
- writePermHeader = "";\r
- else if (writePermHeader.endsWith(","))\r
- writePermHeader = writePermHeader.substring(0, writePermHeader.length() - 1);\r
- String permHeader = readPermHeader + ((readPermHeader.length() > 0 && writePermHeader.length() > 0) ? ";" : "") + writePermHeader;\r
- if (permHeader.length() == 0)\r
- permHeader="~";\r
- updateFolder.setHeader("X-Object-Sharing", permHeader);\r
- Scheduler.get().scheduleDeferred(updateFolder);\r
- }\r
- else\r
- app.updateFolder(folder.getParent(), false, null);\r
- }\r
-\r
- public void selectTab(int _tab) {\r
- inner.selectTab(_tab);\r