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() {
|