/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership. Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
package org.teiid.language.visitor;
import java.util.Collection;
import org.teiid.language.*;
/**
* Visitor that visits an instance of LanguageObject and performs an operation
* on that instance. The visit() methods of this Visitor can be selectively
* overridden to perform operations on each type of LanguageObject. The public
* visit() methods should not be called directly, as they are only used by this
* visitor framework to let the instance invoke the type-specific visit() method
*/
public abstract class AbstractLanguageVisitor implements LanguageObjectVisitor {
protected AbstractLanguageVisitor() {
}
/**
* Visit the LanguageObject instance to perform the Visitor's operation on
* that instance. This method can also be used by the subclass to visit any
* LanguageObject instances that the given instance may contain.
* @see HierarchyVisitor
* @param obj an LanguageObject instance
*/
public void visitNode(LanguageObject obj) {
if (obj != null) {
obj.acceptVisitor(this);
}
}
/**
* Visits a Collection of LanguageObjects in iteration order. This method
* can be used by subclasses to visit each LanguageObject in the Collection
* @param nodes a Collection of LanguageObjects
*/
public void visitNodes(Collection<? extends LanguageObject> nodes) {
if (nodes != null && nodes.size() > 0) {
for (LanguageObject node : nodes) {
visitNode(node);
}
}
}
/**
* Visits an array of LanguageObjects in order. This method can be used by
* subclasses to visit each LanguageObject in the array.
* @param nodes an LanguageObject[]
*/
public void visitNodes(LanguageObject[] nodes) {
if (nodes != null && nodes.length > 0) {
for (int i = 0; i < nodes.length; i++) {
visitNode(nodes[i]);
}
}
}
public void visit(AggregateFunction obj) {}
public void visit(BatchedUpdates obj) {}
public void visit(Comparison obj) {}
public void visit(AndOr obj) {}
public void visit(Delete obj) {}
public void visit(ColumnReference obj) {}
public void visit(Call obj) {}
public void visit(Exists obj) {}
public void visit(Function obj) {}
public void visit(NamedTable obj) {}
public void visit(GroupBy obj) {}
public void visit(In obj) {}
public void visit(DerivedTable obj) {}
public void visit(Insert obj) {}
public void visit(ExpressionValueSource obj) {}
public void visit(IsNull obj) {}
public void visit(Join obj) {}
public void visit(Like obj) {}
public void visit(Limit obj) {}
public void visit(Literal obj) {}
public void visit(Not obj) {}
public void visit(OrderBy obj) {}
public void visit(SortSpecification obj) {}
public void visit(Argument obj) {}
public void visit(Select obj) {}
public void visit(ScalarSubquery obj) {}
public void visit(SearchedCase obj) {}
public void visit(DerivedColumn obj) {}
public void visit(SubqueryComparison obj) {}
public void visit(SubqueryIn obj) {}
public void visit(Update obj) {}
public void visit(SetQuery obj) {}
public void visit(SetClause obj) {}
public void visit(SearchedWhenClause obj) {}
public void visit(Parameter obj) {}
@Override
public void visit(WindowFunction windowFunction) {}
@Override
public void visit(WindowSpecification windowSpecification) {}
@Override
public void visit(With obj) {}
@Override
public void visit(WithItem obj) {}
@Override
public void visit(Array array) {}
@Override
public void visit(NamedProcedureCall namedProcedureCall) {}
}