Move the UNKNOWN constant from interface to class

Otherwise, this implementation detail leaks into the implementing
class's exported API. A class using constants internally is an
implementation detail.

Introduce a beginTask interface method for such unknown work units use.

Also-by: Helene Cormier <helene.cormier@ericsson.com>
Change-Id: Iacf0cefdccb5507b633c8ab1d0a17a81da095995
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 12e6654..3afc396 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/RenameProject.java
@@ -112,7 +112,7 @@
   void assertCanRename(ProjectResource rsrc, Input input, ProgressMonitor pm)
       throws ResourceConflictException, BadRequestException, AuthException {
     try {
-      pm.beginTask("Checking preconditions", ProgressMonitor.UNKNOWN);
+      pm.beginTask("Checking preconditions");
       assertNewNameNotNull(input);
       assertRenamePermission(rsrc);
       renamePreconditions.assertCanRename(rsrc, new Project.NameKey(input.name));
@@ -153,7 +153,7 @@
   }
 
   List<Change.Id> getChanges(ProjectResource rsrc, ProgressMonitor pm) throws OrmException {
-    pm.beginTask("Retrieving the list of changes from DB", ProgressMonitor.UNKNOWN);
+    pm.beginTask("Retrieving the list of changes from DB");
     Project.NameKey oldProjectKey = rsrc.getControl().getProject().getNameKey();
     return dbHandler.getChangeIds(oldProjectKey);
   }
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 2c59f8e..3215c42 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
@@ -88,7 +88,7 @@
       Project.NameKey newProjectKey,
       ProgressMonitor pm)
       throws OrmException {
-    pm.beginTask("Updating changes in the database", ProgressMonitor.UNKNOWN);
+    pm.beginTask("Updating changes in the database");
     Connection conn = ((JdbcSchema) schemaFactory.open()).getConnection();
     try (Statement stmt = conn.createStatement()) {
       conn.setAutoCommit(false);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/fs/FilesystemRenameHandler.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/fs/FilesystemRenameHandler.java
index 9663be4..29a76d8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/fs/FilesystemRenameHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/fs/FilesystemRenameHandler.java
@@ -50,7 +50,7 @@
     Repository repository = repoManager.openRepository(oldProjectKey);
     File repoFile = repository.getDirectory();
     RepositoryCache.close(repository);
-    pm.beginTask("Renaming git repository", ProgressMonitor.UNKNOWN);
+    pm.beginTask("Renaming git repository");
     renameGitRepository(repoFile, newProjectKey, oldProjectKey);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/CommandProgressMonitor.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/CommandProgressMonitor.java
index 25e8451..d614986 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/CommandProgressMonitor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/CommandProgressMonitor.java
@@ -28,6 +28,9 @@
   private boolean write = true;
   private Task task;
 
+  // Constant indicating the total work units cannot be predicted in advance.
+  private static final int UNKNOWN = 0;
+
   public CommandProgressMonitor(Writer out) {
     this.out = out;
   }
@@ -35,7 +38,7 @@
   @Override
   public synchronized void beginTask(String taskName, int work) {
     endTask();
-    if (work == ProgressMonitor.UNKNOWN) {
+    if (work == UNKNOWN) {
       task = new UnknownTask(taskName);
     } else {
       task = new Task(taskName, work);
@@ -43,6 +46,11 @@
   }
 
   @Override
+  public synchronized void beginTask(String taskName) {
+    beginTask(taskName, UNKNOWN);
+  }
+
+  @Override
   public synchronized void update(int completed) {
     if (task != null) {
       task.update(completed);
@@ -137,7 +145,7 @@
     private int animationCounter;
 
     UnknownTask(String taskName) {
-      super(taskName, ProgressMonitor.UNKNOWN);
+      super(taskName, UNKNOWN);
       executor =
           new ScheduledThreadPoolExecutor(
               1, new ThreadFactoryBuilder().setNameFormat("Rename-Monitoring-%d").build());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/NoopMonitor.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/NoopMonitor.java
index fac2d11..a03d907 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/NoopMonitor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/NoopMonitor.java
@@ -29,6 +29,11 @@
   }
 
   @Override
+  public void beginTask(String title) {
+    // Do not report.
+  }
+
+  @Override
   public void update(int completed) {
     // Do not report.
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/ProgressMonitor.java b/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/ProgressMonitor.java
index d7a0916..d857e67 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/ProgressMonitor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/renameproject/monitor/ProgressMonitor.java
@@ -16,19 +16,22 @@
 
 public interface ProgressMonitor {
 
-  /** Constant indicating the total work units cannot be predicted. */
-  int UNKNOWN = 0;
-
   /**
    * Begin processing a single task.
    *
    * @param title title to describe the task.
-   * @param totalWork total number of work units the application will perform; {@link #UNKNOWN} if
-   *     it cannot be predicted in advance.
+   * @param totalWork total number of work units the application will perform.
    */
   void beginTask(String title, int totalWork);
 
   /**
+   * Begin processing a single task of unknown work units.
+   *
+   * @param title title to describe the task.
+   */
+  void beginTask(String title);
+
+  /**
    * Denote that some work units have been completed.
    *
    * <p>This is an incremental update; if invoked once per work unit the correct value for our