Revision b3832e45 src/gr/grnet/pithos/web/client/commands/PropertiesCommand.java
b/src/gr/grnet/pithos/web/client/commands/PropertiesCommand.java | ||
---|---|---|
45 | 45 |
import gr.grnet.pithos.web.client.foldertree.Folder; |
46 | 46 |
import gr.grnet.pithos.web.client.foldertree.Resource; |
47 | 47 |
import gr.grnet.pithos.web.client.rest.HeadRequest; |
48 |
import gr.grnet.pithos.web.client.rest.PutRequest; |
|
48 | 49 |
import gr.grnet.pithos.web.client.rest.RestException; |
49 | 50 |
|
50 | 51 |
import java.util.List; |
... | ... | |
91 | 92 |
containerPanel.hide(); |
92 | 93 |
|
93 | 94 |
if (resource instanceof Folder) { |
94 |
Folder folder = (Folder) resource; |
|
95 |
final Folder folder = (Folder) resource;
|
|
95 | 96 |
switch (tabToShow) { |
96 | 97 |
case PROPERTIES: |
97 | 98 |
FolderPropertiesDialog dlg = new FolderPropertiesDialog(app, false, folder); |
98 | 99 |
dlg.center(); |
99 | 100 |
break; |
100 | 101 |
case PERMISSIONS: |
101 |
FolderPermissionsDialog dlg1 = new FolderPermissionsDialog(app, folder); |
|
102 |
dlg1.center();
|
|
102 |
final FolderPermissionsDialog dlg1 = new FolderPermissionsDialog(app, folder);
|
|
103 |
scheduleFolderHeadCommand(folder, dlg1);
|
|
103 | 104 |
break; |
104 | 105 |
default: |
105 | 106 |
break; |
... | ... | |
113 | 114 |
dlg.center(); |
114 | 115 |
} |
115 | 116 |
else { |
117 |
File f = files.get(0); |
|
118 |
PopupPanel dlg = null; |
|
116 | 119 |
switch (tabToShow) { |
117 | 120 |
case PROPERTIES: |
118 |
File f = files.get(0); |
|
119 |
final FilePropertiesDialog dlg = new FilePropertiesDialog(app, f); |
|
120 |
HeadRequest<File> headFile = new HeadRequest<File>(File.class, app.getApiPath(), f.getOwner(), f.getUri(), f) { |
|
121 |
|
|
122 |
@Override |
|
123 |
public void onSuccess(File _result) { |
|
124 |
dlg.center(); |
|
125 |
} |
|
126 |
|
|
127 |
@Override |
|
128 |
public void onError(Throwable t) { |
|
129 |
GWT.log("Error heading file", t); |
|
130 |
app.setError(t); |
|
131 |
if (t instanceof RestException) |
|
132 |
app.displayError("Error heading file: " + ((RestException) t).getHttpStatusText()); |
|
133 |
else |
|
134 |
app.displayError("System error heading folder: " + t.getMessage()); |
|
135 |
} |
|
136 |
|
|
137 |
@Override |
|
138 |
protected void onUnauthorized(Response response) { |
|
139 |
app.sessionExpired(); |
|
140 |
} |
|
141 |
}; |
|
142 |
headFile.setHeader("X-Auth-Token", app.getToken()); |
|
143 |
Scheduler.get().scheduleDeferred(headFile); |
|
121 |
dlg = new FilePropertiesDialog(app, f); |
|
122 |
scheduleFileHeadCommand(f, dlg); |
|
144 | 123 |
break; |
145 | 124 |
case PERMISSIONS: |
146 |
FilePermissionsDialog dlg1 = new FilePermissionsDialog(app, files.get(0));
|
|
147 |
dlg1.center();
|
|
125 |
dlg = new FilePermissionsDialog(app, f);
|
|
126 |
scheduleFileHeadCommand(f, dlg);
|
|
148 | 127 |
break; |
149 | 128 |
case VERSIONS: |
150 | 129 |
FileVersionsDialog dlg2 = new FileVersionsDialog(app, files.get(0)); |
... | ... | |
156 | 135 |
} |
157 | 136 |
} |
158 | 137 |
} |
138 |
|
|
139 |
private void scheduleFileHeadCommand(File f, final PopupPanel dlg) { |
|
140 |
HeadRequest<File> headFile = new HeadRequest<File>(File.class, app.getApiPath(), f.getOwner(), f.getUri(), f) { |
|
141 |
|
|
142 |
@Override |
|
143 |
public void onSuccess(File _result) { |
|
144 |
dlg.center(); |
|
145 |
} |
|
146 |
|
|
147 |
@Override |
|
148 |
public void onError(Throwable t) { |
|
149 |
GWT.log("Error heading file", t); |
|
150 |
app.setError(t); |
|
151 |
if (t instanceof RestException) |
|
152 |
app.displayError("Error heading file: " + ((RestException) t).getHttpStatusText()); |
|
153 |
else |
|
154 |
app.displayError("System error heading file: " + t.getMessage()); |
|
155 |
} |
|
156 |
|
|
157 |
@Override |
|
158 |
protected void onUnauthorized(Response response) { |
|
159 |
app.sessionExpired(); |
|
160 |
} |
|
161 |
}; |
|
162 |
headFile.setHeader("X-Auth-Token", app.getToken()); |
|
163 |
Scheduler.get().scheduleDeferred(headFile); |
|
164 |
} |
|
165 |
|
|
166 |
void scheduleFolderHeadCommand(final Folder folder, final FolderPermissionsDialog dlg) { |
|
167 |
HeadRequest<Folder> headFolder = new HeadRequest<Folder>(Folder.class, app.getApiPath(), folder.getOwner(), folder.getUri(), folder) { |
|
168 |
|
|
169 |
@Override |
|
170 |
public void onSuccess(Folder _result) { |
|
171 |
dlg.center(); |
|
172 |
} |
|
173 |
|
|
174 |
@Override |
|
175 |
public void onError(Throwable t) { |
|
176 |
if (t instanceof RestException) { |
|
177 |
if (((RestException) t).getHttpStatusCode() == Response.SC_NOT_FOUND) { |
|
178 |
final String path = folder.getUri(); |
|
179 |
PutRequest newFolder = new PutRequest(app.getApiPath(), folder.getOwner(), path) { |
|
180 |
@Override |
|
181 |
public void onSuccess(Resource _result) { |
|
182 |
scheduleFolderHeadCommand(folder, dlg); |
|
183 |
} |
|
184 |
|
|
185 |
@Override |
|
186 |
public void onError(Throwable _t) { |
|
187 |
GWT.log("", _t); |
|
188 |
app.setError(_t); |
|
189 |
if(_t instanceof RestException){ |
|
190 |
app.displayError("Unable to create folder: " + ((RestException) _t).getHttpStatusText()); |
|
191 |
} |
|
192 |
else |
|
193 |
app.displayError("System error creating folder: " + _t.getMessage()); |
|
194 |
} |
|
195 |
|
|
196 |
@Override |
|
197 |
protected void onUnauthorized(Response response) { |
|
198 |
app.sessionExpired(); |
|
199 |
} |
|
200 |
}; |
|
201 |
newFolder.setHeader("X-Auth-Token", app.getToken()); |
|
202 |
newFolder.setHeader("Content-Type", "application/folder"); |
|
203 |
newFolder.setHeader("Accept", "*/*"); |
|
204 |
newFolder.setHeader("Content-Length", "0"); |
|
205 |
Scheduler.get().scheduleDeferred(newFolder); |
|
206 |
} |
|
207 |
else |
|
208 |
app.displayError("Error heading folder: " + ((RestException) t).getHttpStatusText()); |
|
209 |
} |
|
210 |
else |
|
211 |
app.displayError("System error heading folder: " + t.getMessage()); |
|
212 |
|
|
213 |
GWT.log("Error heading folder", t); |
|
214 |
app.setError(t); |
|
215 |
} |
|
216 |
|
|
217 |
@Override |
|
218 |
protected void onUnauthorized(Response response) { |
|
219 |
app.sessionExpired(); |
|
220 |
} |
|
221 |
}; |
|
222 |
headFolder.setHeader("X-Auth-Token", app.getToken()); |
|
223 |
Scheduler.get().scheduleDeferred(headFolder); |
|
224 |
} |
|
159 | 225 |
} |
Also available in: Unified diff