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.argeo.connect.resources.ResourcesService;
8 import org.argeo.connect.ui.ConnectUiConstants;
9 import org.argeo.connect.ui.ConnectWorkbenchUtils;
10 import org.argeo.connect.ui.SystemWorkbenchService;
11 import org.argeo.connect.util.ConnectJcrUtils;
12 import org.argeo.connect.util.ConnectUtils;
13 import org.argeo.eclipse.ui.EclipseUiUtils;
14 import org.argeo.people.PeopleException;
15 import org.argeo.people.PeopleNames;
16 import org.argeo.people.PeopleService;
17 import org.argeo.people.PeopleTypes;
18 import org.argeo.people.ui.PeopleUiSnippets;
19 import org.eclipse.jface.viewers.ColumnLabelProvider;
20
21
22 public class OrgOverviewLabelProvider extends ColumnLabelProvider {
23 private static final long serialVersionUID = -7687462900742079263L;
24
25 private final ResourcesService resourcesService;
26 private final PeopleService peopleService;
27 private final SystemWorkbenchService systemWorkbenchService;
28
29 private boolean isSmallList;
30
31 public OrgOverviewLabelProvider(boolean isSmallList, ResourcesService resourcesService, PeopleService peopleService,
32 SystemWorkbenchService systemWorkbenchService) {
33 this.isSmallList = isSmallList;
34 this.resourcesService = resourcesService;
35 this.peopleService = peopleService;
36 this.systemWorkbenchService = systemWorkbenchService;
37 }
38
39 @Override
40 public String getText(Object element) {
41 try {
42 Node node = (Node) element;
43 Node orga;
44 if (node.isNodeType(PeopleTypes.PEOPLE_ORG))
45 orga = node;
46 else if (node.isNodeType(PeopleTypes.PEOPLE_JOB)) {
47 orga = peopleService.getEntityByUid(node.getSession(), null,
48 node.getProperty(PeopleNames.PEOPLE_REF_UID).getString());
49
50 if (orga == null)
51 return "Broken link. This organisation does not exist anymore. " + "It should have been deleted.";
52 } else
53 throw new PeopleException("Unvalid node type. " + "Cannot display org information");
54
55 StringBuilder builder = new StringBuilder();
56
57 if (isSmallList)
58 builder.append("<span>");
59 else
60 builder.append("<span " + ConnectUiConstants.ENTITY_HEADER_INNER_CSS_STYLE + " >");
61 builder.append("<big><b>");
62 builder.append(ConnectJcrUtils.get(orga, Property.JCR_TITLE));
63 builder.append("</b></big> ");
64
65 String local = PeopleUiSnippets.getLocalisationInfo(resourcesService, peopleService, orga);
66 if (EclipseUiUtils.notEmpty(local))
67 builder.append(local);
68
69 builder.append("<br/>");
70
71 String tmpStr;
72 tmpStr = PeopleUiSnippets.getPrimaryContacts(orga);
73 if (EclipseUiUtils.notEmpty(tmpStr)) {
74 builder.append(tmpStr).append("<br/>");
75 }
76
77 if (isSmallList) {
78 tmpStr = ConnectWorkbenchUtils.getTags(resourcesService, systemWorkbenchService, orga);
79 if (EclipseUiUtils.notEmpty(tmpStr))
80 builder.append(tmpStr);
81 }
82
83 builder.append("</span>");
84 String result = ConnectUtils.replaceAmpersand(builder.toString());
85 return result;
86 } catch (RepositoryException re) {
87 throw new PeopleException("Cannot create organizations content", re);
88 }
89 }
90 }