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