Improve API call if hitc is smaller than pageCount

Change-Id: Ia177280a9d528ede3ff2763dd39def93fc8570f7
diff --git a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
index d24f730..299c395 100644
--- a/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
+++ b/plugin/src/main/java/de/ids_mannheim/korap/plkexport/IdsExportService.java
@@ -55,7 +55,6 @@
  * - Add hitc to form.
  * - Add infos to JsonExporter.
  * - Add date info.
- * - Adjust count, if hitc < count.
  */
 
 @Path("/")
@@ -158,9 +157,12 @@
         int maxResults = Integer.parseInt(prop.getProperty("conf.max_exp_limit", "10000"));
 
         // Adjust the number of requested hits
-        if (hitc > 0 && hitc < maxResults) {
+        if (hitc > 0 && hitc < maxResults)
             maxResults = hitc;
-        };
+
+        // If less than pageSize results are requested - dont't fetch more
+        if (maxResults < pageSize)
+            pageSize = maxResults;
                
         // Create initial search uri
         UriBuilder uri = UriBuilder.fromPath("/api/v1.0/search")
@@ -171,6 +173,7 @@
             // .queryParam("context", "sentence")
             .queryParam("context", "40-t,40-t") // Not yet supported
             .queryParam("ql", ql)
+            .queryParam("count", pageSize)
             ;
 
         if (cq != null && cq.length() > 0)
@@ -180,9 +183,6 @@
             uri = uri.path(path);
         };
 
-        // Set the page count to the given pagesize
-        uri = uri.queryParam("count", pageSize);
-
         // Get client IP, in case service is behind a proxy
         String xff = "";
         // Get auth (temporarily) via Session riding
@@ -229,7 +229,7 @@
         if (fname != null) {
             exp.setFileName(fname);
         };
-        
+
         // Initialize exporter (with meta data and first matches)
         try {
             exp.init(resp);
diff --git a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
index 0827f05..8ead0e0 100644
--- a/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
+++ b/plugin/src/test/java/de/ids_mannheim/korap/plkexport/IdsExportServiceTest.java
@@ -732,6 +732,19 @@
         assertEquals(lines.length,8);
         assertEquals(lines[0],"HasMoreLeft,leftContext,Match,rightContext,HasMoreRight,isCutted,textSigle,author,pubDate,title");
         assertEquals(lines[7],"...,\"vielleicht eine neue Schloss-Einstein-Antragswelle unterbinden.-- 07:36, 23. Jun. 2008 (CEST)  Mentor  Lieber Kriddl, als ich mir die Liste der Mentoren anschaute, fiel mein Augenmerk auf Dich als Jurist. Könntest Du mir jungen Wikipedianer (aber nicht jung an Jahren) helfen, einen\",Plagegeist,\", der mich seit meiner ersten Teilnahme als IP mobbt, helfen? Wenn ja, so schau Dir doch als Einstieg bitte meinen Wiederherstellungs-Antrag zum Artikel Meton-Periode an: WP:LP, 26.Juni 08. Dort ist nicht nur der Sachverhalt, in den man sich nicht\",...,,WUD17/K35/39955,\"TaxonBot, u.a.\",2017-07-01,\"Benutzer Diskussion:Kriddl/Archiv\"");
+
+        // Check for pageSize adjustments
+        frmap.putSingle("hitc", "2");
+
+        responsecsv = target("/export").request()
+            .post(Entity.form(frmap));
+        assertEquals("Request CSV: Http Response should be 200: ",
+                Status.OK.getStatusCode(), responsecsv.getStatus());
+
+        str = responsecsv.readEntity(String.class);
+        lines = str.split("\n");
+
+        assertEquals(lines.length,3);
     };