]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/editors/UserEditor.java
Introduce commands to manage user transaction
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / editors / UserEditor.java
index f2f233fe4f3a3f9a5613bb6d0c0e15dd595d8f78..485956b9a3cb504f046cb6c278992e6e8be8d8d3 100644 (file)
  */
 package org.argeo.security.ui.admin.editors;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.transaction.UserTransaction;
+
 import org.argeo.ArgeoException;
 import org.argeo.security.ui.admin.SecurityAdminImages;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
@@ -24,6 +29,7 @@ import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.forms.editor.FormEditor;
+import org.osgi.service.useradmin.Authorization;
 import org.osgi.service.useradmin.Role;
 import org.osgi.service.useradmin.User;
 import org.osgi.service.useradmin.UserAdmin;
@@ -37,6 +43,7 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
 
        /* DEPENDENCY INJECTION */
        private UserAdmin userAdmin;
+       private UserTransaction userTransaction;
 
        // Context
        private User user;
@@ -61,6 +68,19 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
                                : SecurityAdminImages.ICON_USER);
        }
 
+       protected List<User> getFlatGroups() {
+               Authorization currAuth = userAdmin.getAuthorization(user);
+               String[] roles = currAuth.getRoles();
+
+               List<User> groups = new ArrayList<User>();
+               for (String roleStr : roles) {
+                       User currRole = (User) userAdmin.getRole(roleStr);
+                       if (!groups.contains(currRole))
+                               groups.add(currRole);
+               }
+               return groups;
+       }
+
        /** Exposes the user (or group) that is displayed by the current editor */
        protected User getDisplayedUser() {
                return user;
@@ -72,12 +92,10 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
 
        protected void addPages() {
                try {
-
                        if (user.getType() == Role.GROUP)
                                addPage(new GroupMainPage(this, userAdmin));
                        else
                                addPage(new UserMainPage(this, userAdmin));
-
                } catch (Exception e) {
                        throw new ArgeoException("Cannot add pages", e);
                }
@@ -101,6 +119,12 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
        public void doSave(IProgressMonitor monitor) {
                commitPages(true);
                firePropertyChange(PROP_DIRTY);
+               // FIXME transaction should be managed at a higher level
+               // try {
+               // userTransaction.commit();
+               // } catch (Exception e) {
+               // throw new ArgeoException("Could not save user editor", e);
+               // }
        }
 
        @Override
@@ -125,4 +149,9 @@ public class UserEditor extends FormEditor implements UserAdminConstants {
        public void setUserAdmin(UserAdmin userAdmin) {
                this.userAdmin = userAdmin;
        }
+
+       public void setUserTransaction(UserTransaction userTransaction) {
+               this.userTransaction = userTransaction;
+       }
+
 }
\ No newline at end of file