In Share Dialog, remove the header line when the permission list is empty.
[pithos-web-client] / src / gr / grnet / pithos / web / client / Pithos.java
index bb71e21..d809732 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011-2012 GRNET S.A. All rights reserved.
+ * Copyright 2011-2013 GRNET S.A. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or
  * without modification, are permitted provided that the following
@@ -79,6 +79,8 @@ import java.util.*;
  */
 public class Pithos implements EntryPoint, ResizeHandler {
 
+    private static final boolean IsLOGEnabled = true;
+
     public static final Configuration config = GWT.create(Configuration.class);
 
     public interface Style extends CssResource {
@@ -336,16 +338,64 @@ public class Pithos implements EntryPoint, ResizeHandler {
       }
     }-*/;
 
+    public static void LOGError(Throwable error, StringBuilder sb) {
+        if(!IsLOGEnabled) { return; }
+
+        sb.append("\nException: [" + error.toString().replace("\n", "\n  ") + "]");
+        Throwable cause = error.getCause();
+        if(cause != null) {
+            sb.append("\nCauses:\n");
+            while(cause != null) {
+                sb.append("  ");
+                sb.append("[" + cause.toString().replace("\n", "\n  ")  + "]");
+                sb.append("\n");
+                cause = cause.getCause();
+            }
+        }
+        else {
+            sb.append("\n");
+        }
+
+        StackTraceElement[] stackTrace = error.getStackTrace();
+        sb.append("Stack trace (" + stackTrace.length + " elements):\n");
+        for(int i = 0; i < stackTrace.length; i++) {
+            StackTraceElement errorElem = stackTrace[i];
+            sb.append("  [" + i + "] ");
+            sb.append(errorElem.toString());
+            sb.append("\n");
+        }
+    }
+
+    public static void LOGError(Throwable error) {
+        if(!IsLOGEnabled) { return; }
+
+        final StringBuilder sb = new StringBuilder();
+        LOGError(error, sb);
+        if(sb.length() > 0) {
+            __ConsoleLog(sb.toString());
+        }
+    }
+
+    public static boolean isLogEnabled() {
+        return IsLOGEnabled;
+    }
+
     public static void LOG(Object ...args) {
-        if(false) {
-            final StringBuilder sb = new StringBuilder();
-            for(Object arg : args) {
-                sb.append(arg);
+        if(!IsLOGEnabled) { return; }
+
+        final StringBuilder sb = new StringBuilder();
+        for(Object arg : args) {
+            if(arg instanceof Throwable) {
+                LOGError((Throwable) arg, sb);
             }
-            if(sb.length() > 0) {
-                __ConsoleLog(sb.toString());
+            else {
+                sb.append(arg);
             }
         }
+
+        if(sb.length() > 0) {
+            __ConsoleLog(sb.toString());
+        }
     }
 
     private void initialize() {
@@ -591,7 +641,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                             scheduleResfresh();
                         }
                         else if(retries >= MAX_RETRIES) {
-                            GWT.log("Error heading folder", t);
+                            LOG("Error heading folder. ", t);
                             setError(t);
                             if(t instanceof RestException) {
                                 displayError("Error heading folder: " + ((RestException) t).getHttpStatusText());
@@ -601,7 +651,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                             }
                         }
                         else {//retry
-                            GWT.log("Retry " + retries);
+                            LOG("Retry ", retries);
                             Scheduler.get().scheduleDeferred(this);
                         }
                     }
@@ -726,22 +776,19 @@ public class Pithos implements EntryPoint, ResizeHandler {
                 final List<String> memberIDs = new ArrayList<String>();
                 final List<Group> groups = account.getGroups();
                 for(Group group : groups) {
-//                    LOG("Group ", group);
-                    for(String member: group.getMemberIDs()) {
-//                        LOG("      ", member);
-                        memberIDs.add(member);
-                    }
+                    memberIDs.addAll(group.getMemberIDs());
                 }
+                memberIDs.add(Pithos.this.getUserID());
 
                 final List<String> theUnknown = Pithos.this.filterUserIDsWithUnknownDisplayName(memberIDs);
                 // Initialize the user catalog
-                new UpdateUserCatalogs(Pithos.this, theUnknown).scheduleEntry();
+                new UpdateUserCatalogs(Pithos.this, theUnknown).scheduleDeferred();
                 LOG("Called new UpdateUserCatalogs(Pithos.this, theUnknown).scheduleDeferred();");
             }
 
             @Override
             public void onError(Throwable t) {
-                GWT.log("Error getting account", t);
+                LOG("Error getting account", t);
                 setError(t);
                 if(t instanceof RestException) {
                     displayError("Error getting account: " + ((RestException) t).getHttpStatusText());
@@ -770,7 +817,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
             @Override
             public void onError(Throwable t) {
-                GWT.log("Error getting account", t);
+                LOG("Error getting account", t);
                 setError(t);
                 if(t instanceof RestException) {
                     displayError("Error getting account: " + ((RestException) t).getHttpStatusText());
@@ -804,7 +851,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
             @Override
             public void onError(Throwable t) {
-                GWT.log("Error creating pithos", t);
+                LOG("Error creating pithos", t);
                 setError(t);
                 if(t instanceof RestException) {
                     displayError("Error creating pithos: " + ((RestException) t).getHttpStatusText());
@@ -833,7 +880,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
             @Override
             public void onError(Throwable t) {
-                GWT.log("Error creating pithos", t);
+                LOG("Error creating pithos", t);
                 setError(t);
                 if(t instanceof RestException) {
                     displayError("Error creating pithos: " + ((RestException) t).getHttpStatusText());
@@ -1018,7 +1065,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
             @Override
             public void onError(Throwable t) {
-                GWT.log("", t);
+                LOG(t);
                 setError(t);
                 if(t instanceof RestException) {
                     if(((RestException) t).getHttpStatusCode() != Response.SC_NOT_FOUND) {
@@ -1054,7 +1101,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
                 @Override
                 public void onError(Throwable t) {
-                    GWT.log("", t);
+                    LOG(t);
                     setError(t);
                     if(t instanceof RestException) {
                         displayError("Unable to copy file: " + ((RestException) t).getHttpStatusText());
@@ -1094,7 +1141,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
             @Override
             public void onError(Throwable t) {
-                GWT.log("", t);
+                LOG(t);
                 setError(t);
                 if(t instanceof RestException) {
                     displayError("Unable to copy folder: " + ((RestException) t).getHttpStatusText());
@@ -1285,6 +1332,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
     public void setError(Throwable t) {
         error = t;
+        LOG(t);
     }
 
     public void showRelevantToolbarButtons() {
@@ -1337,7 +1385,6 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
                                 @Override
                                 public void onError(Throwable _t) {
-                                    GWT.log("", _t);
                                     setError(_t);
                                     if(_t instanceof RestException) {
                                         displayError("Unable to create folder: " + ((RestException) _t).getHttpStatusText());
@@ -1369,7 +1416,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
                         displayError("System error heading folder: " + t.getMessage());
                     }
 
-                    GWT.log("Error heading folder", t);
+                    LOG("Error heading folder", t);
                     setError(t);
                 }
 
@@ -1395,7 +1442,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
             @Override
             public void onError(Throwable t) {
-                GWT.log("Error heading file", t);
+                LOG("Error heading file", t);
                 setError(t);
                 if(t instanceof RestException) {
                     displayError("Error heading file: " + ((RestException) t).getHttpStatusText());
@@ -1496,7 +1543,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
         fileList.selectByUrl(selectedUrls);
     }
 
-    public void emptyContainer(final Folder container) {
+    public void purgeContainer(final Folder container) {
         String path = "/" + container.getName() + "?delimiter=/";
         DeleteRequest delete = new DeleteRequest(getApiPath(), getUserID(), path) {
 
@@ -1512,7 +1559,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
 
             @Override
             public void onError(Throwable t) {
-                GWT.log("Error deleting trash", t);
+                LOG("Error deleting trash", t);
                 setError(t);
                 if(t instanceof RestException) {
                     displayError("Error deleting trash: " + ((RestException) t).getHttpStatusText());