All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.jena.sparql.syntax.RecursiveElementVisitor Maven / Gradle / Ivy

There is a newer version: 5.2.0
Show newest version
/*
 * 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