1 package org.columba.addressbook.folder.importfilter; 19 20 import java.io.BufferedReader ; 21 import java.io.File ; 22 import java.io.FileReader ; 23 import java.nio.ByteBuffer ; 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 35 public class NetscapeLDIFAddressbookImporter extends DefaultAddressbookImporter { 36 public NetscapeLDIFAddressbookImporter() { 37 super(); 38 } 39 40 public NetscapeLDIFAddressbookImporter(File sourceFile, 41 AbstractFolder destinationFolder) { 42 super(sourceFile, destinationFolder); 43 } 44 45 public void importAddressbook(File file) throws Exception { 46 BufferedReader in = new BufferedReader (new FileReader (file)); 47 String str; 48 ContactModel card = new ContactModel(); 49 50 while ((str = in.readLine()) != null) { 51 if (str.length() == 0) { 53 saveContact(card); 55 56 card = new ContactModel(); 57 } else { 58 int index = str.indexOf(':'); 60 61 if ((index > 0) && (index < (str.length() - 1))) { 62 String key = str.substring(0, index); 63 String value; 64 65 if (str.charAt(index + 1) == ':') { 66 ByteBuffer bytes = Base64.decode(str.substring( 67 index + 2).trim()); 68 value = new String (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 getDescription() { 114 return AddressbookResourceLoader.getString("dialog", 115 "addressbookimport", "netscapeldifaddressbook_description"); 116 } 117 } 118 | Popular Tags |