From e394d79518cab7a2394c3734bd50ec71323f58e9 Mon Sep 17 00:00:00 2001 From: mguessan Date: Thu, 4 Sep 2014 06:46:57 +0000 Subject: [PATCH] Prepare batch move implementation git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@2316 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/exchange/ExchangeSession.java | 13 +++++++++++++ src/java/davmail/imap/ImapConnection.java | 14 +++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/java/davmail/exchange/ExchangeSession.java b/src/java/davmail/exchange/ExchangeSession.java index 5c27a7b8..5bf02e5a 100644 --- a/src/java/davmail/exchange/ExchangeSession.java +++ b/src/java/davmail/exchange/ExchangeSession.java @@ -1463,6 +1463,13 @@ public abstract class ExchangeSession { */ public abstract void copyMessage(Message message, String targetFolder) throws IOException; + public void copyMessages(List messages, String targetFolder) throws IOException { + for (Message message: messages) { + copyMessage(message, targetFolder); + } + } + + /** * Move message to target folder * @@ -1472,6 +1479,12 @@ public abstract class ExchangeSession { */ public abstract void moveMessage(Message message, String targetFolder) throws IOException; + public void moveMessages(List messages, String targetFolder) throws IOException { + for (Message message: messages) { + moveMessage(message, targetFolder); + } + } + /** * Move folder to target name. * diff --git a/src/java/davmail/imap/ImapConnection.java b/src/java/davmail/imap/ImapConnection.java index 743d80c8..89503350 100644 --- a/src/java/davmail/imap/ImapConnection.java +++ b/src/java/davmail/imap/ImapConnection.java @@ -343,14 +343,14 @@ public class ImapConnection extends AbstractConnection { if (!uidRangeIterator.hasNext()) { sendClient(commandId + " NO " + "No message found"); } else { + ArrayList messages = new ArrayList(); while (uidRangeIterator.hasNext()) { - DavGatewayTray.switchIcon(); - ExchangeSession.Message message = uidRangeIterator.next(); - if ("copy".equalsIgnoreCase(subcommand)) { - session.copyMessage(message, targetName); - } else { - session.moveMessage(message, targetName); - } + messages.add(uidRangeIterator.next()); + } + if ("copy".equalsIgnoreCase(subcommand)) { + session.copyMessages(messages, targetName); + } else { + session.moveMessages(messages, targetName); } sendClient(commandId + " OK " + subcommand + " completed"); }