1 package org
.argeo
.security
.ui
.admin
.commands
;
3 import java
.util
.Iterator
;
5 import java
.util
.TreeMap
;
8 import javax
.jcr
.RepositoryException
;
9 import javax
.jcr
.Session
;
11 import org
.apache
.commons
.logging
.Log
;
12 import org
.apache
.commons
.logging
.LogFactory
;
13 import org
.argeo
.ArgeoException
;
14 import org
.argeo
.jcr
.ArgeoNames
;
15 import org
.argeo
.jcr
.JcrUtils
;
16 import org
.argeo
.security
.UserAdminService
;
17 import org
.argeo
.security
.ui
.admin
.views
.UsersView
;
18 import org
.eclipse
.core
.commands
.AbstractHandler
;
19 import org
.eclipse
.core
.commands
.ExecutionEvent
;
20 import org
.eclipse
.core
.commands
.ExecutionException
;
21 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
22 import org
.eclipse
.jface
.viewers
.ISelection
;
23 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
24 import org
.eclipse
.ui
.handlers
.HandlerUtil
;
26 /** Deletes the select user nodes */
27 public class DeleteUser
extends AbstractHandler
{
28 private final static Log log
= LogFactory
.getLog(DeleteUser
.class);
30 private UserAdminService userAdminService
;
32 @SuppressWarnings("unchecked")
33 public Object
execute(ExecutionEvent event
) throws ExecutionException
{
34 ISelection selection
= HandlerUtil
.getCurrentSelection(event
);
35 if (selection
.isEmpty())
38 Map
<String
, Node
> toDelete
= new TreeMap
<String
, Node
>();
39 Iterator
<Node
> it
= ((IStructuredSelection
) selection
).iterator();
40 nodes
: while (it
.hasNext()) {
41 Node profileNode
= it
.next();
43 String userName
= profileNode
.getProperty(
44 ArgeoNames
.ARGEO_USER_ID
).getString();
45 if (userName
.equals(profileNode
.getSession().getUserID())) {
46 log
.warn("Cannot delete its own user: " + userName
);
49 toDelete
.put(userName
, profileNode
);
50 } catch (RepositoryException e
) {
51 log
.warn("Cannot interpred user " + profileNode
);
57 HandlerUtil
.getActiveShell(event
),
59 "Are you sure that you want to delete users "
62 + "This may lead to inconsistencies in the application."))
65 for (String username
: toDelete
.keySet()) {
66 Session session
= null;
68 Node profileNode
= toDelete
.get(username
);
69 userAdminService
.deleteUser(username
);
70 profileNode
.getParent().remove();
71 session
= profileNode
.getSession();
73 } catch (RepositoryException e
) {
74 JcrUtils
.discardQuietly(session
);
75 throw new ArgeoException("Cannot list users", e
);
79 userAdminService
.synchronize();
80 UsersView view
= (UsersView
) HandlerUtil
81 .getActiveWorkbenchWindow(event
).getActivePage()
82 .findView(UsersView
.ID
);
87 public void setUserAdminService(UserAdminService userAdminService
) {
88 this.userAdminService
= userAdminService
;