View Javadoc
1   package org.argeo.people.ui.providers;
2   
3   import javax.jcr.Node;
4   import javax.jcr.RepositoryException;
5   
6   import org.argeo.connect.util.ConnectJcrUtils;
7   import org.argeo.connect.util.ConnectUtils;
8   import org.argeo.eclipse.ui.EclipseUiUtils;
9   import org.argeo.people.PeopleException;
10  import org.argeo.people.PeopleNames;
11  import org.argeo.people.PeopleTypes;
12  import org.argeo.people.ui.PeopleMsg;
13  import org.eclipse.jface.viewers.ColumnLabelProvider;
14  
15  /**
16   * Provide a single column label provider for person lists
17   */
18  public class RoleListLabelProvider extends ColumnLabelProvider implements PeopleNames {
19  	private static final long serialVersionUID = 1L;
20  
21  	public RoleListLabelProvider() {
22  	}
23  
24  	@Override
25  	public String getText(Object element) {
26  		try {
27  			Node node = (Node) element;
28  			Node link;
29  			if (node.isNodeType(PeopleTypes.PEOPLE_POSITION)) {
30  				link = node;
31  			} else
32  				throw new PeopleException("Unvalid node type. " + "Cannot display role information");
33  
34  			String pos = ConnectJcrUtils.get(link, PeopleNames.PEOPLE_ROLE);
35  
36  			// ROLE
37  			StringBuilder builder = new StringBuilder();
38  			if (EclipseUiUtils.notEmpty(pos))
39  				builder.append("<b>").append(pos).append("</b> <br/>");
40  
41  			// DEPARTMENT
42  			if (link.isNodeType(PeopleTypes.PEOPLE_JOB)) {
43  				String dep = ConnectJcrUtils.get(link, PeopleNames.PEOPLE_DEPARTMENT);
44  				if (EclipseUiUtils.notEmpty(dep))
45  					builder.append(PeopleMsg.department.lead() + ": ").append(dep);
46  
47  			}
48  			return ConnectUtils.replaceAmpersand(builder.toString());
49  		} catch (RepositoryException re) {
50  			throw new PeopleException("Cannot create organizations content", re);
51  		}
52  	}
53  }