-
-// Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
-//
-// @Override
-// public boolean execute() {
-// Folder f = getSelection();
-// if (f != null) {
-// if (getSelectedTree().equals(folderTreeView))
-// updateFolder(f, true, null, false);
-// else if (getSelectedTree().equals(mysharedTreeView))
-// updateSharedFolder(f, true);
-// }
-// return true;
-// }
-// }, 3000);
+ }
+
+ public void scheduleResfresh() {
+ Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
+
+ @Override
+ public boolean execute() {
+ final Folder f = getSelection();
+ if (f == null)
+ return true;
+
+ HeadRequest<Folder> head = new HeadRequest<Folder>(Folder.class, getApiPath(), getUsername(), "/" + f.getContainer()) {
+
+ @Override
+ public void onSuccess(Folder _result) {
+ lastModified = new Date();
+ if (getSelectedTree().equals(folderTreeView))
+ updateFolder(f, true, new Command() {
+
+ @Override
+ public void execute() {
+ scheduleResfresh();
+ }
+
+ }, false);
+ else if (getSelectedTree().equals(mysharedTreeView))
+ updateSharedFolder(f, true, new Command() {
+
+ @Override
+ public void execute() {
+ scheduleResfresh();
+ }
+ });
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ if (t instanceof RestException && ((RestException) t).getHttpStatusCode() == HttpStatus.SC_NOT_MODIFIED)
+ scheduleResfresh();
+ else if (retries >= MAX_RETRIES) {
+ GWT.log("Error heading folder", t);
+ setError(t);
+ if (t instanceof RestException)
+ displayError("Error heading folder: " + ((RestException) t).getHttpStatusText());
+ else
+ displayError("System error heading folder: " + t.getMessage());
+ }
+ else {//retry
+ GWT.log("Retry " + retries);
+ Scheduler.get().scheduleDeferred(this);
+ }
+ }
+
+ @Override
+ protected void onUnauthorized(Response response) {
+ if (retries >= MAX_RETRIES)
+ sessionExpired();
+ else //retry
+ Scheduler.get().scheduleDeferred(this);
+ }
+ };
+ head.setHeader("X-Auth-Token", getToken());
+ head.setHeader("If-Modified-Since", DateTimeFormat.getFormat("EEE, dd MMM yyyy HH:mm:ss").format(lastModified, TimeZone.createTimeZone(0)) + " GMT");
+ Scheduler.get().scheduleDeferred(head);
+
+ return false;
+ }
+ }, 3000);