org.teiid.connector.visitor.util
Class SQLStringVisitor

java.lang.Object
  extended by org.teiid.connector.visitor.framework.AbstractLanguageVisitor
      extended by org.teiid.connector.visitor.util.SQLStringVisitor
All Implemented Interfaces:
LanguageObjectVisitor, SQLReservedWords
Direct Known Subclasses:
SQLConversionVisitor

public class SQLStringVisitor
extends AbstractLanguageVisitor
implements SQLReservedWords

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.StringBuffer buffer
           
protected static java.lang.String UNDEFINED
           
protected static java.lang.String UNDEFINED_PARAM
           
 
Fields inherited from interface org.teiid.connector.visitor.util.SQLReservedWords
ALL, ALL_COLS, AND, ANY, AS, ASC, AVG, BEGIN, BETWEEN, BIGDECIMAL, BIGINTEGER, BREAK, BY, BYTE, CASE, CAST, CHAR, COMMA, CONTINUE, CONVERT, COUNT, CREATE, CRITERIA, CROSS, DATE, DEBUG, DECLARE, DELETE, DESC, DISTINCT, DOT, DOUBLE, ELSE, END, EQ, ERROR, ESCAPE, EXCEPT, EXEC, EXECUTE, EXISTS, FALSE, FLOAT, FOR, FROM, FULL, GE, GROUP, GT, HAS, HAVING, IF, IN, INNER, INSERT, INTEGER, INTERSECT, INTO, IS, JOIN, LE, LEFT, LIKE, LIMIT, LONG, LOOP, LPAREN, LT, MAKEDEP, MAX, MIN, NE, NOT, NULL, OBJECT, ON, OPTION, OR, ORDER, OUTER, PROCEDURE, QUOTE, RIGHT, RPAREN, SELECT, SET, SHORT, SHOWPLAN, SOME, SPACE, SQL_TSI_DAY, SQL_TSI_FRAC_SECOND, SQL_TSI_HOUR, SQL_TSI_MINUTE, SQL_TSI_MONTH, SQL_TSI_QUARTER, SQL_TSI_SECOND, SQL_TSI_WEEK, SQL_TSI_YEAR, STRING, SUM, THEN, TIME, TIMESTAMP, TIMESTAMPADD, TIMESTAMPDIFF, TRANSLATE, TRUE, UNION, UNKNOWN, UPDATE, USING, VALUES, VIRTUAL, WHEN, WHERE, WHILE, WITH
 
Constructor Summary
SQLStringVisitor()
           
 
Method Summary
 void append(ILanguageObject obj)
          Appends the string form of the ILanguageObject to the current buffer.
protected  void append(ILanguageObject[] 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 ILanguageObject> items)
          Simple utility to append a list of language objects to the current buffer by creating a comma-separated list.
protected  void appendSetOperation(ISetQuery.Operation operation)
           
protected  void appendSetQuery(IQueryCommand obj)
           
protected  java.lang.String escapeString(java.lang.String str)
          Creates a SQL-safe string.
protected  java.lang.String getName(MetadataObject 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(ICommand command)
           
static java.lang.String getSQLString(ILanguageObject obj)
          Gets the SQL string representation for a given ILanguageObject.
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 useParensForSetQueries()
           
 void visit(IAggregate obj)
           
 void visit(IBulkInsert obj)
           
 void visit(ICompareCriteria obj)
           
 void visit(ICompoundCriteria obj)
           
 void visit(IDelete obj)
           
 void visit(IElement obj)
           
 void visit(IExistsCriteria obj)
           
 void visit(IFrom obj)
           
 void visit(IFunction obj)
           
 void visit(IGroup obj)
           
 void visit(IGroupBy obj)
           
 void visit(IInCriteria obj)
           
 void visit(IInlineView obj)
           
 void visit(IInsert obj)
           
 void visit(IIsNullCriteria obj)
           
 void visit(IJoin obj)
           
 void visit(ILikeCriteria obj)
           
 void visit(ILimit obj)
           
 void visit(ILiteral obj)
           
 void visit(INotCriteria obj)
           
 void visit(IOrderBy obj)
           
 void visit(IOrderByItem obj)
           
 void visit(IParameter obj)
           
 void visit(IProcedure obj)
           
 void visit(IQuery obj)
           
 void visit(IScalarSubquery obj)
           
 void visit(ISearchedCaseExpression obj)
           
 void visit(ISelect obj)
           
 void visit(ISelectSymbol obj)
           
 void visit(ISetClause clause)
           
 void visit(ISetClauseList obj)
           
 void visit(ISetQuery obj)
           
 void visit(ISubqueryCompareCriteria obj)
           
 void visit(ISubqueryInCriteria obj)
           
 void visit(IUpdate obj)
           
 
Methods inherited from class org.teiid.connector.visitor.framework.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.StringBuffer buffer
Constructor Detail

SQLStringVisitor

public SQLStringVisitor()
Method Detail

getName

protected java.lang.String getName(MetadataObject 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(ILanguageObject 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 ILanguageObject> 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(ILanguageObject[] 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)
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(IAggregate obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IAggregate)

visit

public void visit(ICompareCriteria obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.ICompareCriteria)

visit

public void visit(ICompoundCriteria obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.ICompoundCriteria)

visit

public void visit(IDelete obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IDelete)

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(IElement obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IElement)

getShortName

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

visit

public void visit(IProcedure obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(com.metamatrix.data.language.IExecute)

visit

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

visit

public void visit(IFrom obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IFrom)

visit

public void visit(IFunction obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IFunction)

visit

public void visit(IGroup obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IGroup)

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(IGroupBy obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IGroupBy)

visit

public void visit(IInCriteria obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IInCriteria)

visit

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

visit

public void visit(IInsert obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IInsert)

visit

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

visit

public void visit(IIsNullCriteria obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IIsNullCriteria)

visit

public void visit(IJoin obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IJoin)

visit

public void visit(ILikeCriteria obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.ILikeCriteria)

visit

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

visit

public void visit(ILiteral obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.ILiteral)

visit

public void visit(INotCriteria obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.INotCriteria)

visit

public void visit(IOrderBy obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IOrderBy)

visit

public void visit(IOrderByItem obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IOrderByItem)

visit

public void visit(IParameter obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IParameter)

visit

public void visit(IQuery obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IQuery)

visit

public void visit(ISearchedCaseExpression obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.ISearchedCaseExpression)

visit

public void visit(ISelect obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.ISelect)

getSourceComment

protected java.lang.String getSourceComment(ICommand command)

visit

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

visit

public void visit(ISelectSymbol obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.ISelectSymbol)

visit

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

visit

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

visit

public void visit(IUpdate obj)
Specified by:
visit in interface LanguageObjectVisitor
Overrides:
visit in class AbstractLanguageVisitor
See Also:
com.metamatrix.data.visitor.LanguageObjectVisitor#visit(org.teiid.connector.language.IUpdate)

visit

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

visit

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

visit

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

appendSetOperation

protected void appendSetOperation(ISetQuery.Operation operation)

useParensForSetQueries

protected boolean useParensForSetQueries()

appendSetQuery

protected void appendSetQuery(IQueryCommand obj)

getSQLString

public static java.lang.String getSQLString(ILanguageObject 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


Copyright © 2009. All Rights Reserved.