View Javadoc
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  /** Label provider for organisation overview */
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  				// TODO manage this more cleanly
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  }