Class SQLWrapper

All Implemented Interfaces:
IPersistence, ISQLWrapper, AbstractDataObject, ICBLBeanNGroup, ICBLContainer, IFieldContainer, ISMBean, ISMDataType
Direct Known Subclasses:
CachedSQLWrapper, CAIdealWrapper, CicsPersistence, Db400, LinkedSQLWrapper

public abstract class SQLWrapper extends AbstractIndexedFile
Abstract Object-Relational Container - USed for representation KSDS Indexed files. COBOL Structures for accessing Indexed-File are be translated to an Object-Relational (OR) design which read/write from a SQL Database instead of file system.
Such classes inherit from SQLWrapper or AbstractORContainer. The major part functionality for CRUD operations are provided in these classes.
  • Field Details

    • nativeKeys

      protected ISMObject[] nativeKeys
    • connection

      protected Connection connection
    • postFixTableNameToImplicitDatabaseKey

      protected boolean postFixTableNameToImplicitDatabaseKey
    • openMode

      protected int openMode
    • sequentialKeyGeneration

      protected boolean sequentialKeyGeneration
    • resultSet

      protected ResultSet resultSet
    • suppressNextReadCurrent

      protected boolean suppressNextReadCurrent
  • Constructor Details

    • SQLWrapper

      public SQLWrapper()
      for internal use only ... profiling information
    • SQLWrapper

      public SQLWrapper(BaseService owner)
  • Method Details

    • retrieveOpenMode

      public int retrieveOpenMode()
      Specified by:
      retrieveOpenMode in interface ISQLWrapper
      Specified by:
      retrieveOpenMode in class AbstractBasePersistence
    • assignRecordKey

      public void assignRecordKey(ISMObject recordKey)
      Description copied from interface: ISQLWrapper
      Used only used by CicsPersistent Subclasses.
    • assignRecordKey

      public void assignRecordKey(ISMObject[] recordKeys)
      Description copied from interface: ISQLWrapper
      Used only used by CicsPersistent Subclasses.
    • addRecordKey

      public void addRecordKey(ISMObject recordKey, Boolean ascendDescend)
      Allows adding single or composite record keys - one at a time invalid input: '&' specifying the Ascending/Descending order
      Parameters:
      recordKey - - ACMOBject
      ascendDescend - - IPersistence.DESCENDING or IPersistence.ASCENDING
    • retrieveAscentDescendOrder

      public List<Boolean> retrieveAscentDescendOrder()
      used internal
      Returns:
    • assignRecordKeysAllDescending

      public void assignRecordKeysAllDescending()
      record keys are descending (used in Db400 classes).
      Parameters:
      keyDescending -
    • assignAlternateKey

      public void assignAlternateKey(ISMObject alternateKey)
    • setRelativeKey

      public void setRelativeKey(AbstractCBLNumeric relativeKey)
    • assignRelativeKey

      public void assignRelativeKey(AbstractCBLNumeric relativeKey)
    • resetRowFacade

      public void resetRowFacade()
    • retrieveRowFacade

      public RowFacade retrieveRowFacade()
    • retrieveNativeKeys

      public ISMObject[] retrieveNativeKeys()
      Native Keys refer to either a. any keys set by setRecordKey b. in absence of any keys defined by setRecordKey, then an additional index keys is created by SoftwareMining framework. (This is usually called INDX_FLD_0;)
      Returns:
    • retrieveImplicitDatabaseKey

      public ISMObject retrieveImplicitDatabaseKey()
      Native Keys refer to either a. any keys set by setRecordKey b. in absence of any keys defined by setRecordKey, then an additional index keys is created by SoftwareMining framework. (This is usually called INDX_FLD_0;)
      Returns:
    • _seekRecord

      protected int _seekRecord(ISMObject[] keys, int conditionType) throws IOStatusException
      Specified by:
      _seekRecord in class AbstractIndexedFile
      Throws:
      IOStatusException
    • restoreResultSet

      protected void restoreResultSet(int conditionType, ISMObject[] searchKeys) throws SQLException
      translation of COBOL START The method will open a result-set, read the information and then Close the result-set.
      Parameters:
      conditionType -
      keys -
      Throws:
      IOStatusException - public int seek(ACMField[] keys, int conditionType) { try { return seekRecord(keys, conditionType); } catch (IOStatusException e) { } return this.getStatusValue(); }
      SQLException
    • _commit

      public void _commit(ISQLWrapper wrapper) throws IOCriticalException
      Specified by:
      _commit in class AbstractIndexedFile
      Throws:
      IOCriticalException
    • _rollback

      public void _rollback(ISQLWrapper wrapper) throws IOCriticalException
      Specified by:
      _rollback in class AbstractIndexedFile
      Throws:
      IOCriticalException
    • _nextRecord

      public int _nextRecord(ISQLWrapper wrapper) throws IOStatusException
      Specified by:
      _nextRecord in class AbstractIndexedFile
      Throws:
      IOStatusException
    • _prevRecord

      public int _prevRecord(ISQLWrapper wrapper) throws IOStatusException
      Specified by:
      _prevRecord in class AbstractIndexedFile
      Throws:
      IOStatusException
    • _readRecord

      public int _readRecord(ISQLWrapper wrapper) throws IOStatusException
      Specified by:
      _readRecord in class AbstractIndexedFile
      Throws:
      IOStatusException
    • _readWithLock

      public int _readWithLock(ISQLWrapper wrapper)
      Specified by:
      _readWithLock in class AbstractIndexedFile
    • _unlock

      public void _unlock(ISQLWrapper wrapper)
      Specified by:
      _unlock in class AbstractIndexedFile
    • _open

      public int _open(ISQLWrapper wrapper, int openMode) throws IOCriticalException
      Specified by:
      _open in class AbstractIndexedFile
      Throws:
      IOCriticalException
    • _close

      public int _close(ISQLWrapper wrapper) throws IOCriticalException
      Specified by:
      _close in class AbstractIndexedFile
      Throws:
      IOCriticalException
    • _deleteRecord

      protected int _deleteRecord(ISQLWrapper wrapper) throws IOStatusException
      Specified by:
      _deleteRecord in class AbstractIndexedFile
      Throws:
      IOStatusException
    • _deleteAllRecord

      protected int _deleteAllRecord(ISQLWrapper wrapper) throws IOStatusException
      Specified by:
      _deleteAllRecord in class AbstractIndexedFile
      Throws:
      IOStatusException
    • _clear

      protected int _clear(ISQLWrapper wrapper) throws IOStatusException
      Specified by:
      _clear in class AbstractIndexedFile
      Throws:
      IOStatusException
    • _insertRecord

      protected int _insertRecord(ISQLWrapper wrapper) throws IOStatusException
      Specified by:
      _insertRecord in class AbstractIndexedFile
      Throws:
      IOStatusException
    • _updateRecord

      public int _updateRecord(ISQLWrapper wrapper) throws IOStatusException
      Specified by:
      _updateRecord in class AbstractIndexedFile
      Throws:
      IOStatusException
    • readCurrent

      protected void readCurrent(boolean useNativeKeys) throws IOStatusException
      Used in DMS and ILE DAO
      Parameters:
      useNativeKeys -
      Throws:
      IOStatusException
    • retrieveDbDecorator

      public ACMDbDecorator retrieveDbDecorator()
    • isKeyUnique

      public boolean isKeyUnique()
    • assignKeyIsUnique

      public void assignKeyIsUnique(boolean keyUnique)
      used primarily in CICS Queues.
      Parameters:
      keyUnique -
    • retrieveAdditionalSQLOrderBy

      public StringBuilder retrieveAdditionalSQLOrderBy()
    • assignAdditionalSQLOrderBy

      public void assignAdditionalSQLOrderBy(String newValue)
      Description copied from interface: ISQLWrapper
      This method allows inserting additional Ordering clauses It is useful in hierarchical tables will define additional SQLConditions - e.g. (INDX_FLD_TABLE_1 ASCENDING)
    • retrieveAdditionalSQLCondition

      public StringBuilder retrieveAdditionalSQLCondition()
      Hierarchical tables will define additional SQLConditions - e.g. INDX_FLD_TABLE_1 = 12
      Returns:
    • assignAdditionalSQLConditions

      public void assignAdditionalSQLConditions(String condition)
      Description copied from interface: ISQLWrapper
      This method allows inserting additional conditions - e.g. assignAdditionalSQLConditions( "(COLUMN_2 = 12)"); It is useful in hierarchical tables will define additional SQLConditions - e.g. (INDX_FLD_TABLE_1 = 12), as well as GDG support
      Parameters:
      condition -
    • assignSQLConditions

      public void assignSQLConditions(String condition)
      Description copied from interface: ISQLWrapper

      Ignore the inbuilt KEY (defined by assignRecordKey(...)) - and use this condition instead
      Please note program will be responsible for passing additional parameters.
      e.g. assignSQLConditions("NAME = 'SMITH");
      (or when assignSQLConditions("NAME = ?") - the program should also use the "addSearchParameter" method to provide values
      Parameters:
      condition -
    • assignAdditionalSQLConditions

      public void assignAdditionalSQLConditions(StringBuilder condition)
      Hierarchical tables will define additional SQLConditions - e.g. INDX_FLD_TABLE_1 = 12
      Parameters:
      condition -
    • retrieveAdditionalSearchParameters

      public List<Object> retrieveAdditionalSearchParameters()
      Description copied from interface: ISQLWrapper
      assignSQLCondition can also have conditions such as "NAME = ?". In that case the program should also use the "addSearchParameter" method to provide values
      Returns:
    • createAndretrieveSearchParameterInstance

      protected List<Object> createAndretrieveSearchParameterInstance()
      For internal use only
      Returns:
    • addSearchParameter

      public void addSearchParameter(String theValue)
    • addSearchParameter

      public void addSearchParameter(double theValue)
    • clearSearchParameter

      public void clearSearchParameter()
    • assignFetchSize

      public void assignFetchSize(int newFetchSize)
      maps onto ResultSet.setFetchSize Gives the JDBC driver a hint as to the number of rows that should be fetched from the database when more rows are needed for this ResultSet object. If the fetch size specified is zero, the JDBC driver ignores the value and is free to make its own best guess as to what the fetch size should be. The default value is set by the Statement object that created the result set. The fetch size may be changed at any time,
    • retrieveForeignKeys

      protected ISMObject[] retrieveForeignKeys()
      Stub method to be over-written by LinkedSQLWrapper class.
      Returns:
    • useOidTableForKeyGeneration

      public boolean useOidTableForKeyGeneration()
      Stub method to be over-written by LinkedSQLWrapper class.
      Returns:
    • releaseResources

      public void releaseResources()
      this is called internally - after a program is CANCEL'ed. it is to help with the GC process
      Overrides:
      releaseResources in class CBLBean
    • releaseResources

      public void releaseResources(boolean forceRelease)
      this is called internally - after a program is CANCEL'ed. it is to help with the GC process
      Specified by:
      releaseResources in interface ISMBean
      Overrides:
      releaseResources in class CBLBean
      Parameters:
      forceRelease -
    • assignAdditionalKeyPosition

      public void assignAdditionalKeyPosition(ISMObject theField, int position)
      Support for Tandem START .... AFTER POSITON ...
      Parameters:
      theField -
      position -
    • isSequentialKeyGeneration

      public boolean isSequentialKeyGeneration()
    • assignSequentialKeyGeneration

      public void assignSequentialKeyGeneration(boolean sequentialKeyGeneration)
    • retrieveResultSet

      public ResultSet retrieveResultSet()
    • assignResultSet

      public void assignResultSet(ResultSet resultSet)
    • isKept

      public boolean isKept()
    • setLock

      public void setLock(boolean kept)
    • isFileOpened

      public boolean isFileOpened()
    • assignFileOpened

      public void assignFileOpened(boolean fileOpened)
    • retrieveLastSeekCondition

      public int retrieveLastSeekCondition()
    • assignLastSeekCondition

      public void assignLastSeekCondition(int lastSeekCondition)
    • isSuppressNextReadCurrent

      public boolean isSuppressNextReadCurrent()
    • isLastSeekConditionLookedForEquality

      public boolean isLastSeekConditionLookedForEquality()
    • assignLastSeekConditionLookedForEquality

      public void assignLastSeekConditionLookedForEquality(boolean lastSeekConditionLookedForEquality)
    • retrieveResultSetFetchSize

      public int retrieveResultSetFetchSize()
    • assignResultSetFetchSize

      public void assignResultSetFetchSize(int resultSetFetchSize)
    • assignRowFacade

      public void assignRowFacade(RowFacade rowFacade)
    • assignDbDecorator

      public void assignDbDecorator(ACMDbDecorator dbDecorator)
    • assignOpenMode

      public void assignOpenMode(int openMode)
    • assignTableName

      @Deprecated public void assignTableName(String newName)
      Deprecated.
      Called Programs declaring instances of the persistence classes
      FOr Indexed-Files, this call often relates to setting name to a data-file name E.g. for
      SELECT CUSTOMER-FILE assign to "CUSTOMER.DAT"
      Results in:
      customerFile.assignTableName("customer.dat");
      or
      customerFile.assignTableName(System.getEnv("CUST");
      this is incorrect. We cannot keep changing the table names.

      But we cannot suppress its generation - as the system should be able to swap between IndexedFiles and SQLWrappe/OR . IndexedFiles WILL need this. Besides, this may "sometimes" be useful. So, the system is going to continue generating the call to this method.
      However, the real name can be set by the persistence class itself - using "assignSQLTableName"
      Specified by:
      assignTableName in interface ISQLWrapper
      Overrides:
      assignTableName in class AbstractBasePersistence
      Parameters:
      newName -
    • assignSQLTableName

      public void assignSQLTableName(String newName)
      Called by "persistence" Classes themselves allows overriding the default table name. This sets the table to the matching one in SQL DDL The main Program classes still call "assignTableName" - which would do nothing. The call is not currently removed for safety - It may become needed at some stage for some projects
      Parameters:
      newName -
    • retrieveTableName

      public String retrieveTableName()
    • assignKeyValue

      @Deprecated public void assignKeyValue(String value)
      Deprecated.
      Parameters:
      value -
    • assignKeyValue

      public void assignKeyValue(AbstractDataObject keyValueField)
      Description copied from interface: ISQLWrapper
      Used only used by CicsPersistent Subclasses. After each read or next, it will update the value of the Key with the new values from database
    • retrieveRecordKey

      public ISMObject retrieveRecordKey()
      for internal use only
      Returns:
    • retrieveRecordKeyValue

      public String retrieveRecordKeyValue()
      Used only used by CicsPersistent Subclasses.
      Parameters:
      value -
    • assignTreatAsSQLWrapper

      public void assignTreatAsSQLWrapper(boolean treatAsSQLWrapper)
      Used only used by CicsPersistent Subclasses. allows CicsPersistent (ILE or other subclasses of this) to be treated as SQLWrapper (Object-relational VSAM Files) by batch programs.
      Parameters:
      value -
    • reduceGEorEQ

      public void reduceGEorEQ(boolean newValue)
      Description copied from interface: ISQLWrapper
      used in AS400 / DB400 to increase speed of searches
    • isReduceGEorEQ

      public boolean isReduceGEorEQ()
      for internal use only
    • assignIgnoreOriginalKeys

      public void assignIgnoreOriginalKeys(boolean newValue)
      for internal use only
      Parameters:
      newValue -
    • isIgnoreOriginalKeys

      public boolean isIgnoreOriginalKeys()
      for internal use only
    • isAllowedToExpandGTEQSearches

      public boolean isAllowedToExpandGTEQSearches()
      Description copied from interface: ISQLWrapper
      internal use only. Example: Lets say there are 3 key fields involved in a search with condition GTEQ
      If flag is set to true (default) - then the following SQL condition will be generated
      (A > ? or (A = ? and B > ?) or (A = ? and B = ? and C >= ?))
      With flag is set to FALSE - the following will be generated
      (A >= ?) and (B >= ?) and (C >= ?)
    • assignExpandGTEQSearches

      public void assignExpandGTEQSearches(boolean expandGTEQSearches)
      Description copied from interface: ISQLWrapper
      (default is true) Example: Lets say there are 3 key fields involved in a search with condition GTEQ
      If flag is set to true (default) - then the following SQL condition will be generated
      (A > ? or (A = ? and B > ?) or (A = ? and B = ? and C >= ?))
      With flag is set to FALSE - the following will be generated
      (A >= ?) and (B >= ?) and (C >= ?)
    • isChangeGEConditonToLIKE

      public boolean isChangeGEConditonToLIKE()
      Description copied from interface: ISQLWrapper
      The system can replace GE searches to LIKE statements. this can potentially have a huge performance improvement.
      E.g. Consider generating SELECT ... from TABLE WHERE KEY_1 >= ? AND KEY_2 >= ?.
      If each key is 5 chars, and the supplied values are "A " and "B " - the above translates to:
       SELECT ... from TABLE WHERE KEY_1 >= 'A    ' AND KEY_2 >= 'B    '. 

      Converting it to LIKE will become
       SELECT ... from TABLE WHERE KEY_1 LIKE 'A%' AND KEY_2 LIKE 'B%' 
      This makes a significant performance improvements.
    • assignChangeGEConditonToLIKE

      public void assignChangeGEConditonToLIKE(boolean newValue)
      Description copied from interface: ISQLWrapper
      The system can replace GE searches to LIKE statements. this can potentially have a huge performance improvement.
      E.g. Consider generating SELECT ... from TABLE WHERE KEY_1 >= ? AND KEY_2 >= ?.
      If each key is 5 chars, and the supplied values are "A " and "B " - the above translates to:
       SELECT ... from TABLE WHERE KEY_1 >= 'A    ' AND KEY_2 >= 'B    '. 

      Converting it to LIKE will become
       SELECT ... from TABLE WHERE KEY_1 LIKE 'A%' AND KEY_2 LIKE 'B%' 
      This makes a significant performance improvements.
    • isChangeGTEQ2EQForLIKECondition

      public boolean isChangeGTEQ2EQForLIKECondition()
      Description copied from interface: ISQLWrapper
      For internal Use only.
      Only applies when OR_CHANGE_GE_CONDITION_TO_LIKE__DEFAULT=true
      E.g. Consider generating SELECT ... from TABLE WHERE KEY_1 >= ? AND KEY_2 >= ?.
      If each key is 5 chars, and the supplied values are "ABCDE" and "B " - the above translates to:
       SELECT ... from TABLE WHERE KEY_1 >= 'ABCDE' AND KEY_2 >= 'B    '. 

      Converting it to LIKE will become
       SELECT ... from TABLE WHERE KEY_1 >= 'ABCDE' AND KEY_2 LIKE 'B%' 

      When this flag is set, if the char-count of a field is equal to that of the supplied value, then the generated SQL will become
       SELECT ... from TABLE WHERE KEY_1 = 'ABCDE' AND KEY_2 LIKE 'B%' 
      This can make a significant improvement to performance .
    • assignChangeGTEQ2EQForLIKECondition

      public void assignChangeGTEQ2EQForLIKECondition(boolean useEQForExactLenghtMatch)
      Description copied from interface: ISQLWrapper
      Only applies when OR_CHANGE_GE_CONDITION_TO_LIKE__DEFAULT=true
      E.g. Consider generating SELECT ... from TABLE WHERE KEY_1 >= ? AND KEY_2 >= ?.
      If each key is 5 chars, and the supplied values are "ABCDE" and "B " - the above translates to:
       SELECT ... from TABLE WHERE KEY_1 >= 'ABCDE' AND KEY_2 >= 'B    '. 

      Converting it to LIKE will become
       SELECT ... from TABLE WHERE KEY_1 >= 'ABCDE' AND KEY_2 LIKE 'B%' 

      When this flag is set, if the char-count of a field is equal to that of the supplied value, then the generated SQL will become
       SELECT ... from TABLE WHERE KEY_1 = 'ABCDE' AND KEY_2 LIKE 'B%' 
      This can make a significant improvement to performance .
    • isSeekSuppressed

      public boolean isSeekSuppressed()
      for internal use only - For VSAM SEEK / READ / ... VSAM apps need to throw InvalidKeyException (even if they use CICS delegates), but CICS applications need to throw KeyNotFoundException ,
      Returns:
    • assignSuppressSeek

      public void assignSuppressSeek(boolean newValue)
      for internal use only - For VSAM SEEK / READ / ... VSAM apps need to throw InvalidKeyException (even if they use CICS delegates), but CICS applications need to throw KeyNotFoundException ,
    • assignTopRowSelectStrategyCount

      public void assignTopRowSelectStrategyCount(int count)
      Description copied from interface: ISQLWrapper
      (Default = -1) When set to 0 or 1 , the Object-Relation SQL Generator will produce:
                        SELECT � FROM table WHERE condition-1 
      When set to greater than 1 - (for Oracle) it will produce:
        SELECT ... FROM ( SELECT � FROM table WHERE condition-1 ) WHERE ROWNUM <OR_SELECT_TOP_ROW__DEFAULT; 
    • retrieveTopRowSelectStrategyCount

      public int retrieveTopRowSelectStrategyCount()
      Description copied from interface: ISQLWrapper
      For internal use only (Default = -1) When set to 0 or 1 , the Object-Relation SQL Generator will produce:
                        SELECT ... FROM table WHERE condition-1 
      When set to greater than 1 - (for Oracle) it will produce:
        SELECT ... FROM ( SELECT ... FROM table WHERE condition-1 ) WHERE ROWNUM <OR_SELECT_TOP_ROW__DEFAULT; 
    • retrieveTopRowSelectStrategyStartingRow

      public int retrieveTopRowSelectStrategyStartingRow()
      Description copied from interface: ISQLWrapper
      for internal use only
    • assignTopRowSelectStrategyRange

      public void assignTopRowSelectStrategyRange(int startRowNumber, int count)
      Description copied from interface: ISQLWrapper
      Similar to assignTopRowSelectStrategyCount - but aslso defines starting points
      Parameters:
      startRowNumber -
      count -
    • retrieveGenerate_OrderBy_ForReadStatements

      public boolean retrieveGenerate_OrderBy_ForReadStatements()
      Description copied from interface: ISQLWrapper
      for internal use
    • assignGenerate_OrderBy_ForReadStatements

      public void assignGenerate_OrderBy_ForReadStatements(boolean enabled)
      Description copied from interface: ISQLWrapper
      READ() statement on DB tables with MANY rows, issues an ORDER BY on the SELECT which may have a big performance impact. If the data was populated sequentially, then the ORDER BY may not be strictly required, and may be removed.
    • assignCachedSeekValues

      public void assignCachedSeekValues(List objects)
      for internal use only
    • retrieveCachedSeekValues

      public List retrieveCachedSeekValues()
      for internal use only
    • trimCachedSeekValues

      protected void trimCachedSeekValues(int numberOfFields)
      for internal use only
    • assignGDGProperty

      public void assignGDGProperty(String gdgProperty)
      Additional SQL statement to be read from gdg.properties file. E.g. assignGDGProperty("GDG1"); If gdg.properties file contains: GDG1=AND GDG_YEAR=2012 Then the above search condition will be appended to any SQL statements issued reading this class
    • assignGDGCondition

      public void assignGDGCondition(String gdgProperty)
      Additional SQL statement to be read from gdg.properties file. E.g. assignGDGCondition("GDG_YEAR = 2013"); Then the above search condition will be appended to any SQL statements issued reading this class.
    • validateConditionType

      public int validateConditionType(ISMObject key, int conditionType)
      For internal use only reverts to defaults for CONDITION_TYPE_NO_CONDITION and CONDITION_TYPE_NOT_ASSIGNED
      Parameters:
      conditionType -
      Returns:
    • retrieveThrowInvalidKeyException

      public boolean retrieveThrowInvalidKeyException()
      Description copied from interface: ISQLWrapper
      for internal use only - For VSAM SEEK / READ / ... VSAM apps need to throw InvalidKeyException (even if they use CICS delegates), but CICS applications need to throw KeyNotFoundException ,
      Returns:
    • assignThrowInvalidKeyException

      public void assignThrowInvalidKeyException(boolean newValue)
      Description copied from interface: ISQLWrapper
      for internal use only - For VSAM SEEK / READ / ... VSAM apps need to throw InvalidKeyException (even if they use CICS delegates), but CICS applications need to throw KeyNotFoundException ,
    • assignLowerLimitForExpandGTEQSearches

      public void assignLowerLimitForExpandGTEQSearches(int range)
      Description copied from interface: ISQLWrapper
      (default is -1 - disabled) Only works when assignExpandGTEQSearches(true);
      Example: Lets say there are 3 key fields involved in a search with condition GTEQ
      In default settings, the following SQL condition will be generated
       SELECT ... FROM ... WHERE
           (A > ?)
        or (A = ? and B > ?) 
        or (A = ? and B = ? and C >= ?)) 

      using the statement assignLowerLimitForExpandGTEQSearches( 3 ) - the key conditions below position 3 are ignored, and only the following is generated.
       SELECT ... FROM ... WHERE
             (A = ? and B = ? and C >= ?)) 

      and the following proceeding conditions are ignored invalid input: '<'> (A > ?)
      or (A = ? and B > ?)
    • retreiveLowerLimitForExpandGTEQSearches

      public int retreiveLowerLimitForExpandGTEQSearches()
    • assignUpperLimitForExpandGTEQSearches

      public void assignUpperLimitForExpandGTEQSearches(int range)
      Description copied from interface: ISQLWrapper
      (default is -1 - disabled) Only works when assignExpandGTEQSearches(true);
      Example: Lets say there are 3 key fields involved in a search with condition GTEQ
      In default settings, the following SQL condition will be generated
       SELECT ... FROM ... WHERE
           (A > ?)
        or (A = ? and B > ?) 
        or (A = ? and B = ? and C >= ?)) 

      but if assignUpperLimitForExpandGTEQSearches( 1 ) - only conditions up to 1st Key will be generated
      ie The following will be generated
       SELECT ... FROM ... WHERE 
          (A > ?) 

      and the following conditions will NOT be generated (A = ? and B > ?) or (A = ? and B = ? and C >= ?))
    • retreiveUpperLimitForExpandGTEQSearches

      public int retreiveUpperLimitForExpandGTEQSearches()
    • assignConnection

      public void assignConnection(Connection connection)
    • retrieveConnection

      public Connection retrieveConnection()
    • assignFetchDirectionIsForward

      public void assignFetchDirectionIsForward(Boolean direction)
    • isFetchDirectionForward

      public boolean isFetchDirectionForward()
    • isFetchDirectionBackward

      public boolean isFetchDirectionBackward()