X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=security%2Fplugins%2Forg.argeo.security.ui.admin%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Fviews%2FUsersView.java;h=77b718e1262648d25b5c69844780c44411a7e28b;hb=e1eb775d4434584a483498fb13dcbdf8ce200670;hp=df909b6c761b3b020e047d39b04cf2aa983929c9;hpb=183b34a3f8c0bce78bed916d413934f20522818c;p=lgpl%2Fargeo-commons.git diff --git a/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/views/UsersView.java b/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/views/UsersView.java index df909b6c7..77b718e12 100644 --- a/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/views/UsersView.java +++ b/security/plugins/org.argeo.security.ui.admin/src/main/java/org/argeo/security/ui/admin/views/UsersView.java @@ -1,11 +1,19 @@ package org.argeo.security.ui.admin.views; import java.util.ArrayList; +import java.util.List; + +import javax.jcr.Node; +import javax.jcr.NodeIterator; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.jcr.observation.EventIterator; +import javax.jcr.observation.EventListener; +import javax.jcr.query.Query; import org.argeo.ArgeoException; -import org.argeo.security.ArgeoUser; -import org.argeo.security.UserAdminService; -import org.argeo.security.nature.SimpleUserNature; +import org.argeo.jcr.ArgeoNames; +import org.argeo.jcr.ArgeoTypes; import org.argeo.security.ui.admin.SecurityAdminPlugin; import org.argeo.security.ui.admin.commands.OpenArgeoUserEditor; import org.eclipse.core.commands.Command; @@ -32,13 +40,12 @@ import org.eclipse.ui.handlers.IHandlerService; import org.eclipse.ui.part.ViewPart; /** List all users. */ -public class UsersView extends ViewPart { +public class UsersView extends ViewPart implements ArgeoNames, ArgeoTypes, + EventListener { public final static String ID = "org.argeo.security.ui.admin.adminUsersView"; private TableViewer viewer; - private UserAdminService userAdminService; - - private String simpleNatureType = null; + private Session session; @Override public void createPartControl(Composite parent) { @@ -73,22 +80,39 @@ public class UsersView extends ViewPart { viewer.getTable().setFocus(); } - public void setUserAdminService(UserAdminService userAdminService) { - this.userAdminService = userAdminService; + public void setSession(Session session) { + this.session = session; } - public void setSimpleNatureType(String simpleNatureType) { - this.simpleNatureType = simpleNatureType; + public void refresh() { + viewer.refresh(); } - public void refresh() { + @Override + public void onEvent(EventIterator events) { viewer.refresh(); } private class UsersContentProvider implements IStructuredContentProvider { public Object[] getElements(Object inputElement) { - return userAdminService.listUsers().toArray(); + try { + Query query = session + .getWorkspace() + .getQueryManager() + .createQuery( + "select [" + ARGEO_PROFILE + "] from [" + + ARGEO_USER_HOME + "]", Query.JCR_SQL2); + NodeIterator nit = query.execute().getNodes(); + List userProfiles = new ArrayList(); + while (nit.hasNext()) { + userProfiles.add(nit.nextNode()); + } + return userProfiles.toArray(); + } catch (RepositoryException e) { + throw new ArgeoException("Cannot list users", e); + } + // return userAdminService.listUsers().toArray(); } public void dispose() { @@ -102,30 +126,34 @@ public class UsersView extends ViewPart { private class UsersLabelProvider extends LabelProvider implements ITableLabelProvider { public String getColumnText(Object element, int columnIndex) { - // String currentUsername = CurrentUser.getUsername(); - String currentUsername = ""; - ArgeoUser user = (ArgeoUser) element; - SimpleUserNature simpleNature = SimpleUserNature - .findSimpleUserNature(user, simpleNatureType); - switch (columnIndex) { - case 0: - String userName = user.getUsername(); - if (userName.equals(currentUsername)) - userName = userName + "*"; - return userName; - case 1: - return simpleNature.getFirstName(); - case 2: - return simpleNature.getLastName(); - case 3: - return simpleNature.getEmail(); - default: - throw new ArgeoException("Unmanaged column " + columnIndex); + try { + Node userHome = (Node) element; + switch (columnIndex) { + case 0: + String userName = userHome.getProperty(ARGEO_USER_ID) + .getString(); + if (userName.equals(session.getUserID())) + return "[" + userName + "]"; + else + return userName; + case 1: + return userHome.getNode(ARGEO_PROFILE) + .getProperty(ARGEO_FIRST_NAME).getString(); + case 2: + return userHome.getNode(ARGEO_PROFILE) + .getProperty(ARGEO_LAST_NAME).getString(); + case 3: + return userHome.getNode(ARGEO_PROFILE) + .getProperty(ARGEO_PRIMARY_EMAIL).getString(); + default: + throw new ArgeoException("Unmanaged column " + columnIndex); + } + } catch (RepositoryException e) { + throw new ArgeoException("Cannot get text", e); } } public Image getColumnImage(Object element, int columnIndex) { - // TODO Auto-generated method stub return null; } @@ -133,16 +161,18 @@ public class UsersView extends ViewPart { class ViewDoubleClickListener implements IDoubleClickListener { public void doubleClick(DoubleClickEvent evt) { + if (evt.getSelection().isEmpty()) + return; + Object obj = ((IStructuredSelection) evt.getSelection()) .getFirstElement(); - - if (obj instanceof ArgeoUser) { - ArgeoUser argeoUser = (ArgeoUser) obj; - + if (obj instanceof Node) { IWorkbench iw = SecurityAdminPlugin.getDefault().getWorkbench(); IHandlerService handlerService = (IHandlerService) iw .getService(IHandlerService.class); try { + String username = ((Node) obj).getProperty(ARGEO_USER_ID) + .getString(); String commandId = OpenArgeoUserEditor.COMMAND_ID; String paramName = OpenArgeoUserEditor.PARAM_USERNAME; @@ -155,7 +185,7 @@ public class UsersView extends ViewPart { ArrayList parameters = new ArrayList(); IParameter iparam = cmd.getParameter(paramName); Parameterization param = new Parameterization(iparam, - argeoUser.getUsername()); + username); parameters.add(param); ParameterizedCommand pc = new ParameterizedCommand(cmd, parameters.toArray(new Parameterization[parameters