X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.e4%2Fsrc%2Forg%2Fargeo%2Fcms%2Fe4%2Fusers%2FGroupEditor.java;h=a011c5f62c19c45fcdeca8ce4644ed732fe539f6;hb=633a8acd189cc22f06944d278879601189be1bc8;hp=2c7504971e38f3f976d2d66fb935021b7e9797af;hpb=71196c25959b53964edf87aeb4387ed8b11b4868;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/GroupEditor.java b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/GroupEditor.java index 2c7504971..a011c5f62 100644 --- a/org.argeo.cms.e4/src/org/argeo/cms/e4/users/GroupEditor.java +++ b/org.argeo.cms.e4/src/org/argeo/cms/e4/users/GroupEditor.java @@ -1,9 +1,9 @@ package org.argeo.cms.e4.users; -import static org.argeo.api.NodeInstance.WORKGROUP; +import static org.argeo.api.cms.CmsContext.WORKGROUP; import static org.argeo.cms.auth.UserAdminUtils.setProperty; -import static org.argeo.naming.LdapAttrs.businessCategory; -import static org.argeo.naming.LdapAttrs.description; +import static org.argeo.util.naming.LdapAttrs.businessCategory; +import static org.argeo.util.naming.LdapAttrs.description; import java.util.ArrayList; import java.util.Iterator; @@ -15,27 +15,25 @@ import javax.jcr.Node; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; -import javax.naming.InvalidNameException; -import javax.naming.ldap.LdapName; -import javax.transaction.UserTransaction; - -import org.argeo.api.NodeConstants; -import org.argeo.api.NodeInstance; -import org.argeo.api.NodeUtils; -import org.argeo.cms.CmsException; + +import org.argeo.api.cms.CmsConstants; +import org.argeo.api.cms.CmsContext; import org.argeo.cms.auth.UserAdminUtils; import org.argeo.cms.e4.users.providers.CommonNameLP; import org.argeo.cms.e4.users.providers.MailLP; import org.argeo.cms.e4.users.providers.RoleIconLP; import org.argeo.cms.e4.users.providers.UserFilter; +import org.argeo.cms.jcr.CmsJcrUtils; +import org.argeo.cms.swt.CmsSwtUtils; import org.argeo.cms.ui.eclipse.forms.AbstractFormPart; import org.argeo.cms.ui.eclipse.forms.IManagedForm; -import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.eclipse.ui.parts.LdifUsersTable; +import org.argeo.jcr.JcrException; import org.argeo.jcr.JcrUtils; -import org.argeo.naming.LdapAttrs; +import org.argeo.osgi.transaction.WorkTransaction; +import org.argeo.util.naming.LdapAttrs; import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ToolBarManager; @@ -87,7 +85,7 @@ public class GroupEditor extends AbstractRoleEditor { @Inject private Repository repository; @Inject - private NodeInstance nodeInstance; + private CmsContext nodeInstance; // private final UserAdminWrapper userAdminWrapper; private Session groupsSession; @@ -119,9 +117,9 @@ public class GroupEditor extends AbstractRoleEditor { @Override protected void createUi(Composite parent) { try { - groupsSession = repository.login(NodeConstants.SRV_WORKSPACE); + groupsSession = repository.login(CmsConstants.SRV_WORKSPACE); } catch (RepositoryException e) { - throw new CmsException("Cannot retrieve session", e); + throw new JcrException("Cannot retrieve session", e); } // ScrolledForm form = mf.getForm(); // Composite body = form.getBody(); @@ -146,7 +144,7 @@ public class GroupEditor extends AbstractRoleEditor { // GridLayout layout = new GridLayout(5, false); GridLayout layout = new GridLayout(2, false); body.setLayout(layout); - body.setLayoutData(CmsUiUtils.fillWidth()); + body.setLayoutData(CmsSwtUtils.fillWidth()); String cn = UserAdminUtils.getProperty(group, LdapAttrs.cn.name()); createReadOnlyLT(body, "Name", cn); @@ -197,7 +195,7 @@ public class GroupEditor extends AbstractRoleEditor { // dnTxt.setText(group.getName()); // cnTxt.setText(UserAdminUtils.getProperty(group, LdapAttrs.cn.name())); descTxt.setText(UserAdminUtils.getProperty(group, LdapAttrs.description.name())); - Node workgroupHome = NodeUtils.getGroupHome(groupsSession, cn); + Node workgroupHome = CmsJcrUtils.getGroupHome(groupsSession, cn); if (workgroupHome == null) markAsWorkgroupLk.setText("Mark as workgroup"); else @@ -216,23 +214,18 @@ public class GroupEditor extends AbstractRoleEditor { boolean confirmed = MessageDialog.openConfirm(parent.getShell(), "Mark as workgroup", "Are you sure you want to mark " + cn + " as being a workgroup? "); if (confirmed) { - Node workgroupHome = NodeUtils.getGroupHome(groupsSession, cn); + Node workgroupHome = CmsJcrUtils.getGroupHome(groupsSession, cn); if (workgroupHome != null) return; // already marked as workgroup, do nothing - else - try { - // improve transaction management - userAdminWrapper.beginTransactionIfNeeded(); - nodeInstance.createWorkgroup(new LdapName(group.getName())); - setProperty(group, businessCategory, WORKGROUP); - userAdminWrapper.commitOrNotifyTransactionStateChange(); - userAdminWrapper - .notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, group)); - part.refresh(); - } catch (InvalidNameException e1) { - throw new CmsException("Cannot create Workgroup for " + group.toString(), e1); - } - + else { + // improve transaction management + userAdminWrapper.beginTransactionIfNeeded(); + nodeInstance.createWorkgroup(group.getName()); + setProperty(group, businessCategory, WORKGROUP); + userAdminWrapper.commitOrNotifyTransactionStateChange(); + userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, group)); + part.refresh(); + } } } }); @@ -287,7 +280,7 @@ public class GroupEditor extends AbstractRoleEditor { ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT); ToolBar toolBar = toolBarManager.createControl(body); - toolBar.setLayoutData(CmsUiUtils.fillWidth()); + toolBar.setLayoutData(CmsSwtUtils.fillWidth()); toolBarManager.add(action); toolBarManager.update(true); @@ -514,14 +507,15 @@ public class GroupEditor extends AbstractRoleEditor { 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 - UserTransaction transaction = userAdminWrapper.beginTransactionIfNeeded(); + WorkTransaction 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); + throw new IllegalStateException( + "Cannot commit transaction " + "after user group membership update", e); } userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, myGroup)); }