Revision d58c0da5 src/gr/grnet/pithos/web/client/commands/ToTrashCommand.java

b/src/gr/grnet/pithos/web/client/commands/ToTrashCommand.java
120 120
	}
121 121

  
122 122
    private void trashFolder(final Folder f, final Command callback) {
123
        String path = "/" + Pithos.TRASH_CONTAINER + "/" + f.getPrefix();
124
        PutRequest createFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {
125
            @Override
126
            public void onSuccess(Resource result) {
127
            	GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()), f) {
128

  
129
					@Override
130
					public void onSuccess(final Folder _f) {
131
					    Iterator<File> iter = _f.getFiles().iterator();
132
					    trashFiles(iter, new Command() {
133
					        @Override
134
					        public void execute() {
135
					            Iterator<Folder> iterf = _f.getSubfolders().iterator();
136
					            trashSubfolders(iterf, new Command() {
137
									
138
									@Override
139
									public void execute() {
140
										DeleteRequest deleteFolder = new DeleteRequest(app.getApiPath(), _f.getOwner(), URL.encode(_f.getUri())) {
141
											
142
											@Override
143
											public void onSuccess(Resource _result) {
144
												if (callback != null)
145
													callback.execute();
146
											}
147
											
148
											@Override
149
											public void onError(Throwable t) {
150
							                    GWT.log("", t);
151
												app.setError(t);
152
							                    if (t instanceof RestException) {
153
							                    	if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND)
154
							                    		onSuccess(null);
155
							                    	else
156
							                    		app.displayError("Unable to delete folder: " + ((RestException) t).getHttpStatusText());
157
							                    }
158
							                    else
159
							                        app.displayError("System error unable to delete folder: "+t.getMessage());
160
											}
161

  
162
											@Override
163
											protected void onUnauthorized(Response response) {
164
												app.sessionExpired();
165
											}
166
										};
167
										deleteFolder.setHeader("X-Auth-Token", app.getToken());
168
										Scheduler.get().scheduleDeferred(deleteFolder);
169
									}
170
								});
171
					        }
172
					    });
173
					}
174

  
175
					@Override
176
					public void onError(Throwable t) {
177
		                GWT.log("", t);
178
						app.setError(t);
179
		                if (t instanceof RestException) {
180
		                    app.displayError("Unable to get folder: " + ((RestException) t).getHttpStatusText());
181
		                }
182
		                else
183
		                    app.displayError("System error getting folder: " + t.getMessage());
184
					}
185

  
186
					@Override
187
					protected void onUnauthorized(Response response) {
188
						app.sessionExpired();
189
					}
190
				};
191
				getFolder.setHeader("X-Auth-Token", app.getToken());
192
				Scheduler.get().scheduleDeferred(getFolder);
193
            }
194

  
195
            @Override
196
            public void onError(Throwable t) {
197
                GWT.log("", t);
198
				app.setError(t);
199
                if (t instanceof RestException) {
200
                    app.displayError("Unable to create folder:" + ((RestException) t).getHttpStatusText());
201
                }
202
                else
203
                    app.displayError("System error creating folder:" + t.getMessage());
204
            }
205

  
206
			@Override
207
			protected void onUnauthorized(Response response) {
208
				app.sessionExpired();
209
			}
210
        };
211
        createFolder.setHeader("X-Auth-Token", app.getToken());
212
        createFolder.setHeader("Accept", "*/*");
213
        createFolder.setHeader("Content-Length", "0");
214
        createFolder.setHeader("Content-Type", "application/folder");
215
        Scheduler.get().scheduleDeferred(createFolder);
123
    	String path = "/" + Pithos.TRASH_CONTAINER + "/" + f.getPrefix();
124
    	app.copyFolder(f, app.getUsername(), path, true, callback);
216 125
    }
217

  
218

  
219
    
126
  
220 127
    protected void trashFiles(final Iterator<File> iter, final Command callback) {
221 128
        if (iter.hasNext()) {
222 129
            File file = iter.next();

Also available in: Unified diff