Revision 4d3dcdf6 web_client/src/gr/grnet/pithos/web/client/commands/ToTrashCommand.java
b/web_client/src/gr/grnet/pithos/web/client/commands/ToTrashCommand.java | ||
---|---|---|
42 | 42 |
import gr.grnet.pithos.web.client.rest.MultiplePostCommand; |
43 | 43 |
import gr.grnet.pithos.web.client.rest.PostCommand; |
44 | 44 |
import gr.grnet.pithos.web.client.rest.PostRequest; |
45 |
import gr.grnet.pithos.web.client.rest.PutRequest; |
|
45 | 46 |
import gr.grnet.pithos.web.client.rest.RestException; |
46 | 47 |
import gr.grnet.pithos.web.client.rest.resource.FileResource; |
47 | 48 |
import gr.grnet.pithos.web.client.rest.resource.FolderResource; |
... | ... | |
79 | 80 |
containerPanel.hide(); |
80 | 81 |
if (resource instanceof List) { |
81 | 82 |
Iterator<File> iter = ((List<File>) resource).iterator(); |
82 |
deleteFiles(iter); |
|
83 |
trashFiles(iter, new Command() { |
|
84 |
@Override |
|
85 |
public void execute() { |
|
86 |
app.get().updateFolder(((List<File>) resource).get(0).getParent()); |
|
87 |
} |
|
88 |
}); |
|
83 | 89 |
} |
84 | 90 |
else if (resource instanceof Folder) { |
91 |
final Folder toBeTrashed = (Folder) resource; |
|
92 |
trashFolder(toBeTrashed, new Command() { |
|
93 |
@Override |
|
94 |
public void execute() { |
|
95 |
app.updateFolder(toBeTrashed.getParent()); |
|
96 |
} |
|
97 |
}); |
|
85 | 98 |
|
86 | 99 |
} |
87 | 100 |
} |
88 | 101 |
|
89 |
private void deleteFiles(final Iterator<File> iter) { |
|
102 |
private void trashFolder(final Folder f, final Command callback) { |
|
103 |
String path = app.getApiPath() + app.getUsername() + f.getUri() + "?update="; |
|
104 |
PostRequest trashFolder = new PostRequest(path) { |
|
105 |
@Override |
|
106 |
public void onSuccess(Resource result) { |
|
107 |
Iterator<File> iter = f.getFiles().iterator(); |
|
108 |
trashFiles(iter, new Command() { |
|
109 |
@Override |
|
110 |
public void execute() { |
|
111 |
Iterator<Folder> iterf = f.getSubfolders().iterator(); |
|
112 |
trashSubfolders(iterf, new Command() { |
|
113 |
@Override |
|
114 |
public void execute() { |
|
115 |
callback.execute(); |
|
116 |
} |
|
117 |
}); |
|
118 |
} |
|
119 |
}); |
|
120 |
} |
|
121 |
|
|
122 |
@Override |
|
123 |
public void onError(Throwable t) { |
|
124 |
GWT.log("", t); |
|
125 |
if (t instanceof RestException) { |
|
126 |
app.displayError("Unable to create folder:" + ((RestException) t).getHttpStatusText()); |
|
127 |
} |
|
128 |
else |
|
129 |
app.displayError("System error creating folder:" + t.getMessage()); |
|
130 |
} |
|
131 |
}; |
|
132 |
trashFolder.setHeader("X-Auth-Token", app.getToken()); |
|
133 |
trashFolder.setHeader("X-Object-Meta-Trash", "true"); |
|
134 |
Scheduler.get().scheduleDeferred(trashFolder); |
|
135 |
} |
|
136 |
|
|
137 |
private void trashFiles(final Iterator<File> iter, final Command callback) { |
|
90 | 138 |
if (iter.hasNext()) { |
91 | 139 |
File file = iter.next(); |
92 | 140 |
String path = app.getApiPath() + app.getUsername() + file.getUri() + "?update="; |
93 | 141 |
PostRequest trashFile = new PostRequest(path) { |
94 | 142 |
@Override |
95 | 143 |
public void onSuccess(Resource result) { |
96 |
deleteFiles(iter);
|
|
144 |
trashFiles(iter, callback);
|
|
97 | 145 |
} |
98 | 146 |
|
99 | 147 |
@Override |
100 | 148 |
public void onError(Throwable t) { |
101 | 149 |
GWT.log("", t); |
102 | 150 |
if (t instanceof RestException) { |
103 |
GSS.get().displayError("Unable to move file to trash: " + ((RestException) t).getHttpStatusText());
|
|
151 |
GSS.get().displayError("Unable to copy file: " + ((RestException) t).getHttpStatusText());
|
|
104 | 152 |
} |
105 | 153 |
else |
106 |
GSS.get().displayError("System error unable to move file to trash: "+t.getMessage());
|
|
154 |
GSS.get().displayError("System error unable to copy file: "+t.getMessage());
|
|
107 | 155 |
} |
108 | 156 |
}; |
109 | 157 |
trashFile.setHeader("X-Auth-Token", app.getToken()); |
110 | 158 |
trashFile.setHeader("X-Object-Meta-Trash", "true"); |
111 | 159 |
Scheduler.get().scheduleDeferred(trashFile); |
112 | 160 |
} |
113 |
else { |
|
114 |
app.get().updateFolder(((List<File>) resource).get(0).getParent()); |
|
161 |
else if (callback != null) { |
|
162 |
callback.execute(); |
|
163 |
} |
|
164 |
} |
|
165 |
|
|
166 |
private void trashSubfolders(final Iterator<Folder> iter, final Command callback) { |
|
167 |
if (iter.hasNext()) { |
|
168 |
final Folder f = iter.next(); |
|
169 |
trashFolder(f, callback); |
|
170 |
} |
|
171 |
else if (callback != null) { |
|
172 |
callback.execute(); |
|
115 | 173 |
} |
116 | 174 |
} |
117 | 175 |
} |
Also available in: Unified diff