KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > addressbook > folder > importfilter > NetscapeLDIFAddressbookImporter


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18
package org.columba.addressbook.folder.importfilter;
19
20 import java.io.BufferedReader JavaDoc;
21 import java.io.File JavaDoc;
22 import java.io.FileReader JavaDoc;
23 import java.nio.ByteBuffer JavaDoc;
24
25 import org.columba.addressbook.folder.AbstractFolder;
26 import org.columba.addressbook.model.ContactModel;
27 import org.columba.addressbook.model.EmailModel;
28 import org.columba.addressbook.model.PhoneModel;
29 import org.columba.addressbook.util.AddressbookResourceLoader;
30 import org.columba.ristretto.coder.Base64;
31
32 /**
33  * Import addressbook data in LDIF format.
34  */

35 public class NetscapeLDIFAddressbookImporter extends DefaultAddressbookImporter {
36     public NetscapeLDIFAddressbookImporter() {
37         super();
38     }
39
40     public NetscapeLDIFAddressbookImporter(File JavaDoc sourceFile,
41             AbstractFolder destinationFolder) {
42         super(sourceFile, destinationFolder);
43     }
44
45     public void importAddressbook(File JavaDoc file) throws Exception JavaDoc {
46         BufferedReader JavaDoc in = new BufferedReader JavaDoc(new FileReader JavaDoc(file));
47         String JavaDoc str;
48         ContactModel card = new ContactModel();
49
50         while ((str = in.readLine()) != null) {
51             // start parsing line by line
52
if (str.length() == 0) {
53                 // empty line, means new contactcard
54
saveContact(card);
55
56                 card = new ContactModel();
57             } else {
58                 // parse key:value lines
59
int index = str.indexOf(':');
60
61                 if ((index > 0) && (index < (str.length() - 1))) {
62                     String JavaDoc key = str.substring(0, index);
63                     String JavaDoc value;
64
65                     if (str.charAt(index + 1) == ':') {
66                         ByteBuffer JavaDoc bytes = Base64.decode(str.substring(
67                                 index + 2).trim());
68                         value = new String JavaDoc(bytes.array(), "UTF-8");
69                     } else {
70                         value = str.substring(index + 1);
71                     }
72
73                     value = value.trim();
74
75                     if (key.equalsIgnoreCase("cn")) {
76                         card.setSortString(value);
77                     } else if (key.equalsIgnoreCase("givenname")) {
78                         card.setGivenName(value);
79                     } else if (key.equalsIgnoreCase("sn")) {
80                         card.setFamilyName(value);
81                     } else if (key.equalsIgnoreCase("mail")) {
82                         card.addEmail(new EmailModel(value,
83                                 EmailModel.TYPE_WORK));
84                     } else if (key.equalsIgnoreCase("xmozillanickname")) {
85                         card.setNickName(value);
86                     } else if (key.equalsIgnoreCase("o")) {
87                         card.setOrganisation(value);
88                     } else if (key.equalsIgnoreCase("telephonenumber")) {
89                         card.addPhone(new PhoneModel(value,
90                                 PhoneModel.TYPE_BUSINESS_PHONE));
91                     } else if (key.equalsIgnoreCase("homephone")) {
92                         card.addPhone(new PhoneModel(value,
93                                 PhoneModel.TYPE_HOME_PHONE));
94                     } else if (key.equalsIgnoreCase("facsimiletelephonenumber")) {
95                         card.addPhone(new PhoneModel(value,
96                                 PhoneModel.TYPE_BUSINESS_FAX));
97                     } else if (key.equalsIgnoreCase("pagerphone")) {
98                         card.addPhone(new PhoneModel(value,
99                                 PhoneModel.TYPE_PAGER));
100                     } else if (key.equalsIgnoreCase("cellphone")) {
101                         card.addPhone(new PhoneModel(value,
102                                 PhoneModel.TYPE_MOBILE_PHONE));
103                     } else if (key.equalsIgnoreCase("homeurl")) {
104                         card.setHomePage(value);
105                     }
106                 }
107             }
108         }
109
110         in.close();
111     }
112
113     public String JavaDoc getDescription() {
114         return AddressbookResourceLoader.getString("dialog",
115                 "addressbookimport", "netscapeldifaddressbook_description");
116     }
117 }
118
Popular Tags