X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2Fparts%2FGroupMainPage.java;h=fe56679db3e6c2b70982e8ad406f49393c98b444;hb=8260f4470f514ea347ca53f5b4dfc632c4a4de66;hp=f0b0ae7e15b30ec6845a2196b861dff073ed287b;hpb=f782539a48e6d4779767c5a511c25df1b9078667;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java index f0b0ae7e1..fe56679db 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java @@ -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 it = ((IStructuredSelection) selection).iterator(); List users = new ArrayList(); - // 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)); }