org.teiid.language.visitor
Class SQLStringVisitor

java.lang.Object
  extended by org.teiid.language.visitor.AbstractLanguageVisitor
      extended by org.teiid.language.visitor.SQLStringVisitor
All Implemented Interfaces:
LanguageObjectVisitor
Direct Known Subclasses:
SQLConversionVisitor

public class SQLStringVisitor
extends AbstractLanguageVisitor

Creates a SQL string for a LanguageObject subtree. Instances of this class are not reusable, and are not thread-safe.


Field Summary
protected  java.lang.StringBuilder buffer
           
protected static java.lang.String UNDEFINED
           
protected static java.lang.String UNDEFINED_PARAM
           
 
Constructor Summary
SQLStringVisitor()
           
 
Method Summary
 void append(LanguageObject obj)
          Appends the string form of the ILanguageObject to the current buffer.
protected  void append(LanguageObject[] items)
          Simple utility to append an array of language objects to the current buffer by creating a comma-separated list.
protected  void append(java.util.List<? extends LanguageObject> items)
          Simple utility to append a list of language objects to the current buffer by creating a comma-separated list.
protected  void appendNestedCondition(AndOr parent, Condition condition)
           
protected  void appendSetOperation(SetQuery.Operation operation)
           
protected  void appendSetQuery(SetQuery parent, QueryExpression obj, boolean right)
           
protected  java.lang.String escapeString(java.lang.String str, java.lang.String quote)
          Creates a SQL-safe string.
protected  java.lang.String getName(AbstractMetadataRecord object)
          Gets the name of a group or element from the RuntimeMetadata
static java.lang.String getShortName(java.lang.String elementName)
           
protected  java.lang.String getSourceComment(Command command)
           
static java.lang.String getSQLString(LanguageObject obj)
          Gets the SQL string representation for a given ILanguageObject.
protected  boolean isInfixFunction(java.lang.String function)
           
protected  java.lang.String replaceElementName(java.lang.String group, java.lang.String element)
          Take the specified derived group and element short names and determine a replacement element name to use instead.
 java.lang.String toString()
           
protected  boolean useAsInGroupAlias()
          Indicates whether group alias should be of the form "...FROM groupA AS X" or "...FROM groupA X".
protected  boolean useParensForJoins()
           
protected  boolean useParensForSetQueries()
           
protected  boolean useSelectLimit()
           
 void visit(AggregateFunction obj)
           
 void visit(AndOr obj)
           
 void visit(Argument obj)
           
 void visit(Call obj)
           
 void visit(ColumnReference obj)
           
 void visit(Comparison obj)
           
 void visit(Delete obj)
           
 void visit(DerivedColumn obj)
           
 void visit(DerivedTable obj)
           
 void visit(Exists obj)
           
 void visit(ExpressionValueSource obj)
           
 void visit(Function obj)
           
 void visit(GroupBy obj)
           
 void visit(In obj)
           
 void visit(Insert obj)
           
 void visit(IsNull obj)
           
 void visit(Join obj)
           
 void visit(Like obj)
           
 void visit(Limit obj)
           
 void visit(Literal obj)
           
 void visit(NamedTable obj)
           
 void visit(Not obj)
           
 void visit(OrderBy obj)
           
 void visit(ScalarSubquery obj)
           
 void visit(SearchedCase obj)
           
 void visit(SearchedWhenClause obj)
           
 void visit(Select obj)
           
 void visit(SetClause clause)
           
 void visit(SetQuery obj)
           
 void visit(SortSpecification obj)
           
 void visit(SubqueryComparison obj)
           
 void visit(SubqueryIn obj)
           
 void visit(Update obj)
           
 
Methods inherited from class org.teiid.language.visitor.AbstractLanguageVisitor
visit, visitNode, visitNodes, visitNodes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

UNDEFINED

protected static final java.lang.String UNDEFINED
See Also:
Constant Field Values

UNDEFINED_PARAM

protected static final java.lang.String UNDEFINED_PARAM
See Also:
Constant Field Values

buffer

protected java.lang.StringBuilder buffer
Constructor Detail

SQLStringVisitor

public SQLStringVisitor()
Method Detail

getName

protected java.lang.String getName(AbstractMetadataRecord object)
Gets the name of a group or element from the RuntimeMetadata

Parameters:
id - the id of the group or element
Returns:
the name of that element or group as defined in the source

append

public void append(LanguageObject obj)
Appends the string form of the ILanguageObject to the current buffer.

Parameters:
obj - the language object instance

append

protected void append(java.util.List<? extends LanguageObject> items)
Simple utility to append a list of language objects to the current buffer by creating a comma-separated list.

Parameters:
items - a list of ILanguageObjects

append

protected void append(LanguageObject[] items)
Simple utility to append an array of language objects to the current buffer by creating a comma-separated list.

Parameters:
items - an array of ILanguageObjects

escapeString

protected java.lang.String escapeString(java.lang.String str,
                                        java.lang.String quote)
Creates a SQL-safe string. Simply replaces all occurrences of ' with ''

Parameters:
str - the input string
Returns:
a SQL-safe string

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

visit

public void visit(AggregateFunction obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Comparison obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(AndOr obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

appendNestedCondition

protected void appendNestedCondition(AndOr parent,
                                     Condition condition)

visit

public void visit(Delete obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

replaceElementName

protected java.lang.String replaceElementName(java.lang.String group,
                                              java.lang.String element)
Take the specified derived group and element short names and determine a replacement element name to use instead. Most commonly, this is used to strip the group name if the group is a pseudo-group (DUAL) or the element is a pseudo-group (ROWNUM). It may also be used to strip special information out of the name in source value in some specialized cases. By default, this method returns null, indicating that the normal group and element name logic should be used (group + "." + element). Subclasses should override and implement this method if desired.

Parameters:
group - Group name, may be null
element - Element name, never null
Returns:
Replacement element name to be used as is (no modification will occur)
Since:
5.0

visit

public void visit(ColumnReference obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

getShortName

public static java.lang.String getShortName(java.lang.String elementName)
Parameters:
elementName -
Returns:
Since:
4.3

visit

public void visit(Call obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Exists obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

isInfixFunction

protected boolean isInfixFunction(java.lang.String function)

visit

public void visit(Function obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(NamedTable obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

useAsInGroupAlias

protected boolean useAsInGroupAlias()
Indicates whether group alias should be of the form "...FROM groupA AS X" or "...FROM groupA X". Certain data sources (such as Oracle) may not support the first form.

Returns:
boolean

visit

public void visit(GroupBy obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(In obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(DerivedTable obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Insert obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(ExpressionValueSource obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(IsNull obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Join obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Like obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Limit obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Literal obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Not obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(OrderBy obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(SortSpecification obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Argument obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Select obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(SearchedCase obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(SearchedWhenClause obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

getSourceComment

protected java.lang.String getSourceComment(Command command)

visit

public void visit(ScalarSubquery obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(DerivedColumn obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(SubqueryComparison obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(SubqueryIn obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(Update obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(SetClause clause)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

visit

public void visit(SetQuery obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor

appendSetOperation

protected void appendSetOperation(SetQuery.Operation operation)

useParensForSetQueries

protected boolean useParensForSetQueries()

appendSetQuery

protected void appendSetQuery(SetQuery parent,
                              QueryExpression obj,
                              boolean right)

getSQLString

public static java.lang.String getSQLString(LanguageObject obj)
Gets the SQL string representation for a given ILanguageObject.

Parameters:
obj - the root of the ILanguageObject hierarchy that needs to be converted. This can be any subtree, and does not need to be a top-level command
Returns:
the SQL representation of that ILanguageObject hierarchy

useParensForJoins

protected boolean useParensForJoins()

useSelectLimit

protected boolean useSelectLimit()


Copyright © 2010. All Rights Reserved.