]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UiAdminUtils.java
Improve user admin configuration
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / UiAdminUtils.java
1 package org.argeo.security.ui.admin.internal;
2
3 import java.security.AccessController;
4 import java.security.Principal;
5
6 import javax.security.auth.Subject;
7 import javax.security.auth.x500.X500Principal;
8 import javax.transaction.Status;
9 import javax.transaction.UserTransaction;
10
11 import org.argeo.ArgeoException;
12 import org.eclipse.ui.IWorkbenchWindow;
13 import org.eclipse.ui.PlatformUI;
14 import org.eclipse.ui.services.ISourceProviderService;
15 import org.osgi.service.useradmin.Role;
16 import org.osgi.service.useradmin.User;
17
18 /** First effort to centralize back end methods used by the user admin UI */
19 public class UiAdminUtils {
20 public final static String getUsername() {
21 Subject subject = Subject.getSubject(AccessController.getContext());
22 Principal principal = subject.getPrincipals(X500Principal.class)
23 .iterator().next();
24 return principal.getName();
25
26 }
27
28 public final static String getUsername(User user) {
29 String cn = getProperty(user, UserAdminConstants.KEY_CN);
30 if (isEmpty(cn))
31 cn = getProperty(user, UserAdminConstants.KEY_UID);
32 return cn;
33 }
34
35 public final static String getProperty(Role role, String key) {
36 Object obj = role.getProperties().get(key);
37 if (obj != null)
38 return (String) obj;
39 else
40 return "";
41 }
42
43 public final static String getDefaultCn(String firstName, String lastName) {
44 return (firstName.trim() + " " + lastName.trim() + " ").trim();
45 }
46
47 /*
48 * INTERNAL METHODS: Below methods are meant to stay here and are not part
49 * of a potential generic backend to manage the useradmin
50 */
51 public final static boolean notNull(String string) {
52 if (string == null)
53 return false;
54 else
55 return !"".equals(string.trim());
56 }
57
58 public final static boolean isEmpty(String string) {
59 if (string == null)
60 return true;
61 else
62 return "".equals(string.trim());
63 }
64
65 /** Must be called from the UI Thread. */
66 public final static void beginTransactionIfNeeded(
67 UserTransaction userTransaction) {
68 try {
69 if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) {
70 userTransaction.begin();
71 notifyTransactionStateChange(userTransaction);
72 }
73 } catch (Exception e) {
74 throw new ArgeoException("Unable to begin transaction", e);
75 }
76 }
77
78 /** Easily notify the ActiveWindow that the transaction had a state change */
79 public final static void notifyTransactionStateChange(
80 UserTransaction userTransaction) {
81 try {
82 IWorkbenchWindow aww = PlatformUI.getWorkbench()
83 .getActiveWorkbenchWindow();
84 ISourceProviderService sourceProviderService = (ISourceProviderService) aww
85 .getService(ISourceProviderService.class);
86 UserTransactionProvider esp = (UserTransactionProvider) sourceProviderService
87 .getSourceProvider(UserTransactionProvider.TRANSACTION_STATE);
88 esp.setUserTransaction(userTransaction);
89 esp.fireTransactionStateChange();
90 } catch (Exception e) {
91 throw new ArgeoException("Unable to begin transaction", e);
92 }
93 }
94 }