Statistics
| Branch: | Tag: | Revision:

root / src / gr / grnet / pithos / web / client / commands / RemoveUserCommand.java @ 0459d2ef

History | View | Annotate | Download (4.1 kB)

1 4baffab1 Christos Stathis
/*
2 cae2a8db Christos Stathis
 * Copyright 2011-2012 GRNET S.A. All rights reserved.
3 4baffab1 Christos Stathis
 *
4 4baffab1 Christos Stathis
 * Redistribution and use in source and binary forms, with or
5 4baffab1 Christos Stathis
 * without modification, are permitted provided that the following
6 4baffab1 Christos Stathis
 * conditions are met:
7 4baffab1 Christos Stathis
 *
8 4baffab1 Christos Stathis
 *   1. Redistributions of source code must retain the above
9 4baffab1 Christos Stathis
 *      copyright notice, this list of conditions and the following
10 4baffab1 Christos Stathis
 *      disclaimer.
11 4baffab1 Christos Stathis
 *
12 4baffab1 Christos Stathis
 *   2. Redistributions in binary form must reproduce the above
13 4baffab1 Christos Stathis
 *      copyright notice, this list of conditions and the following
14 4baffab1 Christos Stathis
 *      disclaimer in the documentation and/or other materials
15 4baffab1 Christos Stathis
 *      provided with the distribution.
16 4baffab1 Christos Stathis
 *
17 4baffab1 Christos Stathis
 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 4baffab1 Christos Stathis
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 4baffab1 Christos Stathis
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 4baffab1 Christos Stathis
 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 4baffab1 Christos Stathis
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 4baffab1 Christos Stathis
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 4baffab1 Christos Stathis
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 4baffab1 Christos Stathis
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 4baffab1 Christos Stathis
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 4baffab1 Christos Stathis
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 4baffab1 Christos Stathis
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 4baffab1 Christos Stathis
 * POSSIBILITY OF SUCH DAMAGE.
29 4baffab1 Christos Stathis
 *
30 4baffab1 Christos Stathis
 * The views and conclusions contained in the software and
31 4baffab1 Christos Stathis
 * documentation are those of the authors and should not be
32 4baffab1 Christos Stathis
 * interpreted as representing official policies, either expressed
33 4baffab1 Christos Stathis
 * or implied, of GRNET S.A.
34 4baffab1 Christos Stathis
 */
35 4baffab1 Christos Stathis
package gr.grnet.pithos.web.client.commands;
36 4baffab1 Christos Stathis
37 ee77dbf1 Christos KK Loverdos
import gr.grnet.pithos.web.client.Pithos;
38 ee77dbf1 Christos KK Loverdos
import gr.grnet.pithos.web.client.Resource;
39 ee77dbf1 Christos KK Loverdos
import gr.grnet.pithos.web.client.grouptree.Group;
40 ee77dbf1 Christos KK Loverdos
import gr.grnet.pithos.web.client.grouptree.User;
41 ee77dbf1 Christos KK Loverdos
import gr.grnet.pithos.web.client.rest.PostRequest;
42 ee77dbf1 Christos KK Loverdos
import gr.grnet.pithos.web.client.rest.RestException;
43 4baffab1 Christos Stathis
44 dc8cc18a Christos KK Loverdos
import com.google.gwt.core.client.GWT;
45 dc8cc18a Christos KK Loverdos
import com.google.gwt.core.client.Scheduler;
46 dc8cc18a Christos KK Loverdos
import com.google.gwt.http.client.Response;
47 dc8cc18a Christos KK Loverdos
import com.google.gwt.http.client.URL;
48 dc8cc18a Christos KK Loverdos
import com.google.gwt.user.client.Command;
49 dc8cc18a Christos KK Loverdos
import com.google.gwt.user.client.ui.PopupPanel;
50 dc8cc18a Christos KK Loverdos
51 4baffab1 Christos Stathis
/**
52 4baffab1 Christos Stathis
 * Display the 'new folder' dialog for creating a new folder.
53 dc8cc18a Christos KK Loverdos
 *
54 4baffab1 Christos Stathis
 */
55 4baffab1 Christos Stathis
public class RemoveUserCommand implements Command {
56 dc8cc18a Christos KK Loverdos
        private PopupPanel containerPanel;
57 4baffab1 Christos Stathis
58 4baffab1 Christos Stathis
    User user;
59 4baffab1 Christos Stathis
60 4baffab1 Christos Stathis
    Pithos app;
61 4baffab1 Christos Stathis
62 dc8cc18a Christos KK Loverdos
        /**
63 dc8cc18a Christos KK Loverdos
         * @param aContainerPanel
64 dc8cc18a Christos KK Loverdos
         */
65 dc8cc18a Christos KK Loverdos
        public RemoveUserCommand(Pithos _app, PopupPanel aContainerPanel, User _user){
66 4baffab1 Christos Stathis
        app = _app;
67 dc8cc18a Christos KK Loverdos
                containerPanel = aContainerPanel;
68 dc8cc18a Christos KK Loverdos
            user = _user;
69 dc8cc18a Christos KK Loverdos
        }
70 4baffab1 Christos Stathis
71 dc8cc18a Christos KK Loverdos
        @Override
72 dc8cc18a Christos KK Loverdos
        public void execute() {
73 dc8cc18a Christos KK Loverdos
        if (containerPanel != null)
74 dc8cc18a Christos KK Loverdos
                    containerPanel.hide();
75 dc8cc18a Christos KK Loverdos
            final String groupName = user.getGroup();
76 dc8cc18a Christos KK Loverdos
            final Group group = app.getAccount().getGroup(groupName);
77 dc8cc18a Christos KK Loverdos
            if (group == null)
78 dc8cc18a Christos KK Loverdos
                    return;
79 0459d2ef Christos KK Loverdos
            group.removeMemberID(user.getUserID());
80 dc8cc18a Christos KK Loverdos
            String path = "?update=";
81 dc8cc18a Christos KK Loverdos
            PostRequest updateGroup = new PostRequest(app.getApiPath(), app.getUserID(), path) {
82 dc8cc18a Christos KK Loverdos
                        
83 dc8cc18a Christos KK Loverdos
                        @Override
84 dc8cc18a Christos KK Loverdos
                        public void onSuccess(Resource result) {
85 dc8cc18a Christos KK Loverdos
                                app.fetchAccount(new Command() {
86 dc8cc18a Christos KK Loverdos
                                        
87 dc8cc18a Christos KK Loverdos
                                        @Override
88 dc8cc18a Christos KK Loverdos
                                        public void execute() {
89 dc8cc18a Christos KK Loverdos
                                                Group updatedGroup2 = app.getAccount().getGroup(groupName);
90 dc8cc18a Christos KK Loverdos
                                                if (updatedGroup2 != null)
91 dc8cc18a Christos KK Loverdos
                                                        app.updateGroupNode(updatedGroup2);
92 dc8cc18a Christos KK Loverdos
                                                else {
93 dc8cc18a Christos KK Loverdos
                                                        app.updateGroupNode(null);
94 dc8cc18a Christos KK Loverdos
                                                }
95 dc8cc18a Christos KK Loverdos
                                        }
96 dc8cc18a Christos KK Loverdos
                                });
97 dc8cc18a Christos KK Loverdos
                        }
98 dc8cc18a Christos KK Loverdos
                        
99 dc8cc18a Christos KK Loverdos
                        @Override
100 dc8cc18a Christos KK Loverdos
                        public void onError(Throwable t) {
101 dc8cc18a Christos KK Loverdos
                                GWT.log("", t);
102 dc8cc18a Christos KK Loverdos
                                app.setError(t);
103 dc8cc18a Christos KK Loverdos
                                if (t instanceof RestException) {
104 dc8cc18a Christos KK Loverdos
                                        app.displayError("Unable to update group:" + ((RestException) t).getHttpStatusText());
105 dc8cc18a Christos KK Loverdos
                                }
106 dc8cc18a Christos KK Loverdos
                                else
107 dc8cc18a Christos KK Loverdos
                                        app.displayError("System error updating group:" + t.getMessage());
108 dc8cc18a Christos KK Loverdos
                        }
109 9539e23d Christos Stathis
110 dc8cc18a Christos KK Loverdos
                        @Override
111 dc8cc18a Christos KK Loverdos
                        protected void onUnauthorized(Response response) {
112 dc8cc18a Christos KK Loverdos
                                app.sessionExpired();
113 dc8cc18a Christos KK Loverdos
                        }
114 dc8cc18a Christos KK Loverdos
                };
115 dc8cc18a Christos KK Loverdos
                updateGroup.setHeader("X-Auth-Token", app.getUserToken());
116 dc8cc18a Christos KK Loverdos
                String groupMembers = "";
117 0459d2ef Christos KK Loverdos
                if (!group.getMemberIDs().isEmpty()) {
118 0459d2ef Christos KK Loverdos
                        for (String u : group.getMemberIDs())
119 dc8cc18a Christos KK Loverdos
                                groupMembers += (URL.encodePathSegment(u) + ",");
120 dc8cc18a Christos KK Loverdos
                }
121 dc8cc18a Christos KK Loverdos
                else
122 dc8cc18a Christos KK Loverdos
                        groupMembers = "~";
123 dc8cc18a Christos KK Loverdos
                updateGroup.setHeader("X-Account-Group-" + URL.encodePathSegment(group.getName()), groupMembers);
124 dc8cc18a Christos KK Loverdos
                Scheduler.get().scheduleDeferred(updateGroup);
125 dc8cc18a Christos KK Loverdos
        }
126 4baffab1 Christos Stathis
}