import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONObject;
import gr.grnet.pithos.web.client.catalog.GetUserCatalogs;
+import gr.grnet.pithos.web.client.catalog.UpdateUserCatalogs;
import gr.grnet.pithos.web.client.catalog.UserCatalogs;
import gr.grnet.pithos.web.client.grouptree.Group;
}
else {
// Must call server to obtain userID
- new GetUserCatalogs(app, null, Helpers.toList(userDisplayName)) {
+ new UpdateUserCatalogs(app, null, Helpers.toList(userDisplayName)) {
@Override
- public void onSuccess(Request request, Response response, JSONObject result, UserCatalogs userCatalogs) {
- app.getUserCatalogs().updateFrom(userCatalogs);
- final String userID = app.getUserIDForDisplayName(userDisplayName);
+ public void onSuccess(UserCatalogs requestedUserCatalogs, UserCatalogs updatedUserCatalogs) {
+ final String userID = updatedUserCatalogs.getUserID(userDisplayName);
if(userID == null) {
app.displayWarning("Unknown user " + userDisplayName);
}
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.VerticalPanel;
import gr.grnet.pithos.web.client.catalog.GetUserCatalogs;
+import gr.grnet.pithos.web.client.catalog.UpdateUserCatalogs;
import gr.grnet.pithos.web.client.catalog.UserCatalogs;
);
}
else {
- new GetUserCatalogs(app, userID) {
+ new UpdateUserCatalogs(app, userID) {
@Override
- public void onSuccess(Request request, Response response, JSONObject result, UserCatalogs userCatalogs) {
- app.getUserCatalogs().updateFrom(userCatalogs);
- final String displayName = app.getUserDisplayNameForID(userID);
+ public void onSuccess(UserCatalogs requestedUserCatalogs, UserCatalogs updatedUserCatalogs) {
+ final String displayName = updatedUserCatalogs.getDisplayName(userID);
permTable.setHTML(
ii,
0,
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.google.gwt.view.client.SingleSelectionModel;
import gr.grnet.pithos.web.client.catalog.GetUserCatalogs;
+import gr.grnet.pithos.web.client.catalog.UpdateUserCatalogs;
import gr.grnet.pithos.web.client.catalog.UserCatalogs;
import gr.grnet.pithos.web.client.commands.UploadFileCommand;
import gr.grnet.pithos.web.client.foldertree.*;
callback.execute();
}
// Initialize the user catalog
- new GetUserCatalogs(Pithos.this, Pithos.this.getUserID()) {
- @Override
- public void onSuccess(Request request, Response response, JSONObject result, UserCatalogs usersCatalog) {
- super.onSuccess(request, response, result, usersCatalog);
- Pithos.this.userCatalogs.updateFrom(usersCatalog);
- }
- }.scheduleDeferred();
+ new UpdateUserCatalogs(Pithos.this, Pithos.this.getUserID()).scheduleDeferred();
}
@Override
--- /dev/null
+package gr.grnet.pithos.web.client.catalog;
+
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.http.client.Request;
+import com.google.gwt.http.client.Response;
+import com.google.gwt.json.client.JSONObject;
+import gr.grnet.pithos.web.client.Helpers;
+import gr.grnet.pithos.web.client.Pithos;
+
+import java.util.List;
+
+/**
+ * This is a wrapper around GetUserCatalogs that takes care of updating
+ * the application-wide user catalogs.
+ *
+ * @author Christos KK Loverdos <loverdos@gmail.com>
+ */
+public class UpdateUserCatalogs implements Scheduler.ScheduledCommand {
+ private final GetUserCatalogs getUserCatalogs;
+ private final Pithos app;
+
+ public UpdateUserCatalogs(Pithos app) {
+ this(app, null, null);
+ }
+
+ public UpdateUserCatalogs(Pithos app, String userID) {
+ this(app, Helpers.toList(userID), null);
+ }
+
+ public UpdateUserCatalogs(Pithos app, List<String> ids) {
+ this(app, ids, null);
+ }
+
+ public void onSuccess(UserCatalogs requestedUserCatalogs, UserCatalogs updatedUserCatalogs) {
+ }
+
+ public void onError(Request request, Throwable t) {
+ getUserCatalogs.onError(request, t);
+ }
+
+ public UpdateUserCatalogs(Pithos app, List<String> ids, List<String> names) {
+ this.app = app;
+ this.getUserCatalogs = new GetUserCatalogs(app, ids, names) {
+ @Override
+ public void onSuccess(Request request, Response response, JSONObject result, UserCatalogs userCatalogs) {
+ UpdateUserCatalogs.this.app.getUserCatalogs().updateFrom(userCatalogs);
+ UpdateUserCatalogs.this.onSuccess(userCatalogs, UpdateUserCatalogs.this.app.getUserCatalogs());
+ }
+
+ @Override
+ public void onError(Request request, Throwable t) {
+ UpdateUserCatalogs.this.onError(request, t);
+ }
+ };
+ }
+
+ @Override
+ public void execute() {
+ this.getUserCatalogs.execute();
+ }
+
+ public void scheduleDeferred() {
+ Scheduler.get().scheduleDeferred(this);
+ }
+}
import gr.grnet.pithos.web.client.Pithos;
import gr.grnet.pithos.web.client.SharingUsers;
import gr.grnet.pithos.web.client.catalog.GetUserCatalogs;
+import gr.grnet.pithos.web.client.catalog.UpdateUserCatalogs;
import gr.grnet.pithos.web.client.catalog.UserCatalogs;
import gr.grnet.pithos.web.client.foldertree.AccountResource;
import gr.grnet.pithos.web.client.foldertree.Folder;
fetchSharedContainers(userLevelDataProviderForIDs.getList().iterator(), callback);
} else {
// First fetch unknown display names and then proceed
- new GetUserCatalogs(app, userIDsWithUnknownDisplayNames) {
+ new UpdateUserCatalogs(app, userIDsWithUnknownDisplayNames) {
@Override
- public void onSuccess(Request request, Response response, JSONObject result, UserCatalogs userCatalogs) {
-// for(Map.Entry<String, String> entry : userCatalogs) {
-// final String id = entry.getKey();
-// final String name = entry.getValue();
-// LOG("mapping: userID("+id+") -> name("+name+")");
-// }
-
- // Update the cached user catalogs
- app.getUserCatalogs().updateFrom(userCatalogs);
-
+ public void onSuccess(UserCatalogs requestedUserCatalogs, UserCatalogs updatedUserCatalogs) {
fetchSharedContainers(userLevelDataProviderForIDs.getList().iterator(), callback);
}