X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.app.ui%2Fsrc%2Forg%2Fargeo%2Fapp%2Fui%2Fpeople%2FNewOrgForm.java;h=e39ba0a5e13901c1fd412ea42514bfbe0feedeef;hb=c27f28501458ac3be0bc85a78116d136569f148c;hp=539c23c483ed100c81193047bc30a36b5c8137cc;hpb=ac1e0c0b78f1c2fa06986f343a235331ed4f070e;p=gpl%2Fargeo-suite.git diff --git a/swt/org.argeo.app.ui/src/org/argeo/app/ui/people/NewOrgForm.java b/swt/org.argeo.app.ui/src/org/argeo/app/ui/people/NewOrgForm.java index 539c23c..e39ba0a 100644 --- a/swt/org.argeo.app.ui/src/org/argeo/app/ui/people/NewOrgForm.java +++ b/swt/org.argeo.app.ui/src/org/argeo/app/ui/people/NewOrgForm.java @@ -2,12 +2,23 @@ package org.argeo.app.ui.people; import static org.argeo.eclipse.ui.EclipseUiUtils.isEmpty; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + import org.argeo.api.acr.Content; +import org.argeo.api.acr.ldap.LdapAttr; +import org.argeo.api.acr.ldap.LdapObj; +import org.argeo.api.cms.directory.CmsGroup; import org.argeo.api.cms.directory.CmsUserManager; +import org.argeo.api.cms.directory.HierarchyUnit; import org.argeo.app.ui.SuiteMsg; import org.argeo.app.ui.SuiteUiUtils; +import org.argeo.cms.swt.dialogs.CmsFeedback; import org.argeo.cms.swt.widgets.SwtGuidedFormPage; import org.argeo.cms.ux.widgets.AbstractGuidedForm; +import org.argeo.eclipse.ui.EclipseUiUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; @@ -16,12 +27,12 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; -/** Ask first & last name. Update the passed node on finish */ +/** Form to create a new organisation. */ public class NewOrgForm extends AbstractGuidedForm { private Content hierarchyUnit; private CmsUserManager cmsUserManager; - protected Text firstNameT; + protected Text orgNameT; public NewOrgForm(CmsUserManager cmsUserManager, Content hierarchyUnit) { this.hierarchyUnit = hierarchyUnit; @@ -39,13 +50,26 @@ public class NewOrgForm extends AbstractGuidedForm { setFormTitle(SuiteMsg.orgWizardWindowTitle.lead()); } - /** - * Called when the user click on 'Finish' in the wizard. The task is then - * created and the corresponding session saved. - */ @Override public boolean performFinish() { - return false; + String orgName = orgNameT.getText(); + if (EclipseUiUtils.isEmpty(orgName)) { + CmsFeedback.show(SuiteMsg.allFieldsMustBeSet.lead()); + return false; + } else { + HierarchyUnit hu = hierarchyUnit.adapt(HierarchyUnit.class); + String dn = "cn=" + orgName + ",ou=Groups," + hu.getBase(); + + CmsGroup user = cmsUserManager.createGroup(dn); + + Map additionalProperties = new HashMap<>(); + additionalProperties.put(LdapAttr.o.name(), orgName); + + Set objectClasses = new HashSet<>(); + objectClasses.add(LdapObj.organization.name()); + cmsUserManager.addObjectClasses(user, objectClasses, additionalProperties); + return true; + } } @Override @@ -55,7 +79,7 @@ public class NewOrgForm extends AbstractGuidedForm { @Override public boolean canFinish() { - String firstName = firstNameT.getText(); + String firstName = orgNameT.getText(); if (isEmpty(firstName)) { return false; } else @@ -74,9 +98,9 @@ public class NewOrgForm extends AbstractGuidedForm { // FirstName SuiteUiUtils.createBoldLabel(parent, SuiteMsg.org); - firstNameT = new Text(parent, SWT.BORDER); + orgNameT = new Text(parent, SWT.BORDER); // firstNameTxt.setMessage("a first name"); - firstNameT.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); + orgNameT.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); ModifyListener ml = new ModifyListener() { private static final long serialVersionUID = 1939491923843870844L; @@ -87,9 +111,9 @@ public class NewOrgForm extends AbstractGuidedForm { } }; - firstNameT.addModifyListener(ml); + orgNameT.addModifyListener(ml); - firstNameT.setFocus(); + orgNameT.setFocus(); } } }