Revision f6c9957e src/gr/grnet/pithos/web/client/Pithos.java
b/src/gr/grnet/pithos/web/client/Pithos.java | ||
---|---|---|
900 | 900 |
} |
901 | 901 |
|
902 | 902 |
public void deleteFolder(final Folder folder, final Command callback) { |
903 |
String path = getApiPath() + folder.getOwner() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(folder.getPrefix()) + "&t=" + System.currentTimeMillis(); |
|
904 |
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path); |
|
905 |
builder.setHeader("X-Auth-Token", getToken()); |
|
906 |
try { |
|
907 |
builder.sendRequest("", new RequestCallback() { |
|
908 |
@Override |
|
909 |
public void onResponseReceived(Request request, Response response) { |
|
910 |
if (response.getStatusCode() == Response.SC_OK) { |
|
911 |
JSONValue json = JSONParser.parseStrict(response.getText()); |
|
912 |
JSONArray array = json.isArray(); |
|
913 |
int i = 0; |
|
914 |
if (array != null) { |
|
915 |
deleteObject(folder, i, array, callback); |
|
916 |
} |
|
917 |
} |
|
918 |
} |
|
919 |
|
|
920 |
@Override |
|
921 |
public void onError(Request request, Throwable exception) { |
|
922 |
setError(exception); |
|
923 |
displayError("System error unable to delete folder: " + exception.getMessage()); |
|
924 |
} |
|
925 |
}); |
|
926 |
} |
|
927 |
catch (RequestException e) { |
|
928 |
} |
|
929 |
} |
|
930 |
|
|
931 |
void deleteObject(final Folder folder, final int i, final JSONArray array, final Command callback) { |
|
932 |
if (i < array.size()) { |
|
933 |
JSONObject o = array.get(i).isObject(); |
|
934 |
if (o != null && !o.containsKey("subdir")) { |
|
935 |
JSONString name = o.get("name").isString(); |
|
936 |
String path = "/" + folder.getContainer() + "/" + name.stringValue(); |
|
937 |
DeleteRequest delete = new DeleteRequest(getApiPath(), folder.getOwner(), URL.encode(path)) { |
|
938 |
@Override |
|
939 |
public void onSuccess(Resource result) { |
|
940 |
deleteObject(folder, i + 1, array, callback); |
|
941 |
} |
|
942 |
|
|
943 |
@Override |
|
944 |
public void onError(Throwable t) { |
|
945 |
GWT.log("", t); |
|
946 |
setError(t); |
|
947 |
displayError("System error unable to delete folder: " + t.getMessage()); |
|
948 |
deleteObject(folder, i + 1, array, callback); |
|
949 |
} |
|
950 |
|
|
951 |
@Override |
|
952 |
protected void onUnauthorized(Response response) { |
|
953 |
sessionExpired(); |
|
954 |
} |
|
955 |
}; |
|
956 |
delete.setHeader("X-Auth-Token", getToken()); |
|
957 |
Scheduler.get().scheduleDeferred(delete); |
|
958 |
} |
|
959 |
else if (o != null) { |
|
960 |
String subdir = o.get("subdir").isString().stringValue(); |
|
961 |
subdir = subdir.substring(0, subdir.length() - 1); |
|
962 |
String path = getApiPath() + folder.getOwner() + "/" + folder.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(subdir) + "&t=" + System.currentTimeMillis(); |
|
963 |
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, path); |
|
964 |
builder.setHeader("X-Auth-Token", getToken()); |
|
965 |
try { |
|
966 |
builder.sendRequest("", new RequestCallback() { |
|
967 |
@Override |
|
968 |
public void onResponseReceived(Request request, Response response) { |
|
969 |
if (response.getStatusCode() == Response.SC_OK) { |
|
970 |
JSONValue json = JSONParser.parseStrict(response.getText()); |
|
971 |
JSONArray array2 = json.isArray(); |
|
972 |
if (array2 != null) { |
|
973 |
int l = array.size(); |
|
974 |
for (int j=0; j<array2.size(); j++) { |
|
975 |
array.set(l++, array2.get(j)); |
|
976 |
} |
|
977 |
} |
|
978 |
deleteObject(folder, i + 1, array, callback); |
|
979 |
} |
|
980 |
} |
|
981 |
|
|
982 |
@Override |
|
983 |
public void onError(Request request, Throwable exception) { |
|
984 |
setError(exception); |
|
985 |
displayError("System error unable to delete folder: " + exception.getMessage()); |
|
986 |
} |
|
987 |
}); |
|
988 |
} |
|
989 |
catch (RequestException e) { |
|
990 |
} |
|
991 |
} |
|
992 |
} |
|
993 |
else { |
|
994 |
if (folder.isContainer()) { |
|
995 |
updateFolder(folder, true, new Command() { |
|
903 |
String path = "/" + folder.getContainer() + "/" + folder.getPrefix() + "?delimiter=/" + "&t=" + System.currentTimeMillis(); |
|
904 |
DeleteRequest deleteFolder = new DeleteRequest(getApiPath(), folder.getOwner(), path) { |
|
905 |
|
|
906 |
@Override |
|
907 |
protected void onUnauthorized(Response response) { |
|
908 |
sessionExpired(); |
|
909 |
} |
|
910 |
|
|
911 |
@Override |
|
912 |
public void onSuccess(Resource result) { |
|
913 |
updateFolder(folder.getParent(), true, new Command() { |
|
996 | 914 |
|
997 | 915 |
@Override |
998 | 916 |
public void execute() { |
917 |
folderTreeSelectionModel.setSelected(folder.getParent(), true); |
|
999 | 918 |
updateStatistics(); |
1000 | 919 |
if (callback != null) |
1001 | 920 |
callback.execute(); |
1002 | 921 |
} |
1003 |
}, false); |
|
1004 |
return; |
|
1005 |
} |
|
1006 |
String path = folder.getUri(); |
|
1007 |
DeleteRequest deleteFolder = new DeleteRequest(getApiPath(), getUsername(), URL.encode(path)) { |
|
1008 |
@Override |
|
1009 |
public void onSuccess(Resource result) { |
|
1010 |
updateFolder(folder.getParent(), true, new Command() { |
|
1011 |
|
|
1012 |
@Override |
|
1013 |
public void execute() { |
|
1014 |
folderTreeSelectionModel.setSelected(folder.getParent(), true); |
|
1015 |
updateStatistics(); |
|
1016 |
if (callback != null) |
|
1017 |
callback.execute(); |
|
1018 |
} |
|
1019 |
}, true); |
|
1020 |
} |
|
1021 |
|
|
1022 |
@Override |
|
1023 |
public void onError(Throwable t) { |
|
1024 |
GWT.log("", t); |
|
1025 |
setError(t); |
|
1026 |
if (t instanceof RestException) { |
|
1027 |
if (((RestException) t).getHttpStatusCode() != Response.SC_NOT_FOUND) |
|
1028 |
displayError("Unable to delete folder: "+((RestException) t).getHttpStatusText()); |
|
1029 |
else |
|
1030 |
onSuccess(null); |
|
1031 |
} |
|
1032 |
else |
|
1033 |
displayError("System error unable to delete folder: " + t.getMessage()); |
|
922 |
}, true); |
|
923 |
} |
|
924 |
|
|
925 |
@Override |
|
926 |
public void onError(Throwable t) { |
|
927 |
GWT.log("", t); |
|
928 |
setError(t); |
|
929 |
if (t instanceof RestException) { |
|
930 |
if (((RestException) t).getHttpStatusCode() != Response.SC_NOT_FOUND) |
|
931 |
displayError("Unable to delete folder: "+((RestException) t).getHttpStatusText()); |
|
932 |
else |
|
933 |
onSuccess(null); |
|
1034 | 934 |
} |
1035 |
|
|
1036 |
@Override |
|
1037 |
protected void onUnauthorized(Response response) { |
|
1038 |
sessionExpired(); |
|
1039 |
} |
|
1040 |
}; |
|
1041 |
deleteFolder.setHeader("X-Auth-Token", getToken()); |
|
1042 |
Scheduler.get().scheduleDeferred(deleteFolder); |
|
1043 |
} |
|
935 |
else |
|
936 |
displayError("System error unable to delete folder: " + t.getMessage()); |
|
937 |
} |
|
938 |
}; |
|
939 |
deleteFolder.setHeader("X-Auth-Token", getToken()); |
|
940 |
Scheduler.get().scheduleDeferred(deleteFolder); |
|
1044 | 941 |
} |
1045 | 942 |
|
1046 | 943 |
public FolderTreeView getFolderTreeView() { |
Also available in: Unified diff