View Javadoc
1   package org.argeo.people;
2   
3   import java.util.Collections;
4   import java.util.HashMap;
5   import java.util.Map;
6   import java.util.Map.Entry;
7   
8   /**
9    * Statically define the known contact types and corresponding default
10   * catalogues before we implement a cleaner management of such an issue
11   */
12  public class ContactValueCatalogs {
13  
14  	// Labels
15  	public final static String CONTACT_NO_VAL = "-";
16  	public final static String CONTACT_OTHER = "Other";
17  
18  	/* CONTACT NATURE */
19  	public final static String CONTACT_NATURE_PRO = "Work";
20  	public final static String CONTACT_NATURE_PRIVATE = "Home";
21  
22  	/* CONTACT TYPE */
23  	public final static String CONTACT_TYPE_EMAIL = "Email";
24  	public final static String CONTACT_TYPE_MOBILE = "Mobile";
25  	public final static String CONTACT_TYPE_PHONE = "Phone";
26  	public final static String CONTACT_TYPE_ADDRESS = "Address";
27  	public final static String CONTACT_TYPE_URL = "URL";
28  	public final static String CONTACT_TYPE_SOCIAL_MEDIA = "Social Media";
29  	public final static String CONTACT_TYPE_IMPP = "Instant Messenger";
30  	public final static String CONTACT_TYPE_FAX = "Fax";
31  
32  	/* CONTACT CATEGORIES */
33  	public final static String CONTACT_CAT_HOME = "Home";
34  
35  	// Person phones
36  	public final static String CONTACT_CAT_DIRECT = "Direct";
37  	public final static String CONTACT_CAT_STANDARD = "Standard";
38  	public final static String CONTACT_CAT_MAIN = "Main";
39  	public final static String CONTACT_CAT_VOIP = "VoIP";
40  
41  	// Person addresses
42  	public final static String CONTACT_CAT_OFFICE = "Office";
43  	public final static String CONTACT_CAT_SECONDARY = "Secondary";
44  	public final static String CONTACT_CAT_DELIVERY = "Delivery";
45  	public final static String CONTACT_CAT_INVOICE = "Invoice";
46  
47  	// Org addresses
48  	public final static String CONTACT_CAT_HEADOFFICE = "Head Office";
49  	public final static String CONTACT_CAT_SECOFFICE = "Secondary Office";
50  	public final static String CONTACT_CAT_BILLING = "Billing Adress";
51  	public final static String CONTACT_CAT_PUBLIC_ENTRANCE = "Public Entrance";
52  
53  	// Social Media
54  	public final static String CONTACT_CAT_FACEBOOK = "Facebook";
55  	public final static String CONTACT_CAT_GOOGLEPLUS = "Google+";
56  	public final static String CONTACT_CAT_LINKEDIN = "LinkedIn";
57  	public final static String CONTACT_CAT_TWITTER = "Twitter";
58  	public final static String CONTACT_CAT_XING = "Xing";
59  	public final static String CONTACT_CAT_YOUTUBE = "Youtube";
60  	public final static String CONTACT_CAT_VIMEO = "Vimeo";
61  	public final static String CONTACT_CAT_FLICKR = "Flickr";
62  	public final static String CONTACT_CAT_FOURSQUARE = "Foursquare";
63  	public final static String CONTACT_CAT_INSTAGRAM = "Instagram";
64  
65  	// IMPP
66  	public final static String CONTACT_CAT_SKYPE = "Skype";
67  	public final static String CONTACT_CAT_MSN = "MSN";
68  	public final static String CONTACT_CAT_ICQ = "ICQ";
69  	public final static String CONTACT_CAT_AIM = "Aim";
70  	public final static String CONTACT_CAT_YAHOO = "Yahoo";
71  	public final static String CONTACT_CAT_GOOGLE_TALK = "Google Talk";
72  
73  	/* CONTACT TYPE */
74  	// Contact categories: maps corresponding node types with a label
75  	public static final Map<String, String> MAPS_CONTACT_TYPES;
76  	static {
77  		Map<String, String> tmpMap = new HashMap<String, String>();
78  		tmpMap.put(PeopleTypes.PEOPLE_MAIL, CONTACT_TYPE_EMAIL);
79  		tmpMap.put(PeopleTypes.PEOPLE_MOBILE, CONTACT_TYPE_MOBILE);
80  		tmpMap.put(PeopleTypes.PEOPLE_TELEPHONE_NUMBER, CONTACT_TYPE_PHONE);
81  		tmpMap.put(PeopleTypes.PEOPLE_POSTAL_ADDRESS, CONTACT_TYPE_ADDRESS);
82  		tmpMap.put(PeopleTypes.PEOPLE_URL, CONTACT_TYPE_URL);
83  		tmpMap.put(PeopleTypes.PEOPLE_SOCIAL_MEDIA, CONTACT_TYPE_SOCIAL_MEDIA);
84  		tmpMap.put(PeopleTypes.PEOPLE_IMPP, CONTACT_TYPE_IMPP);
85  		tmpMap.put(PeopleTypes.PEOPLE_FAX, CONTACT_TYPE_FAX);
86  		MAPS_CONTACT_TYPES = Collections.unmodifiableMap(tmpMap);
87  	}
88  
89  	// Corresponding array for various lists
90  	public static final String[] ARRAY_CONTACT_NATURES = { CONTACT_NATURE_PRO, CONTACT_NATURE_PRIVATE };
91  
92  	public static final String[] ARRAY_CONTACT_TYPES = { CONTACT_TYPE_EMAIL, CONTACT_TYPE_MOBILE, CONTACT_TYPE_PHONE,
93  			CONTACT_TYPE_ADDRESS, CONTACT_TYPE_SOCIAL_MEDIA, CONTACT_TYPE_URL, CONTACT_TYPE_IMPP, CONTACT_TYPE_FAX };
94  
95  	// Person private phones
96  	public static final String[] ARRAY_PERSON_PRIVATE_PHONES = { CONTACT_CAT_HOME, CONTACT_OTHER };
97  
98  	// Person professional phones
99  	public static final String[] ARRAY_PERSON_PRO_PHONES = { CONTACT_CAT_DIRECT, CONTACT_CAT_STANDARD, CONTACT_OTHER };
100 
101 	// Org phones
102 	public static final String[] ARRAY_ORG_PHONES = { CONTACT_CAT_MAIN, CONTACT_CAT_STANDARD, CONTACT_CAT_VOIP,
103 			CONTACT_OTHER };
104 
105 	// Mobile phones
106 	public static final String[] ARRAY_MOBILES = { CONTACT_CAT_MAIN, CONTACT_OTHER };
107 
108 	// Fax numbers
109 	public static final String[] ARRAY_FAXES = { CONTACT_CAT_MAIN, CONTACT_OTHER };
110 
111 	// Person addresses
112 	public static final String[] ARRAY_PERSON_WORK_ADDRESSES = { CONTACT_CAT_HEADOFFICE, CONTACT_CAT_SECOFFICE,
113 			CONTACT_CAT_BILLING, CONTACT_CAT_DELIVERY, CONTACT_CAT_PUBLIC_ENTRANCE, CONTACT_OTHER };
114 
115 	public static final String[] ARRAY_PERSON_HOME_ADDRESSES = { CONTACT_CAT_MAIN, CONTACT_CAT_SECONDARY,
116 			CONTACT_CAT_DELIVERY, CONTACT_CAT_INVOICE, CONTACT_OTHER };
117 
118 	// Org adresses
119 	public static final String[] ARRAY_ORG_ADDRESSES = { CONTACT_CAT_HEADOFFICE, CONTACT_CAT_SECOFFICE,
120 			CONTACT_CAT_BILLING, CONTACT_CAT_DELIVERY, CONTACT_CAT_PUBLIC_ENTRANCE, CONTACT_OTHER };
121 
122 	// Social Media
123 	public static final String[] ARRAY_SOCIAL_MEDIA = { CONTACT_CAT_FACEBOOK, CONTACT_CAT_GOOGLEPLUS,
124 			CONTACT_CAT_LINKEDIN, CONTACT_CAT_TWITTER, CONTACT_CAT_XING, CONTACT_CAT_YOUTUBE, CONTACT_CAT_VIMEO,
125 			CONTACT_CAT_FLICKR, CONTACT_CAT_FOURSQUARE, CONTACT_CAT_INSTAGRAM, CONTACT_OTHER };
126 
127 	// IMPP
128 	public static final String[] ARRAY_IMPP = { CONTACT_CAT_SKYPE, CONTACT_CAT_MSN, CONTACT_CAT_ICQ, CONTACT_CAT_AIM,
129 			CONTACT_CAT_YAHOO, CONTACT_CAT_GOOGLE_TALK, CONTACT_OTHER };
130 
131 	/**
132 	 * Provides the key for a given value. we assume it is a bijection each
133 	 * value is only linked to one key
134 	 */
135 	public static <T, E> T getKeyByValue(Map<T, E> map, E value) {
136 		for (Entry<T, E> entry : map.entrySet()) {
137 			if (value.equals(entry.getValue())) {
138 				return entry.getKey();
139 			}
140 		}
141 		return null;
142 	}
143 }