package com.fsck.k9.mail.store.imap; import java.util.ArrayList; import java.util.List; import static com.fsck.k9.mail.store.imap.ImapResponseParser.equalsIgnoreCase; class SearchResponse { private final List<Long> numbers; private SearchResponse(List<Long> numbers) { this.numbers = numbers; } public static SearchResponse parse(List<ImapResponse> responses) { List<Long> numbers = new ArrayList<>(); for (ImapResponse response : responses) { parseSingleLine(response, numbers); } return new SearchResponse(numbers); } private static void parseSingleLine(ImapResponse response, List<Long> numbers) { if (response.isTagged() || response.size() < 2 || !equalsIgnoreCase(response.get(0), Responses.SEARCH)) { return; } int end = response.size(); for (int i = 1; i < end; i++) { try { long number = response.getLong(i); numbers.add(number); } catch (NumberFormatException e) { return; } } } /** * @return A mutable list of numbers from the SEARCH response(s). */ public List<Long> getNumbers() { return numbers; } }