]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/wizards/MainUserInfoWizardPage.java
Fix various RAP lifecycle issues
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui.admin / src / main / java / org / argeo / security / ui / admin / wizards / MainUserInfoWizardPage.java
1 package org.argeo.security.ui.admin.wizards;
2
3 import javax.jcr.Node;
4 import javax.jcr.Property;
5 import javax.jcr.RepositoryException;
6
7 import org.argeo.ArgeoException;
8 import org.argeo.eclipse.ui.EclipseUiUtils;
9 import org.argeo.jcr.ArgeoNames;
10 import org.argeo.security.UserAdminService;
11 import org.eclipse.jface.wizard.WizardPage;
12 import org.eclipse.swt.SWT;
13 import org.eclipse.swt.events.ModifyEvent;
14 import org.eclipse.swt.events.ModifyListener;
15 import org.eclipse.swt.layout.GridLayout;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.swt.widgets.Text;
18
19 public class MainUserInfoWizardPage extends WizardPage implements
20 ModifyListener, ArgeoNames {
21 private Text username, firstName, lastName, primaryEmail, password1,
22 password2;
23
24 public MainUserInfoWizardPage() {
25 super("Main");
26 setTitle("Required Information");
27 }
28
29 @Override
30 public void createControl(Composite parent) {
31 Composite composite = new Composite(parent, SWT.NONE);
32 composite.setLayout(new GridLayout(2, false));
33 username = EclipseUiUtils.createGridLT(composite, "Username", this);
34 primaryEmail = EclipseUiUtils.createGridLT(composite, "Email", this);
35 firstName = EclipseUiUtils.createGridLT(composite, "First name", this);
36 lastName = EclipseUiUtils.createGridLT(composite, "Last name", this);
37 password1 = EclipseUiUtils.createGridLP(composite, "Password", this);
38 password2 = EclipseUiUtils.createGridLP(composite, "Repeat password",
39 this);
40 setControl(composite);
41 }
42
43 @Override
44 public void modifyText(ModifyEvent event) {
45 String message = checkComplete();
46 if (message != null)
47 setMessage(message, WizardPage.ERROR);
48 else {
49 setMessage("Complete", WizardPage.INFORMATION);
50 setPageComplete(true);
51 }
52 }
53
54 /** @return error message or null if complete */
55 protected String checkComplete() {
56 if (!username.getText().matches(UserAdminService.USERNAME_PATTERN))
57 return "Wrong user name format, should be lower case, between 3 and 15 characters with only '_' as acceptable special character.";
58 if (!primaryEmail.getText().matches(UserAdminService.EMAIL_PATTERN))
59 return "Not a valid email address";
60 if (firstName.getText().trim().equals(""))
61 return "Specify a first name";
62 if (lastName.getText().trim().equals(""))
63 return "Specify a last name";
64 if (password1.getText().trim().equals(""))
65 return "Specify a password";
66 if (password2.getText().trim().equals(""))
67 return "Repeat the password";
68 if (!password2.getText().equals(password1.getText()))
69 return "Passwords are different";
70 return null;
71 }
72
73 public String getUsername() {
74 return username.getText();
75 }
76
77 public String getPassword() {
78 return password1.getText();
79 }
80
81 public void mapToProfileNode(Node up) {
82 try {
83 up.setProperty(ARGEO_PRIMARY_EMAIL, primaryEmail.getText());
84 up.setProperty(ARGEO_FIRST_NAME, firstName.getText());
85 up.setProperty(ARGEO_LAST_NAME, lastName.getText());
86
87 // derived values
88 // TODO add wizard pages to do it
89 up.setProperty(Property.JCR_TITLE, firstName.getText() + " "
90 + lastName.getText());
91 up.setProperty(Property.JCR_DESCRIPTION, "");
92 } catch (RepositoryException e) {
93 throw new ArgeoException("Cannot map to " + up, e);
94 }
95 }
96 }