/sitebricks-mail/src/main/java/com/google/sitebricks/mail/imap/FolderStatusExtractor.java

http://github.com/dhanji/sitebricks · Java · 44 lines · 34 code · 5 blank · 5 comment · 12 complexity · b4a980affcfa3a130a5bb8788aaa2217 MD5 · raw file

  1. package com.google.sitebricks.mail.imap;
  2. import java.util.List;
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5. /**
  6. * @author dhanji@gmail.com (Dhanji R. Prasanna)
  7. */
  8. class FolderStatusExtractor implements Extractor<FolderStatus> {
  9. private static final Pattern PARENS = Pattern.compile("([(].*[)])");
  10. @Override
  11. public FolderStatus extract(List<String> messages) {
  12. FolderStatus status = new FolderStatus();
  13. // There should generally only be 1.
  14. for (String message : messages) {
  15. Matcher matcher = PARENS.matcher(message);
  16. if (matcher.find()) {
  17. String group = matcher.group(1);
  18. // Strip parens.
  19. group = group.substring(1, group.length() - 1);
  20. String[] pieces = group.split("[ ]+");
  21. for (int i = 0; i < pieces.length; i += 2) {
  22. String piece = pieces[i].toUpperCase();
  23. if ("MESSAGES".equals(piece)) {
  24. status.setMessages(Integer.valueOf(pieces[i + 1]));
  25. } else if ("UNSEEN".equals(piece)) {
  26. status.setUnseen(Integer.valueOf(pieces[i + 1]));
  27. } else if ("RECENT".equals(piece)) {
  28. status.setRecent(Integer.valueOf(pieces[i + 1]));
  29. } else if ("UIDNEXT".equals(piece)) {
  30. status.setNextUid(Integer.valueOf(pieces[i + 1]));
  31. } else if ("UIDVALIDITY".equals(piece)) {
  32. status.setUidValidity(Integer.valueOf(pieces[i + 1]));
  33. }
  34. }
  35. }
  36. }
  37. return status;
  38. }
  39. }