← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18001: Web API, users, update user groups on PUT

 

------------------------------------------------------------
revno: 18001
committer: Lars Helge Overland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2015-01-15 10:59:03 +0100
message:
  Web API, users, update user groups on PUT
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java
  dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/user/UserController.java


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java	2015-01-02 11:34:18 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/user/UserGroupService.java	2015-01-15 09:59:03 +0000
@@ -59,6 +59,8 @@
     void addUserToGroups( User user, Collection<String> uids );
     
     void removeUserFromGroups( User user, Collection<String> uids );
+    
+    void updateUserGroups( User user, Collection<String> uids );
 
     Collection<UserGroup> getAllUserGroups();
 

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java	2015-01-02 11:34:18 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/user/DefaultUserGroupService.java	2015-01-15 09:59:03 +0000
@@ -29,6 +29,7 @@
  */
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 
 import org.hisp.dhis.acl.AclService;
@@ -133,8 +134,7 @@
             if ( canAddOrRemoveMember( uid ) )
             {
                 UserGroup userGroup = getUserGroup( uid );
-                user.getGroups().add( userGroup );
-                userGroup.getMembers().add( user );
+                userGroup.addUser( user );
                 userGroupStore.updateNoAcl( userGroup );
             }
         }
@@ -148,14 +148,41 @@
             if ( canAddOrRemoveMember( uid ) )
             {
                 UserGroup userGroup = getUserGroup( uid );
-                user.getGroups().remove( userGroup );
-                userGroup.getMembers().remove( user );
+                userGroup.removeUser( user );
                 userGroupStore.updateNoAcl( userGroup );
             }
         }        
     }
 
     @Override
+    public void updateUserGroups( User user, Collection<String> uids )
+    {
+        Collection<UserGroup> updates = getUserGroupsByUid( uids );
+        
+        for ( UserGroup userGroup : new HashSet<>( user.getGroups() ) )
+        {
+            if ( !updates.contains( userGroup ) && canAddOrRemoveMember( userGroup.getUid() ) )
+            {
+                userGroup.removeUser( user );
+            }
+        }
+        
+        for ( UserGroup userGroup : updates )
+        {
+            if ( canAddOrRemoveMember( userGroup.getUid() ) )
+            {
+                userGroup.addUser( user );
+                userGroupStore.updateNoAcl( userGroup );
+            }
+        }
+    }
+
+    public Collection<UserGroup> getUserGroupsByUid( Collection<String> uids )
+    {
+        return userGroupStore.getByUid( uids );
+    }
+    
+    @Override
     public List<UserGroup> getUserGroupByName( String name )
     {
         return userGroupStore.getAllEqName( name );

=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/user/UserController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/user/UserController.java	2015-01-12 18:53:15 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/user/UserController.java	2015-01-15 09:59:03 +0000
@@ -363,6 +363,13 @@
 
         ImportTypeSummary summary = importService.importObject( currentUserService.getCurrentUser().getUid(), parsed, ImportStrategy.UPDATE );
 
+        if ( summary.isStatus( ImportStatus.SUCCESS ) && summary.getImportCount().getUpdated() == 1 )
+        {
+            User user = userService.getUser( pvUid );
+            
+            userGroupService.updateUserGroups( user, IdentifiableObjectUtils.getUids( parsed.getGroups() ));
+        }
+        
         renderService.toXml( response.getOutputStream(), summary );
     }
 
@@ -395,6 +402,13 @@
 
         ImportTypeSummary summary = importService.importObject( currentUserService.getCurrentUser().getUid(), parsed, ImportStrategy.UPDATE );
 
+        if ( summary.isStatus( ImportStatus.SUCCESS ) && summary.getImportCount().getUpdated() == 1 )
+        {
+            User user = userService.getUser( pvUid );
+            
+            userGroupService.updateUserGroups( user, IdentifiableObjectUtils.getUids( parsed.getGroups() ));
+        }
+        
         renderService.toJson( response.getOutputStream(), summary );
     }