@Override public int getUnseenCount() { int count = 0; synchronized (mailMessages) { for (StoredMessage message : mailMessages) { if (!message.isSet(Flags.Flag.SEEN)) { count++; } } } return count; }
@Override public int getFirstUnseen() { synchronized (mailMessages) { int i = 1; for (StoredMessage message : mailMessages.values()) { if (!message.isSet(Flags.Flag.SEEN)) { return i; } i++; } } return -1; }
@Override public int getFirstUnseen() { synchronized (mailMessages) { for (int i = 0; i < mailMessages.size(); i++) { StoredMessage message = mailMessages.get(i); if (!message.isSet(Flags.Flag.SEEN)) { return i + 1; } } } return -1; }
@Override public int getRecentCount(boolean reset) { int count = 0; synchronized (mailMessages) { for (StoredMessage message : mailMessages) { if (message.isSet(Flags.Flag.RECENT)) { count++; if (reset) { message.setFlag(Flags.Flag.RECENT, false); } } } } return count; }
@Override public void expunge(List<FolderListener> mailboxListeners, IdRange[] idRanges) { int i = 1; synchronized (mailMessages) { for (final Iterator<Map.Entry<Long, StoredMessage>> messageEntryIt = mailMessages.entrySet().iterator(); messageEntryIt.hasNext(); ) { final Map.Entry<Long, StoredMessage> messageEntry = messageEntryIt.next(); if (messageEntry.getValue().isSet(Flags.Flag.DELETED) && (idRanges == null || IdRange.containsUid(idRanges, messageEntry.getValue().getUid()))) { // Notify all the listeners of the pending delete synchronized (mailboxListeners) { messageEntryIt.remove(); for (FolderListener expungeListener : mailboxListeners) { expungeListener.expunged(i); } } } i++; } } }
@Override public void expunge(List<FolderListener> folderListeners, IdRange[] idRanges) { synchronized (mailMessages) { for (int i = mailMessages.size() - 1; i >= 0; i--) { StoredMessage message = mailMessages.get(i); if (message.isSet(Flags.Flag.DELETED) && (idRanges == null || IdRange.containsUid(idRanges, message.getUid()))) { expungeMessage(i + 1, folderListeners); // MSNs start counting at 1 } } } }
@Override public void execute(Pop3Connection conn, Pop3State state, String cmd) { try { MailFolder inbox = state.getFolder(); String[] cmdLine = cmd.split(" "); String msgNumStr = cmdLine[1]; List<StoredMessage> msgList = inbox.getMessages(new MsgRangeFilter(msgNumStr, false)); if (msgList.size() != 1) { conn.println("-ERR no such message"); return; } StoredMessage msg = msgList.get(0); if (msg.isSet(Flags.Flag.DELETED)) { conn.println("-ERR message already deleted"); return; } msg.setFlag(Flags.Flag.DELETED, true); conn.println("+OK message scheduled for deletion"); } catch (Exception e) { conn.println("-ERR " + e); } } }
if (fetch.isSetSeen() && !message.isSet(Flags.Flag.SEEN)) { folder.setFlags(FLAGS_SEEN, true, message.getUid(), folder, useUids); message.setFlags(FLAGS_SEEN, true);
@Override public void execute(Pop3Connection conn, Pop3State state, String cmd) { conn.println("+OK"); try { MailFolder inbox = state.getFolder(); List<StoredMessage> msgList = inbox.getMessages(); int count = 0; for (StoredMessage msg : msgList) { if (msg.isSet(Flags.Flag.DELETED)) { count++; msg.setFlag(Flags.Flag.DELETED, false); } } conn.println("+OK maildrop has "+count+" messages undeleted."); } catch (Exception e) { conn.println("-ERR " + e); } } }