1 package org.columba.mail.folder.command; 19 20 import java.util.Iterator ; 21 import java.util.Vector ; 22 23 import org.columba.addressbook.facade.IContactFacade; 24 import org.columba.addressbook.facade.IContactItem; 25 import org.columba.addressbook.facade.IModelFacade; 26 import org.columba.api.command.ICommandReference; 27 import org.columba.api.command.IWorkerStatusController; 28 import org.columba.api.exception.ServiceNotFoundException; 29 import org.columba.api.exception.StoreException; 30 import org.columba.core.command.Command; 31 import org.columba.core.command.StatusObservableImpl; 32 import org.columba.mail.command.IMailFolderCommandReference; 33 import org.columba.mail.connector.FacadeUtil; 34 import org.columba.mail.connector.ServiceConnector; 35 import org.columba.mail.folder.IMailbox; 36 import org.columba.ristretto.message.Address; 37 import org.columba.ristretto.message.Header; 38 import org.columba.ristretto.parser.ParserException; 39 40 47 public class AddSenderToAddressbookCommand extends Command { 48 49 50 55 public AddSenderToAddressbookCommand(ICommandReference reference) { 56 super(reference); 57 } 58 59 62 public void execute(IWorkerStatusController worker) throws Exception { 63 IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); 65 66 Object [] uids = r.getUids(); 68 69 IMailbox folder = (IMailbox) r.getSourceFolder(); 71 72 ((StatusObservableImpl) folder.getObservable()).setWorker(worker); 74 75 IContactFacade contactFacade = null; 76 IModelFacade modelFacade = null; 77 try { 78 contactFacade = ServiceConnector.getContactFacade(); 79 modelFacade = ServiceConnector.getModelFacade(); 80 } catch (ServiceNotFoundException e) { 81 e.printStackTrace(); 82 return; 83 } 84 85 Vector <String > v = new Vector <String >(); 86 for (int i = 0; i < uids.length; i++) { 88 Header header = folder.getHeaderFields(uids[i], 90 new String [] { "From" }); 91 92 String sender = (String ) header.get("From"); 94 95 v.add(sender); 96 } 97 98 Iterator <String > it = v.listIterator(); 100 while (it.hasNext()) { 101 try { 102 Address address = Address.parse(it.next()); 103 104 IContactItem contactItem = modelFacade.createContactItem(); 106 FacadeUtil.getInstance().initContactItem(contactItem, address.getDisplayName(), address.getMailAddress()); 107 contactFacade.addContact(null); 108 } catch (ParserException e) { 109 e.printStackTrace(); 110 } catch (StoreException e) { 111 e.printStackTrace(); 112 } 113 } 114 } 115 116 } 117 | Popular Tags |