Search in sources :

Example 6 with Filter

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();
}
Also used : XdmNodeReadTrx(org.sirix.api.XdmNodeReadTrx) Filter(org.sirix.api.Filter)

Example 7 with Filter

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();
}
Also used : Filter(org.sirix.api.Filter)

Example 8 with Filter

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);
}
Also used : ChildAxis(org.sirix.axis.ChildAxis) ItemFilter(org.sirix.axis.filter.ItemFilter) AttributeFilter(org.sirix.axis.filter.AttributeFilter) NameFilter(org.sirix.axis.filter.NameFilter) TypeFilter(org.sirix.axis.filter.TypeFilter) NestedFilter(org.sirix.axis.filter.NestedFilter) DocumentRootNodeFilter(org.sirix.axis.filter.DocumentRootNodeFilter) CommentFilter(org.sirix.axis.filter.CommentFilter) WildcardFilter(org.sirix.axis.filter.WildcardFilter) PIFilter(org.sirix.axis.filter.PIFilter) SchemaElementFilter(org.sirix.service.xml.xpath.filter.SchemaElementFilter) Filter(org.sirix.api.Filter) SchemaAttributeFilter(org.sirix.service.xml.xpath.filter.SchemaAttributeFilter) TextFilter(org.sirix.axis.filter.TextFilter) ElementFilter(org.sirix.axis.filter.ElementFilter) NodeFilter(org.sirix.axis.filter.NodeFilter) AbstractAxis(org.sirix.axis.AbstractAxis) AttributeAxis(org.sirix.axis.AttributeAxis) FilterAxis(org.sirix.axis.filter.FilterAxis)

Example 9 with 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);
    }
}
Also used : ItemFilter(org.sirix.axis.filter.ItemFilter) AttributeFilter(org.sirix.axis.filter.AttributeFilter) NameFilter(org.sirix.axis.filter.NameFilter) TypeFilter(org.sirix.axis.filter.TypeFilter) NestedFilter(org.sirix.axis.filter.NestedFilter) DocumentRootNodeFilter(org.sirix.axis.filter.DocumentRootNodeFilter) CommentFilter(org.sirix.axis.filter.CommentFilter) WildcardFilter(org.sirix.axis.filter.WildcardFilter) PIFilter(org.sirix.axis.filter.PIFilter) SchemaElementFilter(org.sirix.service.xml.xpath.filter.SchemaElementFilter) Filter(org.sirix.api.Filter) SchemaAttributeFilter(org.sirix.service.xml.xpath.filter.SchemaAttributeFilter) TextFilter(org.sirix.axis.filter.TextFilter) ElementFilter(org.sirix.axis.filter.ElementFilter) NodeFilter(org.sirix.axis.filter.NodeFilter) PrecedingAxis(org.sirix.axis.PrecedingAxis) Axis(org.sirix.api.Axis) DocumentNodeAxis(org.sirix.service.xml.xpath.filter.DocumentNodeAxis) FollowingAxis(org.sirix.axis.FollowingAxis) AbstractAxis(org.sirix.axis.AbstractAxis) AncestorAxis(org.sirix.axis.AncestorAxis) ChildAxis(org.sirix.axis.ChildAxis) FollowingSiblingAxis(org.sirix.axis.FollowingSiblingAxis) FilterAxis(org.sirix.axis.filter.FilterAxis) SelfAxis(org.sirix.axis.SelfAxis) DescendantAxis(org.sirix.axis.DescendantAxis) ParentAxis(org.sirix.axis.ParentAxis) AttributeAxis(org.sirix.axis.AttributeAxis) PrecedingSiblingAxis(org.sirix.axis.PrecedingSiblingAxis)

Example 10 with Filter

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;
}
Also used : ItemFilter(org.sirix.axis.filter.ItemFilter) AttributeFilter(org.sirix.axis.filter.AttributeFilter) NameFilter(org.sirix.axis.filter.NameFilter) TypeFilter(org.sirix.axis.filter.TypeFilter) NestedFilter(org.sirix.axis.filter.NestedFilter) DocumentRootNodeFilter(org.sirix.axis.filter.DocumentRootNodeFilter) CommentFilter(org.sirix.axis.filter.CommentFilter) WildcardFilter(org.sirix.axis.filter.WildcardFilter) PIFilter(org.sirix.axis.filter.PIFilter) SchemaElementFilter(org.sirix.service.xml.xpath.filter.SchemaElementFilter) Filter(org.sirix.api.Filter) SchemaAttributeFilter(org.sirix.service.xml.xpath.filter.SchemaAttributeFilter) TextFilter(org.sirix.axis.filter.TextFilter) ElementFilter(org.sirix.axis.filter.ElementFilter) NodeFilter(org.sirix.axis.filter.NodeFilter) SchemaAttributeFilter(org.sirix.service.xml.xpath.filter.SchemaAttributeFilter)

Aggregations

Filter (org.sirix.api.Filter)13 AttributeFilter (org.sirix.axis.filter.AttributeFilter)11 CommentFilter (org.sirix.axis.filter.CommentFilter)11 DocumentRootNodeFilter (org.sirix.axis.filter.DocumentRootNodeFilter)11 ElementFilter (org.sirix.axis.filter.ElementFilter)11 ItemFilter (org.sirix.axis.filter.ItemFilter)11 NameFilter (org.sirix.axis.filter.NameFilter)11 NestedFilter (org.sirix.axis.filter.NestedFilter)11 NodeFilter (org.sirix.axis.filter.NodeFilter)11 PIFilter (org.sirix.axis.filter.PIFilter)11 TextFilter (org.sirix.axis.filter.TextFilter)11 TypeFilter (org.sirix.axis.filter.TypeFilter)11 WildcardFilter (org.sirix.axis.filter.WildcardFilter)11 SchemaAttributeFilter (org.sirix.service.xml.xpath.filter.SchemaAttributeFilter)11 SchemaElementFilter (org.sirix.service.xml.xpath.filter.SchemaElementFilter)11 AbstractAxis (org.sirix.axis.AbstractAxis)3 AttributeAxis (org.sirix.axis.AttributeAxis)3 ChildAxis (org.sirix.axis.ChildAxis)2 FilterAxis (org.sirix.axis.filter.FilterAxis)2 NoSuchElementException (java.util.NoSuchElementException)1