Add corpus support at VirtualCorpusRewrite (#806)
Change-Id: I4308419f2a4099db92f6091dc2154542aba33357
diff --git a/Changes b/Changes
index 7843981..e087b50 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
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 fba3947..34548ae 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(node.at("/@type").asText(), "koral:docGroup");
assertEquals(node.at("/operation").asText(), "operation:and");
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 d9178bf..91a1606 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 9f53164..0234c26 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,34 @@
throws ProcessingException, KustvaktException {
createDoryVC();
JsonNode node = testRetrieveKoralQuery("dory", "dory-vc");
- assertEquals(node.at("/collection/@type").asText(), "koral:docGroup");
- assertEquals(node.at("/collection/operation").asText(),
+ node = node.at("/corpus");
+ assertEquals(node.at("/@type").asText(), "koral:docGroup");
+ assertEquals(node.at("/operation").asText(),
"operation:and");
- assertEquals(2, node.at("/collection/operands").size());
+ assertEquals(2, node.at("/operands").size());
String json = "{\"corpusQuery\": \"corpusSigle=WPD17\"}";
editVC("dory", "dory", "dory-vc", json);
+
node = testRetrieveKoralQuery("dory", "dory-vc");
- assertEquals(node.at("/collection/@type").asText(), "koral:doc");
- assertEquals(node.at("/collection/key").asText(), "corpusSigle");
- assertEquals(node.at("/collection/value").asText(), "WPD17");
+ node = node.at("/corpus");
+ assertEquals(node.at("/@type").asText(), "koral:doc");
+ assertEquals(node.at("/key").asText(), "corpusSigle");
+ assertEquals(node.at("/value").asText(), "WPD17");
json = "{\"corpusQuery\": \"corpusSigle=GOE AND creationDate since "
+ "1820\"}";
editVC("dory", "dory", "dory-vc", json);
node = testRetrieveKoralQuery("dory", "dory-vc");
- assertEquals(node.at("/collection/@type").asText(), "koral:docGroup");
- assertEquals(node.at("/collection/operation").asText(),
+ node = node.at("/corpus");
+ assertEquals(node.at("/@type").asText(), "koral:docGroup");
+ assertEquals(node.at("/operation").asText(),
"operation:and");
- assertEquals(node.at("/collection/operands/0/key").asText(),
+ assertEquals(node.at("/operands/0/key").asText(),
"corpusSigle");
- assertEquals(node.at("/collection/operands/0/value").asText(), "GOE");
- assertEquals(node.at("/collection/operands/1/key").asText(),
+ assertEquals(node.at("/operands/0/value").asText(), "GOE");
+ assertEquals(node.at("/operands/1/key").asText(),
"creationDate");
- assertEquals(node.at("/collection/operands/1/value").asText(), "1820");
+ assertEquals(node.at("/operands/1/value").asText(), "1820");
deleteVC("dory-vc", "dory", "dory");
}