View Javadoc
1   package org.argeo.people.e4.parts;
2   
3   import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty;
4   
5   import javax.jcr.Node;
6   import javax.jcr.Property;
7   import javax.jcr.RepositoryException;
8   
9   import org.argeo.connect.resources.ResourcesService;
10  import org.argeo.connect.ui.ConnectUiConstants;
11  import org.argeo.connect.ui.ConnectUiSnippets;
12  import org.argeo.connect.ui.ConnectWorkbenchUtils;
13  import org.argeo.connect.util.ConnectJcrUtils;
14  import org.argeo.connect.util.ConnectUtils;
15  import org.argeo.people.PeopleException;
16  import org.argeo.people.PeopleNames;
17  import org.argeo.people.PeopleService;
18  import org.argeo.people.PeopleTypes;
19  import org.argeo.people.e4.handlers.EditJob;
20  import org.argeo.people.e4.handlers.RemoveEntityReference;
21  import org.argeo.people.ui.PeopleUiSnippets;
22  import org.argeo.people.ui.PeopleWorkbenchService;
23  import org.argeo.people.util.PeopleJcrUtils;
24  
25  /** Some helper methods to generate HTML snippet */
26  public class PeopleRapSnippets {
27  
28  	/**
29  	 * Create the text value of a link that enable calling the
30  	 * <code>RemoveEntityReference</code> from a cell of a HTML list.
31  	 */
32  	public static String getRemoveReferenceSnippetForLists(Node linkNode) {
33  		String toRemoveJcrId = ConnectJcrUtils.getIdentifier(linkNode);
34  		String href = RemoveEntityReference.ID + "/" + RemoveEntityReference.PARAM_TOREMOVE_JCR_ID + "="
35  				+ toRemoveJcrId;
36  		return ConnectUiSnippets.getRWTLink(href, ConnectUiConstants.CRUD_DELETE);
37  //		return "NULL";
38  	}
39  
40  	/**
41  	 * Create the text value of a link that enable calling the
42  	 * <code>EditJob</code> command from a cell of a HTML list
43  	 */
44  	public static String getEditJobSnippetForLists(Node relevantNode, boolean isBackward) {
45  		String toEditJcrId = ConnectJcrUtils.getIdentifier(relevantNode);
46  		String href = EditJob.ID + "/" + EditJob.PARAM_RELEVANT_NODE_JCR_ID + "=" + toEditJcrId + "/"
47  				+ EditJob.PARAM_IS_BACKWARD + "=" + isBackward;
48  		return ConnectUiSnippets.getRWTLink(href, ConnectUiConstants.CRUD_EDIT);
49  //		return "NULL";
50  	}
51  
52  	public static String getClickableEntityContact(PeopleService peopleService, Node entity, String label,
53  			String openCmdId) {
54  		try {
55  			// local cache
56  			Node person = null, org = null;
57  
58  			if (entity.isNodeType(PeopleTypes.PEOPLE_PERSON)) {
59  				person = entity;
60  				Node currContact = PeopleJcrUtils.getPrimaryContact(person, PeopleTypes.PEOPLE_POSTAL_ADDRESS);
61  				if (!(currContact == null || !currContact.isNodeType(PeopleTypes.PEOPLE_CONTACT_REF))) {
62  					org = peopleService.getEntityByUid(ConnectJcrUtils.getSession(currContact), null,
63  							ConnectJcrUtils.get(currContact, PeopleNames.PEOPLE_REF_UID));
64  				}
65  			} else if (entity.isNodeType(PeopleTypes.PEOPLE_ORG))
66  				org = entity;
67  
68  			StringBuilder builder = new StringBuilder();
69  
70  			builder.append("<b>");
71  			if (notEmpty(label))
72  				builder.append(label);
73  			if (org != null) {
74  				String title = ConnectJcrUtils.get(org, Property.JCR_TITLE);
75  				String snippet = ConnectWorkbenchUtils.getOpenEditorSnippet(openCmdId, org, title);
76  				builder.append(snippet).append("<br/>");
77  			}
78  			builder.append("</b>");
79  			if (person != null) {
80  				String title = peopleService.getDisplayName(person);
81  				String snippet = ConnectWorkbenchUtils.getOpenEditorSnippet(openCmdId, person, title);
82  				builder.append(snippet).append("<br/>");
83  			}
84  
85  			String pam = PeopleUiSnippets.getEntityPhoneAndMailFormatted(entity);
86  			if (notEmpty(pam))
87  				builder.append(pam);
88  			return ConnectUtils.replaceAmpersand(builder.toString());
89  		} catch (RepositoryException re) {
90  			throw new PeopleException("Unable to create contact snippet for node " + entity, re);
91  		}
92  	}
93  
94  	/** creates the display ReadOnly HTML snippet for a work address */
95  	public static String getWorkAddressForList(ResourcesService resourceService,
96  			PeopleWorkbenchService peopleWorkbenchService, Node contactNode, Node referencedEntity) {
97  		StringBuilder builder = new StringBuilder();
98  		// the referenced org
99  		if (referencedEntity != null) {
100 			String label = ConnectWorkbenchUtils.getOpenEditorSnippet(peopleWorkbenchService.getOpenEntityEditorCmdId(),
101 					referencedEntity, ConnectJcrUtils.get(referencedEntity, Property.JCR_TITLE));
102 			builder.append(label);
103 		}
104 		// current contact meta data
105 		builder.append(PeopleUiSnippets.getContactMetaData(contactNode));
106 		// Referenced org primary address
107 		if (referencedEntity != null) {
108 			Node primaryAddress = PeopleJcrUtils.getPrimaryContact(referencedEntity, PeopleTypes.PEOPLE_POSTAL_ADDRESS);
109 			if (primaryAddress != null) {
110 				builder.append("<br />");
111 				builder.append(PeopleUiSnippets.getAddressDisplayValue(resourceService, primaryAddress));
112 			}
113 		}
114 		return ConnectUtils.replaceAmpersand(builder.toString());
115 	}
116 
117 	private PeopleRapSnippets() {
118 	}
119 }