Merge "ChangeRebuilderImpl: Have separate event for draft comments"
This commit is contained in:
		@@ -300,7 +300,7 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
 | 
				
			|||||||
    // We will rebuild all events, except for draft comments, in buckets based
 | 
					    // We will rebuild all events, except for draft comments, in buckets based
 | 
				
			||||||
    // on author and timestamp.
 | 
					    // on author and timestamp.
 | 
				
			||||||
    List<Event> events = new ArrayList<>();
 | 
					    List<Event> events = new ArrayList<>();
 | 
				
			||||||
    Multimap<Account.Id, PatchLineCommentEvent> draftCommentEvents =
 | 
					    Multimap<Account.Id, DraftCommentEvent> draftCommentEvents =
 | 
				
			||||||
        ArrayListMultimap.create();
 | 
					        ArrayListMultimap.create();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    events.addAll(getHashtagsEvents(change, manager));
 | 
					    events.addAll(getHashtagsEvents(change, manager));
 | 
				
			||||||
@@ -325,11 +325,13 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
 | 
				
			|||||||
      patchSetEvents.put(ps.getId(), pse);
 | 
					      patchSetEvents.put(ps.getId(), pse);
 | 
				
			||||||
      events.add(pse);
 | 
					      events.add(pse);
 | 
				
			||||||
      for (PatchLineComment c : getPatchLineComments(bundle, ps)) {
 | 
					      for (PatchLineComment c : getPatchLineComments(bundle, ps)) {
 | 
				
			||||||
        PatchLineCommentEvent e =
 | 
					 | 
				
			||||||
            new PatchLineCommentEvent(c, change, ps, patchListCache);
 | 
					 | 
				
			||||||
        if (c.getStatus() == Status.PUBLISHED) {
 | 
					        if (c.getStatus() == Status.PUBLISHED) {
 | 
				
			||||||
 | 
					          CommentEvent e =
 | 
				
			||||||
 | 
					              new CommentEvent(c, change, ps, patchListCache);
 | 
				
			||||||
          events.add(e.addDep(pse));
 | 
					          events.add(e.addDep(pse));
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
 | 
					          DraftCommentEvent e =
 | 
				
			||||||
 | 
					              new DraftCommentEvent(c, change, ps, patchListCache);
 | 
				
			||||||
          draftCommentEvents.put(c.getAuthor(), e);
 | 
					          draftCommentEvents.put(c.getAuthor(), e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@@ -376,9 +378,9 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    flushEventsToUpdate(manager, el, change);
 | 
					    flushEventsToUpdate(manager, el, change);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    EventList<PatchLineCommentEvent> plcel = new EventList<>();
 | 
					    EventList<DraftCommentEvent> plcel = new EventList<>();
 | 
				
			||||||
    for (Account.Id author : draftCommentEvents.keys()) {
 | 
					    for (Account.Id author : draftCommentEvents.keys()) {
 | 
				
			||||||
      for (PatchLineCommentEvent e :
 | 
					      for (DraftCommentEvent e :
 | 
				
			||||||
          Ordering.natural().sortedCopy(draftCommentEvents.get(author))) {
 | 
					          Ordering.natural().sortedCopy(draftCommentEvents.get(author))) {
 | 
				
			||||||
        if (!plcel.canAdd(e)) {
 | 
					        if (!plcel.canAdd(e)) {
 | 
				
			||||||
          flushEventsToDraftUpdate(manager, plcel, change);
 | 
					          flushEventsToDraftUpdate(manager, plcel, change);
 | 
				
			||||||
@@ -490,7 +492,7 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private void flushEventsToDraftUpdate(NoteDbUpdateManager manager,
 | 
					  private void flushEventsToDraftUpdate(NoteDbUpdateManager manager,
 | 
				
			||||||
      EventList<PatchLineCommentEvent> events, Change change)
 | 
					      EventList<DraftCommentEvent> events, Change change)
 | 
				
			||||||
      throws OrmException {
 | 
					      throws OrmException {
 | 
				
			||||||
    if (events.isEmpty()) {
 | 
					    if (events.isEmpty()) {
 | 
				
			||||||
      return;
 | 
					      return;
 | 
				
			||||||
@@ -501,7 +503,7 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
 | 
				
			|||||||
        newAuthorIdent(events),
 | 
					        newAuthorIdent(events),
 | 
				
			||||||
        events.getWhen());
 | 
					        events.getWhen());
 | 
				
			||||||
    update.setPatchSetId(events.getPatchSetId());
 | 
					    update.setPatchSetId(events.getPatchSetId());
 | 
				
			||||||
    for (PatchLineCommentEvent e : events) {
 | 
					    for (DraftCommentEvent e : events) {
 | 
				
			||||||
      e.applyDraft(update);
 | 
					      e.applyDraft(update);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    manager.add(update);
 | 
					    manager.add(update);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					// Copyright (C) 2016 The Android Open Source Project
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					// you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					// You may obtain a copy of the License at
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					// distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package com.google.gerrit.server.notedb.rebuild;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static com.google.gerrit.server.PatchLineCommentsUtil.setCommentRevId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.gerrit.reviewdb.client.Change;
 | 
				
			||||||
 | 
					import com.google.gerrit.reviewdb.client.PatchLineComment;
 | 
				
			||||||
 | 
					import com.google.gerrit.reviewdb.client.PatchSet;
 | 
				
			||||||
 | 
					import com.google.gerrit.server.PatchLineCommentsUtil;
 | 
				
			||||||
 | 
					import com.google.gerrit.server.notedb.ChangeUpdate;
 | 
				
			||||||
 | 
					import com.google.gerrit.server.patch.PatchListCache;
 | 
				
			||||||
 | 
					import com.google.gwtorm.server.OrmException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CommentEvent extends Event {
 | 
				
			||||||
 | 
					  public final PatchLineComment c;
 | 
				
			||||||
 | 
					  private final Change change;
 | 
				
			||||||
 | 
					  private final PatchSet ps;
 | 
				
			||||||
 | 
					  private final PatchListCache cache;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  CommentEvent(PatchLineComment c, Change change, PatchSet ps,
 | 
				
			||||||
 | 
					      PatchListCache cache) {
 | 
				
			||||||
 | 
					    super(PatchLineCommentsUtil.getCommentPsId(c), c.getAuthor(),
 | 
				
			||||||
 | 
					        c.getWrittenOn(), change.getCreatedOn(), c.getTag());
 | 
				
			||||||
 | 
					    this.c = c;
 | 
				
			||||||
 | 
					    this.change = change;
 | 
				
			||||||
 | 
					    this.ps = ps;
 | 
				
			||||||
 | 
					    this.cache = cache;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @Override
 | 
				
			||||||
 | 
					  boolean uniquePerUpdate() {
 | 
				
			||||||
 | 
					    return false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @Override
 | 
				
			||||||
 | 
					  void apply(ChangeUpdate update) throws OrmException {
 | 
				
			||||||
 | 
					    checkUpdate(update);
 | 
				
			||||||
 | 
					    if (c.getRevId() == null) {
 | 
				
			||||||
 | 
					      setCommentRevId(c, cache, change, ps);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    update.putComment(c);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -25,13 +25,13 @@ import com.google.gerrit.server.notedb.ChangeUpdate;
 | 
				
			|||||||
import com.google.gerrit.server.patch.PatchListCache;
 | 
					import com.google.gerrit.server.patch.PatchListCache;
 | 
				
			||||||
import com.google.gwtorm.server.OrmException;
 | 
					import com.google.gwtorm.server.OrmException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PatchLineCommentEvent extends Event {
 | 
					class DraftCommentEvent extends Event {
 | 
				
			||||||
  public final PatchLineComment c;
 | 
					  public final PatchLineComment c;
 | 
				
			||||||
  private final Change change;
 | 
					  private final Change change;
 | 
				
			||||||
  private final PatchSet ps;
 | 
					  private final PatchSet ps;
 | 
				
			||||||
  private final PatchListCache cache;
 | 
					  private final PatchListCache cache;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  PatchLineCommentEvent(PatchLineComment c, Change change, PatchSet ps,
 | 
					  DraftCommentEvent(PatchLineComment c, Change change, PatchSet ps,
 | 
				
			||||||
      PatchListCache cache) {
 | 
					      PatchListCache cache) {
 | 
				
			||||||
    super(PatchLineCommentsUtil.getCommentPsId(c), c.getAuthor(),
 | 
					    super(PatchLineCommentsUtil.getCommentPsId(c), c.getAuthor(),
 | 
				
			||||||
        c.getWrittenOn(), change.getCreatedOn(), c.getTag());
 | 
					        c.getWrittenOn(), change.getCreatedOn(), c.getTag());
 | 
				
			||||||
@@ -47,12 +47,8 @@ class PatchLineCommentEvent extends Event {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @Override
 | 
					  @Override
 | 
				
			||||||
  void apply(ChangeUpdate update) throws OrmException {
 | 
					  void apply(ChangeUpdate update) {
 | 
				
			||||||
    checkUpdate(update);
 | 
					    throw new UnsupportedOperationException();
 | 
				
			||||||
    if (c.getRevId() == null) {
 | 
					 | 
				
			||||||
      setCommentRevId(c, cache, change, ps);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    update.putComment(c);
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void applyDraft(ChangeDraftUpdate draftUpdate) throws OrmException {
 | 
					  void applyDraft(ChangeDraftUpdate draftUpdate) throws OrmException {
 | 
				
			||||||
		Reference in New Issue
	
	Block a user