
org.apache.jena.sparql.syntax.RecursiveElementVisitor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jena-arq Show documentation
Show all versions of jena-arq Show documentation
ARQ is a SPARQL 1.1 query engine for Apache Jena
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jena.sparql.syntax;
/** Visitor pattern helper that walks the entire tree calling operations
* are various points in the walking process. It is a depth first traversal.
*
* Every visit operation is bracketted by a start/end pair makeing the
* calling points:
*
* - start of element
* - start each sub element
* - end of each sub element
* - end of element
*
*
*
* The calls before and after subElements pass in the containing Element.
* These calls are in addition to the start/end call on elements as
* part of the recursive walk.
*
* Usage: inherit from this class and implement startElement/endElement as needed.
* The ElementWalker is like implementing endElement.
*/
public class RecursiveElementVisitor implements ElementVisitor
{
// ---- Call points.
// Not abstract, because subclasses don't have to implement them.
public void startElement(ElementTriplesBlock el) {}
public void endElement (ElementTriplesBlock el) {}
public void startElement(ElementDataset el) {}
public void endElement (ElementDataset el) {}
public void startElement(ElementFilter el) {}
public void endElement (ElementFilter el) {}
public void startElement(ElementAssign el) {}
public void endElement (ElementAssign el) {}
public void startElement(ElementBind el) {}
public void endElement (ElementBind el) {}
public void startElement(ElementData el) {}
public void endElement (ElementData el) {}
public void startElement(ElementUnion el) {}
public void endElement (ElementUnion el) {}
public void startSubElement(ElementUnion el, Element subElt) {}
public void endSubElement (ElementUnion el, Element subElt) {}
public void startElement(ElementGroup el) {}
public void endElement (ElementGroup el) {}
public void startSubElement(ElementGroup el, Element subElt) {}
public void endSubElement (ElementGroup el, Element subElt) {}
public void startElement(ElementOptional el) {}
public void endElement (ElementOptional el) {}
public void startElement(ElementNamedGraph el) {}
public void endElement (ElementNamedGraph el) {}
public void startElement(ElementService el) {}
public void endElement (ElementService el) {}
public void startElement(ElementExists el) {}
public void endElement (ElementExists el) {}
public void startElement(ElementNotExists el) {}
public void endElement (ElementNotExists el) {}
public void startElement(ElementMinus el) {}
public void endElement (ElementMinus el) {}
public void endElement(ElementSubQuery el) {}
public void startElement(ElementSubQuery el) {}
public void endElement(ElementPathBlock el) {}
public void startElement(ElementPathBlock el) {}
protected ElementVisitor visitor = null ;
// ----
private RecursiveElementVisitor() { this.visitor = new ElementVisitorBase() ; }
public RecursiveElementVisitor(ElementVisitor visitor) { this.visitor = visitor ; }
// Visitor pattern on Elements
@Override
public final void visit(ElementTriplesBlock el)
{
startElement(el) ;
endElement(el) ;
}
@Override
public final void visit(ElementDataset el)
{
startElement(el) ;
el.getElement().visit(this) ;
endElement(el) ;
}
@Override
public final void visit(ElementFilter el)
{
startElement(el) ;
endElement(el) ;
}
@Override
public void visit(ElementAssign el)
{
startElement(el) ;
endElement(el) ;
}
@Override
public void visit(ElementBind el)
{
startElement(el) ;
endElement(el) ;
}
@Override
public void visit(ElementData el)
{
startElement(el) ;
endElement(el) ;
}
@Override
public final void visit(ElementUnion el)
{
startElement(el) ;
for ( Element subElement : el.getElements() )
{
startSubElement(el, subElement) ;
subElement.visit(this) ;
endSubElement(el, subElement) ;
}
endElement(el) ;
}
@Override
public final void visit(ElementGroup el)
{
startElement(el) ;
for ( Element subElement : el.getElements() )
{
startSubElement(el, subElement) ;
subElement.visit(this) ;
endSubElement(el, subElement) ;
}
endElement(el) ;
}
@Override
public final void visit(ElementOptional el)
{
startElement(el) ;
el.getOptionalElement().visit(this) ;
endElement(el) ;
}
@Override
public final void visit(ElementNamedGraph el)
{
startElement(el) ;
el.getElement().visit(this) ;
endElement(el) ;
}
@Override
public final void visit(ElementService el)
{
startElement(el) ;
el.getElement().visit(this) ;
endElement(el) ;
}
@Override
public final void visit(ElementExists el)
{
startElement(el) ;
el.getElement().visit(this) ;
endElement(el) ;
}
@Override
public final void visit(ElementNotExists el)
{
startElement(el) ;
el.getElement().visit(this) ;
endElement(el) ;
}
@Override
public final void visit(ElementMinus el)
{
startElement(el) ;
el.getMinusElement().visit(this) ;
endElement(el) ;
}
@Override
public void visit(ElementSubQuery el)
{
startElement(el) ;
endElement(el) ;
}
@Override
public void visit(ElementPathBlock el)
{
startElement(el) ;
endElement(el) ;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy