Fixed bug where group was not removed when the last user was removed (issue #2348)
authorChristos Stathis <chstath@ebs.gr>
Thu, 24 May 2012 13:11:48 +0000 (16:11 +0300)
committerChristos Stathis <chstath@ebs.gr>
Thu, 24 May 2012 13:11:48 +0000 (16:11 +0300)
src/gr/grnet/pithos/web/client/Pithos.java
src/gr/grnet/pithos/web/client/commands/RemoveUserCommand.java
src/gr/grnet/pithos/web/client/foldertree/AccountResource.java
src/gr/grnet/pithos/web/client/grouptree/GroupTreeViewModel.java
src/gr/grnet/pithos/web/client/grouptree/User.java

index 3013491..e31a3e4 100644 (file)
@@ -590,7 +590,7 @@ public class Pithos implements EntryPoint, ResizeHandler {
         Window.Location.assign(otherProperties.get("loginUrl") + Window.Location.getHref());
        }
 
-       protected void fetchAccount(final Command callback) {
+       public void fetchAccount(final Command callback) {
         String path = "?format=json";
 
         GetRequest<AccountResource> getAccount = new GetRequest<AccountResource>(AccountResource.class, getApiPath(), username, path) {
index 8f41e2f..7bc14fa 100644 (file)
@@ -72,19 +72,28 @@ public class RemoveUserCommand implements Command {
        public void execute() {
         if (containerPanel != null)
                    containerPanel.hide();
-       final Group group = user.getGroup();
+       final String groupName = user.getGroup();
+       final Group group = app.getAccount().getGroup(groupName);
+       if (group == null)
+               return;
        group.removeMember(user.getName());
        String path = "?update=";
        PostRequest updateGroup = new PostRequest(app.getApiPath(), app.getUsername(), path) {
                        
                        @Override
                        public void onSuccess(Resource result) {
-                               if (!group.getMembers().isEmpty())
-                                       app.updateGroupNode(group);
-                               else {
-                                       app.getAccount().getGroups().remove(group);
-                                       app.updateGroupNode(null);
-                               }
+                               app.fetchAccount(new Command() {
+                                       
+                                       @Override
+                                       public void execute() {
+                                               Group updatedGroup2 = app.getAccount().getGroup(groupName);
+                                               if (updatedGroup2 != null)
+                                                       app.updateGroupNode(updatedGroup2);
+                                               else {
+                                                       app.updateGroupNode(null);
+                                               }
+                                       }
+                               });
                        }
                        
                        @Override
index c437598..bc2db06 100644 (file)
@@ -272,4 +272,11 @@ public class AccountResource extends Resource {
                                return f;
                return null;
        }
+
+       public Group getGroup(String groupName) {
+               for (Group g : groups)
+                       if (g.getName().equalsIgnoreCase(groupName))
+                               return g;
+               return null;
+       }
 }
index 85cd222..ea3f05c 100644 (file)
@@ -175,7 +175,7 @@ public class GroupTreeViewModel implements TreeViewModel {
                final ListDataProvider<User> dataProvider = userDataProviderMap.get(g);
                dataProvider.getList().clear();
                for (String u : g.getMembers())
-                       dataProvider.getList().add(new User(u, g));
+                       dataProvider.getList().add(new User(u, g.getName()));
        return new DefaultNodeInfo<User>(dataProvider, userCell, userSelectionModel, null);
     }
 
@@ -202,7 +202,7 @@ public class GroupTreeViewModel implements TreeViewModel {
                        final ListDataProvider<User> dataProvider = userDataProviderMap.get(group);
                        dataProvider.getList().clear();
                        for (String u : group.getMembers())
-                               dataProvider.getList().add(new User(u, group));
+                               dataProvider.getList().add(new User(u, group.getName()));
                }
        }
 
index 0600248..067fbd2 100644 (file)
@@ -39,9 +39,9 @@ package gr.grnet.pithos.web.client.grouptree;
 public class User {
     private String name;
     
-    private Group group;
+    private String group;
 
-    public User(String _name, Group _group) {
+    public User(String _name, String _group) {
         name = _name;
         group = _group;
     }
@@ -50,7 +50,7 @@ public class User {
         return name;
     }
 
-       public Group getGroup() {
+       public String getGroup() {
                return group;
        }
 }