1 package org.argeo.people.ui.providers;
2
3 import javax.jcr.Node;
4
5 import org.argeo.connect.UserAdminService;
6 import org.argeo.connect.ui.util.JcrRowLabelProvider;
7 import org.argeo.connect.util.ConnectJcrUtils;
8 import org.argeo.connect.util.ConnectUtils;
9 import org.argeo.eclipse.ui.EclipseUiUtils;
10 import org.argeo.people.PeopleException;
11
12
13
14
15
16
17
18 public class JcrUserHtmlLabelProvider extends JcrRowLabelProvider {
19 private static final long serialVersionUID = 2134911527741337612L;
20
21 private final UserAdminService userAdminService;
22 private String selectorName;
23 private String propertyName;
24
25 public JcrUserHtmlLabelProvider(UserAdminService userAdminService, String selectorName, String propertyName) {
26 super(propertyName);
27 this.propertyName = propertyName;
28 this.userAdminService = userAdminService;
29 if (EclipseUiUtils.notEmpty(selectorName))
30 this.selectorName = selectorName;
31 }
32
33 public JcrUserHtmlLabelProvider(UserAdminService userAdminService, String propertyName) {
34 super(propertyName);
35 this.userAdminService = userAdminService;
36 }
37
38 @Override
39 public String getText(Object element) {
40 Node currNode = ConnectJcrUtils.getNodeFromElement(element, selectorName);
41 try {
42 String userId = super.getText(currNode);
43 String displayName = null;
44 if (EclipseUiUtils.notEmpty(userId))
45 displayName = userAdminService.getUserDisplayName(userId);
46 if (EclipseUiUtils.isEmpty(displayName))
47 displayName = userId;
48 return ConnectUtils.replaceAmpersand(displayName);
49 } catch (Exception e) {
50 throw new PeopleException("Unable to get display name for prop: " + propertyName + " of " + currNode, e);
51 }
52 }
53 }