1 package org.argeo.people.e4;
2
3 import javax.jcr.Node;
4 import javax.jcr.Property;
5 import javax.jcr.RepositoryException;
6
7 import org.argeo.connect.UserAdminService;
8 import org.argeo.connect.e4.AppE4Service;
9 import org.argeo.connect.resources.ResourcesService;
10 import org.argeo.connect.ui.ConnectImages;
11 import org.argeo.connect.util.ConnectJcrUtils;
12 import org.argeo.people.ContactValueCatalogs;
13 import org.argeo.people.PeopleException;
14 import org.argeo.people.PeopleService;
15 import org.argeo.people.PeopleTypes;
16 import org.argeo.people.ui.PeopleWorkbenchService;
17 import org.argeo.people.ui.dialogs.NewOrgWizard;
18 import org.argeo.people.ui.dialogs.NewUserWizard;
19 import org.eclipse.jface.wizard.Wizard;
20 import org.eclipse.swt.graphics.Image;
21
22
23
24
25
26
27 public class PeopleE4Service implements PeopleWorkbenchService, AppE4Service {
28 private UserAdminService userAdminService;
29 private PeopleService peopleService;
30 private ResourcesService resourcesService;
31
32 @Override
33 public String getEntityEditorId(Node curNode) {
34 try {
35 if (curNode.isNodeType(PeopleTypes.PEOPLE_MAILING_LIST)) {
36
37 } else if (curNode.isNodeType(PeopleTypes.PEOPLE_PERSON)) {
38 return "org.argeo.suite.e4.partdescriptor.personEditor";
39 } else if (curNode.isNodeType(PeopleTypes.PEOPLE_ORG)) {
40 return "org.argeo.suite.e4.partdescriptor.orgEditor";
41 } else
42 return null;
43 } catch (RepositoryException re) {
44 throw new PeopleException("Unable to open editor for node", re);
45 }
46 return null;
47 }
48
49 @Override
50 public String getSearchEntityEditorId(String nodeType) {
51 if (PeopleTypes.PEOPLE_PERSON.equals(nodeType) || PeopleTypes.PEOPLE_ORG.equals(nodeType)
52 || PeopleTypes.PEOPLE_MAILING_LIST.equals(nodeType))
53 return "org.argeo.suite.e4.partdescriptor.searchEntityPart";
54 return null;
55 }
56
57 @Override
58 public Image getIconForType(Node entity) {
59 try {
60 if (entity.isNodeType(PeopleTypes.PEOPLE_PERSON))
61 return ConnectImages.PERSON;
62 else if (entity.isNodeType(PeopleTypes.PEOPLE_ORG))
63 return ConnectImages.ORG;
64 else if (entity.isNodeType(PeopleTypes.PEOPLE_MAILING_LIST))
65 return ConnectImages.MAILING_LIST;
66 else if (entity.isNodeType(PeopleTypes.PEOPLE_CONTACT))
67 return getContactIcon(entity);
68 else
69 return null;
70 } catch (RepositoryException re) {
71 throw new PeopleException("Unable to get image for node", re);
72 }
73 }
74
75 @Override
76 public Wizard getCreationWizard(Node node) {
77 if (ConnectJcrUtils.isNodeType(node, PeopleTypes.PEOPLE_PERSON))
78 return new NewUserWizard(node, peopleService, resourcesService);
79 else if (ConnectJcrUtils.isNodeType(node, PeopleTypes.PEOPLE_ORG))
80 return new NewOrgWizard(node, peopleService, resourcesService);
81 else
82 return null;
83
84 }
85
86
87
88
89
90 protected Image getContactIcon(Node entity) throws RepositoryException {
91 Node contactable = entity.getParent().getParent();
92 String category = ConnectJcrUtils.get(entity, Property.JCR_TITLE);
93
94
95 if (entity.isNodeType(PeopleTypes.PEOPLE_MAIL)) {
96 return ConnectImages.DEFAULT_MAIL;
97 }
98
99 else if (entity.isNodeType(PeopleTypes.PEOPLE_MOBILE))
100 return ConnectImages.MOBILE;
101 else if (entity.isNodeType(PeopleTypes.PEOPLE_FAX))
102 return ConnectImages.FAX;
103 else if (entity.isNodeType(PeopleTypes.PEOPLE_TELEPHONE_NUMBER) || entity.isNodeType(PeopleTypes.PEOPLE_PHONE))
104 return ConnectImages.DEFAULT_PHONE;
105
106 else if (entity.isNodeType(PeopleTypes.PEOPLE_POSTAL_ADDRESS)) {
107 if (contactable.isNodeType(PeopleTypes.PEOPLE_PERSON))
108 if (entity.isNodeType(PeopleTypes.PEOPLE_CONTACT_REF))
109 return ConnectImages.WORK;
110 else
111 return ConnectImages.DEFAULT_ADDRESS;
112 else
113 return ConnectImages.WORK;
114 }
115
116 else if (entity.isNodeType(PeopleTypes.PEOPLE_URL)) {
117
118 return ConnectImages.DEFAULT_URL;
119 }
120
121 else if (entity.isNodeType(PeopleTypes.PEOPLE_SOCIAL_MEDIA)) {
122 if (ContactValueCatalogs.CONTACT_CAT_GOOGLEPLUS.equals(category))
123 return ConnectImages.GOOGLEPLUS;
124 else if (ContactValueCatalogs.CONTACT_CAT_FACEBOOK.equals(category))
125 return ConnectImages.FACEBOOK;
126 else if (ContactValueCatalogs.CONTACT_CAT_LINKEDIN.equals(category))
127 return ConnectImages.LINKEDIN;
128 else if (ContactValueCatalogs.CONTACT_CAT_XING.equals(category))
129 return ConnectImages.XING;
130 return ConnectImages.DEFAULT_SOCIAL_MEDIA;
131 }
132
133 else if (entity.isNodeType(PeopleTypes.PEOPLE_IMPP)) {
134 return ConnectImages.DEFAULT_IMPP;
135 }
136 return null;
137 }
138
139 public void setUserAdminService(UserAdminService userAdminService) {
140 this.userAdminService = userAdminService;
141 }
142
143 public void setPeopleService(PeopleService peopleService) {
144 this.peopleService = peopleService;
145 }
146
147 public void setResourcesService(ResourcesService resourcesService) {
148 this.resourcesService = resourcesService;
149 }
150
151 }