KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > sync4j > exchange > items > contact > dao > ContactDAO


1 /**
2  * Copyright (C) 2003-2005 Funambol
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  */

18
19 package sync4j.exchange.items.contact.dao;
20
21 import java.io.IOException JavaDoc;
22 import java.text.MessageFormat JavaDoc;
23 import java.util.ArrayList JavaDoc;
24 import java.util.List JavaDoc;
25
26 import sync4j.exchange.httptransport.WebDavHttpTransport;
27 import sync4j.exchange.items.contact.model.Contact;
28 import sync4j.exchange.items.common.dao.ItemDAO;
29 import sync4j.exchange.xml.XmlParseException;
30 import sync4j.exchange.xml.XmlParser;
31
32 import sync4j.exchange.util.StringTools;
33
34 import sync4j.exchange.DataAccessException;
35
36 import sync4j.foundation.pdi.contact.Address;
37 import sync4j.foundation.pdi.contact.BusinessDetail;
38 import sync4j.foundation.pdi.contact.ContactDetail;
39 import sync4j.foundation.pdi.contact.Email;
40 import sync4j.foundation.pdi.contact.Name;
41 import sync4j.foundation.pdi.contact.Note;
42 import sync4j.foundation.pdi.contact.PersonalDetail;
43 import sync4j.foundation.pdi.contact.Note;
44 import sync4j.foundation.pdi.contact.Phone;
45 import sync4j.foundation.pdi.contact.Title;
46 import sync4j.foundation.pdi.contact.WebPage;
47
48 import sync4j.framework.server.store.NotFoundException;
49
50 /*
51  * This class implements methods to access contacts data
52  * in exchange server datastore
53  *
54  * @author Fabio Maggi @ Funambol
55  * @version $Id: ContactDAO.java,v 1.22 2005/06/27 15:08:53 fabius Exp $
56  *
57  **/

58 public class ContactDAO extends ItemDAO {
59
60     //---------------------------------------------------------------- Constants
61

62     private static final String JavaDoc TAG_ANNIVERSARY
63         = "weddinganniversary" ;
64     private static final String JavaDoc TAG_BIRTHDAY = "bday" ;
65     private static final String JavaDoc TAG_CATEGORIES = "keywordsutf8" ;
66     private static final String JavaDoc TAG_CHILDREN = "childrensnames" ;
67     private static final String JavaDoc TAG_DEPARTMENT = "department" ;
68     private static final String JavaDoc TAG_FILEAS = "fileas" ;
69     public static final String JavaDoc TAG_FIRSTNAME = "givenname" ;
70     private static final String JavaDoc TAG_HOBBY = "hobbies" ;
71     private static final String JavaDoc TAG_HOME_CITY = "homecity" ;
72     private static final String JavaDoc TAG_HOME_COUNTRY = "homecountry" ;
73     private static final String JavaDoc TAG_HOME_POST_OFFICE_BOX
74         ="homepostofficebox" ;
75     private static final String JavaDoc TAG_HOME_STATE = "homestate" ;
76     private static final String JavaDoc TAG_HOME_POSTAL_CODE = "homepostalcode" ;
77     private static final String JavaDoc TAG_HOME_STREET = "homestreet" ;
78     private static final String JavaDoc TAG_IMPORTANCE = "importance" ;
79     private static final String JavaDoc TAG_INITIALS = "initials" ;
80     private static final String JavaDoc TAG_JOBTITLE = "title" ;
81     private static final String JavaDoc TAG_LANGUAGE = "language" ;
82     public static final String JavaDoc TAG_LASTNAME = "sn" ;
83     public static final String JavaDoc TAG_MIDDLENAME = "middlename" ;
84     private static final String JavaDoc TAG_MILEAGE = "mileage" ;
85     private static final String JavaDoc TAG_SUFFIX = "namesuffix" ;
86     private static final String JavaDoc TAG_NICKNAME = "nickname" ;
87     private static final String JavaDoc TAG_OFFICE_LOCATION = "roomnumber" ;
88     private static final String JavaDoc TAG_ORGANIZATION = "organization" ;
89     private static final String JavaDoc TAG_ORGANIZATION_ID_NUMBER
90         = "employeenumber" ;
91     private static final String JavaDoc TAG_OTHER_CITY = "othercity" ;
92     private static final String JavaDoc TAG_OTHER_COUNTRY = "othercountry" ;
93     private static final String JavaDoc TAG_OTHER_POSTALCODE = "otherpostalcode" ;
94     private static final String JavaDoc TAG_OTHER_POST_OFFICE_BOX
95         = "otherpostofficebox" ;
96     private static final String JavaDoc TAG_OTHER_STATE = "otherstate" ;
97     private static final String JavaDoc TAG_OTHER_STREET = "otherstreet" ;
98     private static final String JavaDoc TAG_SECRETARY = "secretarycn" ;
99     private static final String JavaDoc TAG_SENSITIVITY = "sensitivity" ;
100     private static final String JavaDoc TAG_SPOUSECN = "spousecn" ;
101     private static final String JavaDoc TAG_TITLE = "personaltitle" ;
102     private static final String JavaDoc TAG_WORK_CITY = "city" ;
103     private static final String JavaDoc TAG_WORK_COUNTRY = "country" ;
104     private static final String JavaDoc TAG_WORK_POSTALCODE = "postalcode" ;
105     private static final String JavaDoc TAG_WORK_POST_OFFICE_BOX
106         = "postofficebox" ;
107     private static final String JavaDoc TAG_WORK_STATE = "state" ;
108     private static final String JavaDoc TAG_WORK_STREET = "street" ;
109
110     private static final String JavaDoc
111         TAG_YOMI_COMPANY_NAME = "yomiorganization" ;
112     private static final String JavaDoc TAG_YOMI_FIRST_NAME = "yomilastname" ;
113     private static final String JavaDoc TAG_YOMI_LAST_NAME = "yomifirstname" ;
114
115     private static final String JavaDoc TAG_CALL_BACK_PHONE = "callbackphone" ;
116     private static final String JavaDoc
117             TAG_FAC_SIMILE_TELEPHONE_NUMBER
118             = "facsimiletelephonenumber" ;
119     private static final String JavaDoc TAG_HOME_FAX = "homefax" ;
120     private static final String JavaDoc TAG_HOME_PHONE = "homephone" ;
121     private static final String JavaDoc TAG_HOME_PHONE2 = "homephone2" ;
122     private static final String JavaDoc TAG_ISDN_NUMBER
123         = "internationalisdnnumber" ;
124     private static final String JavaDoc TAG_MANAGER = "manager" ;
125     private static final String JavaDoc TAG_MOBILE = "mobile" ;
126     private static final String JavaDoc
127            TAG_ORGANIZATION_MAIN_PHONE
128            = "organizationmainphone" ;
129     private static final String JavaDoc TAG_OTHER_FAX = "otherfax" ;
130     private static final String JavaDoc TAG_OTHER_MOBILE = "othermobile" ;
131     private static final String JavaDoc TAG_OTHER_TELEPHONE
132            = "othertelephone" ;
133     private static final String JavaDoc TAG_PAGER = "pager" ;
134     private static final String JavaDoc TAG_PROFESSION = "profession" ;
135     private static final String JavaDoc TAG_SECRETARY_PHONE = "secretaryphone" ;
136     private static final String JavaDoc TAG_TELEPHONE_NUMBER = "telephonenumber" ;
137     private static final String JavaDoc TAG_TELEPHONE_NUMBER2 = "telephonenumber2" ;
138     private static final String JavaDoc TAG_TELEX_NUMBER = "telexnumber" ;
139
140     private static final String JavaDoc TAG_COMPUTER_NETWORK_NAME
141         = "computernetworkname" ;
142
143     private static final String JavaDoc
144         TAG_BUSINESS_HOME_PAGE
145         = "businesshomepage" ;
146     private static final String JavaDoc
147             TAG_PERSONAL_HOME_PAGE
148         = "personalHomePage" ;
149
150     public static final String JavaDoc TAG_EMAIL1 = "email1" ;
151     private static final String JavaDoc TAG_EMAIL2 = "email2" ;
152     private static final String JavaDoc TAG_EMAIL3 = "email3" ;
153
154     private static final String JavaDoc TAG_EMAIL1_ADDRESS_TYPE
155         = "email1addrtype" ;
156     private static final String JavaDoc TAG_EMAIL2_ADDRESS_TYPE
157         = "email2addrtype" ;
158     private static final String JavaDoc TAG_EMAIL3_ADDRESS_TYPE
159         = "email3addrtype" ;
160
161     private static final String JavaDoc TAG_RESPONSE = "a:response" ;
162     private static final String JavaDoc TAG_REPLUID = "repluid" ;
163     private static final String JavaDoc TAG_LAST_MODIFIED = "getlastmodified" ;
164
165
166     private static final String JavaDoc WEBDAV_MSG_SELECT_CONTACTS =
167     "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
168     "<D:searchrequest xmlns:D =\"DAV:\">\n" +
169     "<D:sql>\n" +
170     "Select " +
171     "\"http://schemas.microsoft.com/repl/repl-uid\" AS repluid, " +
172     "\"urn:schemas:contacts:weddinganniversary\" AS "
173         + TAG_ANNIVERSARY + ", " +
174     "\"urn:schemas:contacts:bday\" AS " + TAG_BIRTHDAY + ", " +
175     "\"urn:schemas:contacts:childrensnames\" AS " + TAG_CHILDREN + ", " +
176     "\"urn:schemas:contacts:fileas\" AS " + TAG_FILEAS + ", " +
177     "\"urn:schemas:contacts:givenName\" AS " + TAG_FIRSTNAME + ", " +
178     "\"http://schemas.microsoft.com/exchange/keywords-utf8\" AS "
179                                                     + TAG_CATEGORIES + ", " +
180     "\"urn:schemas:contacts:hobbies\" AS " + TAG_HOBBY + ", " +
181     "\"urn:schemas:httpmail:importance\" AS " + TAG_IMPORTANCE + ", " +
182     "\"urn:schemas:contacts:initials\" AS " + TAG_INITIALS + ", " +
183     "\"urn:schemas:contacts:sn\" AS " + TAG_LASTNAME + ", " +
184     "\"urn:schemas:contacts:language\" AS " + TAG_LANGUAGE + ", " +
185     "\"urn:schemas:contacts:title\" AS " + TAG_JOBTITLE + ", " +
186     "\"urn:schemas:contacts:middlename\" AS " + TAG_MIDDLENAME + ", " +
187     "\"urn:schemas:contacts:mileage\" AS " + TAG_MILEAGE + ", " +
188     "\"urn:schemas:contacts:nickname\" AS " + TAG_NICKNAME + ", " +
189     "\"urn:schemas:contacts:o\" AS " + TAG_ORGANIZATION + ", " +
190     "\"urn:schemas:contacts:sensitivity\" AS " + TAG_SENSITIVITY + ", " +
191     "\"urn:schemas:contacts:spousecn\" AS " + TAG_SPOUSECN + ", " +
192     "\"urn:schemas:contacts:namesuffix\" AS " + TAG_SUFFIX + ", " +
193     "\"urn:schemas:contacts:personaltitle\" AS " + TAG_TITLE + ", " +
194     "\"http://schemas.microsoft.com/exchange/yomiorganization\" AS "
195                                                     + TAG_YOMI_COMPANY_NAME + ", " +
196     "\"http://schemas.microsoft.com/exchange/yomifirstname\" AS "
197                                                     + TAG_YOMI_FIRST_NAME + ", " +
198     "\"http://schemas.microsoft.com/exchange/yomilastname\" AS "
199                                                     + TAG_YOMI_LAST_NAME + ", " +
200     "\"urn:schemas:contacts:homeStreet\" AS " + TAG_HOME_STREET + ", " +
201     "\"urn:schemas:contacts:homeCity\" AS " + TAG_HOME_CITY + ", " +
202     "\"urn:schemas:contacts:homeState\" AS " + TAG_HOME_STATE + ", " +
203     "\"urn:schemas:contacts:homePostalCode\" AS " + TAG_HOME_POSTAL_CODE + ", " +
204     "\"urn:schemas:contacts:homepostofficebox\" AS "+
205         TAG_HOME_POST_OFFICE_BOX + ", " +
206     "\"urn:schemas:contacts:homeCountry\" AS " + TAG_HOME_COUNTRY + ", " +
207
208     "\"urn:schemas:contacts:street\" AS " + TAG_WORK_STREET + ", " +
209     "\"urn:schemas:contacts:l\" AS " + TAG_WORK_CITY + ", " +
210     "\"urn:schemas:contacts:st\" AS " + TAG_WORK_STATE + ", " +
211     "\"urn:schemas:contacts:postalcode\" AS " + TAG_WORK_POSTALCODE + ", " +
212     "\"urn:schemas:contacts:postofficebox\" AS " +
213         TAG_WORK_POST_OFFICE_BOX + ", " +
214     "\"urn:schemas:contacts:co\" AS " + TAG_WORK_COUNTRY + ", " +
215
216     "\"urn:schemas:contacts:otherstreet\" AS " + TAG_OTHER_STREET + ", " +
217     "\"urn:schemas:contacts:othercity\" AS " + TAG_OTHER_CITY + ", " +
218     "\"urn:schemas:contacts:otherstate\" AS " + TAG_OTHER_STATE + ", " +
219     "\"urn:schemas:contacts:otherpostalcode\" AS " + TAG_OTHER_POSTALCODE + ", " +
220     "\"urn:schemas:contacts:otherpostofficebox\" AS "
221         + TAG_OTHER_POST_OFFICE_BOX + ", " +
222     "\"urn:schemas:contacts:othercountry\" AS " + TAG_OTHER_COUNTRY + ", " +
223
224     "\"urn:schemas:contacts:callbackphone\" AS " + TAG_CALL_BACK_PHONE + ", " +
225     "\"urn:schemas:contacts:facsimiletelephonenumber\" " +
226             "AS " +
227               TAG_FAC_SIMILE_TELEPHONE_NUMBER + ", " +
228     "\"urn:schemas:contacts:homefax\" AS " + TAG_HOME_FAX + ", " +
229     "\"urn:schemas:contacts:homePhone\" AS " + TAG_HOME_PHONE + ", " +
230     "\"urn:schemas:contacts:homephone2\" AS " + TAG_HOME_PHONE2 + ", " +
231     "\"urn:schemas:contacts:mobile\" AS " + TAG_MOBILE + ", " +
232     "\"urn:schemas:contacts:internationalisdnnumber\" AS " +
233              TAG_ISDN_NUMBER + ", " +
234     "\"urn:schemas:contacts:organizationmainphone\" " +
235             "AS " +
236             TAG_ORGANIZATION_MAIN_PHONE + ", " +
237     "\"urn:schemas:contacts:otherfax\" AS " + TAG_OTHER_FAX + ", " +
238     "\"urn:schemas:contacts:othermobile\" AS " + TAG_OTHER_MOBILE + ", " +
239     "\"urn:schemas:contacts:otherTelephone\" AS " + TAG_OTHER_TELEPHONE + ", " +
240     "\"urn:schemas:contacts:pager\" AS " + TAG_PAGER + ", " +
241     "\"urn:schemas:contacts:secretaryphone\" AS " + TAG_SECRETARY_PHONE + ", " +
242     "\"urn:schemas:contacts:telephoneNumber\" AS " + TAG_TELEPHONE_NUMBER + ", " +
243     "\"urn:schemas:contacts:telephonenumber2\" AS " + TAG_TELEPHONE_NUMBER2 + ", " +
244     "\"urn:schemas:contacts:telexnumber\" AS " + TAG_TELEX_NUMBER + ", " +
245
246     "\"urn:schemas:contacts:businesshomepage\" AS " + TAG_BUSINESS_HOME_PAGE + ", " +
247     "\"urn:schemas:contacts:personalHomePage\" AS " + TAG_PERSONAL_HOME_PAGE + ", " +
248
249     "\"urn:schemas:contacts:department\" AS " + TAG_DEPARTMENT + ", " +
250     "\"urn:schemas:contacts:roomnumber\" AS " + TAG_OFFICE_LOCATION + ", " +
251     "\"urn:schemas:contacts:employeenumber\" AS " +
252         TAG_ORGANIZATION_ID_NUMBER + ", " +
253     "\"urn:schemas:contacts:profession\" AS " + TAG_PROFESSION + ", " +
254     "\"urn:schemas:contacts:manager\" AS " + TAG_MANAGER + ", " +
255     "\"urn:schemas:contacts:secretarycn\" AS " + TAG_SECRETARY + ", " +
256
257     "\"urn:schemas:contacts:email1\" AS " + TAG_EMAIL1 + ", " +
258     "\"urn:schemas:contacts:email2\" AS " + TAG_EMAIL2 + ", " +
259     "\"urn:schemas:contacts:email3\" AS " + TAG_EMAIL3 + ", " +
260     "\"urn:schemas:contacts:email1addrtype\" AS " +
261         TAG_EMAIL1_ADDRESS_TYPE + ", " +
262     "\"urn:schemas:contacts:email2addrtype\" AS " +
263         TAG_EMAIL2_ADDRESS_TYPE + ", " +
264     "\"urn:schemas:contacts:email3addrtype\" AS " +
265         TAG_EMAIL3_ADDRESS_TYPE + ", " +
266
267     "\"urn:schemas:contacts:computernetworkname\" AS "
268         + TAG_COMPUTER_NETWORK_NAME + ", " +
269     "\"DAV:displayname\", " +
270     "\"DAV:getlastmodified\" AS getlastmodified, " +
271     "\"DAV:isfolder\" AS isfolder " +
272     "FROM \"/{0}/{1}/{2}\" " +
273     "{3} " +
274     "</D:sql>\n" +
275     "</D:searchrequest>" ;
276
277     private static final String JavaDoc
278         FIELD_PREFIX = "urn:schemas:contacts:" ;
279
280     private static final String JavaDoc
281         WEBDAV_INIT_EX = "EX:" ;
282     private static final String JavaDoc
283         WEBDAV_INIT_HG = "HG:" ;
284     private static final String JavaDoc
285         WEBDAV_INIT_HM = "HM:" ;
286     private static final String JavaDoc
287         WEBDAV_INIT_HN = "HN:" ;
288     private static final String JavaDoc
289         WEBDAV_INIT_HO = "HO:" ;
290
291     private static final String JavaDoc
292         WEBDAV_INIT_MAPI = "mapi:" ;
293
294     private static final String JavaDoc
295         WEBDAV_TAG_ANNIVERSARY = WEBDAV_INIT_HM +
296                                         "weddinganniversary" ;
297     private static final String JavaDoc
298         WEBDAV_TAG_ASSISTANT = WEBDAV_INIT_HM +
299                                         "secretarycn" ;
300     private static final String JavaDoc
301         WEBDAV_TAG_BIRTHDAY = WEBDAV_INIT_HM +
302                                         "bday" ;
303     private static final String JavaDoc
304         WEBDAV_TAG_CATEGORIES = WEBDAV_INIT_EX +
305                                         "keywords-utf8" ;
306     private static final String JavaDoc
307         WEBDAV_TAG_CHILDREN = WEBDAV_INIT_HM +
308                                         "childrensnames" ;
309     private static final String JavaDoc
310         WEBDAV_TAG_CN = WEBDAV_INIT_HM +
311                                         "cn" ;
312     private static final String JavaDoc
313         WEBDAV_TAG_COMPANY = WEBDAV_INIT_HM +
314                                         "o" ;
315     private static final String JavaDoc
316         WEBDAV_TAG_DEPARTMENT = WEBDAV_INIT_HM +
317                                         "department" ;
318     private static final String JavaDoc
319         WEBDAV_TAG_FILE_AS = WEBDAV_INIT_HM +
320                                         "fileas" ;
321     private static final String JavaDoc
322         WEBDAV_TAG_FIRST_NAME = WEBDAV_INIT_HM +
323                                         "givenName" ;
324     private static final String JavaDoc
325         WEBDAV_TAG_HOBBY = WEBDAV_INIT_HM +
326                                         "hobbies" ;
327     private static final String JavaDoc
328         WEBDAV_TAG_HOME_CITY = WEBDAV_INIT_HM +
329                                         "homeCity" ;
330     private static final String JavaDoc
331         WEBDAV_TAG_HOME_COUNTRY = WEBDAV_INIT_HM +
332                                         "homeCountry" ;
333     private static final String JavaDoc
334         WEBDAV_TAG_HOME_POSTALCODE = WEBDAV_INIT_HM +
335                                         "homePostalCode" ;
336     private static final String JavaDoc
337         WEBDAVTAG_HOME_POST_OFFICE_BOX
338                                       = WEBDAV_INIT_HM +
339                                         "homepostofficebox" ;
340     private static final String JavaDoc
341         WEBDAV_TAG_HOME_STATE = WEBDAV_INIT_HM +
342                                         "homeState" ;
343     private static final String JavaDoc
344         WEBDAV_TAG_HOME_STREET = WEBDAV_INIT_HM +
345                                         "homeStreet" ;
346     private static final String JavaDoc
347         WEBDAV_TAG_IMPORTANCE = WEBDAV_INIT_HN +
348                                         "importance" ;
349     private static final String JavaDoc
350         WEBDAV_TAG_INITIALS = WEBDAV_INIT_HM +
351                                         "initials" ;
352     private static final String JavaDoc
353         WEBDAV_TAG_JOB_TITLE = WEBDAV_INIT_HM +
354                                         "title" ;
355     private static final String JavaDoc
356         WEBDAV_TAG_LANGUAGE = WEBDAV_INIT_HM +
357                                         "language";
358     private static final String JavaDoc
359         WEBDAV_TAG_LAST_NAME = WEBDAV_INIT_HM +
360                                         "sn" ;
361     private static final String JavaDoc
362         WEBDAV_TAG_MANAGER = WEBDAV_INIT_HM +
363                                         "manager" ;
364     private static final String JavaDoc
365         WEBDAV_TAG_MIDDLE_NAME = WEBDAV_INIT_HM +
366                                         "middlename" ;
367     private static final String JavaDoc
368         WEBDAV_TAG_MILEAGE = WEBDAV_INIT_EX +
369                                         "mileage" ;
370     private static final String JavaDoc
371         WEBDAV_TAG_NICKNAME = WEBDAV_INIT_HM +
372                                         "nickname" ;
373     private static final String JavaDoc
374         WEBDAV_TAG_OFFICE_LOCATION = WEBDAV_INIT_HM +
375                                         "roomnumber" ;
376     private static final String JavaDoc
377         WEBDAV_TAG_OTHER_CITY = WEBDAV_INIT_HM +
378                                         "othercity" ;
379     private static final String JavaDoc
380         WEBDAV_TAG_OTHER_COUNTRY = WEBDAV_INIT_HM +
381                                         "othercountry" ;
382     private static final String JavaDoc
383         WEBDAV_TAG_OTHER_POSTALCODE = WEBDAV_INIT_HM +
384                                         "otherpostalcode" ;
385     private static final String JavaDoc
386         WEBDAV_TAG_OTHER_POST_OFFICE_BOX
387                                       = WEBDAV_INIT_HM +
388                                         "otherpostofficebox" ;
389
390     private static final String JavaDoc
391         WEBDAV_TAG_OTHER_STATE = WEBDAV_INIT_HM +
392                                         "otherstate" ;
393     private static final String JavaDoc
394         WEBDAV_TAG_OTHER_STREET = WEBDAV_INIT_HM +
395                                         "otherstreet" ;
396     private static final String JavaDoc
397         WEBDAV_TAG_ORGANIZATION_ID_NUMBER
398                                       = WEBDAV_INIT_HM +
399                                         "employeenumber" ;
400     private static final String JavaDoc
401         WEBDAV_TAG_PROFESSION = WEBDAV_INIT_HM +
402                                         "profession" ;
403     private static final String JavaDoc
404         WEBDAV_TAG_SENSITIVITY = WEBDAV_INIT_MAPI +
405                                         "sensitivity" ;
406     private static final String JavaDoc
407         WEBDAV_TAG_SPOUSE = WEBDAV_INIT_HM +
408                                         "spousecn" ;
409     private static final String JavaDoc
410         WEBDAV_TAG_SUBJECT1 = WEBDAV_INIT_HN +
411                                         "subject" ;
412     private static final String JavaDoc
413         WEBDAV_TAG_SUBJECT2 = WEBDAV_INIT_HO +
414                                         "subject" ;
415     private static final String JavaDoc
416         WEBDAV_TAG_SUFFIX = WEBDAV_INIT_HM +
417                                         "namesuffix" ;
418     private static final String JavaDoc
419         WEBDAV_TAG_TITLE = WEBDAV_INIT_HM +
420                                         "personaltitle" ;
421     private static final String JavaDoc
422         WEBDAV_TAG_WORK_CITY = WEBDAV_INIT_HM +
423                                         "l" ;
424     private static final String JavaDoc
425         WEBDAV_TAG_WORK_COUNTRY = WEBDAV_INIT_HM +
426                                         "co" ;
427     private static final String JavaDoc
428         WEBDAV_TAG_WORK_POSTALCODE = WEBDAV_INIT_HM +
429                                         "postalcode" ;
430     private static final String JavaDoc
431         WEBDAV_TAG_WORK_POST_OFFICE_BOX = WEBDAV_INIT_HM +
432                                         "postofficebox" ;
433     private static final String JavaDoc
434         WEBDAV_TAG_WORK_STATE = WEBDAV_INIT_HM +
435                                         "st" ;
436     private static final String JavaDoc
437         WEBDAV_TAG_WORK_STREET = WEBDAV_INIT_HM +
438                                         "street" ;
439
440     private static final String JavaDoc
441         WEBDAV_TAG_YOMI_COMAPANY_NAME = WEBDAV_INIT_EX +
442                                         "yomiorganization" ;
443     private static final String JavaDoc
444         WEBDAV_TAG_YOMI_FIRST_NAME = WEBDAV_INIT_EX +
445                                         "yomifirstname" ;
446     private static final String JavaDoc
447         WEBDAV_TAG_YOMI_LAST_NAME = WEBDAV_INIT_EX +
448                                         "yomilastname" ;
449     private static final String JavaDoc
450         WEBDAV_TAG_ASSISTANT_PHONE = WEBDAV_INIT_HM +
451                                         "secretaryphone" ;
452     private static final String JavaDoc
453         WEBDAV_TAG_CALLBACK_PHONE = WEBDAV_INIT_HM +
454                                         "callbackphone" ;
455     private static final String JavaDoc
456         WEBDAV_TAG_COMPANY_PHONE = WEBDAV_INIT_HM +
457                                         "organizationmainphone" ;
458     private static final String JavaDoc
459         WEBDAV_TAG_HOME_FAX = WEBDAV_INIT_HM +
460                                         "homefax" ;
461     private static final String JavaDoc
462         WEBDAV_TAG_HOME_OTHER_PHONE = WEBDAV_INIT_HM +
463                                         "homephone2" ;
464     private static final String JavaDoc
465         WEBDAV_TAG_HOME_PHONE = WEBDAV_INIT_HM +
466                                         "homePhone" ;
467     private static final String JavaDoc
468         WEBDAV_TAG_MOBILE_OTHER_PHONE = WEBDAV_INIT_HM +
469                                         "othermobile" ;
470     private static final String JavaDoc
471         WEBDAV_TAG_MOBILE_PHONE = WEBDAV_INIT_HM +
472                                         "mobile" ;
473     private static final String JavaDoc
474         WEBDAV_TAG_OTHER_FAX = WEBDAV_INIT_HM +
475                                         "otherfax" ;
476     private static final String JavaDoc
477         WEBDAV_TAG_OTHER_PHONE = WEBDAV_INIT_HM +
478                                         "otherTelephone" ;
479     private static final String JavaDoc
480         WEBDAV_TAG_PAGER = WEBDAV_INIT_HM +
481                                         "pager" ;
482     private static final String JavaDoc
483         WEBDAV_TAG_TELEX_NUMBER = WEBDAV_INIT_HM +
484                                         "telexnumber" ;
485     private static final String JavaDoc
486         WEBDAV_TAG_WORK_FAX = WEBDAV_INIT_HM +
487                                         "facsimiletelephonenumber" ;
488     private static final String JavaDoc
489         WEBDAV_TAG_WORK_OTHER_PHONE = WEBDAV_INIT_HM +
490                                         "telephonenumber2" ;
491     private static final String JavaDoc
492         WEBDAV_TAG_WORK_PHONE = WEBDAV_INIT_HM +
493                                         "telephoneNumber" ;
494
495     private static final String JavaDoc
496         WEBDAV_TAG_BUSINESS_HOME_PAGE = WEBDAV_INIT_HM +
497                                         "businesshomepage" ;
498     private static final String JavaDoc
499         WEBDAV_TAG_PERSONAL_HOME_PAGE = WEBDAV_INIT_HM +
500                                         "personalHomePage" ;
501     private static final String JavaDoc
502         WEBDAV_TAG_EMAIL1 = WEBDAV_INIT_HM +
503                                         "email1" ;
504     private static final String JavaDoc
505         WEBDAV_TAG_EMAIL2 = WEBDAV_INIT_HM +
506                                         "email2" ;
507     private static final String JavaDoc
508         WEBDAV_TAG_EMAIL3 = WEBDAV_INIT_HM +
509                                         "email3" ;
510     private static final String JavaDoc
511         WEBDAV_TAG_EMAIL1_ADDRESS_TYPE = WEBDAV_INIT_MAPI +
512                                         "email1addrtype" ;
513     private static final String JavaDoc
514         WEBDAV_TAG_EMAIL2_ADDRESS_TYPE = WEBDAV_INIT_MAPI +