/** * A breadth-first iterator over blips in a conversation. Deleted blips are * skipped, but non-deleted descendant blips are included. */ public static Iterable<ConversationBlip> breadthFirst(Conversation conversation) { return breadthFirst(conversation.getRootThread()); }
@Override public Map<String, Long> getBlipVersions(WaveletId id) { Conversation c = view.getConversation(WaveletBasedConversation.idFor(id)); Map<String, Long> blipVersions = new HashMap<String, Long>(); for (ConversationBlip blip : BlipIterators.breadthFirst(c)) { blipVersions.put(blip.getId(), blip.getLastModifiedVersion()); } return blipVersions; }
/** * Tests that blipsBreathFirst makes breadth-first traversal and skips * deleted blips. */ public void testBlipsBreadthFirst() { List<ConversationBlip> actual = CollectionUtils.newArrayList( BlipIterators.breadthFirst(conversation)); assertEquals(Arrays.asList(b1, b3, b1t1b1, b1t1b2, b1t2b1, b3t1b1), actual); }
/** * Tests that blipsBreathFirst makes breadth-first traversal and skips * deleted blips. */ public void testBlipsBreadthFirst() { List<ConversationBlip> actual = CollectionUtils.newArrayList( BlipIterators.breadthFirst(conversation)); assertEquals(Arrays.asList(b1, b3, b1t1b1, b1t1b2, b1t2b1, b3t1b1), actual); }
int blipCount = 0; long lastModified = -1; for (ConversationBlip blip : BlipIterators.breadthFirst(rootConversation)) { if (supplement.isUnread(blip)) { unreadCount++;