org.opensubsystems.patterns.listdata.persist.db
Class ListDatabaseTestUtils

java.lang.Object
  extended by org.opensubsystems.patterns.listdata.persist.db.ListDatabaseTestUtils

public abstract class ListDatabaseTestUtils
extends java.lang.Object

Class used by JUnit tests derived from ListDatabaseFactoryTest class. Each such class should derive its own class from this class and implement all required methods. The functionality provided by the implemented methods it used to execute the generic tests for list pattern functionality. The idea is that the derived class specifies how to constructs the in memory tested data objects using two specified string values (here called column one and column two) and then specifies how to insert them to the database and how to delete them from the database. Then the generic tests using these specific methods as well as other utility methods from this class test list pattern implementation and behavior of the tested data object.

Version:
$Id: ListDatabaseTestUtils.java,v 1.4 2007/02/20 04:22:42 bastafidli Exp $
Author:
Julo Legeny
Code reviewer:
Miro Halas
Code reviewed:
1.38 2007/01/18 06:08:41 bastafidli

Field Summary
protected  int[] m_arrAllColumnCodes
          Array with codes for all columns that stores data for the tested data object.
protected  java.lang.Class m_clsListDatabaseSchemaClass
          Class that implements ListDatabaseSchema interface for the tested data object.
protected  java.lang.Class m_clsListFactoryClass
          Class representing database specific ListFactory interface implementation for the tested data object.
protected  int m_iColumnOneCode
          Code that represents column storing the first value used to generate the tested data object.
protected  int m_iColumnTwoCode
          Code that represents column storing the second value used to generate the tested data object.
static java.lang.String NO_PARENT
          Constant used to return test data which were created without any parent.
 
Constructor Summary
ListDatabaseTestUtils(java.lang.Class clsListFactoryClass, java.lang.Class clsListDatabaseSchemaClass, int[] arrAllColumnCodes, int iColumnOneCode, int iColumnTwoCode)
          Constructor
 
Method Summary
 void analyzeDatabase()
          Update database statistics with expectation to improve performance of queries (usually after a large number of data were inserted or deleted) by analyzing the modified tables.
protected abstract  org.opensubsystems.core.data.DataObject constructData(java.lang.Object parent, int iDomainId, java.lang.String str1, java.lang.String str2)
          Construct instance of tested data object that can be later inserted to the database using the specifiend values.
protected  org.opensubsystems.core.data.DataObject createDataObject(org.opensubsystems.core.data.DataObject data)
          Create data object.
protected  void createDataObjects(java.util.List lstDataObjects)
          Create list of data objects efficiently if possible.
protected abstract  void deleteData(java.lang.Object parent, int iDomainId, java.lang.String strPrefix1, java.lang.String strPrefix2)
          Delete all instances of tested data object that were previously constructed for a specified parent using the specified prefixes for values used to populate column one and two.
protected  void deleteData(java.lang.Object parent, int iDomainId, java.lang.String strPrefix1, java.lang.String strPrefix2, java.lang.String strDeleteByListTestPrefixesQuery, boolean bSubstitueValues)
          Convenience method to delete all instances of tested data object that were previously constructed for a specified parent using the specified prefixes for values used to populate column one and two.
protected  void deleteDataObject(org.opensubsystems.core.data.DataObject data, int iDomainId)
          Delete data object.
protected  void deleteDataObjects(java.util.List lstDataObjects, int iDomainId)
          Deletes list of data objects efficiently if possible.
 void deleteLoadTestData(javax.transaction.UserTransaction transaction, java.lang.Object[] insertedData)
          Delete all data inserted for the load tests using the insertLoadTestData method.
protected  void deleteLoadTestData(javax.transaction.UserTransaction transaction, java.lang.Object[] insertedData, int iDomainId)
          Delete all data inserted for the load tests using the insertLoadTestData method.
protected abstract  void deleteParent(java.lang.Object parent, int iDomainId)
          If the insertParent created any parent object then these needs to be deleted to cleanup the database.
 void deleteTestData(javax.transaction.UserTransaction transaction, java.lang.Object[] insertedData)
          Delete all test data inserted by insertTestData method.
 int[] getAllColumnCodes()
          Get codes for all columns that stores data for the tested data object.
 int getColumnOneCode()
          Get code that represents column storing the first value used to generate the tested data object.
abstract  java.lang.String getColumnOneValue(org.opensubsystems.core.data.DataObject data)
          Get value of the attribute represented by the first column code specified in the constructor.
 int getColumnTwoCode()
          Get code that represents column storing the second value used to generate the tested data object.
abstract  java.lang.String getColumnTwoValue(org.opensubsystems.core.data.DataObject data)
          Get value of the attribute represented by the second column code specified in the constructor.
 org.opensubsystems.patterns.listdata.data.ListOptions getDefaultListOptions(java.lang.Object parent)
          Ge list options initialized to default values that will be used during list pattern tests.
 java.lang.String[] getDefaultResultListColumnTwo()
          Get expected results for columns 2 if the list is sorted using this column.
 java.lang.String[] getExpectedResultListColumnOne()
          Get expected results for columns 1 if the list is sorted using this column.
 org.opensubsystems.patterns.listdata.persist.db.ListDatabaseSchema getListDatabaseSchema()
          Get instance of ListDatabaseSchema able to retrieve the tested data provide and execute database specific operations.
 java.lang.Class getListDatabaseSchemaClass()
          Get class that implements ListDatabaseSchema interface.
 org.opensubsystems.patterns.listdata.persist.ListFactory getListFactory()
          Get instance of ListFactory able to retrieve the tested data object from the database.
 java.lang.Class getListFactoryClass()
          Get class representing database specific ListFactory interface implementation for the tested data object.
protected  org.opensubsystems.core.data.DataObject insertData(java.lang.Object parent, int iDomainId, java.lang.String str1, java.lang.String str2)
          Insert to the database record representing tested data object that is generated using the values specified for two columns of the data object.
 java.lang.Object[] insertLoadTestData(javax.transaction.UserTransaction transaction, int iLoadTestListSize)
          Insert data records for load tests if they were not inserted yet.
protected  java.lang.Object[] insertLoadTestData(javax.transaction.UserTransaction transaction, int iLoadTestListSize, int iDomainId, int iStartNumber, boolean bAditionalData)
          Insert data records for load tests if they were not inserted yet.
protected  java.util.List insertMultipleData(java.lang.Object parent, int iDomainId, int iCount, int iStartNumber, boolean bAditionalData)
          Insert efficiently to the database multiple records representing tested data object that are generated using the specified values
protected abstract  java.lang.Object insertParent(int iDomainId, java.lang.String str1, java.lang.String str2)
          If the tested data object requires any kind of "parent" records, it should create them in this method using the two passed string values and return it.
 java.lang.Object[] insertTestData(javax.transaction.UserTransaction transaction)
          Insert small set of data records to conduct tests with.
 void printDebug(java.util.List dataList)
          Print debug infor for specified data
 void printDebug(org.opensubsystems.patterns.listdata.data.ListOptions options)
          Print debug info for ListOptions
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_PARENT

public static final java.lang.String NO_PARENT
Constant used to return test data which were created without any parent.

See Also:
Constant Field Values

m_clsListFactoryClass

protected java.lang.Class m_clsListFactoryClass
Class representing database specific ListFactory interface implementation for the tested data object.


m_clsListDatabaseSchemaClass

protected java.lang.Class m_clsListDatabaseSchemaClass
Class that implements ListDatabaseSchema interface for the tested data object.


m_arrAllColumnCodes

protected int[] m_arrAllColumnCodes
Array with codes for all columns that stores data for the tested data object.


m_iColumnOneCode

protected int m_iColumnOneCode
Code that represents column storing the first value used to generate the tested data object. It is assumed that this code is part of m_arrAllColumnCodes.


m_iColumnTwoCode

protected int m_iColumnTwoCode
Code that represents column storing the second value used to generate the tested data object. It is assumed that this code is part of m_arrAllColumnCodes.

Constructor Detail

ListDatabaseTestUtils

public ListDatabaseTestUtils(java.lang.Class clsListFactoryClass,
                             java.lang.Class clsListDatabaseSchemaClass,
                             int[] arrAllColumnCodes,
                             int iColumnOneCode,
                             int iColumnTwoCode)
Constructor

Parameters:
clsListFactoryClass - - class representing database specific ListFactory interface implementation for the tested data object
clsListDatabaseSchemaClass - - class representing database specific ListDatabaseSchema implementation for the tested data object
arrAllColumnCodes - - array with codes for all columns that stores data for the tested data object
iColumnOneCode - - Code that represents column storing the first value used to generate the tested data object. It is assumed that this code is part of arrAllColumnCodes.
iColumnTwoCode - - Code that represents column storing the second value used to generate the tested data object. It is assumed that this code is part of arrAllColumnCodes.
Method Detail

insertParent

protected abstract java.lang.Object insertParent(int iDomainId,
                                                 java.lang.String str1,
                                                 java.lang.String str2)
                                          throws java.lang.Exception
If the tested data object requires any kind of "parent" records, it should create them in this method using the two passed string values and return it. If the tested type of data objects doesn't require any parent records it should just return null.

Parameters:
iDomainId - - domain id where the the particular data object will belong to. This is applicable only if data object exist in domain. Otherwise this can be ignored.
str1 - - column one value to create the parent records
str2 - - column two value to create the parent records
Returns:
Object - some object identifying the parent, this will be passed to the insert method to create data in the parent. Return null if your data type doesn't support parents. This value is on purpose not a data object in case the tests needs to fake some data and create them in the database directly by executing SQL. It can then return custom objects identifying the created data to be used later in the tests.
Throws:
java.lang.Exception - - an error has occured

deleteParent

protected abstract void deleteParent(java.lang.Object parent,
                                     int iDomainId)
                              throws java.lang.Exception
If the insertParent created any parent object then these needs to be deleted to cleanup the database. Implement

Parameters:
parent - - value returned by insertParent method that represents the parent object that needs to be deleted
iDomainId - - domain id where the the particular data is supposed to belong to. This is applicable only if data object exist in domain. Otherwise this can be ignored.
Throws:
java.lang.Exception - - an error has occured

constructData

protected abstract org.opensubsystems.core.data.DataObject constructData(java.lang.Object parent,
                                                                         int iDomainId,
                                                                         java.lang.String str1,
                                                                         java.lang.String str2)
                                                                  throws java.lang.Exception
Construct instance of tested data object that can be later inserted to the database using the specifiend values.

Parameters:
parent - - if this data type supports parents then this provides parent object created by insertParent method to insert the new data items into. Otherwise it is null.
iDomainId - - domain id where the the particular data object will belong to. This is applicable only if data object exist in domain. Otherwise this can be ignored.
str1 - - column one value to create the tested data object
str2 - - column two value to create the tested data object
Returns:
DataObject - constructed data object
Throws:
java.lang.Exception - - an error has occured

deleteData

protected abstract void deleteData(java.lang.Object parent,
                                   int iDomainId,
                                   java.lang.String strPrefix1,
                                   java.lang.String strPrefix2)
                            throws java.lang.Exception
Delete all instances of tested data object that were previously constructed for a specified parent using the specified prefixes for values used to populate column one and two. The expectations are that this method will efficiently deletes all the affected data objects using the specified prefixes since there can be large number of these. We provide convenience method deleteData(...., String) where you can just specify string that takes domain id (if the data is in domain) and two prefixes.

Parameters:
parent - - if this data type supports parents then this provides parent object created by insertParent method to insert the new data items into. Otherwise it is null.
iDomainId - - domain id where the the particular data object belongs to. This is applicable only if data object exist in domain. Otherwise this can be ignored.
strPrefix1 - - prefix used to construct column one values whe the tested data objects were created. There is multiple data objects with this prefix and all of the affected data objects must be deleted.
strPrefix2 - - prefix used to construct column two values whe the tested data objects were created. There is multiple data objects with this prefix and all of the affected data objects must be deleted.
Throws:
java.lang.Exception - - an error has occured

getColumnOneValue

public abstract java.lang.String getColumnOneValue(org.opensubsystems.core.data.DataObject data)
Get value of the attribute represented by the first column code specified in the constructor.

Parameters:
data - - tested data object
Returns:
String - value of the attribute represented by the first column code specified in the constructor

getColumnTwoValue

public abstract java.lang.String getColumnTwoValue(org.opensubsystems.core.data.DataObject data)
Get value of the attribute represented by the second column code specified in the constructor.

Parameters:
data - - tested data object
Returns:
String - value of the attribute represented by the second column code specified in the constructor

getAllColumnCodes

public final int[] getAllColumnCodes()
Get codes for all columns that stores data for the tested data object.

Returns:
int[] - array with codes for all columns

getColumnOneCode

public final int getColumnOneCode()
Get code that represents column storing the first value used to generate the tested data object. It is assumed that this code is part of values returned from getAllColumnCodes.

Returns:
int - code of column one

getColumnTwoCode

public final int getColumnTwoCode()
Get code that represents column storing the second value used to generate the tested data object. It is assumed that this code is part of values returned from getAllColumnCodes.

Returns:
int - code of column two

getListFactoryClass

public final java.lang.Class getListFactoryClass()
                                          throws org.opensubsystems.core.error.OSSException
Get class representing database specific ListFactory interface implementation for the tested data object.

Returns:
Class - class implementing ListFactory interface
Throws:
org.opensubsystems.core.error.OSSException - - an error has occured

getListFactory

public final org.opensubsystems.patterns.listdata.persist.ListFactory getListFactory()
                                                                              throws org.opensubsystems.core.error.OSSException
Get instance of ListFactory able to retrieve the tested data object from the database.

Returns:
ListFactory - instance of ListFactory
Throws:
org.opensubsystems.core.error.OSSException - - an error has occured

getListDatabaseSchemaClass

public final java.lang.Class getListDatabaseSchemaClass()
                                                 throws org.opensubsystems.core.error.OSSException
Get class that implements ListDatabaseSchema interface.

Returns:
ListDatabaseSchema - instance of ListDatabaseSchema
Throws:
org.opensubsystems.core.error.OSSException - - an error has occured

getListDatabaseSchema

public final org.opensubsystems.patterns.listdata.persist.db.ListDatabaseSchema getListDatabaseSchema()
                                                                                               throws org.opensubsystems.core.error.OSSException
Get instance of ListDatabaseSchema able to retrieve the tested data provide and execute database specific operations.

Returns:
ListDatabaseSchema - instance of ListDatabaseSchema
Throws:
org.opensubsystems.core.error.OSSException - - an error has occured

getExpectedResultListColumnOne

public java.lang.String[] getExpectedResultListColumnOne()
Get expected results for columns 1 if the list is sorted using this column.

Returns:
String[] - array of returned column one values

getDefaultResultListColumnTwo

public java.lang.String[] getDefaultResultListColumnTwo()
Get expected results for columns 2 if the list is sorted using this column.

Returns:
String[] - array of returned column two values

insertTestData

public final java.lang.Object[] insertTestData(javax.transaction.UserTransaction transaction)
                                        throws java.lang.Exception
Insert small set of data records to conduct tests with. The data are inserted in specific order so that we can test if they are retrieved correctly. The data are inserted to the current domain, which is domain specified by CallContext.getInstance().getCurrentDomainId().

Parameters:
transaction - - transaction to use to insert data
Returns:
Object - index 0 - if this class supports parent then the returned object is the parent to which test data were inserted. If it doesn't support parents, then it is null. - index 1 - the test data created by this method. The keys are the created parents and values are the lists of test data created for each parent. If the tested data object doesn't support parent, the key is the NO_PARENT constant.
Throws:
java.lang.Exception - - an error has occured

deleteTestData

public final void deleteTestData(javax.transaction.UserTransaction transaction,
                                 java.lang.Object[] insertedData)
                          throws java.lang.Exception
Delete all test data inserted by insertTestData method. The data are expected to exist in current domain, which is domain specified by CallContext.getInstance().getCurrentDomainId().

Parameters:
transaction - - transaction to use when deleting data
insertedData - - data inserted by the insertTestData method that needs to be deleted
Throws:
java.lang.Exception - - an error has occured

insertLoadTestData

public final java.lang.Object[] insertLoadTestData(javax.transaction.UserTransaction transaction,
                                                   int iLoadTestListSize)
                                            throws java.lang.Exception
Insert data records for load tests if they were not inserted yet. The data are inserted in given order so that we can test if they are retrieved correctly.

Parameters:
transaction - - transaction to use to insert data or null if no transaction should be used since the caller will control the transaction
iLoadTestListSize - - number of tested data objects to insert
Returns:
Object - index 0 - if this class supports parent then the returned object is the parent to which test data were inserted. If it doesn't support parents, then it is null. - index 1 - the load test data created by this method. The keys are the parents and values are the lists identifying the prefixes for column one and two values used to generate the data. If the tested data object doesn't support parent, the key is the NO_PARENT constans.
Throws:
java.lang.Exception - - an error has occured

deleteLoadTestData

public final void deleteLoadTestData(javax.transaction.UserTransaction transaction,
                                     java.lang.Object[] insertedData)
                              throws java.lang.Exception
Delete all data inserted for the load tests using the insertLoadTestData method.

Parameters:
transaction - - transaction
insertedData - - data inserted by the insertLoadTestData method that needs to be deleted
Throws:
java.lang.Exception - - an error has occured

analyzeDatabase

public final void analyzeDatabase()
                           throws java.lang.Exception
Update database statistics with expectation to improve performance of queries (usually after a large number of data were inserted or deleted) by analyzing the modified tables. ANALYZE query. The tables that will be updated are retrieved using method getModifiableTableNames in ListDatabaseSchemainterface

Throws:
java.lang.Exception - - an error has occured

getDefaultListOptions

public org.opensubsystems.patterns.listdata.data.ListOptions getDefaultListOptions(java.lang.Object parent)
                                                                            throws org.opensubsystems.core.error.OSSException
Ge list options initialized to default values that will be used during list pattern tests.

Parameters:
parent - - if this class supports parent then the return object is the parent to which test data were inserted. If it doesn't support parents, then it is null.
Returns:
ListOptions - default ListOptions for tests
Throws:
org.opensubsystems.core.error.OSSException - - an error has occured

printDebug

public void printDebug(org.opensubsystems.patterns.listdata.data.ListOptions options)
Print debug info for ListOptions

Parameters:
options - - ListOptions to print

printDebug

public void printDebug(java.util.List dataList)
Print debug infor for specified data

Parameters:
dataList - - List to print

insertData

protected org.opensubsystems.core.data.DataObject insertData(java.lang.Object parent,
                                                             int iDomainId,
                                                             java.lang.String str1,
                                                             java.lang.String str2)
                                                      throws java.lang.Exception
Insert to the database record representing tested data object that is generated using the values specified for two columns of the data object.

Parameters:
parent - - if this data type supports parents then this provides parent object created by insertParent method to insert the new data items into. Otherwise it is null.
iDomainId - - domain id where the the particular data object will belong to. This is applicabe only if data object exist in domain. Otherwise this can be infored.
str1 - - column one value to create the tested data object
str2 - - column two value to create the tested data object
Returns:
DataObject - inserted data object
Throws:
java.lang.Exception - - an error has occured

insertMultipleData

protected java.util.List insertMultipleData(java.lang.Object parent,
                                            int iDomainId,
                                            int iCount,
                                            int iStartNumber,
                                            boolean bAditionalData)
                                     throws java.lang.Exception
Insert efficiently to the database multiple records representing tested data object that are generated using the specified values

Parameters:
parent - - if this data type supports parents then this provides parent object created by insertParent method to insert the new data items into. Otherwise it is null.
iDomainId - - domain id where the the particular data object will belong to. This is applicabe only if data object exist in domain. Otherwise this can be infored.
iCount - - number of tested data objects to insert
iStartNumber - - starting number for generating unique values for the columns
bAditionalData - - flag if there will be added additional data for particular data object
Returns:
List - identifiers used to construct multiple items, these are prefixes used to generate column 1 and column 2 values to construct and insert the multiple data objects
Throws:
java.lang.Exception - - an error has occured

insertLoadTestData

protected final java.lang.Object[] insertLoadTestData(javax.transaction.UserTransaction transaction,
                                                      int iLoadTestListSize,
                                                      int iDomainId,
                                                      int iStartNumber,
                                                      boolean bAditionalData)
                                               throws java.lang.Exception
Insert data records for load tests if they were not inserted yet. The data are inserted in given order so that we can test if they are retrieved correctly.

Parameters:
transaction - - transaction to use to insert data or null if no transaction should be used since the caller will control the transaction
iLoadTestListSize - - number of tested data objects to insert
iDomainId - - if of domain where to insert the extra data
iStartNumber - - starting number for generating unique values for the columns
bAditionalData - - flag if there will be added additional data for particular data object
Returns:
Object - index 0 - if this class supports parent then the returned object is the parent to which test data were inserted. If it doesn't support parents, then it is null. - index 1 - the load test data created by this method. The keys are the parents and values are the lists identifying the prefixes for column one and two values used to generate the data. If the tested data object doesn't support parent, the key is the NO_PARENT constans.
Throws:
java.lang.Exception - - an error has occured

deleteLoadTestData

protected final void deleteLoadTestData(javax.transaction.UserTransaction transaction,
                                        java.lang.Object[] insertedData,
                                        int iDomainId)
                                 throws java.lang.Exception
Delete all data inserted for the load tests using the insertLoadTestData method.

Parameters:
transaction - - transaction to use to delete data or null if no transaction should be used since the caller will control the transaction
insertedData - - data inserted by the insertLoadTestData method that needs to be deleted
iDomainId - - domain id where to delete the inserted data
Throws:
java.lang.Exception - - an error has occured

createDataObject

protected org.opensubsystems.core.data.DataObject createDataObject(org.opensubsystems.core.data.DataObject data)
                                                            throws org.opensubsystems.core.error.OSSException
Create data object. This method can be overwritten for particular data object to account for any specific beaviour.

Parameters:
data - - data object that will be created
Returns:
DataObject - data object that was just created
Throws:
org.opensubsystems.core.error.OSSException - - exception occured during create

deleteDataObject

protected void deleteDataObject(org.opensubsystems.core.data.DataObject data,
                                int iDomainId)
                         throws org.opensubsystems.core.error.OSSException
Delete data object. This method can be overwritten for particular data object to account for any specific beaviour.

Parameters:
data - - data object that will be deleted
iDomainId - - this is the domain id in which we expect the data object to exist (if the data object contains domain id, it should be the same as the one we specify as an argument)
Throws:
org.opensubsystems.core.error.OSSException - - an error has occured

createDataObjects

protected void createDataObjects(java.util.List lstDataObjects)
                          throws org.opensubsystems.core.error.OSSException
Create list of data objects efficiently if possible. This method can be overwritten for particular data object to account for any specific beaviour.

Parameters:
lstDataObjects - - list of data object that will be created
Throws:
org.opensubsystems.core.error.OSSException - - exception occured during create

deleteDataObjects

protected void deleteDataObjects(java.util.List lstDataObjects,
                                 int iDomainId)
                          throws org.opensubsystems.core.error.OSSException
Deletes list of data objects efficiently if possible. This method can be overwritten for particular data object to account for any specific beaviour.

Parameters:
lstDataObjects - - list of data object that will be deleted
iDomainId - - if of domain where we expect all the specified data objects to exist (in case they exist in the domain)
Throws:
org.opensubsystems.core.error.OSSException - - an error has occured

deleteData

protected void deleteData(java.lang.Object parent,
                          int iDomainId,
                          java.lang.String strPrefix1,
                          java.lang.String strPrefix2,
                          java.lang.String strDeleteByListTestPrefixesQuery,
                          boolean bSubstitueValues)
                   throws java.lang.Exception
Convenience method to delete all instances of tested data object that were previously constructed for a specified parent using the specified prefixes for values used to populate column one and two. This method can be used only if the list factory is in fact derived from DatabaseFactoryImpl and the schema implements ModifiableDatabaseSchema.

Parameters:
parent - - if this data type supports parents then this provides parent object created by insertParent method to insert the new data items into. Otherwise it is null.
iDomainId - - domain id where the the particular data object belongs to. This is applicable only if data object exist in domain. Otherwise this can be ignored.
strPrefix1 - - prefix used to construct column one values whe the tested data objects were created. There is multiple data objects with this prefix and all of the affected data objects must be deleted.
strPrefix2 - - prefix used to construct column two values whe the tested data objects were created. There is multiple data objects with this prefix and all of the affected data objects must be deleted.
strDeleteByListTestPrefixesQuery - - query that deletes all the data using the specified prefixes in specified domain (if the tested data object exists in domain). If bSubstitueValues is true then the query need to take prefix 1 as first argument, prefix 2 as second argument and optional domain id as the last argument
bSubstitueValues - - if true then the prefix 1, 2 and domain id will be substitued to the passed in query when a prepared statement is created otherwise if it is false then assumption is that the query doesn't contain any variables that needs substitution.
Throws:
java.lang.Exception - - an error has occured


Copyright © 2003 - 2006 OpenSubsystems s.r.o.