Rename into CMS Context
[lgpl/argeo-commons.git] / org.argeo.cms.e4 / src / org / argeo / cms / e4 / users / GroupEditor.java
index b6108600ed19bdddfb1ff9ec1fcc9724be4ec70e..a011c5f62c19c45fcdeca8ce4644ed732fe539f6 100644 (file)
@@ -1,24 +1,9 @@
-/*
- * Copyright (C) 2007-2012 Argeo GmbH
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *         http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 package org.argeo.cms.e4.users;
 
-import static org.argeo.cms.util.UserAdminUtils.setProperty;
-import static org.argeo.naming.LdapAttrs.businessCategory;
-import static org.argeo.naming.LdapAttrs.description;
-import static org.argeo.node.NodeInstance.WORKGROUP;
+import static org.argeo.api.cms.CmsContext.WORKGROUP;
+import static org.argeo.cms.auth.UserAdminUtils.setProperty;
+import static org.argeo.util.naming.LdapAttrs.businessCategory;
+import static org.argeo.util.naming.LdapAttrs.description;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -30,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.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.util.CmsUtils;
-import org.argeo.cms.util.UserAdminUtils;
 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.node.NodeConstants;
-import org.argeo.node.NodeInstance;
-import org.argeo.node.NodeUtils;
+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;
@@ -102,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;
 
@@ -134,9 +117,9 @@ public class GroupEditor extends AbstractRoleEditor {
        @Override
        protected void createUi(Composite parent) {
                try {
-                       groupsSession = repository.login(NodeConstants.SRV);
+                       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();
@@ -161,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(CmsUtils.fillWidth());
+               body.setLayoutData(CmsSwtUtils.fillWidth());
 
                String cn = UserAdminUtils.getProperty(group, LdapAttrs.cn.name());
                createReadOnlyLT(body, "Name", cn);
@@ -212,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("<a>Mark as workgroup</a>");
                                else
@@ -231,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();
+                                       }
                                }
                        }
                });
@@ -302,7 +280,7 @@ public class GroupEditor extends AbstractRoleEditor {
 
                ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
                ToolBar toolBar = toolBarManager.createControl(body);
-               toolBar.setLayoutData(CmsUtils.fillWidth());
+               toolBar.setLayoutData(CmsSwtUtils.fillWidth());
 
                toolBarManager.add(action);
                toolBarManager.update(true);
@@ -529,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));
                        }
@@ -568,7 +547,7 @@ public class GroupEditor extends AbstractRoleEditor {
        // lbl.setFont(EclipseUiUtils.getBoldFont(parent));
        // Text text = toolkit.createText(parent, value, SWT.BORDER);
        // text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
-       // CmsUtils.style(text, CmsWorkbenchStyles.WORKBENCH_FORM_TEXT);
+       // CmsUiUtils.style(text, CmsWorkbenchStyles.WORKBENCH_FORM_TEXT);
        // return text;
        // }
        //
@@ -580,7 +559,7 @@ public class GroupEditor extends AbstractRoleEditor {
        // Text text = toolkit.createText(parent, value, SWT.NONE);
        // text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
        // text.setEditable(false);
-       // CmsUtils.style(text, CmsWorkbenchStyles.WORKBENCH_FORM_TEXT);
+       // CmsUiUtils.style(text, CmsWorkbenchStyles.WORKBENCH_FORM_TEXT);
        // return text;
        // }