Some test for negated tokens
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanAlterQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanAlterQueryWrapper.java
index 5d5c4dc..7f6f394 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanAlterQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanAlterQueryWrapper.java
@@ -18,6 +18,7 @@
private List<SpanQuery> alternatives;
private boolean isNull = true;
private boolean isOptional = false;
+ private boolean isNegative = false;
public SpanAlterQueryWrapper (String field) {
this.field = field;
@@ -53,6 +54,9 @@
if (term.isNull())
return this;
+ if (term.isNegative())
+ this.isNegative = true;
+
// If one operand is optional, the whole group can be optional
// a | b* | c
if (term.isOptional())
@@ -98,4 +102,8 @@
public boolean isNull () {
return this.isNull;
};
+
+ public boolean isNegative () {
+ return this.isNegative;
+ };
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java
index 50671f6..bb43edc 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanClassQueryWrapper.java
@@ -49,4 +49,8 @@
public boolean isNull () {
return this.subquery.isNull();
};
+
+ public boolean isNegative () {
+ return this.subquery.isNegative();
+ };
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanElementQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanElementQueryWrapper.java
index c5da7fc..4add693 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanElementQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanElementQueryWrapper.java
@@ -25,4 +25,8 @@
public boolean isNull () {
return false;
};
+
+ public boolean isNegative () {
+ return false;
+ };
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
index 4476f76..252ee0a 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanMatchModifyQueryWrapper.java
@@ -45,4 +45,8 @@
public boolean isNull () {
return this.subquery.isNull();
};
+
+ public boolean isNegative () {
+ return this.subquery.isNegative();
+ };
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQuantifierQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQuantifierQueryWrapper.java
index 4a29118..f6d3718 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQuantifierQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQuantifierQueryWrapper.java
@@ -29,6 +29,10 @@
return false;
};
+ public boolean isNegative () {
+ return false;
+ };
+
/*
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQueryWrapperInterface.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQueryWrapperInterface.java
index b88af57..eeaa04c 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQueryWrapperInterface.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanQueryWrapperInterface.java
@@ -9,4 +9,5 @@
public SpanQuery toQuery ();
public boolean isOptional ();
public boolean isNull ();
+ public boolean isNegative ();
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRegexQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRegexQueryWrapper.java
index cf788dc..8be32cc 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRegexQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRegexQueryWrapper.java
@@ -50,4 +50,8 @@
public boolean isNull () {
return false;
};
+
+ public boolean isNegative () {
+ return false;
+ };
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRepetitionQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRepetitionQueryWrapper.java
index d4b8c54..3ad592d 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRepetitionQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanRepetitionQueryWrapper.java
@@ -59,4 +59,8 @@
public boolean isNull () {
return this.isNull;
};
+
+ public boolean isNegative () {
+ return this.subquery.isNegative();
+ };
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java
index 1d007c3..91dbcc4 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSegmentQueryWrapper.java
@@ -26,6 +26,7 @@
public ArrayList<SpanQuery> exclusive;
private String field;
private boolean isNull = true;
+ private boolean isNegative = false;
/**
* Constructor.
@@ -61,6 +62,8 @@
public SpanSegmentQueryWrapper (String field, SpanAlterQueryWrapper alter) {
this(field);
if (!alter.isNull()) {
+ if (alter.isNegative())
+ this.isNegative = true;
this.inclusive.add((SpanQuery) alter.toQuery());
this.isNull = false;
};
@@ -103,6 +106,8 @@
public SpanSegmentQueryWrapper with (SpanAlterQueryWrapper alter) {
if (!alter.isNull()) {
+ if (alter.isNegative())
+ this.isNegative = true;
this.inclusive.add((SpanQuery) alter.toQuery());
this.isNull = false;
};
@@ -143,7 +148,12 @@
public SpanSegmentQueryWrapper without (SpanAlterQueryWrapper alter) {
if (!alter.isNull()) {
- this.exclusive.add((SpanQuery) alter.toQuery());
+ if (alter.isNegative()) {
+ this.inclusive.add((SpanQuery) alter.toQuery());
+ }
+ else {
+ this.exclusive.add((SpanQuery) alter.toQuery());
+ };
this.isNull = false;
};
return this;
@@ -152,6 +162,7 @@
// Identical to with
public SpanSegmentQueryWrapper without (SpanSegmentQueryWrapper seg) {
if (!seg.isNull()) {
+ // TODO!!!
this.with(seg);
this.isNull = false;
};
@@ -222,5 +233,12 @@
public boolean isNull () {
return this.isNull;
};
+
+ public boolean isNegative () {
+ if (this.inclusive.size() == 0 && this.exclusive.size() >= 1) {
+ return true;
+ };
+ return false;
+ };
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
index 9b695d8..b316fdf 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanSequenceQueryWrapper.java
@@ -20,6 +20,11 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+/*
+TODO: Make isNegative work!
+*/
+
+
/**
* @author Nils Diewald
*/
@@ -39,7 +44,8 @@
isNull = true,
isOptional = true,
lastIsOptional = false,
- firstIsOptional = false;
+ firstIsOptional = false,
+ isNegative = false;
public SpanSequenceQueryWrapper (String field) {
this.field = field;
@@ -66,7 +72,12 @@
public SpanSequenceQueryWrapper (String field, SpanQueryWrapperInterface sswq) {
this(field);
+
if (!sswq.isNull()) {
+
+ if (sswq.isNegative())
+ this.isNegative = true;
+
this.segments.add((SpanQuery) sswq.toQuery());
this.isNull = false;
if (sswq.isOptional()) {
@@ -155,6 +166,10 @@
public SpanSequenceQueryWrapper append (SpanQueryWrapperInterface ssq) {
if (!ssq.isNull()) {
+
+ if (ssq.isNegative())
+ this.isNegative = true;
+
SpanQuery appendQuery = ssq.toQuery();
if (!ssq.isOptional()) {
if (DEBUG)
@@ -252,6 +267,10 @@
public SpanSequenceQueryWrapper prepend (SpanQueryWrapperInterface ssq) {
if (!ssq.isNull()) {
+
+ if (ssq.isNegative())
+ this.isNegative = true;
+
SpanQuery prependQuery = ssq.toQuery();
if (!ssq.isOptional()) {
return this.prepend(prependQuery);
@@ -425,4 +444,8 @@
public boolean isNull () {
return this.isNull;
};
+
+ public boolean isNegative () {
+ return this.isNegative;
+ };
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWildcardQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWildcardQueryWrapper.java
index 94179f3..38d60ce 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWildcardQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWildcardQueryWrapper.java
@@ -36,4 +36,8 @@
public boolean isNull () {
return false;
};
+
+ public boolean isNegative () {
+ return false;
+ };
};
diff --git a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWithinQueryWrapper.java b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWithinQueryWrapper.java
index 68b07fd..47face4 100644
--- a/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWithinQueryWrapper.java
+++ b/src/main/java/de/ids_mannheim/korap/query/wrap/SpanWithinQueryWrapper.java
@@ -55,4 +55,11 @@
public boolean isNull () {
return this.isNull;
};
+
+ public boolean isNegative () {
+ if (this.element.isNegative() || this.wrap.isNegative()) {
+ return true;
+ };
+ return false;
+ };
};