Revision dc8cc18a src/gr/grnet/pithos/web/client/commands/RemoveUserCommand.java
b/src/gr/grnet/pithos/web/client/commands/RemoveUserCommand.java | ||
---|---|---|
34 | 34 |
*/ |
35 | 35 |
package gr.grnet.pithos.web.client.commands; |
36 | 36 |
|
37 |
import com.google.gwt.core.client.GWT; |
|
38 |
import com.google.gwt.core.client.Scheduler; |
|
39 |
import com.google.gwt.http.client.Response; |
|
40 |
import com.google.gwt.http.client.URL; |
|
41 |
import com.google.gwt.user.client.Command; |
|
42 |
import com.google.gwt.user.client.ui.PopupPanel; |
|
43 |
import gr.grnet.pithos.web.client.Const; |
|
44 | 37 |
import gr.grnet.pithos.web.client.Pithos; |
45 | 38 |
import gr.grnet.pithos.web.client.Resource; |
46 | 39 |
import gr.grnet.pithos.web.client.grouptree.Group; |
... | ... | |
48 | 41 |
import gr.grnet.pithos.web.client.rest.PostRequest; |
49 | 42 |
import gr.grnet.pithos.web.client.rest.RestException; |
50 | 43 |
|
44 |
import com.google.gwt.core.client.GWT; |
|
45 |
import com.google.gwt.core.client.Scheduler; |
|
46 |
import com.google.gwt.http.client.Response; |
|
47 |
import com.google.gwt.http.client.URL; |
|
48 |
import com.google.gwt.user.client.Command; |
|
49 |
import com.google.gwt.user.client.ui.PopupPanel; |
|
50 |
|
|
51 | 51 |
/** |
52 | 52 |
* Display the 'new folder' dialog for creating a new folder. |
53 |
* |
|
53 | 54 |
*/ |
54 | 55 |
public class RemoveUserCommand implements Command { |
55 |
private PopupPanel containerPanel;
|
|
56 |
private PopupPanel containerPanel;
|
|
56 | 57 |
|
57 | 58 |
User user; |
58 | 59 |
|
59 | 60 |
Pithos app; |
60 | 61 |
|
61 |
/**
|
|
62 |
* @param aContainerPanel
|
|
63 |
*/
|
|
64 |
public RemoveUserCommand(Pithos _app, PopupPanel aContainerPanel, User _user) {
|
|
62 |
/**
|
|
63 |
* @param aContainerPanel
|
|
64 |
*/
|
|
65 |
public RemoveUserCommand(Pithos _app, PopupPanel aContainerPanel, User _user){
|
|
65 | 66 |
app = _app; |
66 |
containerPanel = aContainerPanel; |
|
67 |
user = _user; |
|
68 |
} |
|
69 |
|
|
70 |
@Override |
|
71 |
public void execute() { |
|
72 |
if(containerPanel != null) { |
|
73 |
containerPanel.hide(); |
|
74 |
} |
|
75 |
final String groupName = user.getGroup(); |
|
76 |
final Group group = app.getAccount().getGroup(groupName); |
|
77 |
if(group == null) { |
|
78 |
return; |
|
79 |
} |
|
80 |
group.removeUser(user); |
|
81 |
String path = "?update="; |
|
82 |
PostRequest updateGroup = new PostRequest(app, app.getApiPath(), app.getUserID(), path) { |
|
83 |
|
|
84 |
@Override |
|
85 |
public void onSuccess(Resource result) { |
|
86 |
app.fetchAccount(new Command() { |
|
87 |
|
|
88 |
@Override |
|
89 |
public void execute() { |
|
90 |
Group updatedGroup2 = app.getAccount().getGroup(groupName); |
|
91 |
if(updatedGroup2 != null) { |
|
92 |
app.updateGroupNode(updatedGroup2); |
|
93 |
} |
|
94 |
else { |
|
95 |
app.updateGroupNode(null); |
|
96 |
} |
|
97 |
} |
|
98 |
}); |
|
99 |
} |
|
67 |
containerPanel = aContainerPanel; |
|
68 |
user = _user; |
|
69 |
} |
|
100 | 70 |
|
101 |
@Override |
|
102 |
public void onError(Throwable t) { |
|
103 |
GWT.log("", t); |
|
104 |
app.setError(t); |
|
105 |
if(t instanceof RestException) { |
|
106 |
app.displayError("Unable to update group:" + ((RestException) t).getHttpStatusText()); |
|
107 |
} |
|
108 |
else { |
|
109 |
app.displayError("System error updating group:" + t.getMessage()); |
|
110 |
} |
|
111 |
} |
|
71 |
@Override |
|
72 |
public void execute() { |
|
73 |
if (containerPanel != null) |
|
74 |
containerPanel.hide(); |
|
75 |
final String groupName = user.getGroup(); |
|
76 |
final Group group = app.getAccount().getGroup(groupName); |
|
77 |
if (group == null) |
|
78 |
return; |
|
79 |
group.removeMember(user.getName()); |
|
80 |
String path = "?update="; |
|
81 |
PostRequest updateGroup = new PostRequest(app.getApiPath(), app.getUserID(), path) { |
|
82 |
|
|
83 |
@Override |
|
84 |
public void onSuccess(Resource result) { |
|
85 |
app.fetchAccount(new Command() { |
|
86 |
|
|
87 |
@Override |
|
88 |
public void execute() { |
|
89 |
Group updatedGroup2 = app.getAccount().getGroup(groupName); |
|
90 |
if (updatedGroup2 != null) |
|
91 |
app.updateGroupNode(updatedGroup2); |
|
92 |
else { |
|
93 |
app.updateGroupNode(null); |
|
94 |
} |
|
95 |
} |
|
96 |
}); |
|
97 |
} |
|
98 |
|
|
99 |
@Override |
|
100 |
public void onError(Throwable t) { |
|
101 |
GWT.log("", t); |
|
102 |
app.setError(t); |
|
103 |
if (t instanceof RestException) { |
|
104 |
app.displayError("Unable to update group:" + ((RestException) t).getHttpStatusText()); |
|
105 |
} |
|
106 |
else |
|
107 |
app.displayError("System error updating group:" + t.getMessage()); |
|
108 |
} |
|
112 | 109 |
|
113 |
@Override
|
|
114 |
protected void onUnauthorized(Response response) {
|
|
115 |
app.sessionExpired();
|
|
116 |
}
|
|
117 |
};
|
|
118 |
updateGroup.setHeader(Const.X_AUTH_TOKEN, app.getUserToken());
|
|
119 |
final String groupMembers;
|
|
120 |
if(!group.getUsers().isEmpty()) {
|
|
121 |
groupMembers = group.encodeUserIDsForXAccountGroup();
|
|
122 |
}
|
|
123 |
else {
|
|
124 |
groupMembers = "~";
|
|
125 |
}
|
|
126 |
updateGroup.setHeader(Const.X_ACCOUNT_GROUP_ + URL.encodePathSegment(group.getName()), groupMembers);
|
|
127 |
Scheduler.get().scheduleDeferred(updateGroup);
|
|
128 |
}
|
|
110 |
@Override
|
|
111 |
protected void onUnauthorized(Response response) {
|
|
112 |
app.sessionExpired();
|
|
113 |
}
|
|
114 |
};
|
|
115 |
updateGroup.setHeader("X-Auth-Token", app.getUserToken());
|
|
116 |
String groupMembers = "";
|
|
117 |
if (!group.getMembers().isEmpty()) {
|
|
118 |
for (String u : group.getMembers())
|
|
119 |
groupMembers += (URL.encodePathSegment(u) + ",");
|
|
120 |
}
|
|
121 |
else
|
|
122 |
groupMembers = "~";
|
|
123 |
updateGroup.setHeader("X-Account-Group-" + URL.encodePathSegment(group.getName()), groupMembers);
|
|
124 |
Scheduler.get().scheduleDeferred(updateGroup);
|
|
125 |
}
|
|
129 | 126 |
} |
Also available in: Unified diff