// Copyright (C) 2017 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.query;

import org.eclipse.jgit.lib.Config;

public class IndexConfig {

  public static Config createForLucene() {
    return create();
  }

  public static Config createForElasticsearch() {
    Config cfg = create();

    // For some reason enabling the staleness checker increases the flakiness of the Elasticsearch
    // tests. Hence disable the staleness checker.
    cfg.setBoolean("index", null, "autoReindexIfStale", false);

    return cfg;
  }

  public static Config create() {
    Config cfg = new Config();
    cfg.setInt("index", null, "maxPages", 10);
    cfg.setString("trackingid", "query-bug", "footer", "Bug:");
    cfg.setString("trackingid", "query-bug", "match", "QUERY\\d{2,8}");
    cfg.setString("trackingid", "query-bug", "system", "querytests");
    cfg.setString("trackingid", "query-feature", "footer", "Feature");
    cfg.setString("trackingid", "query-feature", "match", "QUERY\\d{2,8}");
    cfg.setString("trackingid", "query-feature", "system", "querytests");
    return cfg;
  }
}

@@ -707,17 +707,16 @@
 onfig %7B%0A
-%0A
   public
@@ -740,17 +740,8 @@
 eate
-ForLucene
 () %7B
@@ -762,395 +762,108 @@
 eate
-();%0A  %7D%0A%0A  public static Config createForElasticsearch() %7B%0A    Config cfg = create();%0A%0A    // For some reason enabling the staleness checker increases the flakiness of the Elasticsearch%0A    // tests. Hence disable the staleness checker.%0A    cfg.setBoolean(%22index%22, null, %22autoReindexIfStale%22, false);%0A%0A    return cfg;%0A  %7D%0A%0A  public static Config create() %7B%0A    Config cfg = new Config();
+FromExistingConfig(new Config());%0A  %7D%0A%0A  public static Config createFromExistingConfig(Config cfg) %7B
 %0A   
@@ -1352,11 +1352,394 @@
 cfg;%0A  %7D
+%0A%0A  public static Config createForLucene() %7B%0A    return create();%0A  %7D%0A%0A  public static Config createForElasticsearch() %7B%0A    Config cfg = create();%0A%0A    // For some reason enabling the staleness checker increases the flakiness of the Elasticsearch%0A    // tests. Hence disable the staleness checker.%0A    cfg.setBoolean(%22index%22, null, %22autoReindexIfStale%22, false);%0A%0A    return cfg;%0A  %7D
 %0A%7D%0A

add a method to apply settings for existing Config