KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > folder > imap > FetchMessagesCommand


1 package org.columba.mail.folder.imap;
2
3 import org.columba.api.command.ICommandReference;
4 import org.columba.api.command.IWorkerStatusController;
5 import org.columba.core.command.Command;
6 import org.columba.core.command.CommandProcessor;
7 import org.columba.mail.command.IMailFolderCommandReference;
8 import org.columba.mail.command.MailFolderCommandReference;
9
10 public class FetchMessagesCommand extends Command {
11
12     private int newMessages;
13     private int fetchedMessages;
14     private int offset;
15     
16     public FetchMessagesCommand(ICommandReference reference,int newMessages, int offset, int fetchedMessages) {
17         super(reference);
18         
19         this.newMessages = newMessages;
20         this.fetchedMessages = fetchedMessages;
21         this.offset = offset;
22     }
23
24     public void execute(IWorkerStatusController worker) throws Exception JavaDoc {
25         // get references
26
IMailFolderCommandReference r = (IMailFolderCommandReference) getReference();
27
28         IMAPFolder imapFolder = (IMAPFolder) r.getSourceFolder();
29         
30         worker.setProgressBarMaximum(newMessages);
31         worker.setProgressBarValue(fetchedMessages);
32         
33         int fetched = imapFolder.fetchNewMessages(offset + fetchedMessages).size();
34         
35         fetchedMessages += fetched;
36         worker.setProgressBarValue(fetchedMessages);
37         
38         if( worker.cancelled()) {
39             return;
40         }
41         
42         if(fetched > 0 && fetchedMessages < newMessages) {
43             CommandProcessor.getInstance().addOp(
44                     new FetchMessagesCommand(
45                             new MailFolderCommandReference(imapFolder),
46                             newMessages, offset, fetchedMessages));
47         } else {
48             // Trigger any pending Flag syncs
49
imapFolder.fetchDone();
50
51         }
52     }
53
54 }
55
Popular Tags