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=a41f20af5560daada24541d3a9f9a860f2445a2d;hb=f763d5bc49fa5cae85e85ca8ae69f51d10a86060;hp=9ef5afe2bb14ce2dee48964786f37710a6b5b2db;hpb=acb6a464eab2729653b3a78f1b5c72f1bc4bc4fb;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 9ef5afe2b..a41f20af5 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.ArgeoSecurityService; -import org.argeo.security.ArgeoUser; -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 final static String ID = "org.argeo.security.ui.usersView"; +public class UsersView extends ViewPart implements ArgeoNames, ArgeoTypes, + EventListener { + public final static String ID = "org.argeo.security.ui.admin.adminUsersView"; private TableViewer viewer; - private ArgeoSecurityService securityService; - - private String simpleNatureType = null; + private Session session; @Override public void createPartControl(Composite parent) { @@ -46,6 +53,7 @@ public class UsersView extends ViewPart { viewer.setContentProvider(new UsersContentProvider()); viewer.setLabelProvider(new UsersLabelProvider()); viewer.addDoubleClickListener(new ViewDoubleClickListener()); + getViewSite().setSelectionProvider(viewer); viewer.setInput(getViewSite()); } @@ -73,22 +81,39 @@ public class UsersView extends ViewPart { viewer.getTable().setFocus(); } - public void setSecurityService(ArgeoSecurityService securityService) { - this.securityService = securityService; + 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 securityService.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 +127,35 @@ 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; + Node userProfile = userHome.getNode(ARGEO_PROFILE); + 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 userProfile.hasProperty(ARGEO_FIRST_NAME) ? userProfile + .getProperty(ARGEO_FIRST_NAME).getString() : ""; + case 2: + return userProfile.hasProperty(ARGEO_LAST_NAME) ? userProfile + .getProperty(ARGEO_LAST_NAME).getString() : ""; + case 3: + return userProfile.hasProperty(ARGEO_PRIMARY_EMAIL) ? userProfile + .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 +163,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 +187,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