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 |
}
|