KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > folder > command > AddSenderToAddressbookCommand


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.mail.folder.command;
19
20 import java.util.Iterator JavaDoc;
21 import java.util.Vector JavaDoc;
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 /**
41  * Add sender of the selected messages to addressbook.
42  * <p>
43  * A dialog asks the user the destination addressbook.
44  *
45  * @author fdietz
46  */

47 public class AddSenderToAddressbookCommand extends Command {
48     
49
50     /**
51      * Constructor for AddSenderToAddressbookCommand.
52      *
53      * @param references
54      */

55     public AddSenderToAddressbookCommand(ICommandReference reference) {
56         super(reference);
57     }
58
59     /**
60      * @see org.columba.api.command.Command#execute(org.columba.api.command.Worker)
61      */

62     public void execute(IWorkerStatusController worker) throws Exception JavaDoc {
63         // get reference
64
IMailFolderCommandReference r = (IMailFolderCommandReference) getReference();
65
66         // get array of message UIDs
67
Object JavaDoc[] uids = r.getUids();
68
69         // get source folder
70
IMailbox folder = (IMailbox) r.getSourceFolder();
71
72         // register for status events
73
((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 JavaDoc<String JavaDoc> v = new Vector JavaDoc<String JavaDoc>();
86         // for each message
87
for (int i = 0; i < uids.length; i++) {
88             // get header of message
89
Header header = folder.getHeaderFields(uids[i],
90                     new String JavaDoc[] { "From" });
91
92             // get sender
93
String JavaDoc sender = (String JavaDoc) header.get("From");
94
95             v.add(sender);
96         }
97
98         // add sender to addressbook
99
Iterator JavaDoc<String JavaDoc> it = v.listIterator();
100         while (it.hasNext()) {
101             try {
102                 Address address = Address.parse(it.next());
103
104                 // add contact to addressbook
105
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