1 package org.argeo.people.core;
2
3 import static org.argeo.people.ContactValueCatalogs.ARRAY_ORG_PHONES;
4
5 import java.awt.Image;
6
7 import javax.jcr.Node;
8 import javax.jcr.RepositoryException;
9
10 import org.argeo.connect.util.ConnectJcrUtils;
11 import org.argeo.people.ContactService;
12 import org.argeo.people.ContactValueCatalogs;
13 import org.argeo.people.PeopleException;
14 import org.argeo.people.PeopleNames;
15 import org.argeo.people.PeopleTypes;
16
17
18
19
20
21
22 public class ContactServiceImpl implements ContactService, PeopleNames {
23
24 public ContactServiceImpl() {
25 }
26
27 @Override
28 public String[] getKnownContactTypes() {
29 return PeopleTypes.KNOWN_CONTACT_TYPES;
30 }
31
32 @Override
33 public String[] getKnownContactLabels() {
34 return ContactValueCatalogs.ARRAY_CONTACT_TYPES;
35 }
36
37 @Override
38 public String[] getContactTypeLabels(Node entity) {
39 if (ConnectJcrUtils.isNodeType(entity, PeopleTypes.PEOPLE_PERSON)
40 || ConnectJcrUtils.isNodeType(entity, PeopleTypes.PEOPLE_ORG))
41 return ContactValueCatalogs.ARRAY_CONTACT_TYPES;
42 else
43 return null;
44 }
45
46 @Override
47 public String[] getContactPossibleCategories(Node contact) {
48 try {
49
50 Node entity = contact.getParent().getParent();
51 boolean isPro = contact.isNodeType(PeopleTypes.PEOPLE_CONTACT_REF);
52
53 if (contact.isNodeType(PeopleTypes.PEOPLE_PHONE)) {
54 if (entity.isNodeType(PeopleTypes.PEOPLE_PERSON)) {
55 if (isPro)
56 return ContactValueCatalogs.ARRAY_PERSON_PRO_PHONES;
57 else
58 return ContactValueCatalogs.ARRAY_PERSON_PRIVATE_PHONES;
59 } else if (entity.isNodeType(PeopleTypes.PEOPLE_ORG))
60 return ContactValueCatalogs.ARRAY_ORG_PHONES;
61 } else if (contact.isNodeType(PeopleTypes.PEOPLE_POSTAL_ADDRESS)) {
62 if (entity.isNodeType(PeopleTypes.PEOPLE_PERSON))
63 if (isPro)
64 return ContactValueCatalogs.ARRAY_PERSON_WORK_ADDRESSES;
65 else
66 return ContactValueCatalogs.ARRAY_PERSON_HOME_ADDRESSES;
67 else if (entity.isNodeType(PeopleTypes.PEOPLE_ORG))
68 return ContactValueCatalogs.ARRAY_ORG_ADDRESSES;
69 } else if (contact.isNodeType(PeopleTypes.PEOPLE_SOCIAL_MEDIA))
70 return ContactValueCatalogs.ARRAY_SOCIAL_MEDIA;
71 else if (contact.isNodeType(PeopleTypes.PEOPLE_IMPP))
72 return ContactValueCatalogs.ARRAY_IMPP;
73 return new String[0];
74 } catch (RepositoryException re) {
75 throw new PeopleException("Unable to get category list for " + contact, re);
76 }
77 }
78
79 @Override
80 public String[] getContactCategories(String contactableType, String contactType, boolean isPro) {
81
82 if (PeopleTypes.PEOPLE_TELEPHONE_NUMBER.equals(contactType)) {
83 if (PeopleTypes.PEOPLE_PERSON.equals(contactableType)) {
84 if (isPro)
85 return ContactValueCatalogs.ARRAY_PERSON_PRO_PHONES;
86 else
87 return ContactValueCatalogs.ARRAY_PERSON_PRIVATE_PHONES;
88 } else if (PeopleTypes.PEOPLE_ORG.equals(contactableType))
89 return ARRAY_ORG_PHONES;
90 } else if (PeopleTypes.PEOPLE_MOBILE.equals(contactType)) {
91 return ContactValueCatalogs.ARRAY_MOBILES;
92 } else if (PeopleTypes.PEOPLE_FAX.equals(contactType)) {
93 return ContactValueCatalogs.ARRAY_FAXES;
94 } else if (PeopleTypes.PEOPLE_POSTAL_ADDRESS.equals(contactType)) {
95 if (PeopleTypes.PEOPLE_PERSON.equals(contactableType)) {
96 if (isPro)
97 return ContactValueCatalogs.ARRAY_PERSON_WORK_ADDRESSES;
98 else
99 return ContactValueCatalogs.ARRAY_PERSON_HOME_ADDRESSES;
100 } else if (PeopleTypes.PEOPLE_ORG.equals(contactableType))
101 return ContactValueCatalogs.ARRAY_ORG_ADDRESSES;
102 } else if (PeopleTypes.PEOPLE_SOCIAL_MEDIA.equals(contactType))
103 return ContactValueCatalogs.ARRAY_SOCIAL_MEDIA;
104 else if (PeopleTypes.PEOPLE_IMPP.equals(contactType))
105 return ContactValueCatalogs.ARRAY_IMPP;
106 return null;
107 }
108
109 @Override
110 public Image getContactIcon(Node contact) {
111 return null;
112 }
113 }