Make large context group optional and disabled by default [AI-assisted]

Change-Id: I2b619a15f5aa6d99b7637b883b28737de3274d26
diff --git a/Changes b/Changes
index fdbc55a..7d7df63 100644
--- a/Changes
+++ b/Changes
@@ -3,6 +3,7 @@
 - Add a large-context group allowing users to access larger context by request [AI-assisted, #745]
 - Apply new kwic and shrinking properties for kustvakt-dnb
 - Fix handling non-existent large context group
+- Make large context group optional and disabled by default [AI-assisted]
 
 # version 1.2-SNAPSHOT
 
diff --git a/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java b/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
index 7ce4845..3d8dafb 100644
--- a/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
+++ b/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
@@ -65,6 +65,7 @@
 //    private int maxTokenMatch; // EM: Not implemented yet
 
     private int maxTokenContextLarge;
+    private boolean largeContextGroupEnabled;
     
     private int maxhits;
     private int returnhits;
@@ -249,6 +250,9 @@
         maxTokenContextLarge = Integer.parseInt(properties.getProperty(
                 "max.token.context.size.large", "0"));
         
+        largeContextGroupEnabled = Boolean.parseBoolean(properties.getProperty(
+                "large.context.group.enabled", "false"));
+        
         // Timeout validity in milis
         guestTimeout = Integer.parseInt(properties.getProperty(
                 "timeout.guest", "10000"));
diff --git a/src/main/java/de/ids_mannheim/korap/init/Initializator.java b/src/main/java/de/ids_mannheim/korap/init/Initializator.java
index 353cc09..af2f57c 100644
--- a/src/main/java/de/ids_mannheim/korap/init/Initializator.java
+++ b/src/main/java/de/ids_mannheim/korap/init/Initializator.java
@@ -68,7 +68,9 @@
             clientService.createInitialSuperClient(
                     OAuth2InitClientService.OUTPUT_FILENAME);
         }
-        createLargeContextGroup ();
+        if (config.isLargeContextGroupEnabled()) {
+            createLargeContextGroup();
+        }
         
         vcLoader.apiVersion = apiVersion;
         Thread t = new Thread(vcLoader);
@@ -96,7 +98,9 @@
 		queryService.handlePutRequest("system", "system", "system-q", q, 
 				apiVersion);
 
-		createLargeContextGroup ();
+		if (config.isLargeContextGroupEnabled()) {
+			createLargeContextGroup();
+		}
 	}
 	
 	private void createLargeContextGroup () throws KustvaktException {
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/QueryContextRewrite.java b/src/main/java/de/ids_mannheim/korap/rewrite/QueryContextRewrite.java
index 470368d..1c72666 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/QueryContextRewrite.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/QueryContextRewrite.java
@@ -30,7 +30,9 @@
     public KoralNode rewriteQuery (KoralNode node, KustvaktConfiguration config,
             User user, double apiVersion) throws KustvaktException {
 
-        int maxContext = isInLargeContextGroup(user)
+        boolean useLargeContext = config.isLargeContextGroupEnabled()
+                && isInLargeContextGroup(user);
+        int maxContext = useLargeContext
                 ? config.getMaxTokenContextLarge()
                 : config.getMaxTokenContext();
         if (maxContext > 0) {
diff --git a/src/test/resources/kustvakt-test.conf b/src/test/resources/kustvakt-test.conf
index 9cd1a9e..8f7cf6a 100644
--- a/src/test/resources/kustvakt-test.conf
+++ b/src/test/resources/kustvakt-test.conf
@@ -49,6 +49,7 @@
 # Virtual corpus and queries
 max.user.persistent.queries = 5
 max.token.context.size = 40
+large.context.group.enabled = true
 max.token.context.size.large = 50
 
 # default false