Setup: Add init step for autoReindex configuration

Bug: Issue 10044
Change-Id: I79ffb92f4c23a9b6999d8fe66ce7742df7cf9b52
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Setup.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Setup.java
index 7b0b832..a0dfece 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/Setup.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/Setup.java
@@ -14,6 +14,8 @@
 
 package com.ericsson.gerrit.plugins.highavailability;
 
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.AutoReindex.AUTO_REINDEX_SECTION;
+import static com.ericsson.gerrit.plugins.highavailability.Configuration.AutoReindex.ENABLED;
 import static com.ericsson.gerrit.plugins.highavailability.Configuration.Cache.CACHE_SECTION;
 import static com.ericsson.gerrit.plugins.highavailability.Configuration.DEFAULT_THREAD_POOL_SIZE;
 import static com.ericsson.gerrit.plugins.highavailability.Configuration.Http.CONNECTION_TIMEOUT_KEY;
@@ -94,6 +96,7 @@
       Path pluginConfigFile = site.etc_dir.resolve(pluginName + ".config");
       config = new FileBasedConfig(pluginConfigFile.toFile(), FS.DETECTED);
       config.load();
+      configureAutoReindexSection();
       configureHttp();
       configureCacheSection();
       configureIndexSection();
@@ -107,6 +110,13 @@
     }
   }
 
+  private void configureAutoReindexSection() {
+    ui.header("AutoReindex section");
+    Boolean autoReindex =
+        promptAndSetBoolean("Auto reindex", AUTO_REINDEX_SECTION, null, ENABLED, false);
+    config.setBoolean(AUTO_REINDEX_SECTION, null, ENABLED, autoReindex);
+  }
+
   private void configureMainSection() {
     ui.header("Main section");
     String sharedDirDefault = ui.isBatch() ? DEFAULT_SHARED_DIRECTORY : null;
@@ -178,6 +188,16 @@
         "Cleanup interval", WEBSESSION_SECTION, CLEANUP_INTERVAL_KEY, DEFAULT_CLEANUP_INTERVAL);
   }
 
+  private Boolean promptAndSetBoolean(
+      String title, String section, String subsection, String name, Boolean defaultValue) {
+    Boolean oldValue = config.getBoolean(section, subsection, name, defaultValue);
+    Boolean newValue = Boolean.parseBoolean(ui.readString(String.valueOf(oldValue), title));
+    if (!Objects.equals(oldValue, newValue)) {
+      config.setBoolean(section, subsection, name, newValue);
+    }
+    return newValue;
+  }
+
   private String promptAndSetString(
       String title, String section, String name, String defaultValue) {
     return promptAndSetString(title, section, null, name, defaultValue);