/*
- * 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
*/
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 {
return displayName == null ? getUserID() : displayName;
}
- public boolean hasUserDisplayNameForID(String userID) {
+ public boolean hasDisplayNameForUserID(String userID) {
return userCatalogs.getDisplayName(userID) != null;
}
- public String getUserDisplayNameForID(String userID) {
+ public boolean hasIDForUserDisplayName(String userDisplayName) {
+ return userCatalogs.getID(userDisplayName) != null;
+ }
+
+ public String getDisplayNameForUserID(String userID) {
return userCatalogs.getDisplayName(userID);
}
- public String getUserIDForDisplayName(String displayName) {
- return userCatalogs.getUserID(displayName);
+ public String getIDForUserDisplayName(String userDisplayName) {
+ return userCatalogs.getID(userDisplayName);
}
- public List<String> getUserDisplayNamesForIDs(List<String> userIDs) {
+ public List<String> getDisplayNamesForUserIDs(List<String> userIDs) {
if(userIDs == null) {
userIDs = new ArrayList<String>();
}
final List<String> userDisplayNames = new ArrayList<String>();
for(String userID : userIDs) {
- final String displayName = getUserDisplayNameForID(userID);
+ final String displayName = getDisplayNameForUserID(userID);
userDisplayNames.add(displayName);
}
}
}-*/;
- public static void LOG(String ...args) {
+ 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();
- for(String arg : args) {
- sb.append(arg);
+ LOGError(error, sb);
+ if(sb.length() > 0) {
+ __ConsoleLog(sb.toString());
}
+ }
+
+ public static boolean isLogEnabled() {
+ return IsLOGEnabled;
+ }
+
+ public static void LOG(Object ...args) {
+ if(!IsLOGEnabled) { return; }
+
+ final StringBuilder sb = new StringBuilder();
+ for(Object arg : args) {
+ if(arg instanceof Throwable) {
+ LOGError((Throwable) arg, sb);
+ }
+ else {
+ sb.append(arg);
+ }
+ }
+
if(sb.length() > 0) {
__ConsoleLog(sb.toString());
}
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
+ LOG("Pithos::initialize() Calling Pithos::fetchAccount()");
fetchAccount(new Command() {
@Override
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());
}
}
else {//retry
- GWT.log("Retry " + retries);
+ LOG("Retry ", retries);
Scheduler.get().scheduleDeferred(this);
}
}
GetRequest<AccountResource> getAccount = new GetRequest<AccountResource>(AccountResource.class, getApiPath(), userID, path) {
@Override
- public void onSuccess(AccountResource _result) {
- account = _result;
+ public void onSuccess(AccountResource accountResource) {
+ account = accountResource;
if(callback != null) {
callback.execute();
}
+
+ final List<String> memberIDs = new ArrayList<String>();
+ final List<Group> groups = account.getGroups();
+ for(Group group : groups) {
+ 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, Pithos.this.getUserID()).scheduleDeferred();
+ 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());
@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());
@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());
@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());
@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) {
@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());
@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());
}
void createMySharedTree() {
+ LOG("Pithos::createMySharedTree()");
mysharedTreeSelectionModel = new SingleSelectionModel<Folder>();
mysharedTreeSelectionModel.addSelectionChangeHandler(new Handler() {
@Override
}
void createOtherSharedTree() {
+ LOG("Pithos::createOtherSharedTree()");
otherSharedTreeSelectionModel = new SingleSelectionModel<Folder>();
otherSharedTreeSelectionModel.addSelectionChangeHandler(new Handler() {
@Override
});
selectionModels.add(otherSharedTreeSelectionModel);
otherSharedTreeViewModel = new OtherSharedTreeViewModel(Pithos.this, otherSharedTreeSelectionModel);
+ LOG("Pithos::createOtherSharedTree(), initializing otherSharedTreeViewModel with a callback");
otherSharedTreeViewModel.initialize(new Command() {
-
@Override
public void execute() {
otherSharedTreeView = new OtherSharedTreeView(otherSharedTreeViewModel);
});
}
- public native void log1(String message)/*-{
- $wnd.console.log(message);
- }-*/;
-
public String getErrorData() {
- if(error != null) {
- return error.toString();
+ final StringBuilder sb = new StringBuilder();
+ final String NL = Const.NL;
+ Throwable t = this.error;
+ while(t != null) {
+ sb.append(t.toString());
+ sb.append(NL);
+ StackTraceElement[] traces = t.getStackTrace();
+ for(StackTraceElement trace : traces) {
+ sb.append(" [");
+ sb.append(trace.getClassName());
+ sb.append("::");
+ sb.append(trace.getMethodName());
+ sb.append("() at ");
+ sb.append(trace.getFileName());
+ sb.append(":");
+ sb.append(trace.getLineNumber());
+ sb.append("]");
+ sb.append(NL);
+ }
+ t = t.getCause();
}
- return "";
+
+ return sb.toString();
}
public void setError(Throwable t) {
error = t;
+ LOG(t);
}
public void showRelevantToolbarButtons() {
@Override
public void onError(Throwable _t) {
- GWT.log("", _t);
setError(_t);
if(_t instanceof RestException) {
displayError("Unable to create folder: " + ((RestException) _t).getHttpStatusText());
displayError("System error heading folder: " + t.getMessage());
}
- GWT.log("Error heading folder", t);
+ LOG("Error heading folder", t);
setError(t);
}
@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());
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) {
@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());