Search in sources :

Example 11 with Filter

use of org.sirix.api.Filter in project sirix by sirixdb.

the class XPathParser method parseElementTest.

// /**
// * Parses the the rule AttributeDeclaration according to the following
// * production rule:
// * <p>
// * [62] AttributeDeclaration ::= AttributeName .
// * </p>
// */
// private String parseAttributeDeclaration() {
// 
// return parseAttributeName();
// }
/**
 * Parses the the rule ElementTest according to the following production rule:
 * <p>
 * [63] ElementTest ::= <"element" "("> (ElementNameOrWildcard ("," TypeName "?"?)?)? ")" .
 * </p>
 *
 * @return filter
 */
private Filter parseElementTest() {
    consume("element", true);
    consume(TokenType.OPEN_BR, true);
    Filter filter = new ElementFilter(getTransaction());
    if (!(mToken.getType() == TokenType.CLOSE_BR)) {
        final String mName = parseElementNameOrWildcard();
        if (!mName.equals("*")) {
            filter = new NestedFilter(getTransaction(), filter, new NameFilter(getTransaction(), mName));
        }
        if (is(TokenType.COMMA, true)) {
            filter = new NestedFilter(getTransaction(), filter, new TypeFilter(getTransaction(), parseTypeName()));
            if (is(TokenType.INTERROGATION, true)) {
                // be false
                throw new NoSuchElementException("'?' is not supported yet.");
            }
        }
    }
    consume(TokenType.CLOSE_BR, true);
    return filter;
}
Also used : NestedFilter(org.sirix.axis.filter.NestedFilter) NameFilter(org.sirix.axis.filter.NameFilter) 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) SchemaElementFilter(org.sirix.service.xml.xpath.filter.SchemaElementFilter) ElementFilter(org.sirix.axis.filter.ElementFilter) TypeFilter(org.sirix.axis.filter.TypeFilter) NoSuchElementException(java.util.NoSuchElementException)

Example 12 with Filter

use of org.sirix.api.Filter in project sirix by sirixdb.

the class XPathParser method parseDocumentTest.

/**
 * Parses the the rule DocumentCreater according to the following production rule:
 * <p>
 * [55] DocumentCreater ::= <"document-node" "("> (ElementTest | SchemaElementTest)? ")" .
 * <p>
 *
 * @return filter
 */
private Filter parseDocumentTest() {
    consume("document-node", true);
    consume(TokenType.OPEN_BR, true);
    Filter filter = new DocumentRootNodeFilter(getTransaction());
    Filter innerFilter;
    if (mToken.getContent().equals("element")) {
        innerFilter = parseElementTest();
        filter = new NestedFilter(getTransaction(), filter, innerFilter);
    } else if (mToken.getContent().equals("schema-element")) {
        innerFilter = parseSchemaElementTest();
        filter = new NestedFilter(getTransaction(), filter, innerFilter);
    }
    consume(TokenType.CLOSE_BR, true);
    return filter;
}
Also used : NestedFilter(org.sirix.axis.filter.NestedFilter) 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) DocumentRootNodeFilter(org.sirix.axis.filter.DocumentRootNodeFilter)

Example 13 with Filter

use of org.sirix.api.Filter in project sirix by sirixdb.

the class XPathParser method parseKindTest.

/**
 * Parses the the rule KindTest according to the following production rule:
 * <p>
 * [53] KindTest ::= DocumentCreater | ElementTest | AttributeTest | SchemaElementTest |
 * SchemaAttributeTest | PITest | CommentTest | TextTest | AnyKindTest .
 * </p>
 *
 * @return filter
 */
private Filter parseKindTest() {
    Filter filter;
    final String test = mToken.getContent();
    if ("document-node".equals(test)) {
        filter = parseDocumentTest();
    } else if ("element".equals(test)) {
        filter = parseElementTest();
    } else if ("attribute".equals(test)) {
        filter = parseAttributeTest();
    } else if ("schema-element".equals(test)) {
        filter = parseSchemaElementTest();
    } else if ("schema-attribute".equals(test)) {
        filter = parseSchemaAttributeTest();
    } else if ("processing-instruction".equals(test)) {
        filter = parsePITest();
    } else if ("comment".equals(test)) {
        filter = parseCommentTest();
    } else if ("text".equals(test)) {
        filter = parseTextTest();
    } else {
        filter = parseAnyKindTest();
    }
    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)

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