Skip to content

Commit

Permalink
Use newly imported AOSP code instead of ImapStore.parseSequenceSet()
Browse files Browse the repository at this point in the history
  • Loading branch information
cketti committed Feb 17, 2012
1 parent deb01bc commit 5083b8f
Showing 1 changed file with 5 additions and 58 deletions.
63 changes: 5 additions & 58 deletions src/com/fsck/k9/mail/store/ImapStore.java
Expand Up @@ -90,6 +90,7 @@
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;
Expand Down Expand Up @@ -1138,8 +1139,10 @@ public Map<String, String> copyMessages(Message[] messages, Folder folder)
if (responseList instanceof ImapList) {
final ImapList copyList = (ImapList) responseList;
if (copyList.size() >= 4 && copyList.getString(0).equals("COPYUID")) {
List<String> srcUids = parseSequenceSet(copyList.getString(2));
List<String> destUids = parseSequenceSet(copyList.getString(3));
List<String> srcUids = ImapUtility.getImapSequenceValues(
copyList.getString(2));
List<String> destUids = ImapUtility.getImapSequenceValues(
copyList.getString(3));

if (srcUids != null && destUids != null) {
if (srcUids.size() == destUids.size()) {
Expand Down Expand Up @@ -1174,62 +1177,6 @@ public Map<String, String> copyMessages(Message[] messages, Folder folder)
}
}

/**
* 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<String> sequenceSet
*/
private List<String> parseSequenceSet(String set) {
if (set == null) {
return null;
}
int index = 0;
List<String> sequenceList = new ArrayList<String>();
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<String, String> moveMessages(Message[] messages, Folder folder) throws MessagingException {
if (messages.length == 0)
Expand Down

0 comments on commit 5083b8f

Please sign in to comment.