Refactor: Use static `scanChangeIds` method to retrieve project changes

Replace existing logic with the static `scanChangeIds` method to
simplify and clean up the code for retrieving change IDs.

Change-Id: I086958dc107f12dbc3aa77728b19d01b2e1de8aa
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
index 5ea32f6..3da6f68 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameCommand.java
@@ -30,8 +30,8 @@
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.util.List;
 import java.util.NoSuchElementException;
+import java.util.Set;
 import org.kohsuke.args4j.Argument;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -62,7 +62,7 @@
       ProjectResource rsrc = new ProjectResource(projectState, self.get());
       try (CommandProgressMonitor monitor = new CommandProgressMonitor(stdout)) {
         renameProject.assertCanRename(rsrc, input, monitor);
-        List<Change.Id> changeIds = renameProject.getChanges(rsrc, monitor);
+        Set<Change.Id> changeIds = renameProject.getChanges(rsrc, monitor);
         if (!renameProject.startRename(
             rsrc, input, monitor, continueRename(changeIds, monitor), changeIds)) {
           stdout.flush();
@@ -73,7 +73,7 @@
     }
   }
 
-  private boolean continueRename(List<Change.Id> changes, ProgressMonitor pm) throws IOException {
+  private boolean continueRename(Set<Change.Id> changes, ProgressMonitor pm) throws IOException {
     if (changes != null && changes.size() > WARNING_LIMIT) {
       // close the progress task explicitly this time to get user input
       pm.close();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
index f653147..572cbeb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
@@ -81,7 +81,7 @@
           RenameRevertException {
     ProgressMonitor progressMonitor = NoopMonitor.INSTANCE;
     assertCanRename(resource, input, progressMonitor);
-    List<Id> changeIds = getChanges(resource, progressMonitor);
+    Set<Id> changeIds = getChanges(resource, progressMonitor);
     if (startRename(
         resource,
         input,
@@ -98,7 +98,7 @@
       Input input,
       ProgressMonitor progressMonitor,
       boolean continueRename,
-      List<Change.Id> changeIds)
+      Set<Change.Id> changeIds)
       throws ResourceConflictException,
           BadRequestException,
           AuthException,
@@ -121,7 +121,7 @@
         return false;
       }
     } else {
-      doRename(Collections.emptyList(), resource, input, NoopMonitor.INSTANCE);
+      doRename(Collections.emptySet(), resource, input, NoopMonitor.INSTANCE);
     }
     return true;
   }
@@ -280,7 +280,7 @@
     }
   }
 
-  void doRename(List<Change.Id> changeIds, ProjectResource rsrc, Input input, ProgressMonitor pm)
+  void doRename(Set<Change.Id> changeIds, ProjectResource rsrc, Input input, ProgressMonitor pm)
       throws InterruptedException, ConfigInvalidException, IOException, RenameRevertException {
     Project.NameKey oldProjectKey = rsrc.getNameKey();
     Project.NameKey newProjectKey = Project.nameKey(input.name);
@@ -357,7 +357,7 @@
   }
 
   void indexRenameStep(
-      List<Change.Id> changeIds,
+      Set<Change.Id> changeIds,
       Project.NameKey oldProjectKey,
       Project.NameKey newProjectKey,
       ProgressMonitor pm)
@@ -396,8 +396,8 @@
     return stepsPerformed;
   }
 
-  List<Change.Id> getChanges(ProjectResource rsrc, ProgressMonitor pm) throws IOException {
-    pm.beginTask("Retrieving the list of changes from DB");
+  Set<Change.Id> getChanges(ProjectResource rsrc, ProgressMonitor pm) throws IOException {
+    pm.beginTask("Retrieving changes from DB");
     Project.NameKey oldProjectKey = rsrc.getNameKey();
     return dbHandler.getChangeIds(oldProjectKey);
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java
index d6e5713..7f6823d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProject.java
@@ -25,6 +25,7 @@
 import com.googlesource.gerrit.plugins.renameproject.monitor.ProgressMonitor;
 import java.io.IOException;
 import java.util.List;
+import java.util.Set;
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -51,7 +52,7 @@
 
   void performRevert(
       List<Step> stepsPerformed,
-      List<Id> changeIds,
+      Set<Id> changeIds,
       Project.NameKey oldProjectKey,
       Project.NameKey newProjectKey,
       ProgressMonitor pm)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
index ae5a57a..dc70b30 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/DatabaseRenameHandler.java
@@ -26,7 +26,6 @@
 import com.google.gerrit.server.account.AccountsUpdate;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.notedb.ChangeNotes;
-import com.google.gerrit.server.notedb.ChangeNotes.Factory.ChangeNotesResult;
 import com.google.gerrit.server.query.account.InternalAccountQuery;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
@@ -36,11 +35,9 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.stream.Stream;
 import org.eclipse.jgit.errors.ConfigInvalidException;
 import org.eclipse.jgit.lib.Repository;
 import org.slf4j.Logger;
@@ -50,34 +47,25 @@
 public class DatabaseRenameHandler {
   private static final Logger log = LoggerFactory.getLogger(DatabaseRenameHandler.class);
 
-  private final ChangeNotes.Factory notesFactory;
   private final GitRepositoryManager repoManager;
   private final Provider<InternalAccountQuery> accountQueryProvider;
   private final Provider<AccountsUpdate> accountsUpdateProvider;
 
   @Inject
   public DatabaseRenameHandler(
-      ChangeNotes.Factory notesFactory,
       GitRepositoryManager repoManager,
       Provider<InternalAccountQuery> accountQueryProvider,
       @ServerInitiated Provider<AccountsUpdate> accountsUpdateProvider) {
     this.accountQueryProvider = accountQueryProvider;
-    this.notesFactory = notesFactory;
     this.repoManager = repoManager;
     this.accountsUpdateProvider = accountsUpdateProvider;
   }
 
-  public List<Change.Id> getChangeIds(Project.NameKey oldProjectKey) throws IOException {
+  public Set<Change.Id> getChangeIds(Project.NameKey oldProjectKey) throws IOException {
     log.debug("Starting to retrieve changes from the DB for project {}", oldProjectKey.get());
-    List<Change.Id> changeIds = new ArrayList<>();
+    Set<Change.Id> changeIds;
     try (Repository repo = repoManager.openRepository(oldProjectKey)) {
-      Stream<ChangeNotesResult> changes = notesFactory.scan(repo, oldProjectKey);
-      Iterator<ChangeNotesResult> iterator = changes.iterator();
-      while (iterator.hasNext()) {
-        ChangeNotesResult change = iterator.next();
-        Change.Id changeId = change.id();
-        changeIds.add(changeId);
-      }
+      changeIds = ChangeNotes.Factory.scanChangeIds(repo).keySet();
     }
     log.debug(
         "Number of changes in noteDb related to project {} are {}",
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java
index 5b01391..16105e2 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/database/IndexUpdateHandler.java
@@ -24,6 +24,7 @@
 import com.googlesource.gerrit.plugins.renameproject.monitor.ProgressMonitor;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
@@ -46,7 +47,7 @@
   }
 
   public void updateIndex(
-      List<Change.Id> changeIds, Project.NameKey newProjectKey, ProgressMonitor pm)
+      Set<Change.Id> changeIds, Project.NameKey newProjectKey, ProgressMonitor pm)
       throws InterruptedException {
     log.debug("Starting to index {} change(s).", changeIds.size());
     ExecutorService executor =
diff --git a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
index 7103c9b..24074e6 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/renameproject/RevertRenameProjectTest.java
@@ -29,8 +29,8 @@
 import com.google.gerrit.server.project.ProjectState;
 import com.googlesource.gerrit.plugins.renameproject.RenameProject.Step;
 import com.googlesource.gerrit.plugins.renameproject.monitor.ProgressMonitor;
-import java.util.List;
 import java.util.Optional;
+import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
@@ -67,7 +67,7 @@
   @UseLocalDisk
   public void testRevertFromFsHandler() throws Exception {
     Result result = createChange();
-    List<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
+    Set<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
 
     renameProject.fsRenameStep(oldProjectKey, newProjectKey, pm);
     assertRenamed(result);
@@ -81,7 +81,7 @@
   @UseLocalDisk
   public void testRevertFromCacheHandler() throws Exception {
     Result result = createChange();
-    List<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
+    Set<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
 
     renameProject.fsRenameStep(oldProjectKey, newProjectKey, pm);
     renameProject.cacheRenameStep(oldProjectKey, newProjectKey);
@@ -96,7 +96,7 @@
   @UseLocalDisk
   public void testRevertFromDbHandler() throws Exception {
     Result result = createChange();
-    List<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
+    Set<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
 
     renameProject.fsRenameStep(oldProjectKey, newProjectKey, pm);
     renameProject.cacheRenameStep(oldProjectKey, newProjectKey);
@@ -112,7 +112,7 @@
   @UseLocalDisk
   public void testRevertFromIndexHandler() throws Exception {
     Result result = createChange();
-    List<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
+    Set<Change.Id> changeIds = renameProject.getChanges(oldRsrc, pm);
 
     renameProject.fsRenameStep(oldProjectKey, newProjectKey, pm);
     renameProject.cacheRenameStep(oldProjectKey, newProjectKey);