use of org.sirix.api.Filter in project sirix by sirixdb.
the class TemporalFilterAxis method computeNext.
@Override
protected XdmNodeReadTrx computeNext() {
while (mAxis.hasNext()) {
final XdmNodeReadTrx rtx = mAxis.next();
boolean filterResult = true;
for (final Filter filter : mAxisFilter) {
filter.setTrx(rtx);
filterResult = filterResult && filter.filter();
if (!filterResult) {
break;
}
}
if (filterResult) {
return mAxis.getTrx();
}
}
return endOfData();
}
use of org.sirix.api.Filter in project sirix by sirixdb.
the class FilterAxis method nextKey.
@Override
protected long nextKey() {
while (mAxis.hasNext()) {
final long nodeKey = mAxis.next();
boolean filterResult = true;
for (final Filter filter : mAxisFilter) {
filterResult = filterResult && filter.filter();
if (!filterResult) {
break;
}
}
if (filterResult) {
return nodeKey;
}
}
return done();
}
use of org.sirix.api.Filter in project sirix by sirixdb.
the class XPathParser method parseAbbrevForwardStep.
/**
* Parses the the rule AbrevForwardStep according to the following production rule:
* <p>
* [31] AbbrevForwardStep ::= "@"? NodeTest .
* </p>
*
* @return FilterAxis
*/
private AbstractAxis parseAbbrevForwardStep() {
AbstractAxis axis;
boolean isAttribute;
if (is(TokenType.AT, true) || mToken.getContent().equals("attribute") || mToken.getContent().equals("schema-attribute")) {
// in case of .../attribute(..), or .../schema-attribute() the
// default
// axis
// is the attribute axis
axis = new AttributeAxis(getTransaction());
isAttribute = true;
} else {
// default axis is the child axis
axis = new ChildAxis(getTransaction());
isAttribute = false;
}
final Filter filter = parseNodeTest(isAttribute);
return new FilterAxis(axis, filter);
}
use of org.sirix.api.Filter in project sirix by sirixdb.
the class XPathParser method parseForwardStep.
/**
* Parses the the rule ForwardStep according to the following production rule:
* <p>
* [29] ForwardStep ::= (ForwardAxis NodeTest) | AbbrevForwardStep .
* </p>
*
* @throws SirixXPathException
*/
private void parseForwardStep() throws SirixXPathException {
Axis axis;
Filter filter;
if (isForwardAxis()) {
axis = parseForwardAxis();
filter = parseNodeTest(axis.getClass() == AttributeAxis.class);
mPipeBuilder.addStep(axis, filter);
} else {
axis = parseAbbrevForwardStep();
mPipeBuilder.addStep(axis);
}
}
use of org.sirix.api.Filter in project sirix by sirixdb.
the class XPathParser method parseSchemaAttributeTest.
/**
* Parses the the rule SchemaAttributeTest according to the following production rule:
* <p>
* [61] SchemaAttributeTest ::= <"schema-attribute" "("> AttributeDeclaration ")" .
* </p>
*
* @return filter
*/
private Filter parseSchemaAttributeTest() {
consume("schema-attribute", true);
consume(TokenType.OPEN_BR, true);
final Filter filter = new SchemaAttributeFilter(getTransaction());
consume(TokenType.CLOSE_BR, true);
return filter;
}
Aggregations