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
26 public class PeopleRapSnippets {
27
28
29
30
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
38 }
39
40
41
42
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
50 }
51
52 public static String getClickableEntityContact(PeopleService peopleService, Node entity, String label,
53 String openCmdId) {
54 try {
55
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
95 public static String getWorkAddressForList(ResourcesService resourceService,
96 PeopleWorkbenchService peopleWorkbenchService, Node contactNode, Node referencedEntity) {
97 StringBuilder builder = new StringBuilder();
98
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
105 builder.append(PeopleUiSnippets.getContactMetaData(contactNode));
106
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 }