]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java
Improve and simplify OSGi Boot
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / parts / GroupMainPage.java
index f0b0ae7e15b30ec6845a2196b861dff073ed287b..fe56679db3e6c2b70982e8ad406f49393c98b444 100644 (file)
@@ -19,6 +19,9 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import javax.transaction.UserTransaction;
+
+import org.argeo.cms.CmsException;
 import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
@@ -101,7 +104,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
        }
 
        /** Creates the general section */
-       protected void appendOverviewPart(Composite parent, final Group group) {
+       protected void appendOverviewPart(final Composite parent, final Group group) {
                FormToolkit tk = getManagedForm().getToolkit();
                Composite body = addSection(tk, parent, "Main information");
                GridLayout layout = new GridLayout(2, false);
@@ -131,7 +134,8 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                        @Override
                        public void initialize(IManagedForm form) {
                                super.initialize(form);
-                               listener = editor.new MainInfoListener(parent.getDisplay(), this);
+                               listener = editor.new MainInfoListener(parent.getDisplay(),
+                                               this);
                                userAdminWrapper.addListener(listener);
                        }
 
@@ -294,11 +298,8 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                        @SuppressWarnings("unchecked")
                        Iterator<User> it = ((IStructuredSelection) selection).iterator();
                        List<User> users = new ArrayList<User>();
-                       // StringBuilder builder = new StringBuilder();
                        while (it.hasNext()) {
                                User currUser = it.next();
-                               // String groupName = UserAdminUtils.getUsername(currGroup);
-                               // builder.append(groupName).append("; ");
                                users.add(currUser);
                        }
 
@@ -306,6 +307,7 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                        for (User user : users) {
                                group.removeMember(user);
                        }
+                       userAdminWrapper.commitOrNotifyTransactionStateChange();
                        userAdminWrapper.notifyListeners(new UserAdminEvent(null,
                                        UserAdminEvent.ROLE_CHANGED, group));
                }
@@ -328,7 +330,8 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                @Override
                public void initialize(IManagedForm form) {
                        super.initialize(form);
-                       listener = editor.new GroupChangeListener(userViewer.getDisplay(), GroupMembersPart.this);
+                       listener = editor.new GroupChangeListener(userViewer.getDisplay(),
+                                       GroupMembersPart.this);
                        userAdminWrapper.addListener(listener);
                }
 
@@ -414,15 +417,23 @@ public class GroupMainPage extends FormPage implements ArgeoNames {
                                        return;
                                }
                                userAdminWrapper.beginTransactionIfNeeded();
-                               // TODO implement the dirty state
                                myGroup.addMember(newGroup);
+                               userAdminWrapper.commitOrNotifyTransactionStateChange();
                                userAdminWrapper.notifyListeners(new UserAdminEvent(null,
                                                UserAdminEvent.ROLE_CHANGED, myGroup));
                        } else if (role.getType() == Role.USER) {
                                // TODO check if the group is already member of this group
-                               userAdminWrapper.beginTransactionIfNeeded();
+                               UserTransaction transaction = userAdminWrapper
+                                               .beginTransactionIfNeeded();
                                User user = (User) role;
                                myGroup.addMember(user);
+                               if (UserAdminWrapper.COMMIT_ON_SAVE)
+                                       try {
+                                               transaction.commit();
+                                       } catch (Exception e) {
+                                               throw new CmsException("Cannot commit transaction "
+                                                               + "after user group membership update", e);
+                                       }
                                userAdminWrapper.notifyListeners(new UserAdminEvent(null,
                                                UserAdminEvent.ROLE_CHANGED, myGroup));
                        }