package com.google.sitebricks.mail.imap;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author dhanji@gmail.com (Dhanji R. Prasanna)
*/
class FolderStatusExtractor implements Extractor<FolderStatus> {
private static final Pattern PARENS = Pattern.compile("([(].*[)])");
@Override
public FolderStatus extract(List<String> messages) {
FolderStatus status = new FolderStatus();
// There should generally only be 1.
for (String message : messages) {
Matcher matcher = PARENS.matcher(message);
if (matcher.find()) {
String group = matcher.group(1);
// Strip parens.
group = group.substring(1, group.length() - 1);
String[] pieces = group.split("[ ]+");
for (int i = 0; i < pieces.length; i += 2) {
String piece = pieces[i].toUpperCase();
if ("MESSAGES".equals(piece)) {
status.setMessages(Integer.valueOf(pieces[i + 1]));
} else if ("UNSEEN".equals(piece)) {
status.setUnseen(Integer.valueOf(pieces[i + 1]));
} else if ("RECENT".equals(piece)) {
status.setRecent(Integer.valueOf(pieces[i + 1]));
} else if ("UIDNEXT".equals(piece)) {
status.setNextUid(Integer.valueOf(pieces[i + 1]));
} else if ("UIDVALIDITY".equals(piece)) {
status.setUidValidity(Integer.valueOf(pieces[i + 1]));
}
}
}
}
return status;
}
}