Add corpus support at VirtualCorpusRewrite (#806)
Change-Id: I4308419f2a4099db92f6091dc2154542aba33357
diff --git a/Changes b/Changes
index edd54e1..122a8d9 100644
--- a/Changes
+++ b/Changes
@@ -13,6 +13,7 @@
- Add API version to KoralCollectionQueryBuilder (#806)
- Clean up collection node from Krill response (#806)
- Add API version to NamedVCLoader (#806)
+- Add corpus support at VirtualCorpusRewrite (#806)
# version 0.79.1
diff --git a/src/main/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewrite.java b/src/main/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewrite.java
index ca8673e..ccdc704 100644
--- a/src/main/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewrite.java
+++ b/src/main/java/de/ids_mannheim/korap/rewrite/VirtualCorpusRewrite.java
@@ -32,7 +32,12 @@
@Override
public KoralNode rewriteQuery (KoralNode node, KustvaktConfiguration config,
User user) throws KustvaktException {
- if (node.has("collection")) {
+ if (node.has("corpus")) {
+ node = node.at("/corpus");
+ findVCRef(user.getUsername(), node);
+ }
+ // EM: legacy
+ else if (node.has("collection")) {
node = node.at("/collection");
findVCRef(user.getUsername(), node);
}
@@ -106,8 +111,14 @@
protected void rewriteVC (QueryDO vc, KoralNode koralNode)
throws KustvaktException {
String koralQuery = vc.getKoralQuery();
- JsonNode newKoralQuery = JsonUtils.readTree(koralQuery).at("/collection");
-
+ JsonNode queryNode = JsonUtils.readTree(koralQuery);
+ JsonNode newKoralQuery;
+ if (queryNode.has("collection")) {
+ newKoralQuery = JsonUtils.readTree(koralQuery).at("/collection");
+ }
+ else {
+ newKoralQuery = JsonUtils.readTree(koralQuery).at("/corpus");
+ }
String source = koralNode.rawNode().toString();
JsonNode sourceNode = JsonUtils.readTree(source);
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/MultipleCorpusQueryTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/MultipleCorpusQueryTest.java
index fd2bd2d..dc66fc9 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/MultipleCorpusQueryTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/MultipleCorpusQueryTest.java
@@ -11,7 +11,6 @@
import de.ids_mannheim.korap.config.SpringJerseyTest;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.utils.JsonUtils;
public class MultipleCorpusQueryTest extends SpringJerseyTest {
@@ -26,7 +25,7 @@
assertEquals(Status.OK.getStatusCode(), response.getStatus());
String entity = response.readEntity(String.class);
JsonNode node = JsonUtils.readTree(entity);
- node = node.at("/collection/operands/1");
+ node = node.at("/corpus/operands/1");
assertEquals("koral:docGroup", node.at("/@type").asText());
assertEquals("operation:and", node.at("/operation").asText());
assertEquals(2, node.at("/operands").size());
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java
index 90ec30a..e047793 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/SearchControllerTest.java
@@ -140,7 +140,7 @@
assertEquals(302, node.at("/errors/0/0").asInt());
assertEquals(302, node.at("/errors/1/0").asInt());
assertTrue(node.at("/errors/2").isMissingNode());
- assertFalse(node.at("/collection").isMissingNode());
+ assertFalse(node.at("/corpus").isMissingNode());
assertEquals(13, node.at("/meta/count").asInt());
}
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerTest.java
index bb75a43..7a0554a 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/vc/VirtualCorpusControllerTest.java
@@ -444,30 +444,31 @@
throws ProcessingException, KustvaktException {
createDoryVC();
JsonNode node = testRetrieveKoralQuery("dory", "dory-vc");
- assertEquals("koral:docGroup", node.at("/collection/@type").asText());
- assertEquals("operation:and",
- node.at("/collection/operation").asText());
- assertEquals(2, node.at("/collection/operands").size());
+ node = node.at("/corpus");
+ assertEquals("koral:docGroup", node.at("/@type").asText());
+ assertEquals(
+ "operation:and",node.at("/operation").asText());
+ assertEquals(2, node.at("/operands").size());
String json = "{\"corpusQuery\": \"corpusSigle=WPD17\"}";
editVC("dory", "dory", "dory-vc", json);
+
node = testRetrieveKoralQuery("dory", "dory-vc");
- assertEquals("koral:doc", node.at("/collection/@type").asText());
- assertEquals("corpusSigle", node.at("/collection/key").asText());
- assertEquals("WPD17", node.at("/collection/value").asText());
+ node = node.at("/corpus");
+ assertEquals("koral:doc",node.at("/@type").asText());
+ assertEquals("corpusSigle",node.at("/key").asText());
+ assertEquals("WPD17",node.at("/value").asText());
json = "{\"corpusQuery\": \"corpusSigle=GOE AND creationDate since "
+ "1820\"}";
editVC("dory", "dory", "dory-vc", json);
node = testRetrieveKoralQuery("dory", "dory-vc");
- assertEquals("koral:docGroup", node.at("/collection/@type").asText());
- assertEquals("operation:and",
- node.at("/collection/operation").asText());
- assertEquals("corpusSigle",
- node.at("/collection/operands/0/key").asText());
- assertEquals("GOE", node.at("/collection/operands/0/value").asText());
- assertEquals("creationDate",
- node.at("/collection/operands/1/key").asText());
- assertEquals("1820", node.at("/collection/operands/1/value").asText());
+ node = node.at("/corpus");
+ assertEquals("koral:docGroup", node.at("/@type").asText());
+ assertEquals("operation:and", node.at("/operation").asText());
+ assertEquals("corpusSigle",node.at("/operands/0/key").asText());
+ assertEquals("GOE",node.at("/operands/0/value").asText());
+ assertEquals("creationDate", node.at("/operands/1/key").asText());
+ assertEquals("1820", node.at("/operands/1/value").asText());
deleteVC("dory-vc", "dory", "dory");
}