1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.wallace.messages;
20
21 import javax.mail.Folder;
22 import javax.mail.MessagingException;
23 import javax.mail.Store;
24
25 import net.sf.wallace.Command;
26 import net.sf.wallace.ServerResponse;
27 import net.sf.wallace.WallaceSession;
28 import net.sf.wallace.WallaceSessionState;
29 import net.sf.wallace.commands.SelectCommand;
30
31 import org.apache.commons.logging.Log;
32 import org.apache.commons.logging.LogFactory;
33
34 /***
35 * Examine message.
36 *
37 * @author rnewson
38 */
39 public final class ExamineMessage extends MailboxMessage {
40
41 protected Log log = LogFactory.getLog(getClass());
42
43 public Command getCommand() {
44 return new ExamineCommand();
45 }
46
47 private final class ExamineCommand extends SelectCommand {
48
49 protected void onExecute(final WallaceSession wallaceSession) throws MessagingException {
50 final Store store = wallaceSession.getStore();
51 final Folder root = store.getDefaultFolder();
52 final Folder folder = root.getFolder(getMailboxName());
53
54 if (!folder.exists()) {
55 wallaceSession.respond(new ServerResponse(ExamineMessage.this, "NO " + getMailboxName() + " not found."));
56 return;
57 }
58
59 wallaceSession.setSelectedFolder(folder);
60 wallaceSession.setState(WallaceSessionState.SELECTED);
61
62 wallaceSession.respond(new ServerResponse(ServerResponse.Type.UNTAGGED,
63 "FLAGS (//Answered //Flagged //Deleted //Seen //Draft)"));
64 wallaceSession.respond(new ServerResponse(ServerResponse.Type.UNTAGGED,
65 "OK PERMANENTFLAGS (//Answered //Flagged //Deleted //Seen //Draft)"));
66 wallaceSession.respond(new ServerResponse(ServerResponse.Type.UNTAGGED, folder.getMessageCount() + " EXISTS"));
67 wallaceSession.respond(new ServerResponse(ServerResponse.Type.UNTAGGED, folder.getNewMessageCount() + " RECENT"));
68 wallaceSession.respond(new ServerResponse(ServerResponse.Type.UNTAGGED, "OK [UNSEEN " + folder.getUnreadMessageCount()
69 + "]"));
70 wallaceSession.respond(new ServerResponse(ServerResponse.Type.UNTAGGED, "OK [UIDVALIDITY 19740724]"));
71
72 wallaceSession.respond(new ServerResponse(ExamineMessage.this, "OK [READ-ONLY] SELECT."));
73 }
74 }
75
76 }