collection query builder
diff --git a/src/test/java/CollectionQueryBuilderTest.java b/src/test/java/CollectionQueryBuilderTest.java
index 0840e20..38a5ac4 100644
--- a/src/test/java/CollectionQueryBuilderTest.java
+++ b/src/test/java/CollectionQueryBuilderTest.java
@@ -1,11 +1,11 @@
import com.fasterxml.jackson.databind.JsonNode;
import de.ids_mannheim.korap.query.serialize.QuerySerializer;
-import de.ids_mannheim.korap.utils.CollectionQueryBuilder3;
+import de.ids_mannheim.korap.utils.KoralCollectionQueryBuilder;
import de.ids_mannheim.korap.utils.JsonUtils;
-import org.junit.Assert;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
/**
@@ -16,28 +16,28 @@
@Test
public void testsimpleAdd () {
- CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
- b.addQuery("corpusID=WPD");
+ KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+ b.with("corpusSigle=WPD");
JsonNode node = JsonUtils.readTree(b.toJSON());
assertNotNull(node);
assertEquals("koral:doc", node.at("/collection/@type").asText());
- assertEquals("corpusID", node.at("/collection/key").asText());
+ assertEquals("corpusSigle", node.at("/collection/key").asText());
}
@Test
public void testSimpleConjunction () {
- CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
- b.addQuery("corpusID=WPD & textClass=freizeit");
+ KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+ b.with("corpusSigle=WPD & textClass=freizeit");
JsonNode node = JsonUtils.readTree(b.toJSON());
assertNotNull(node);
assertEquals("koral:docGroup", node.at("/collection/@type").asText());
assertEquals("operation:and", node.at("/collection/operation").asText());
- assertEquals("corpusID", node.at("/collection/operands/0/key").asText());
+ assertEquals("corpusSigle", node.at("/collection/operands/0/key").asText());
assertEquals("textClass", node.at("/collection/operands/1/key")
.asText());
}
@@ -45,17 +45,14 @@
@Test
public void testSimpleDisjunction () {
- CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
- b.addQuery("corpusID=WPD | textClass=freizeit");
+ KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+ b.with("corpusSigle=WPD | textClass=freizeit");
JsonNode node = JsonUtils.readTree(b.toJSON());
- System.out.println("_____________________________________________");
- System.out.println(node);
-
- assert node != null;
+ assertNotNull(node);
assert node.at("/collection/operation").asText().equals("operation:or");
assert node.at("/collection/operands/0/key").asText()
- .equals("corpusID");
+ .equals("corpusSigle");
assert node.at("/collection/operands/1/key").asText()
.equals("textClass");
}
@@ -63,17 +60,14 @@
@Test
public void testComplexSubQuery () {
- CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
- b.addQuery("(corpusID=WPD) | (textClass=freizeit & corpusID=WPD)");
+ KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+ b.with("(corpusSigle=WPD) | (textClass=freizeit & corpusSigle=BRZ13)");
JsonNode node = JsonUtils.readTree(b.toJSON());
- System.out
- .println("_____________________________________________ COMPLEX");
- System.out.println(node);
- assert node != null;
+ assertNotNull(node);
assert node.at("/collection/operation").asText().equals("operation:or");
assert node.at("/collection/operands/0/key").asText()
- .equals("corpusID");
+ .equals("corpusSigle");
assert node.at("/collection/operands/1/@type").asText()
.equals("koral:docGroup");
@@ -82,60 +76,128 @@
@Test
public void testAddResourceQueryAfter () {
- CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
- b.addQuery("(corpusID=ADF) | (textClass=freizeit & corpusID=WPD)");
+ KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+ b.with("(textClass=politik & title=\"random title\") | textClass=wissenschaft");
- CollectionQueryBuilder3 c = new CollectionQueryBuilder3();
+ KoralCollectionQueryBuilder c = new KoralCollectionQueryBuilder();
c.setBaseQuery(b.toJSON());
- c.addQuery("textClass=wissenschaft");
+ c.with("corpusSigle=WPD");
JsonNode node = JsonUtils.readTree(c.toJSON());
- assert node != null;
- assert node.at("/collection/operands/2/@type").asText()
- .equals("koral:doc");
- assert node.at("/collection/operands/2/value").asText()
- .equals("wissenschaft");
+ assertNotNull(node);
+ assertEquals("koral:doc", node.at("/collection/operands/0/@type")
+ .asText());
+ assertEquals("WPD", node.at("/collection/operands/0/value").asText());
+ assertEquals(2, node.at("/collection/operands").size());
}
@Test
public void testAddComplexResourceQueryAfter () {
- CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
- b.addQuery("(corpusID=ADF) | (textClass=freizeit & corpusID=WPD)");
+ KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+ b.with("(title=\"random title\") | (textClass=wissenschaft)");
- CollectionQueryBuilder3 c = new CollectionQueryBuilder3();
+ KoralCollectionQueryBuilder c = new KoralCollectionQueryBuilder();
c.setBaseQuery(b.toJSON());
- c.addQuery("(textClass=politik & corpusID=AZPS)");
+ c.with("(corpusSigle=BRZ13 | corpusSigle=AZPS)");
JsonNode node = JsonUtils.readTree(c.toJSON());
-
- assert node != null;
- assert node.at("/collection/operands/2/@type").asText()
- .equals("koral:docGroup");
- assert node.at("/collection/operands/2/operands/0/value").asText()
- .equals("politik");
- assert node.at("/collection/operands/2/operands/1/value").asText()
- .equals("AZPS");
-
+ assertNotNull(node);
+ assertEquals("koral:docGroup", node.at("/collection/operands/0/@type")
+ .asText());
+ assertEquals("koral:docGroup", node.at("/collection/operands/1/@type")
+ .asText());
+ assertEquals("BRZ13", node
+ .at("/collection/operands/0/operands/0/value").asText());
+ assertEquals("AZPS", node.at("/collection/operands/0/operands/1/value")
+ .asText());
+ assertEquals("random title",
+ node.at("/collection/operands/1/operands/0/value").asText());
+ assertEquals("wissenschaft",
+ node.at("/collection/operands/1/operands/1/value").asText());
}
@Test
- public void buildQuery () {
+ public void testBuildQuery () {
+ String coll = "corpusSigle=WPD";
String query = "[base=Haus]";
- QuerySerializer s = new QuerySerializer();
- s.setQuery(query, "poliqarp");
- CollectionQueryBuilder3 b = new CollectionQueryBuilder3();
- b.addQuery("corpusID=WPD");
- s.setCollection("corpusID=WPD");
+ QuerySerializer check = new QuerySerializer();
+ check.setQuery(query, "poliqarp");
+ check.setCollection(coll);
- System.out.println("QUERY " + s.toJSON());
+ KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+ b.setBaseQuery(check.toJSON());
+ b.with("textClass=freizeit");
+
+ JsonNode res = (JsonNode) b.rebaseCollection();
+ assertNotNull(res);
+ assertEquals("koral:docGroup", res.at("/collection/@type").asText());
+ assertEquals("operation:and", res.at("/collection/operation").asText());
+ assertEquals("koral:doc", res.at("/collection/operands/0/@type")
+ .asText());
+ assertEquals("freizeit", res.at("/collection/operands/0/value")
+ .asText());
+ assertEquals("textClass", res.at("/collection/operands/0/key").asText());
+
+ assertEquals("koral:doc", res.at("/collection/operands/1/@type")
+ .asText());
+ assertEquals("WPD", res.at("/collection/operands/1/value").asText());
+ assertEquals("corpusSigle", res.at("/collection/operands/1/key").asText());
+
+ // check also that query is still there
+ assertEquals("koral:token", res.at("/query/@type").asText());
+ assertEquals("koral:term", res.at("/query/wrap/@type").asText());
+ assertEquals("Haus", res.at("/query/wrap/key").asText());
+ assertEquals("lemma", res.at("/query/wrap/layer").asText());
}
@Test
public void testBaseQueryBuild () {
+ KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+ b.with("(corpusSigle=ADF) | (textClass=freizeit & corpusSigle=WPD)");
+
+ KoralCollectionQueryBuilder c = new KoralCollectionQueryBuilder();
+ c.setBaseQuery(b.toJSON());
+
+ c.with("corpusSigle=BRZ13");
+ JsonNode base = (JsonNode) c.rebaseCollection();
+ assertNotNull(base);
+ assertEquals(base.at("/collection/@type").asText(), "koral:docGroup");
+ assertEquals(base.at("/collection/operands/0/@type").asText(),
+ "koral:doc");
+ assertEquals(base.at("/collection/operands/0/value").asText(), "BRZ13");
+ assertEquals(base.at("/collection/operands/1/@type").asText(),
+ "koral:docGroup");
+ assertEquals(base.at("/collection/operands/1/operands").size(), 2);
+ }
+
+ @Test
+ public void testNodeMergeWithBase() {
+ String coll = "corpusSigle=WPD";
+ String query = "[base=Haus]";
+ QuerySerializer check = new QuerySerializer();
+ check.setQuery(query, "poliqarp");
+ check.setCollection(coll);
+
+ KoralCollectionQueryBuilder b = new KoralCollectionQueryBuilder();
+ b.setBaseQuery(check.toJSON());
+
+ KoralCollectionQueryBuilder test = new KoralCollectionQueryBuilder();
+ test.with("textClass=wissenschaft | textClass=politik");
+ JsonNode node = (JsonNode) test.rebaseCollection();
+ node = b.mergeWith(node);
+ assertNotNull(node);
+ assertEquals("koral:docGroup", node.at("/collection/@type").asText());
+ assertEquals("operation:and", node.at("/collection/operation").asText());
+ assertEquals(2, node.at("/collection/operands").size());
+ }
+
+
+ @Test
+ public void testStoredCollectionBaseQueryBuild () {
}