@Override public String render(ConversationView wave, IdentityMap<Conversation, String> conversations) { return "Wave [ main: " + conversations.get(wave.getRoot()) + " ]"; }
@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; }
/** * Finds the main conversation in a wave. The main conversation is defined as * the root if there is one, or the first unanchored conversation otherwise. */ public static Conversation getMainConversation(ConversationView view) { Conversation root = view.getRoot(); if (root == null) { for (Conversation curr : view.getConversations()) { if (!curr.hasAnchor()) { root = curr; break; } } } return root; } }
private static Conversation makeConversation() { IdGenerator idGenerator = FakeIdGenerator.create(); ObservableWaveView waveView = BasicFactories.fakeWaveViewBuilder().with(idGenerator).build(); ConversationView convView = WaveBasedConversationView.create(waveView, idGenerator); Conversation conversation = convView.createRoot(); // Force empty document. conversation.getRootThread().appendBlip(new DocInitializationBuilder().build()); return conversation; } }
@Override public boolean isExplicitParticipant() { for (Conversation w : view.getConversations()) { if (w.getParticipantIds().contains(viewer)) { return true; } } return false; } }
private static Conversation makeConversation() { IdGenerator idGenerator = FakeIdGenerator.create(); ObservableWaveView waveView = BasicFactories.fakeWaveViewBuilder().with(idGenerator).build(); ConversationView convView = WaveBasedConversationView.create(waveView, idGenerator); Conversation conversation = convView.createRoot(); // Force empty document. conversation.getRootThread().appendBlip(new DocInitializationBuilder().build()); return conversation; } }
void apply(ConversationView wave) { for (Conversation conversation : wave.getConversations()) { apply(conversation); } }
private Conversation makeConversation() { IdGenerator idGenerator = FakeIdGenerator.create(); ObservableWaveView waveView = BasicFactories.fakeWaveViewBuilder().with(idGenerator).build(); ConversationView convView = WaveBasedConversationView.create(waveView, idGenerator); Conversation conversation = convView.createRoot(); conversation.getRootThread().appendBlip(); conversation.getRootThread().appendBlip(); return conversation; } }
@Override public String render(ConversationView wave, IdentityMap<Conversation, String> conversations) { return "Wave [ main: " + conversations.get(wave.getRoot()) + " ]"; }
@Override public Iterable<WaveletId> getWavelets() { List<WaveletId> ids = new ArrayList<WaveletId>(); for (Conversation c : view.getConversations()) { ids.add(WaveletBasedConversation.widFor(c.getId())); } return ids; }
@Override public long getVersion(WaveletId id) { Conversation c = view.getConversation(WaveletBasedConversation.idFor(id)); return c != null ? // TODO(user): Once bug 2820511 is fixed, get rid of the cast. ((WaveletBasedConversation) c).getWavelet().getVersion() : PrimitiveSupplement.NO_VERSION; }
private Conversation makeConversation() { IdGenerator idGenerator = FakeIdGenerator.create(); ObservableWaveView waveView = BasicFactories.fakeWaveViewBuilder().with(idGenerator).build(); ConversationView convView = WaveBasedConversationView.create(waveView, idGenerator); Conversation conversation = convView.createRoot(); conversation.getRootThread().appendBlip(); conversation.getRootThread().appendBlip(); return conversation; } }
public TestingWaveletData( WaveId waveId, WaveletId waveletId, ParticipantId author, boolean isConversational) { waveletData = new WaveletDataImpl(waveletId, author, 1234567890, 0, HashedVersion.unsigned(0), 0, waveId, BasicFactories.observablePluggableMutableDocumentFactory()); userWaveletData = new WaveletDataImpl(WaveletId.of("example.com", "user+foo@example.com"), author, 1234567890, 0, HashedVersion.unsigned(0), 0, waveId, BasicFactories.observablePluggableMutableDocumentFactory()); OpBasedWavelet wavelet = new OpBasedWavelet(waveId, waveletData, new BasicWaveletOperationContextFactory(author), ParticipationHelper.DEFAULT, SilentOperationSink.Executor.<WaveletOperation, WaveletData>build(waveletData), SilentOperationSink.VOID); ReadOnlyWaveView waveView = new ReadOnlyWaveView(waveId); waveView.addWavelet(wavelet); if (isConversational) { ConversationView conversationView = WaveBasedConversationView.create(waveView, FakeIdGenerator.create()); WaveletBasedConversation.makeWaveletConversational(wavelet); conversation = conversationView.getRoot(); conversation.addParticipant(author); } else { conversation = null; } waveViewData = WaveViewDataImpl.create(waveId, ImmutableList.of(waveletData, userWaveletData)); }
/** @return the structure of a conversations in {@code wave}. */ public static ConversationStructure of(ConversationView wave) { IdentityMap<ConversationBlip, Collection<Conversation>> anchoring = null; Collection<Conversation> unanchored = null; Conversation mainConversation = getMainConversation(wave); for (Conversation conversation : wave.getConversations()) { if (conversation == mainConversation) { continue; } Anchor anchor = conversation.getAnchor(); ConversationBlip blip = anchor != null ? anchor.getBlip() : null; if (blip != null) { addLazily((anchoring = createIfNull(anchoring)), blip, conversation); } else { (unanchored = createIfNull(unanchored)).add(conversation); } } if (anchoring == null) { anchoring = CollectionUtils.emptyIdentityMap(); } if (unanchored == null) { unanchored = Collections.emptySet(); } return new ConversationStructure(anchoring, unanchored, mainConversation); }
@Override public HashedVersion getSignature(WaveletId id) { Conversation c = view.getConversation(WaveletBasedConversation.idFor(id)); return (null != c) ? ((WaveletBasedConversation) c).getWavelet().getHashedVersion() : HashedVersion.unsigned(0); }
private static Conversation makeConversation() { IdGenerator idGenerator = FakeIdGenerator.create(); ObservableWaveView waveView = BasicFactories.fakeWaveViewBuilder().with(idGenerator).build(); ConversationView convView = WaveBasedConversationView.create(waveView, idGenerator); Conversation conversation = convView.createRoot(); // Force empty document. ConversationBlip blip = conversation.getRootThread().appendBlip( new DocInitializationBuilder().build()); Document document = blip.getContent(); document.appendXml(Blips.INITIAL_BODY); return conversation; } }
public TestingWaveletData( WaveId waveId, WaveletId waveletId, ParticipantId author, boolean isConversational) { waveletData = new WaveletDataImpl(waveletId, author, 1234567890, 0, HashedVersion.unsigned(0), 0, waveId, BasicFactories.observablePluggableMutableDocumentFactory()); userWaveletData = new WaveletDataImpl(WaveletId.of("example.com", "user+foo@example.com"), author, 1234567890, 0, HashedVersion.unsigned(0), 0, waveId, BasicFactories.observablePluggableMutableDocumentFactory()); OpBasedWavelet wavelet = new OpBasedWavelet(waveId, waveletData, new BasicWaveletOperationContextFactory(author), ParticipationHelper.DEFAULT, SilentOperationSink.Executor.<WaveletOperation, WaveletData>build(waveletData), SilentOperationSink.VOID); ReadOnlyWaveView waveView = new ReadOnlyWaveView(waveId); waveView.addWavelet(wavelet); if (isConversational) { ConversationView conversationView = WaveBasedConversationView.create(waveView, FakeIdGenerator.create()); WaveletBasedConversation.makeWaveletConversational(wavelet); conversation = conversationView.getRoot(); conversation.addParticipant(author); } else { conversation = null; } waveViewData = WaveViewDataImpl.create(waveId, ImmutableList.of(waveletData, userWaveletData)); }
private static Conversation makeConversation() { IdGenerator idGenerator = FakeIdGenerator.create(); ObservableWaveView waveView = BasicFactories.fakeWaveViewBuilder().with(idGenerator).build(); ConversationView convView = WaveBasedConversationView.create(waveView, idGenerator); Conversation conversation = convView.createRoot(); // Force empty document. ConversationBlip blip = conversation.getRootThread().appendBlip( new DocInitializationBuilder().build()); Document document = blip.getContent(); document.appendXml(Blips.INITIAL_BODY); return conversation; } }
private static ConversationView createSample() { ConversationView v = FakeConversationView.builder().build(); Conversation c = v.createRoot(); ConversationThread root = c.getRootThread(); sampleReply(root.appendBlip()); root.appendBlip(); root.appendBlip(); biggerSampleReply(root.appendBlip()); root.appendBlip(); root.appendBlip(); biggestSampleReply(root.appendBlip()); root.appendBlip(); biggerSampleReply(root.appendBlip()); sampleReply(root.appendBlip()); return v; }
private static ConversationView createSample() { ConversationView v = FakeConversationView.builder().build(); Conversation c = v.createRoot(); ConversationThread root = c.getRootThread(); sampleReply(root.appendBlip()); root.appendBlip(); root.appendBlip(); biggerSampleReply(root.appendBlip()); root.appendBlip(); root.appendBlip(); biggestSampleReply(root.appendBlip()); root.appendBlip(); biggerSampleReply(root.appendBlip()); sampleReply(root.appendBlip()); return v; }