wt.pds
Class BasicCompoundStatementBuilder

java.lang.Object
  extended bywt.pds.BasicStatementBuilder
      extended bywt.pds.BasicCompoundStatementBuilder
All Implemented Interfaces:
Externalizable, Serializable, StatementBuilder
Direct Known Subclasses:
CompoundStatementBuilder

public abstract class BasicCompoundStatementBuilder
extends BasicStatementBuilder
implements Externalizable

This class builds a select statement by appending component SQL statements with a Set Operator.

This class contains the implementation for building a compound statement. It defines abstract methods for accessing the Set Operator and component statements.

Supported API: false

Extendable: false

See Also:
Serialized Form

Field Summary
private static String CLASSNAME
           
static boolean DEBUG
           
static long EXTERNALIZATION_VERSION_UID
           
private  boolean includeNestedParantheses
           
private static DebugWriter LOG
           
protected static long OLD_FORMAT_VERSION_UID
           
private  OrderByClause orderBy
           
private static String RESOURCE
           
(package private) static long serialVersionUID
           
private  boolean useComponentOrderBy
           
 
Fields inherited from class wt.pds.BasicStatementBuilder
DMLGENERATOR
 
Fields inherited from interface wt.pds.StatementBuilder
CHUNKING_ENABLED, FETCH_SIZE, SQL_STATEMENTS, STATEMENT_COUNT
 
Constructor Summary
BasicCompoundStatementBuilder()
           
 
Method Summary
 String[] buildSQL(ResultBuilder a_resultBuilder, WTConnection a_connection, boolean a_isComponent, boolean a_isComponentChunkSupported)
          Returns an array of SQL statements to execute.
 ArrayList getChunkableComponents()
          

Supported API: false
abstract  Vector getComponents()
          Gets the object for the association that plays role: components.
private  boolean[] getFromAccessControlled(Vector a_components)
           
private  int getMaxFromAccessControlled(Vector a_components)
           
 OrderByClause getOrderBy()
          Gets the object for the association that plays role: orderBy.
private  String getOrderByString()
           
abstract  SetOperator getSetOperator()
          Gets the object for the association that plays role: setOperator.
 Vector getStatementBindParameters(int a_sqlIndex)
          Returns a Vector of bind parameters for the specified statement.
 boolean isIncludeNestedParantheses()
          Gets the value of the attribute: includeNestedParantheses; Indicates if parantheses should be included for nested statements.
 boolean isQueryChunkSupported()
           
 boolean isUseComponentOrderBy()
          Gets the value of the attribute: useComponentOrderBy; Indicates if the order by clause should be taken from the first component of the compound statement.
 void readExternal(ObjectInput input)
          Reads the non-transient fields of this class from an external source.
private  boolean readOldVersion(ObjectInput input, long readSerialVersionUID, boolean passThrough, boolean superDone)
          Reads the non-transient fields of this class from an external source, which is not the current version.
protected  boolean readVersion(BasicCompoundStatementBuilder thisObject, ObjectInput input, long readSerialVersionUID, boolean passThrough, boolean superDone)
          Reads the non-transient fields of this class from an external source.
private  void setFromAccessControlRequired(Vector a_components, boolean[] a_fromAccessControl)
           
 void setIncludeNestedParantheses(boolean a_IncludeNestedParantheses)
          Sets the value of the attribute: includeNestedParantheses; Indicates if parantheses should be included for nested statements.
 void setUseComponentOrderBy(boolean a_UseComponentOrderBy)
          Sets the value of the attribute: useComponentOrderBy; Indicates if the order by clause should be taken from the first component of the compound statement.
 void writeExternal(ObjectOutput output)
          Writes the non-transient fields of this class to an external source.
 
Methods inherited from class wt.pds.BasicStatementBuilder
appendBindParameter, buildSQL, clone, getFetchSize, getSqlStatements, getStatement, getStatementCount, insertBindParameterAt, isChunkingEnabled, readVersion, setChunkingEnabled, setFetchSize, setSqlStatements
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RESOURCE

private static final String RESOURCE
See Also:
Constant Field Values

CLASSNAME

private static final String CLASSNAME

includeNestedParantheses

private boolean includeNestedParantheses

useComponentOrderBy

private boolean useComponentOrderBy

orderBy

private OrderByClause orderBy

serialVersionUID

static final long serialVersionUID
See Also:
Constant Field Values

EXTERNALIZATION_VERSION_UID

public static final long EXTERNALIZATION_VERSION_UID
See Also:
Constant Field Values

OLD_FORMAT_VERSION_UID

protected static final long OLD_FORMAT_VERSION_UID
See Also:
Constant Field Values

DEBUG

public static final boolean DEBUG

LOG

private static final DebugWriter LOG
Constructor Detail

BasicCompoundStatementBuilder

public BasicCompoundStatementBuilder()
Method Detail

writeExternal

public void writeExternal(ObjectOutput output)
                   throws IOException
Writes the non-transient fields of this class to an external source.

Supported API: false

Specified by:
writeExternal in interface Externalizable
Overrides:
writeExternal in class BasicStatementBuilder
Parameters:
output -
Throws:
IOException

readExternal

public void readExternal(ObjectInput input)
                  throws IOException,
                         ClassNotFoundException
Reads the non-transient fields of this class from an external source.

Supported API: false

Specified by:
readExternal in interface Externalizable
Overrides:
readExternal in class BasicStatementBuilder
Parameters:
input -
Throws:
IOException
ClassNotFoundException

readVersion

protected boolean readVersion(BasicCompoundStatementBuilder thisObject,
                              ObjectInput input,
                              long readSerialVersionUID,
                              boolean passThrough,
                              boolean superDone)
                       throws IOException,
                              ClassNotFoundException
Reads the non-transient fields of this class from an external source.

Supported API: false

Parameters:
thisObject -
input -
readSerialVersionUID -
passThrough -
superDone -
Returns:
boolean
Throws:
IOException
ClassNotFoundException

readOldVersion

private boolean readOldVersion(ObjectInput input,
                               long readSerialVersionUID,
                               boolean passThrough,
                               boolean superDone)
                        throws IOException,
                               ClassNotFoundException
Reads the non-transient fields of this class from an external source, which is not the current version.

Parameters:
input -
readSerialVersionUID -
passThrough -
superDone -
Returns:
boolean
Throws:
IOException
ClassNotFoundException

isIncludeNestedParantheses

public boolean isIncludeNestedParantheses()
Gets the value of the attribute: includeNestedParantheses; Indicates if parantheses should be included for nested statements. This should always be included, but an Oracle bug can occur for top level statements. This attribute can be used as a workaround.

Supported API: false

Returns:
boolean

setIncludeNestedParantheses

public void setIncludeNestedParantheses(boolean a_IncludeNestedParantheses)
Sets the value of the attribute: includeNestedParantheses; Indicates if parantheses should be included for nested statements. This should always be included, but an Oracle bug can occur for top level statements. This attribute can be used as a workaround.

Supported API: false

Parameters:
a_IncludeNestedParantheses -

isUseComponentOrderBy

public boolean isUseComponentOrderBy()
Gets the value of the attribute: useComponentOrderBy; Indicates if the order by clause should be taken from the first component of the compound statement. If false, then the explicit order by is used.

Supported API: false

Returns:
boolean

setUseComponentOrderBy

public void setUseComponentOrderBy(boolean a_UseComponentOrderBy)
Sets the value of the attribute: useComponentOrderBy; Indicates if the order by clause should be taken from the first component of the compound statement. If false, then the explicit order by is used.

Supported API: false

Parameters:
a_UseComponentOrderBy -

getSetOperator

public abstract SetOperator getSetOperator()
Gets the object for the association that plays role: setOperator.

Supported API: false

Returns:
SetOperator

getOrderBy

public OrderByClause getOrderBy()
Gets the object for the association that plays role: orderBy.

Supported API: false

Returns:
OrderByClause

getComponents

public abstract Vector getComponents()
Gets the object for the association that plays role: components.

Supported API: false

Returns:
Vector

buildSQL

public String[] buildSQL(ResultBuilder a_resultBuilder,
                         WTConnection a_connection,
                         boolean a_isComponent,
                         boolean a_isComponentChunkSupported)
                  throws PersistenceException
Returns an array of SQL statements to execute.

Supported API: false

Specified by:
buildSQL in interface StatementBuilder
Parameters:
a_resultBuilder -
a_connection -
a_isComponent - Indicates that these SQL statements will be used as nested components of another SQL statement.
a_isComponentChunkSupported - Indicates that these SQL statements will support chunk or not, and the value will be false when a_isComponent is false, and can be true or false when a_isComponents is true.
Returns:
String[]
Throws:
PersistenceException

getStatementBindParameters

public Vector getStatementBindParameters(int a_sqlIndex)
                                  throws PersistenceException
Returns a Vector of bind parameters for the specified statement.

Supported API: false

Specified by:
getStatementBindParameters in interface StatementBuilder
Specified by:
getStatementBindParameters in class BasicStatementBuilder
Parameters:
a_sqlIndex -
Returns:
Vector
Throws:
PersistenceException

getChunkableComponents

public ArrayList getChunkableComponents()
                                 throws WTException


Supported API: false

Returns:
ArrayList
Throws:
WTException

getOrderByString

private String getOrderByString()
                         throws WTException
Throws:
WTException

getFromAccessControlled

private boolean[] getFromAccessControlled(Vector a_components)
                                   throws WTException
Throws:
WTException

getMaxFromAccessControlled

private int getMaxFromAccessControlled(Vector a_components)
                                throws WTException
Throws:
WTException

setFromAccessControlRequired

private void setFromAccessControlRequired(Vector a_components,
                                          boolean[] a_fromAccessControl)

isQueryChunkSupported

public boolean isQueryChunkSupported()