blob: e537b1ecde65546910517632b87ddab2c1d62d33 [file] [log] [blame]
package de.ids_mannheim.korap.query.wrap;
import org.apache.lucene.search.spans.SpanQuery;
import de.ids_mannheim.korap.query.SpanReferenceQuery;
import de.ids_mannheim.korap.util.QueryException;
public class SpanReferenceQueryWrapper extends SpanQueryWrapper {
private SpanQueryWrapper subQuery;
private byte classNum;
public SpanReferenceQueryWrapper (SpanQueryWrapper subQueryWrapper,
int classNum) {
this.subQuery = subQueryWrapper;
if (subQuery != null) {
this.isNull = false;
}
else
return;
if (subQuery.isEmpty) {
this.isEmpty = true;
return;
}
if (classNum < 0) {
throw new IllegalArgumentException(
"Class number must be bigger than 0.");
}
this.classNum = (byte) classNum;
this.maybeUnsorted = subQueryWrapper.maybeUnsorted();
}
@Override
public SpanQuery toFragmentQuery () throws QueryException {
if (this.isNull() || this.isEmpty()) {
return null;
}
SpanQuery sq = subQuery.retrieveNode(this.retrieveNode)
.toFragmentQuery();
if (sq == null)
return null;
return new SpanReferenceQuery(sq, classNum, true);
}
}