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

b/src/gr/grnet/pithos/web/client/commands/RestoreTrashCommand.java
42 42
import gr.grnet.pithos.web.client.foldertree.Folder;
43 43
import gr.grnet.pithos.web.client.foldertree.Resource;
44 44
import gr.grnet.pithos.web.client.rest.DeleteRequest;
45
import gr.grnet.pithos.web.client.rest.GetRequest;
45 46
import gr.grnet.pithos.web.client.rest.PutRequest;
46 47
import gr.grnet.pithos.web.client.rest.RestException;
47 48

  
48 49
import com.google.gwt.core.client.GWT;
49 50
import com.google.gwt.core.client.Scheduler;
50 51
import com.google.gwt.http.client.Response;
52
import com.google.gwt.http.client.URL;
51 53
import com.google.gwt.user.client.Command;
52 54
import com.google.gwt.user.client.ui.PopupPanel;
53 55

  
......
100 102
        PutRequest createFolder = new PutRequest(app.getApiPath(), app.getUsername(), path) {
101 103
            @Override
102 104
            public void onSuccess(@SuppressWarnings("unused") Resource result) {
103
                Iterator<File> iter = f.getFiles().iterator();
104
                untrashFiles(iter, new Command() {
105
                    @Override
106
                    public void execute() {
107
                        Iterator<Folder> iterf = f.getSubfolders().iterator();
108
                        untrashSubfolders(iterf, new Command() {
109
							
110
							@Override
111
							public void execute() {
112
								DeleteRequest deleteFolder = new DeleteRequest(app.getApiPath(), f.getOwner(), f.getUri()) {
105
            	GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()), f) {
106

  
107
					@Override
108
					public void onSuccess(final Folder _f) {
109
		                Iterator<File> iter = _f.getFiles().iterator();
110
		                untrashFiles(iter, new Command() {
111
		                    @Override
112
		                    public void execute() {
113
		                        Iterator<Folder> iterf = _f.getSubfolders().iterator();
114
		                        untrashSubfolders(iterf, new Command() {
113 115
									
114 116
									@Override
115
									public void onSuccess(@SuppressWarnings("unused") Resource _result) {
116
										if (callback != null)
117
											callback.execute();
117
									public void execute() {
118
										DeleteRequest deleteFolder = new DeleteRequest(app.getApiPath(), _f.getOwner(), _f.getUri()) {
119
											
120
											@Override
121
											public void onSuccess(@SuppressWarnings("unused") Resource _result) {
122
												app.updateRootFolder(callback);
123
											}
124
											
125
											@Override
126
											public void onError(Throwable t) {
127
							                    GWT.log("", t);
128
							                    if (t instanceof RestException) {
129
							                    	if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND)
130
							                    		onSuccess(null);
131
							                    	else
132
							                    		app.displayError("Unable to delete folder: " + ((RestException) t).getHttpStatusText());
133
							                    }
134
							                    else
135
							                        app.displayError("System error unable to delete folder: "+t.getMessage());
136
											}
137

  
138
											@Override
139
											protected void onUnauthorized(Response response) {
140
												app.sessionExpired();
141
											}
142
										};
143
										deleteFolder.setHeader("X-Auth-Token", app.getToken());
144
										Scheduler.get().scheduleDeferred(deleteFolder);
118 145
									}
119
									
120
									@Override
121
									public void onError(Throwable t) {
122
					                    GWT.log("", t);
123
					                    if (t instanceof RestException) {
124
					                        app.displayError("Unable to delete folder: " + ((RestException) t).getHttpStatusText());
125
					                    }
126
					                    else
127
					                        app.displayError("System error unable to delete folder: "+t.getMessage());
128
									}
129

  
130
									@Override
131
									protected void onUnauthorized(Response response) {
132
										app.sessionExpired();
133
									}
134
								};
135
								deleteFolder.setHeader("X-Auth-Token", app.getToken());
136
								Scheduler.get().scheduleDeferred(deleteFolder);
137
							}
138
						});
139
                    }
140
                });
146
								});
147
		                    }
148
		                });
149
					}
150

  
151
					@Override
152
					public void onError(Throwable t) {
153
		                GWT.log("", t);
154
		                if (t instanceof RestException) {
155
		                    app.displayError("Unable to get folder: " + ((RestException) t).getHttpStatusText());
156
		                }
157
		                else
158
		                    app.displayError("System error getting folder: " + t.getMessage());
159
					}
160

  
161
					@Override
162
					protected void onUnauthorized(Response response) {
163
						app.sessionExpired();
164
					}
165
				};
166
				getFolder.setHeader("X-Auth-Token", app.getToken());
167
				Scheduler.get().scheduleDeferred(getFolder);
141 168
            }
142 169

  
143 170
            @Override
......
199 226
    protected void untrashSubfolders(final Iterator<Folder> iter, final Command callback) {
200 227
        if (iter.hasNext()) {
201 228
            final Folder f = iter.next();
202
            untrashFolder(f, callback);
229
            untrashFolder(f, new Command() {
230
				
231
				@Override
232
				public void execute() {
233
					untrashSubfolders(iter, callback);
234
				}
235
			});
203 236
        }
204 237
        else  {
205 238
        	if (callback != null)

Also available in: Unified diff