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

http://github.com/dhanji/sitebricks · Java · 40 lines · 27 code · 8 blank · 5 comment · 4 complexity · 23f38ab1e3deaedbf1f25612b1065bda MD5 · raw file

  1. package com.google.sitebricks.mail.imap;
  2. import com.google.common.collect.ImmutableList;
  3. import java.util.List;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. /**
  7. * @author dhanji@gmail.com (Dhanji R. Prasanna)
  8. */
  9. class ListFoldersExtractor implements Extractor<List<String>> {
  10. private static final Pattern QUOTES = Pattern.compile("(\".*\")");
  11. private static final String ROOT_PREFIX = "\"/\"";
  12. @Override
  13. public List<String> extract(List<String> messages) {
  14. ImmutableList.Builder<String> builder = ImmutableList.builder();
  15. for (String message : messages) {
  16. Matcher matcher = QUOTES.matcher(message);
  17. if (matcher.find()) {
  18. String group = matcher.group(1);
  19. if (group.startsWith(ROOT_PREFIX)) {
  20. group = group.substring(ROOT_PREFIX.length()).trim();
  21. }
  22. // Strip quotes.
  23. if (group.startsWith("\"")) {
  24. group = group.substring(1, group.length() - 1);
  25. }
  26. // Generally remove leading "/" and stripquotes
  27. builder.add(group);
  28. }
  29. }
  30. return builder.build();
  31. }
  32. }