diff --git a/src/com/fsck/k9/mail/store/ImapStore.java b/src/com/fsck/k9/mail/store/ImapStore.java index 32b07a6bd..b0ecd2adc 100644 --- a/src/com/fsck/k9/mail/store/ImapStore.java +++ b/src/com/fsck/k9/mail/store/ImapStore.java @@ -90,6 +90,7 @@ import com.fsck.k9.mail.internet.MimeMultipart; import com.fsck.k9.mail.internet.MimeUtility; import com.fsck.k9.mail.store.ImapResponseParser.ImapList; import com.fsck.k9.mail.store.ImapResponseParser.ImapResponse; +import com.fsck.k9.mail.store.imap.ImapUtility; import com.fsck.k9.mail.transport.imap.ImapSettings; import com.jcraft.jzlib.JZlib; import com.jcraft.jzlib.ZOutputStream; @@ -1138,8 +1139,10 @@ public class ImapStore extends Store { if (responseList instanceof ImapList) { final ImapList copyList = (ImapList) responseList; if (copyList.size() >= 4 && copyList.getString(0).equals("COPYUID")) { - List srcUids = parseSequenceSet(copyList.getString(2)); - List destUids = parseSequenceSet(copyList.getString(3)); + List srcUids = ImapUtility.getImapSequenceValues( + copyList.getString(2)); + List destUids = ImapUtility.getImapSequenceValues( + copyList.getString(3)); if (srcUids != null && destUids != null) { if (srcUids.size() == destUids.size()) { @@ -1174,62 +1177,6 @@ public class ImapStore extends Store { } } - /** - * Can be used to parse sequence sets or UID sets appearing is responses such as COPYUID. - * e.g. [COPYUID 38505 304,319:320 3956:3958] - * - * @param set - * @return List sequenceSet - */ - private List parseSequenceSet(String set) { - if (set == null) { - return null; - } - int index = 0; - List sequenceList = new ArrayList(); - String element = ""; - - while (index < set.length()) { - if (set.charAt(index) == ':') { - String upperBound = ""; - index++; - while (index < set.length()) { - if (!(set.charAt(index) == ',')) { - upperBound += set.charAt(index); - index++; - } else { - break; - } - } - - int lower = Integer.parseInt(element); - int upper = Integer.parseInt(upperBound); - - if (lower < upper) { - for (int i = lower; i <= upper; i++) { - sequenceList.add(String.valueOf(i)); - } - } else { - for (int i = upper; i <= lower; i++) { - sequenceList.add(String.valueOf(i)); - } - } - - element = ""; - } else if (set.charAt(index) == ',') { - sequenceList.add(element); - element = ""; - } else { - element += set.charAt(index); - } - index++; - } - if (!element.equals("")) { - sequenceList.add(element); - } - return sequenceList; - } - @Override public Map moveMessages(Message[] messages, Folder folder) throws MessagingException { if (messages.length == 0)