| 
 | Berkeley DB version 5.3.28 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.sleepycat.db.JoinCursor
public class JoinCursor
A specialized join cursor for use in performing equality or natural joins on secondary indices.
A join cursor is returned when calling Database.join.
To open a join cursor using two secondary cursors:
    Transaction txn = ...
    Database primaryDb = ...
    SecondaryDatabase secondaryDb1 = ...
    SecondaryDatabase secondaryDb2 = ...
    
    SecondaryCursor cursor1 = null;
    SecondaryCursor cursor2 = null;
    JoinCursor joinCursor = null;
    try {
        DatabaseEntry key = new DatabaseEntry();
        DatabaseEntry data = new DatabaseEntry();
        
        cursor1 = secondaryDb1.openSecondaryCursor(txn, null);
        cursor2 = secondaryDb2.openSecondaryCursor(txn, null);
        
        key.setData(...); // initialize key for secondary index 1
        OperationStatus status1 =
        cursor1.getSearchKey(key, data, LockMode.DEFAULT);
        key.setData(...); // initialize key for secondary index 2
        OperationStatus status2 =
        cursor2.getSearchKey(key, data, LockMode.DEFAULT);
        
        if (status1 == OperationStatus.SUCCESS &&
                status2 == OperationStatus.SUCCESS) {
            
            SecondaryCursor[] cursors = {cursor1, cursor2};
            joinCursor = primaryDb.join(cursors, null);
            
            while (true) {
                OperationStatus joinStatus = joinCursor.getNext(key, data,
                    LockMode.DEFAULT);
                if (joinStatus == OperationStatus.SUCCESS) {
                     // Do something with the key and data.
                } else {
                    break;
                }
            }
        }
    } finally {
        if (cursor1 != null) {
            cursor1.close();
        }
        if (cursor2 != null) {
            cursor2.close();
        }
        if (joinCursor != null) {
            joinCursor.close();
        }
    }
| Method Summary | |
|---|---|
|  void | close()Closes the cursors that have been opened by this join cursor. | 
|  JoinConfig | getConfig()Returns this object's configuration. | 
|  Database | getDatabase()Returns the primary database handle associated with this cursor. | 
|  OperationStatus | getNext(DatabaseEntry key,
        DatabaseEntry data,
        LockMode lockMode)Returns the next primary key and data resulting from the join operation. | 
|  OperationStatus | getNext(DatabaseEntry key,
        LockMode lockMode)Returns the next primary key resulting from the join operation. | 
| Methods inherited from class java.lang.Object | 
|---|
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
| Method Detail | 
|---|
public void close()
           throws DatabaseException
    The cursors passed to Database.join are not closed
    by this method, and should be closed by the caller.
    
DatabaseException - if a failure occurs.public Database getDatabase()
public JoinConfig getConfig()
public OperationStatus getNext(DatabaseEntry key,
                               LockMode lockMode)
                        throws DatabaseException
An entry is returned by the join cursor for each primary key/data pair having
all secondary key values that were specified using the array of secondary
cursors passed to Database.join.
key - the primary key
returned as output.  Its byte array does not need to be initialized by the
caller.
lockMode - the locking attributes; if null, default attributes are used.
OperationStatus.NOTFOUND if no matching key/data pair is
found; OperationStatus.KEYEMPTY if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, OperationStatus.SUCCESS.
NullPointerException - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
DeadlockException - if the operation was selected to resolve a
deadlock.
IllegalArgumentException - if an invalid parameter was specified.
DatabaseException - if a failure occurs.
public OperationStatus getNext(DatabaseEntry key,
                               DatabaseEntry data,
                               LockMode lockMode)
                        throws DatabaseException
An entry is returned by the join cursor for each primary key/data pair having
all secondary key values that were specified using the array of secondary
cursors passed to Database.join.
key - the primary key
returned as output.  Its byte array does not need to be initialized by the
caller.
data - the primary data
returned as output.  Its byte array does not need to be initialized by the
caller.
lockMode - the locking attributes; if null, default attributes are used.
OperationStatus.NOTFOUND if no matching key/data pair is
found; OperationStatus.KEYEMPTY if the database is a Queue or Recno database and the specified key exists, but was never explicitly created by the application or was later deleted; otherwise, OperationStatus.SUCCESS.
NullPointerException - if a DatabaseEntry parameter is null or
does not contain a required non-null byte array.
DeadlockException - if the operation was selected to resolve a
deadlock.
IllegalArgumentException - if an invalid parameter was specified.
DatabaseException - if a failure occurs.| 
 | Berkeley DB version 5.3.28 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||