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

b/src/gr/grnet/pithos/web/client/commands/RestoreTrashCommand.java
111 111

  
112 112
    private void untrashFolder(final Folder f, final Command callback) {
113 113
        String path = "/" + Pithos.HOME_CONTAINER + "/" + f.getPrefix();
114
        PutRequest createFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {
115
            @Override
116
            public void onSuccess(Resource result) {
117
            	GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()), f) {
118

  
119
					@Override
120
					public void onSuccess(final Folder _f) {
121
		                Iterator<File> iter = _f.getFiles().iterator();
122
		                untrashFiles(iter, new Command() {
123
		                    @Override
124
		                    public void execute() {
125
		                        Iterator<Folder> iterf = _f.getSubfolders().iterator();
126
		                        untrashSubfolders(iterf, new Command() {
127
									
128
									@Override
129
									public void execute() {
130
										DeleteRequest deleteFolder = new DeleteRequest(app.getApiPath(), _f.getOwner(), URL.encode(_f.getUri())) {
131
											
132
											@Override
133
											public void onSuccess(Resource _result) {
134
												app.updateRootFolder(callback);
135
											}
136
											
137
											@Override
138
											public void onError(Throwable t) {
139
							                    GWT.log("", t);
140
												app.setError(t);
141
							                    if (t instanceof RestException) {
142
							                    	if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND)
143
							                    		onSuccess(null);
144
							                    	else
145
							                    		app.displayError("Unable to delete folder: " + ((RestException) t).getHttpStatusText());
146
							                    }
147
							                    else
148
							                        app.displayError("System error unable to delete folder: "+t.getMessage());
149
											}
150

  
151
											@Override
152
											protected void onUnauthorized(Response response) {
153
												app.sessionExpired();
154
											}
155
										};
156
										deleteFolder.setHeader("X-Auth-Token", app.getToken());
157
										Scheduler.get().scheduleDeferred(deleteFolder);
158
									}
159
								});
160
		                    }
161
		                });
162
					}
163

  
164
					@Override
165
					public void onError(Throwable t) {
166
		                GWT.log("", t);
167
						app.setError(t);
168
		                if (t instanceof RestException) {
169
		                    app.displayError("Unable to get folder: " + ((RestException) t).getHttpStatusText());
170
		                }
171
		                else
172
		                    app.displayError("System error getting folder: " + t.getMessage());
173
					}
174

  
175
					@Override
176
					protected void onUnauthorized(Response response) {
177
						app.sessionExpired();
178
					}
179
				};
180
				getFolder.setHeader("X-Auth-Token", app.getToken());
181
				Scheduler.get().scheduleDeferred(getFolder);
182
            }
183

  
184
            @Override
185
            public void onError(Throwable t) {
186
                GWT.log("", t);
187
				app.setError(t);
188
                if (t instanceof RestException) {
189
                    app.displayError("Unable to create folder:" + ((RestException) t).getHttpStatusText());
190
                }
191
                else
192
                    app.displayError("System error creating folder:" + t.getMessage());
193
            }
194

  
195
			@Override
196
			protected void onUnauthorized(Response response) {
197
				app.sessionExpired();
198
			}
199
        };
200
        createFolder.setHeader("X-Auth-Token", app.getToken());
201
        createFolder.setHeader("Accept", "*/*");
202
        createFolder.setHeader("Content-Length", "0");
203
        createFolder.setHeader("Content-Type", "application/folder");
204
        Scheduler.get().scheduleDeferred(createFolder);
114
        app.copyFolder(f, app.getUsername(), path, true, callback);
205 115
    }
206 116

  
207 117
    protected void untrashFiles(final Iterator<File> iter, final Command callback) {

Also available in: Unified diff