Test paging of results and introduce cutoff form param

Change-Id: Ifbaf57a2393bc026c06c4f963993084457b0fa58
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 f16bed2..680f6a7 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
@@ -57,23 +57,12 @@
 import freemarker.template.Template;
 
 /**
- * TODO
- * This is only a draft!!!
- * Has to be integrated in Nils sourcecode
- * 
- * Export works only for rtf, JSON has to be integrated
- * 
- * Delete the temp file of the export at the end
- * 
- * Get variable cutoff from URL
- * 
- * Right now, the web service returns one page (cutoff=1) or all
- * pages.
- * There is now limitations of hits. ("Beschränken auf xy Treffer")
- * does not work right now.
- * 
- * ------------------------------------------------------------
- * Works with the export demo
+ * TODO:
+ * - Paging export works only for rtf, JSON has to be integrated
+ * - Delete the temp file of the export at the end
+ * - Get variable cutoff from URL
+ * - Right now, the web service returns one page (cutoff=1) or
+ *   all pages.
  */
 
 @Path("/")
@@ -130,15 +119,18 @@
         @FormParam("q") String q,
         @FormParam("ql") String ql,
         @FormParam("islimit") String il,
+        @FormParam("cutoff") String cutoffStr,
         @FormParam("hitc") int hitc
         ) throws IOException {
-        
+
+        // These parameters are required
         String[][] params = {
             { "format", format },
             { "q", q },
             { "ql", ql }
         };
 
+        // Check that all parameters are available
         for (int i = 0; i < params.length; i++) {
             if (params[i][1] == null || params[i][1].trim().isEmpty())
                 throw new BadRequestException(
@@ -147,14 +139,16 @@
                     .entity("Parameter " + "\""
                             + params[i][0] + "\"" + " is missing or empty")
                     .build());
-        }
+        };
 
 
         int totalhits;
-
-        //TODO cutoff to try out, retrieve it  later:
+        
+        // Retrieve cutoff value
         boolean cutoff = false;
-        //boolean cutoff = true;
+        if (cutoffStr != null && (cutoffStr.equals("true") || cutoffStr.equals("1"))) {
+            cutoff = true;
+        };
 
         ResponseBuilder builder = null;
         Client client = ClientBuilder.newClient();
@@ -259,8 +253,10 @@
 
         // format == json
         if (format.equals("json")) {
-            builder = Response.ok(resp);
-            builder.type(MediaType.APPLICATION_JSON);
+            if (cutoff) {
+                builder = Response.ok(resp);
+                builder.type(MediaType.APPLICATION_JSON);
+            };
         }
 
         // format == rtf
@@ -274,8 +270,9 @@
              * Get total results
              */
             totalhits = actualObj.at("/meta").get("totalResults").asInt();
-
-            // If only one page should be exported there is no need for an temporary export file
+            
+            // If only one page should be exported there is no need
+            // for a temporary export file
             if (cutoff) {
                 String rtfresp = getRtf(resp);
                 builder = Response.ok(rtfresp);
@@ -302,17 +299,19 @@
                 File expTmp = createTempFile("idsexppl-", format);
                 FileWriter fw = new FileWriter(expTmp, true);
                 BufferedWriter bw = new BufferedWriter(fw);
-                //better delete after it is not needed anymore
+                // better delete after it is not needed anymore
                 expTmp.deleteOnExit();
             
                 // position of pages, 1 = first page, 2 = middle pages, 3 = last page
                 int pos = 0;
                 // String urlorg = url;
-                uri.queryParam("page", "{PAGE}");
+                uri.queryParam("offset", "{offset}");
                 for (int i = 1; i <= pg; i++) {
                     // url = urlorg + "&page=" + i;
                     // resource = client.target(url);
-                    resource = client.target(uri.build(i));
+                    resource = client.target(
+                        uri.build((i * ExWSConf.PAGE_SIZE) - ExWSConf.PAGE_SIZE)
+                        );
                     resp = resource.request(MediaType.APPLICATION_JSON)
                         .get(String.class);
 
@@ -465,7 +464,9 @@
     };
     
   
-
+    /*
+     * Iterate over all matches and get an RTF section
+     */
     public String getRtfSection (LinkedList list, int pos, int dr) {
         LinkedList matchlist = list;
         RtfTextPara par = p((" "));
@@ -482,11 +483,11 @@
         
         //TODO Add export plugin version to JSON output?
         //
-         // TODO 
-         // The output rtf file lacks style, 
-         // but I'm thinking about changing the jRTF library to OpenRTF https://github.com/LibrePDF/OpenRTF, 
-         // because jRTF is very rudimentary, so I only list the information in a section right now.
-         //
+        // TODO 
+        // The output rtf file lacks style, 
+        // but I'm thinking about changing the jRTF library to OpenRTF https://github.com/LibrePDF/OpenRTF, 
+        // because jRTF is very rudimentary, so I only list the information in a section right now.
+        //
 
         RtfTextPara pv = getVersion();
         listp.add(pv);
@@ -494,7 +495,7 @@
         for (int i = 0; i < j; i++) {
             MatchExport matchakt = (MatchExport) matchlist.get(i);
             reference = " (" + matchakt.getTitle() + " von "
-                    + matchakt.getAuthor() + " (" + matchakt.getPubDate() + ")";
+                + matchakt.getAuthor() + " (" + matchakt.getPubDate() + ")";
             textSigle = "[" + matchakt.getTextSigle() + "]";
             String leftSnippet = matchakt.getSnippetO().getLeft();
             String rightSnippet = matchakt.getSnippetO().getRight();
@@ -504,69 +505,73 @@
             listp.add(par);
         }
 
-
         String rtfresp = rtf().section(listp).toString();
         return rtfresp;
-
-    }
+    };
 
     
     public String writeRTF (LinkedList list) throws IOException {
         String rtfresp =  getRtfSection(list, 0, 0);
         return rtfresp;
-    }
+    };
     
+
     public void writeRTF (LinkedList list, File file, FileWriter filewriter,
-            BufferedWriter bw, int pos, int dr) throws IOException {
+                          BufferedWriter bw, int pos, int dr) throws IOException {
    
         String rtfresp = getRtfSection(list, pos,dr);
         
         switch (pos) {
 
-            case 1: {
-                rtfresp = rtfresp.substring(0, rtfresp.length() - 1);
-                bw.append(rtfresp);
-                bw.flush();
-                break;
-            }
-
-            case 2: {
-                rtfresp = rtfresp.substring(143, rtfresp.length() - 1);
-                bw.append(rtfresp);
-                bw.flush();
-                break;
-            }
-
-            case 3: {
-                rtfresp = rtfresp.substring(143);
-                bw.append(rtfresp);
-                bw.flush();
-                bw.close();
-                break;
-            }
-
-            default: {
-                //TODO Error Handling
-                System.out.println("Invalid pos Parameter");
-                break;
-            }
+        case 1: {
+            rtfresp = rtfresp.substring(0, rtfresp.length() - 1);
+            bw.append(rtfresp);
+            bw.flush();
+            break;
         }
 
+        case 2: {
+            rtfresp = rtfresp.substring(143, rtfresp.length() - 1);
+            bw.append(rtfresp);
+            bw.flush();
+            break;
+        }
+
+        case 3: {
+            rtfresp = rtfresp.substring(143);
+            bw.append(rtfresp);
+            bw.flush();
+            bw.close();
+            break;
+        }
+
+        default: {
+            //TODO Error Handling
+            System.out.println("Invalid pos Parameter");
+            break;
+        }
+        };
+
         return;
+    };
 
-    }
 
-    /**
-     *  Get version for RTF document 
-     *  */
+    /*
+     * Get version for RTF document 
+     */
     public RtfTextPara getVersion () {
-        Version version = new Version(ExWSConf.VERSION_MAJOR,
-                ExWSConf.VERSION_MINOR, ExWSConf.VERSION_PATCHLEVEL, null, null,
-                null);
+        Version version = new Version(
+            ExWSConf.VERSION_MAJOR,
+            ExWSConf.VERSION_MINOR,
+            ExWSConf.VERSION_PATCHLEVEL,
+            null,
+            null,
+            null
+            );
         RtfTextPara parv = p("@Institut für Deutsche Sprache, Mannheim", ("\n"),
-                "IDSExportPlugin-Version:  ", version, "\n");
+                             "IDSExportPlugin-Version:  ", version, "\n");
         return parv;
-    }
+    };
 
 
     /*
@@ -587,7 +592,8 @@
         };
 
         return "";
-    }
+    };
+
 
     /**
      * Creates file to hold the result temporarily
@@ -597,11 +603,11 @@
         try {
             File temp = File.createTempFile(name, "." + suffix);
             return temp;
-
+            
         }
         catch (IOException e) {
             e.printStackTrace();
         }
         return null;
-    }
-}
+    };
+};
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 329461c..c3c4036 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
@@ -109,6 +109,7 @@
         frmap.add("fname", filenamej);
         frmap.add("format", "json");
         frmap.add("q", "Wasser");
+        frmap.add("cutoff", "true");
         frmap.add("ql", "poliqarp");
 
         String message;
@@ -214,6 +215,7 @@
         frmap.add("format", "json");
         frmap.add("q", "????");
         frmap.add("ql", "poliqarp");
+        frmap.add("cutoff", "true");
 
         String message;
 
@@ -244,6 +246,7 @@
         frmap.add("format", "rtf");
         frmap.add("q", "Wasser");
         frmap.add("ql", "poliqarp");
+        frmap.add("cutoff", "true");
         String filenamer = "dateiRtf";
         frmap.putSingle("fname", filenamer);
 
@@ -269,6 +272,7 @@
         Response resp;
         String fvalue;
         frmap.remove("fname");
+        frmap.remove("cutoff");
         MultivaluedHashMap<String, String> map = new MultivaluedHashMap<String, String>();
         map.putAll(frmap);
 
@@ -319,6 +323,7 @@
         frmap.add("format", "rtf");
         frmap.add("q", "????");
         frmap.add("ql", "poliqarp");
+        frmap.add("cuttoff", "true");
         String filenamer = "dateiRtf";
         frmap.putSingle("fname", filenamer);
 
@@ -326,10 +331,60 @@
 
         Response responsertf = target("/export").request()
             .post(Entity.form(frmap));
+
         assertEquals("Request RTF: Http Response should be 200: ",
                 Status.OK.getStatusCode(), responsertf.getStatus());
     }
 
+    @Test
+    public void testExportWsRTFPaging () {
+
+        mockClient.reset().when(
+            request()
+            .withMethod("GET")
+            .withPath("/api/v1.0/search")
+            .withQueryStringParameter("q", "Plagegeist")
+            .withQueryStringParameter("count", "5")
+            .withQueryStringParameter("offset", "5")
+            )
+            .respond(
+                response()
+                .withHeader("Content-Type: application/json; charset=utf-8")
+                .withBody(getFixture("response_plagegeist_2.json"))
+                .withStatusCode(200)
+                );
+
+        mockClient.when(
+            request()
+            .withMethod("GET")
+            .withPath("/api/v1.0/search")
+            .withQueryStringParameter("q", "Plagegeist")
+            )
+            .respond(
+                response()
+                .withHeader("Content-Type: application/json; charset=utf-8")
+                .withBody(getFixture("response_plagegeist_1.json"))
+                .withStatusCode(200)
+                );
+        
+        MultivaluedHashMap<String, String> frmap = new MultivaluedHashMap<String, String>();
+        frmap.add("format", "rtf");
+        frmap.add("q", "Plagegeist");
+        frmap.add("ql", "poliqarp");
+        String filenamer = "dateiPagingRtf";
+        frmap.putSingle("fname", filenamer);
+
+        Response responsertf = target("/export").request()
+            .post(Entity.form(frmap));
+        assertEquals("Request RTF: Http Response should be 200: ",
+                Status.OK.getStatusCode(), responsertf.getStatus());
+
+        String str = responsertf.readEntity(String.class);
+        assertTrue("Page 1 content", str.contains("Ironhoof"));
+        assertTrue("Page 2 content", str.contains("Sinologie"));
+    }
+
+    
 
     @Test
     public void testExportWsProxyProblem () {
@@ -343,8 +398,7 @@
         frmap.add("format", "json");
         frmap.add("q", "????");
         frmap.add("ql", "poliqarp");
-
-        String message;
+        frmap.add("cuttoff", "true");
 
         Response responsejson = target("/export").request()
                 .post(Entity.form(frmap));
diff --git a/plugin/src/test/resources/fixtures/response_plagegeist_1.json b/plugin/src/test/resources/fixtures/response_plagegeist_1.json
new file mode 100644
index 0000000..13d0e70
--- /dev/null
+++ b/plugin/src/test/resources/fixtures/response_plagegeist_1.json
@@ -0,0 +1 @@
+{"@context":"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld","meta":{"cutOff":false,"count":5,"startIndex":0,"timeout":10000,"context":{"left":["token",40],"right":["token",40]},"fields":["ID","UID","textSigle","corpusID","author","title","subTitle","textClass","pubPlace","pubDate","availability","layerInfos","docSigle","corpusSigle"],"version":"0.59.2","benchmark":"0.330334022 s","totalResults":9,"serialQuery":"tokens:s:Plagegeist","itemsPerPage":5},"query":{"@type":"koral:token","wrap":{"@type":"koral:term","match":"match:eq","layer":"orth","key":"Plagegeist","foundry":"opennlp","rewrites":[{"@type":"koral:rewrite","src":"Kustvakt","operation":"operation:injection","scope":"foundry"}]}},"collection":{"operands":[{"@type":"koral:doc","match":"match:eq","type":"type:regex","value":"CC-BY.*","key":"availability"},{"@type":"koral:doc","match":"match:eq","value":"WUD17","key":"corpusSigle"}],"@type":"koral:docGroup","operation":"operation:and"},"matches":[{"snippet":"<span class=\"context-left\"><span class=\"more\"></span>1 Tag gesperrt. 24h Urlaub.^^ LG;--  17:40, 11. Jan. 2011 (CET) Danke ich habe die nahezu zeitgleichen VMs von Dir und Ironhoof gesehen. Ob es ein Grund zum Jubeln ist, sei dahin gestellt. Immerhin habe ich für 24 Stunden einen &quot;</span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\">&quot; weniger. Sag mal, zum Kölner Stammtisch isses doch nicht so weit ... wie wär's ? Besten  17:49, 11. Jan. 2011 (CET) Er wurde gesperrt. Nach dem Theater hier zurecht. ABER: auch deine Beiträge hier, die er versuchte zu löschen, sorgen nicht für<span class=\"more\"></span></span>","matchID":"match-WUD17/G59/34284-p4238-4239","UID":0,"textClass":"staat-gesellschaft biographien-interviews","textSigle":"WUD17/G59/34284","author":"Umherirrender, u.a.","docSigle":"WUD17/G59","layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens","pubPlace":"URL:http://de.wikipedia.org","availability":"CC-BY-SA","title":"Benutzer Diskussion:Gruß Tom/Archiv/2011","pubDate":"2017-07-01","corpusSigle":"WUD17"},{"snippet":"<span class=\"context-left\"><span class=\"more\"></span>Sitte, die heute nur mehr aus dem süddeutschen Raum bekannt ist, war – nach Aussage vieler Sagen – auch im Rheinland üblich. e) Der Stüpp als Aufhocker Von den 30 Stüpp-Sagen enthalten nur 12 das Phänomen des Aufhockers. Ein Aufhocker ist ein </span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\">, der europaweit vorkommt. Er überfällt den Menschen immer auf dunklen Wegen (z.B. Hohlwegen) oder sehr oft nachts, wenn er an berüchtigten, d.h. angsteinflößenden Orten vorbeikommt. Friedrich Ranke analysiert den Aufhocker als reales Erlebnis, entstanden aus der Angst. Das<span class=\"more\"></span></span>","matchID":"match-WUD17/C53/60524-p736-737","UID":0,"textClass":"kultur literatur","textSigle":"WUD17/C53/60524","author":"Capitanezza, u.a.","docSigle":"WUD17/C53","layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens","pubPlace":"URL:http://de.wikipedia.org","availability":"CC-BY-SA","title":"Benutzer Diskussion:Capitanezza","pubDate":"2017-07-01","corpusSigle":"WUD17"},{"snippet":"<span class=\"context-left\"><span class=\"more\"></span>deshalb so glatt durch, weil ich einige Tage verreist war. Ich habe Wiederherstellung beantragt. Vielen Dank für Deine geduldigen Bemühungen und mfG  13:49, 28. Jun. 2008 (CEST) Zur Kenntnis: Analemma zieht &quot;durch die Welt der WP-Benutzer&quot; und meint, mich als </span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\"> oder anders bei anderen Nutzern titulieren zu müssen... als weiteres Beispiel für andere &quot;nette Aktionen&quot; die letzte aktuelle Aktion: Nachträgliche Veränderung von meinem eigenen Diskussionsbeitrag...na danke auch ;-) Gruß-- 18:21, 28. Jun. 2008 (CEST) @NebMaatRe: Ich hab das &quot;Umherziehen&quot; natürlich<span class=\"more\"></span></span>","matchID":"match-WUD17/J34/49397-p19826-19827","UID":0,"textClass":"staat-gesellschaft biographien-interviews","textSigle":"WUD17/J34/49397","author":"BlueCücü, u.a.","docSigle":"WUD17/J34","layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens","pubPlace":"URL:http://de.wikipedia.org","availability":"CC-BY-SA","title":"Benutzer Diskussion:Jesi/Archiv 2008/II","pubDate":"2017-07-01","corpusSigle":"WUD17"},{"snippet":"<span class=\"context-left\"><span class=\"more\"></span>Vielen Dank  für deine Aufmerksamkeit und Mühe, mit der du gestern den Holocaustleugner abgeschmettert hast. Ab sofort ist &quot;Lump&quot; in meinem Sprachgebrauch eine Ehrenbezeichnung geworden... Lieben Gruß - 19:44, 20. Feb. 2008 (CET)timestamp  Keine Ursache. Eine andere Ehrenbezeichnung war mal &quot;</span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\">&quot;. Vielleich ist das genau die richtige Art, mit so was umzugehen. Liebe Grüße  21:30, 20. Feb. 2008 (CET)timestamp  Michel Lippert Hoi Hozro, habe heute anhand meiner wenigen Infos und des franz. Wikiartikels die Type bearbeitet. Ergänzt habe<span class=\"more\"></span></span>","matchID":"match-WUD17/H29/31485-p10141-10142","UID":0,"textClass":"staat-gesellschaft biographien-interviews","textSigle":"WUD17/H29/31485","author":"Lómelinde, u.a.","docSigle":"WUD17/H29","layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens","pubPlace":"URL:http://de.wikipedia.org","availability":"CC-BY-SA","title":"Benutzer Diskussion:Hozro/Archiv0","pubDate":"2017-07-01","corpusSigle":"WUD17"},{"snippet":"<span class=\"context-left\"><span class=\"more\"></span>Unterstützung, habe gesehen, daß LaPalma nun gesperrt ist. Inzwischen habe ich auch den hauptsächlich von Dir bearbeiteten Artikel über Velikovsky gelesen. Sehr interessant. Den kannte ich noch gar nicht! Herzlicher Gruß, -- 15:20, 28. Nov. 2007 (CET) Naja, mir ging der &quot;</span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\">&quot; auch gehörig auf die Nerven. Der Artikel Velikovsky stammt nicht von mir, hatte ihn nur von ähnlichen Visionen eines anderen &quot;Plagegeists&quot; befreit. Ist zwar stilistisch immer noch überarbeitungsbedürftig, aber die &quot;Science-Fiction&quot; ist erstmal raus. Gruß-- 19:33, 28. Nov. 2007 (CET<span class=\"more\"></span></span>","matchID":"match-WUD17/I78/98882-p2700-2701","UID":0,"textClass":"staat-gesellschaft biographien-interviews","textSigle":"WUD17/I78/98882","author":"Ingochina, u.a.","docSigle":"WUD17/I78","layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels marmot/m=tokens marmot/p=tokens opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens","pubPlace":"URL:http://de.wikipedia.org","availability":"CC-BY-SA","title":"Benutzer Diskussion:Ingochina/Archiv","pubDate":"2017-07-01","corpusSigle":"WUD17"}]}
diff --git a/plugin/src/test/resources/fixtures/response_plagegeist_2.json b/plugin/src/test/resources/fixtures/response_plagegeist_2.json
new file mode 100644
index 0000000..709176b
--- /dev/null
+++ b/plugin/src/test/resources/fixtures/response_plagegeist_2.json
@@ -0,0 +1 @@
+{"@context":"http://korap.ids-mannheim.de/ns/KoralQuery/v0.3/context.jsonld","meta":{"cutOff":true,"count":5,"startIndex":5,"timeout":10000,"context":{"left":["token",40],"right":["token",40]},"fields":["ID","UID","textSigle","corpusID","author","title","subTitle","textClass","pubPlace","pubDate","availability","layerInfos","docSigle","corpusSigle"],"version":"0.59.2","benchmark":"0.424958683 s","totalResults":-1,"serialQuery":"tokens:s:Plagegeist","itemsPerPage":5},"query":{"@type":"koral:token","wrap":{"@type":"koral:term","match":"match:eq","layer":"orth","key":"Plagegeist","foundry":"opennlp","rewrites":[{"@type":"koral:rewrite","src":"Kustvakt","operation":"operation:injection","scope":"foundry"}]}},"collection":{"operands":[{"@type":"koral:doc","match":"match:eq","type":"type:regex","value":"CC-BY.*","key":"availability"},{"@type":"koral:doc","match":"match:eq","value":"WUD17","key":"corpusSigle"}],"@type":"koral:docGroup","operation":"operation:and"},"matches":[{"snippet":"<span class=\"context-left\"><span class=\"more\"></span>und wie ich in einem Buch von Bernhard Karlgren gelesen habe, wird da eine alte Bedeutung &quot;Blutegel&quot; für dieses Zeichen angenommen, bzw. auch andere Ungeziefer konnten wohl gemeint sein. Der ma-Teil des Worts wurde also ursprünglich wahrscheinlich im Sinne von &quot;</span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\">&quot; verwendet, folglich war 蚂蚁 ursprünglich frei übersetzt eine &quot;Sch...-Ameise&quot; ;-) -- 18:21, 30. Apr. 2007 (CEST) Hallo Allgaeuer, mag sein, dass es für dich ein Hammer ist, aber es ist Stand der aktuellen Forschung in der Sinologie. Schriften von Karlgren u.<span class=\"more\"></span></span>","matchID":"match-WUD17/N15/17364-p3803-3804","UID":0,"textClass":"staat-gesellschaft biographien-interviews","textSigle":"WUD17/N15/17364","author":"Ningling, u.a.","docSigle":"WUD17/N15","layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens","pubPlace":"URL:http://de.wikipedia.org","availability":"CC-BY-SA","title":"Benutzer Diskussion:Ningling/Archiv2006-07","pubDate":"2017-07-01","corpusSigle":"WUD17"},{"snippet":"<span class=\"context-left\"><span class=\"more\"></span>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 </span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\">, 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<span class=\"more\"></span></span>","matchID":"match-WUD17/K35/39955-p16114-16115","UID":0,"textClass":"staat-gesellschaft biographien-interviews","textSigle":"WUD17/K35/39955","author":"TaxonBot, u.a.","docSigle":"WUD17/K35","layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens","pubPlace":"URL:http://de.wikipedia.org","availability":"CC-BY-SA","title":"Benutzer Diskussion:Kriddl/Archiv","pubDate":"2017-07-01","corpusSigle":"WUD17"},{"snippet":"<span class=\"context-left\"><span class=\"more\"></span>schnell einarbeiten kann, sondern auch etwas über die zu schlichtenden Hintergründe von mir zu lesen. Solltest Du Dich zusätzlich als Bearbeiter von Löschfragen angesprochen fühlen, wäre ich Dir doppelt dankbar. mfG  15:52, 28. Jun. 2008 (CEST) Hallo, ich bin der &quot;</span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\">&quot;, der Analemma nicht &quot;mobbt&quot;, sondern auf seine fachlichen und technischen Schwierigkeiten hingewiesen hatte. Mobbing ? Analemma bat mich sogar um einen Quellennachweis für die Lunationsdauer, die &quot;er nirgendwo finden konnte&quot;....hatte ich sodann erledigt. Ein Fachmann hat keine Schwierigkeiten, das zu<span class=\"more\"></span></span>","matchID":"match-WUD17/K35/39955-p16197-16198","UID":0,"textClass":"staat-gesellschaft biographien-interviews","textSigle":"WUD17/K35/39955","author":"TaxonBot, u.a.","docSigle":"WUD17/K35","layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens","pubPlace":"URL:http://de.wikipedia.org","availability":"CC-BY-SA","title":"Benutzer Diskussion:Kriddl/Archiv","pubDate":"2017-07-01","corpusSigle":"WUD17"},{"snippet":"<span class=\"context-left\"><span class=\"more\"></span>Quellennachweis für die Lunationsdauer, die &quot;er nirgendwo finden konnte&quot;....hatte ich sodann erledigt. Ein Fachmann hat keine Schwierigkeiten, das zu finden. Nunja, und für die Nachfragen nach Quellen (die er bis heute nicht liefern konnte), bekomme ich dann den Stempel &quot;</span><span class=\"match\"><mark>Plagegeist</mark></span><span class=\"context-right\">, Mobber&quot; etc. aufgedrückt...womit er auch bei vielen Benutzern &quot;hausieren&quot; geht. Ich frage mich, wer hier mobbt ? ... als Beispiel die letzte aktuelle Aktion: Nachträgliche Veränderung von meinem eigenen Diskussionsbeitrag...na danke auch ;-)... Es grüßt -- 18:10, 28. Jun. 2008 (CEST) Hm<span class=\"more\"></span></span>","matchID":"match-WUD17/K35/39955-p16258-16259","UID":0,"textClass":"staat-gesellschaft biographien-interviews","textSigle":"WUD17/K35/39955","author":"TaxonBot, u.a.","docSigle":"WUD17/K35","layerInfos":"corenlp/c=spans corenlp/p=tokens corenlp/s=spans dereko/s=spans malt/d=rels opennlp/p=tokens opennlp/s=spans tt/l=tokens tt/p=tokens","pubPlace":"URL:http://de.wikipedia.org","availability":"CC-BY-SA","title":"Benutzer Diskussion:Kriddl/Archiv","pubDate":"2017-07-01","corpusSigle":"WUD17"}]}