ExportReviewNotes: Simplify code by using Multimap

Change-Id: Ide4a7ce1837d90ad6c60ffa29365ba3733150958
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java
index 2b1968c..80c5fa5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/reviewnotes/ExportReviewNotes.java
@@ -14,6 +14,8 @@
 
 package com.googlesource.gerrit.plugins.reviewnotes;
 
+import com.google.common.collect.ArrayListMultimap;
+import com.google.common.collect.ListMultimap;
 import com.google.gerrit.reviewdb.client.Change;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -28,12 +30,10 @@
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.lib.TextProgressMonitor;
 import org.eclipse.jgit.lib.ThreadSafeProgressMonitor;
-import org.eclipse.jgit.util.BlockList;
 import org.kohsuke.args4j.Option;
 
 import java.io.IOException;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -52,7 +52,7 @@
   @Inject
   private CreateReviewNotes.Factory reviewNotesFactory;
 
-  private Map<Project.NameKey, List<Change>> changes;
+  private ListMultimap<Project.NameKey, Change> changes;
   private ThreadSafeProgressMonitor monitor;
 
   @Override
@@ -84,16 +84,11 @@
     }
   }
 
-  private Map<Project.NameKey, List<Change>> cluster(List<Change> changes) {
-    HashMap<Project.NameKey, List<Change>> m = new HashMap<>();
+  private ListMultimap<Project.NameKey, Change> cluster(List<Change> changes) {
+    ListMultimap<Project.NameKey, Change> m = ArrayListMultimap.create();
     for (Change change : changes) {
       if (change.getStatus() == Change.Status.MERGED) {
-        List<Change> l = m.get(change.getProject());
-        if (l == null) {
-          l = new BlockList<>();
-          m.put(change.getProject(), l);
-        }
-        l.add(change);
+        m.put(change.getProject(), change);
       } else {
         monitor.update(1);
       }
@@ -121,7 +116,7 @@
       }
 
       final Project.NameKey name = changes.keySet().iterator().next();
-      final List<Change> list = changes.remove(name);
+      final List<Change> list = changes.removeAll(name);
       return new Map.Entry<Project.NameKey, List<Change>>() {
         @Override
         public Project.NameKey getKey() {