1 package org.argeo.people.ui.providers;
2
3 import javax.jcr.Node;
4 import javax.jcr.Property;
5 import javax.jcr.RepositoryException;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9 import org.argeo.connect.ui.ConnectUiConstants;
10 import org.argeo.connect.util.ConnectJcrUtils;
11 import org.argeo.connect.util.ConnectUtils;
12 import org.argeo.eclipse.ui.EclipseUiUtils;
13 import org.argeo.people.PeopleException;
14 import org.argeo.people.PeopleNames;
15 import org.eclipse.jface.viewers.ColumnLabelProvider;
16
17
18
19
20 public class GroupLabelProvider extends ColumnLabelProvider implements PeopleNames {
21 private final static Log log = LogFactory.getLog(GroupLabelProvider.class);
22
23 private static final long serialVersionUID = 9156065705311297011L;
24 private final int listType;
25
26 public GroupLabelProvider(int listType) {
27 this.listType = listType;
28 }
29
30 @Override
31 public String getText(Object element) {
32 Node entity = (Node) element;
33 String result;
34 switch (listType) {
35 case ConnectUiConstants.LIST_TYPE_OVERVIEW_TITLE:
36 result = getOverviewTitle(entity);
37 break;
38
39
40
41 case ConnectUiConstants.LIST_TYPE_SMALL:
42 result = getOneLineLabel(entity);
43 break;
44
45
46
47 default:
48 throw new PeopleException("Undefined list type - Unable to provide text for group");
49 }
50 return ConnectUtils.replaceAmpersand(result);
51 }
52
53 private String getOverviewTitle(Node entity) {
54 try {
55 StringBuilder builder = new StringBuilder();
56 builder.append("<span style='font-size:15px;'>");
57
58 builder.append("<b><big> ");
59 builder.append(ConnectJcrUtils.get(entity, Property.JCR_TITLE));
60 builder.append("</big></b>");
61
62 if (entity.hasNode(PEOPLE_MEMBERS)) {
63
64 long start = System.currentTimeMillis();
65 int membersNb = -1;
66
67 long end = System.currentTimeMillis();
68
69 if (log.isDebugEnabled())
70 log.debug("Counted " + membersNb + " members in " + (end - start) + " ms");
71
72 builder.append("<i>(").append(membersNb).append(" members)</i>");
73 }
74
75 String desc = ConnectJcrUtils.get(entity, Property.JCR_DESCRIPTION);
76 if (EclipseUiUtils.notEmpty(desc))
77 builder.append("<br />").append(desc);
78 builder.append("</span>");
79 return builder.toString();
80 } catch (RepositoryException e) {
81 throw new PeopleException("Unable to get text for link", e);
82 }
83
84 }
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 private String getOneLineLabel(Node entity) {
105
106 StringBuilder builder = new StringBuilder();
107 builder.append("<b>");
108 builder.append(ConnectJcrUtils.get(entity, Property.JCR_TITLE));
109 builder.append("</b>");
110
111
112
113
114
115
116
117 return builder.toString();
118
119
120
121
122 }
123
124 }