Revision bb160e3a src/gr/grnet/pithos/web/client/commands/EmptyTrashCommand.java

b/src/gr/grnet/pithos/web/client/commands/EmptyTrashCommand.java
70 70
		if (containerPanel != null)
71 71
			containerPanel.hide();
72 72
		
73
		final Folder trash = app.getAccount().getTrash();
74
		if (trash != null) {
75
			app.deleteFolder(trash, null); //deleteFolder will not delete the folder itself if it is a container
76
		}
77
	}
78

  
79
	protected void deleteSubfolder(final Iterator<Folder> iter2, final Command callback) {
80
		if (iter2.hasNext()) {
81
			final Folder f = iter2.next();
82
			GetRequest<Folder> getFolder = new GetRequest<Folder>(Folder.class, app.getApiPath(), f.getOwner(), "/" + f.getContainer() + "?format=json&delimiter=/&prefix=" + URL.encodeQueryString(f.getPrefix()), f) {
83
				
84
				@Override
85
				public void onSuccess(final Folder _f) {
86
					Iterator<File> iter3 = _f.getFiles().iterator();
87
					deleteFile(iter3, new Command() {
88
				
89
						@Override
90
						public void execute() {
91
							Iterator<Folder> iter4 = _f.getSubfolders().iterator();
92
							deleteSubfolder(iter4, new Command() {
93
								
94
								@Override
95
								public void execute() {
96
									String path = _f.getUri();
97
									DeleteRequest deleteF = new DeleteRequest(app.getApiPath(), _f.getOwner(), URL.encode(path)) {
98
										
99
										@Override
100
										public void onSuccess(Resource _result) {
101
											deleteSubfolder(iter2, callback);
102
										}
103
										
104
										@Override
105
										public void onError(Throwable t) {
106
											GWT.log("", t);
107
											app.setError(t);
108
											if (t instanceof RestException) {
109
												app.displayError("Unable to delete file:" + ((RestException) t).getHttpStatusText());
110
											}
111
											else
112
												app.displayError("System error deleting file:" + t.getMessage());
113
										}
114
		
115
										@Override
116
										protected void onUnauthorized(Response response) {
117
											app.sessionExpired();
118
										}
119
									};
120
									deleteF.setHeader("X-Auth-Token", app.getToken());
121
									Scheduler.get().scheduleDeferred(deleteF);
122
								}
123
							});
124
						}
125
					});
126
				}
127

  
128
				@Override
129
				public void onError(Throwable t) {
130
	                GWT.log("", t);
131
					app.setError(t);
132
	                if (t instanceof RestException) {
133
	                    app.displayError("Unable to get folder: " + ((RestException) t).getHttpStatusText());
134
	                }
135
	                else
136
	                	app.displayError("System error getting folder: " + t.getMessage());
137
				}
138

  
139
				@Override
140
				protected void onUnauthorized(Response response) {
141
					app.sessionExpired();
142
				}
143
			};
144
			getFolder.setHeader("X-Auth-Token", app.getToken());
145
			Scheduler.get().scheduleDeferred(getFolder);
146
		}
147
		else {
148
			if (callback != null)
149
				callback.execute();
150
		}
151
	}
152

  
153
	void deleteFile(final Iterator<File> iter, final Command callback) {
154
		if (iter.hasNext()) {
155
			File f = iter.next();
156
			String path = f.getUri();
157
			DeleteRequest deleteF = new DeleteRequest(app.getApiPath(), f.getOwner(), URL.encode(path)) {
158
				
159
				@Override
160
				public void onSuccess(Resource result) {
161
					deleteFile(iter, callback);
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 delete file:" + ((RestException) t).getHttpStatusText());
170
					}
171
					else
172
						app.displayError("System error deleting file:" + t.getMessage());
173
				}
174

  
175
				@Override
176
				protected void onUnauthorized(Response response) {
177
					app.sessionExpired();
178
				}
179
			};
180
			deleteF.setHeader("X-Auth-Token", app.getToken());
181
			Scheduler.get().scheduleDeferred(deleteF);
182
		}
183
		else {
184
			if (callback != null)
185
				callback.execute();
186
		}
73
		app.deleteAndCreateTrash();
187 74
	}
188 75
}

Also available in: Unified diff