#include <generaldata.h>
Inheritance diagram for Database::SecondaryIterator< T >:
Public Member Functions | |
SecondaryIterator (string secondaryIndexStr, TrapperDoc *doc, string generalDataType, DbTxn *txnid=NULL) | |
constructor | |
~SecondaryIterator () | |
std::string | name () |
int | set () |
int | setRange () |
int | nextdup () |
int | next () |
int | prev () |
int | first () |
int | last () |
int | delCurrentInclDups () |
int | pget (Dbt &key, u_int32_t flags) |
T * | key () |
T * | answer () |
void | closeCursor () |
Protected Member Functions | |
void | fillSecondaryDataDbt (Dbt &secondaryKey, const Dbt &primaryData) |
Protected Attributes | |
T * | m_GeneralData_key |
T * | m_GeneralData_answer |
Dbc * | m_cursor |
TrDb::Index | index |
std::string | m_name |
DbTxn * | txn |
T | the derived GeneralData class that the pointer data() points to. By having this template argument we avoid the need of dynamic_cast by the users of this class. |
Definition at line 288 of file generaldata.h.
Database::SecondaryIterator< T >::SecondaryIterator | ( | string | secondaryIndexStr, | |
TrapperDoc * | doc, | |||
string | generalDataType, | |||
DbTxn * | txnid = NULL | |||
) |
constructor
secondaryIndexStr | the secondary index lookup string | |
doc | doc with the berkeley dbs opened | |
generalDataType | the lookup string for the derived GeneralData class that are to be stored. | |
txnid | a transaction id to encompass this operation in. If NULL this operation will not be transaction-protected. |
Definition at line 325 of file generaldata.h.
References TrapperDoc::findTrDb(), Database::SecondaryIterator< T >::index, Database::SecondaryIterator< T >::m_cursor, Database::SecondaryIterator< T >::m_GeneralData_answer, Database::SecondaryIterator< T >::m_GeneralData_key, Database::SecondaryIterator< T >::m_name, GeneralMaker::newData(), TrDb::secondaryIndex(), and Database::SecondaryIterator< T >::txn.
00326 { 00327 assert( doc!= 0 ); 00328 00329 m_name = generalDataType; 00330 m_GeneralData_key = dynamic_cast< T * >(GeneralMaker::newData( generalDataType )); 00331 m_GeneralData_answer = dynamic_cast< T * >(GeneralMaker::newData( generalDataType )); 00332 index = doc->findTrDb( generalDataType )->secondaryIndex( secondaryIndexStr ); 00333 Q_CHECK_PTR(m_GeneralData_key); 00334 Q_CHECK_PTR(m_GeneralData_answer); 00335 00336 index.db->cursor( txnid , &m_cursor, 0 ); 00337 00338 txn = txnid; 00339 }
Database::SecondaryIterator< T >::~SecondaryIterator | ( | ) |
Definition at line 342 of file generaldata.h.
References Database::SecondaryIterator< T >::m_cursor, Database::SecondaryIterator< T >::m_GeneralData_answer, and Database::SecondaryIterator< T >::m_GeneralData_key.
00343 { 00344 if ( m_cursor ) { 00345 m_cursor->close(); 00346 } 00347 if ( m_GeneralData_key ) { 00348 delete m_GeneralData_key; 00349 m_GeneralData_key = NULL; 00350 } 00351 if ( m_GeneralData_answer ) { 00352 delete m_GeneralData_answer; 00353 m_GeneralData_answer = NULL; 00354 } 00355 }
std::string Database::SecondaryIterator< T >::name | ( | ) | [inline] |
Definition at line 301 of file generaldata.h.
Referenced by TrapperView::paintFeatures().
00301 { return m_name; }
int Database::SecondaryIterator< T >::set | ( | ) |
Definition at line 366 of file generaldata.h.
References Database::SecondaryIterator< T >::fillSecondaryDataDbt(), Database::SecondaryIterator< T >::m_GeneralData_key, and Database::SecondaryIterator< T >::pget().
Referenced by Destroyer::destroy(), TrapperView::getInfo(), TrapperDoc::importChromat(), TrapperDoc::importMates(), TrapperDoc::importPhd(), TrapperDoc::importTimeCourse(), TrapperView::paintFeatures(), MAl_Readonly::read_feat_from_db(), TrapperDoc::saveExport(), and FindMatesAlgo::start().
00367 { 00368 00369 Dbt secondaryKey; 00370 QByteArray ar; 00371 QDataStream stream( ar, IO_WriteOnly ); 00372 m_GeneralData_key->writeStream( stream ); 00373 Dbt primaryData( ar.data(), ar.size() ); 00374 fillSecondaryDataDbt( secondaryKey, primaryData ); 00375 return pget( secondaryKey, DB_SET ); 00376 }
int Database::SecondaryIterator< T >::setRange | ( | ) |
Definition at line 401 of file generaldata.h.
References Database::SecondaryIterator< T >::fillSecondaryDataDbt(), Database::SecondaryIterator< T >::m_GeneralData_key, and Database::SecondaryIterator< T >::pget().
Referenced by ReadsInRect::find(), TrapperView::findRead(), TrapperView::findTag(), TrapperView::scrollToNextCluster(), TrapperView::selectCols(), and TrapperView::selectRows().
00402 { 00403 Dbt secondaryKey; 00404 QByteArray ar; 00405 QDataStream stream( ar, IO_WriteOnly ); 00406 m_GeneralData_key->writeStream( stream ); 00407 Dbt primaryData( ar.data(), ar.size() ); 00408 fillSecondaryDataDbt( secondaryKey, primaryData ); 00409 return pget( secondaryKey, DB_SET_RANGE ); 00410 }
int Database::SecondaryIterator< T >::nextdup | ( | ) |
Definition at line 445 of file generaldata.h.
References Database::SecondaryIterator< T >::pget().
Referenced by TrapperView::paintFeatures(), MAl_Readonly::read_feat_from_db(), and TrapperDoc::saveExport().
00446 { 00447 Dbt secondaryKey; 00448 return pget( secondaryKey, DB_NEXT_DUP ); 00449 }
int Database::SecondaryIterator< T >::next | ( | ) |
Definition at line 452 of file generaldata.h.
References Database::SecondaryIterator< T >::pget().
Referenced by TrapperDoc::all_readnames(), ReadsInRect::find(), TrapperView::findRead(), TrapperView::findTag(), TrapperView::scrollToNextCluster(), TrapperView::selectCols(), and TrapperView::selectRows().
00453 { 00454 Dbt secondaryKey; 00455 return pget( secondaryKey, DB_NEXT ); 00456 }
int Database::SecondaryIterator< T >::prev | ( | ) |
Definition at line 459 of file generaldata.h.
References Database::SecondaryIterator< T >::pget().
Referenced by TrapperView::scrollToNextCluster().
00460 { 00461 Dbt secondaryKey; 00462 return pget( secondaryKey, DB_PREV ); 00463 }
int Database::SecondaryIterator< T >::first | ( | ) |
Definition at line 466 of file generaldata.h.
References Database::SecondaryIterator< T >::pget().
Referenced by TrapperDoc::all_readnames().
00467 { 00468 Dbt secondaryKey; 00469 return pget( secondaryKey, DB_FIRST ); 00470 }
int Database::SecondaryIterator< T >::last | ( | ) |
Definition at line 473 of file generaldata.h.
References Database::SecondaryIterator< T >::pget().
Referenced by TrapperView::fitContentsizeToData(), TrapperView::scrollToNextCluster(), and TrapperParser::startElement().
00474 { 00475 Dbt secondaryKey; 00476 return pget( secondaryKey, DB_LAST ); 00477 }
int Database::SecondaryIterator< T >::delCurrentInclDups | ( | ) |
Definition at line 379 of file generaldata.h.
References TrDb::Index::db, Database::SecondaryIterator< T >::fillSecondaryDataDbt(), Database::SecondaryIterator< T >::index, Database::SecondaryIterator< T >::m_GeneralData_key, and Database::SecondaryIterator< T >::txn.
Referenced by Destroyer::destroy().
00380 { 00381 Dbt secondaryKey; 00382 QByteArray ar; 00383 QDataStream stream( ar, IO_WriteOnly ); 00384 m_GeneralData_key->writeStream( stream ); 00385 Dbt primaryData( ar.data(), ar.size() ); 00386 fillSecondaryDataDbt( secondaryKey, primaryData ); 00387 00388 int ret; 00389 if ( (ret = index.db->del(txn, &secondaryKey, 0)) != 0 ){ 00390 if ( ret != DB_NOTFOUND ) 00391 { 00392 index.db->err(ret, "del() call in SecondaryIterator::delCurrentInclDups()"); 00393 } 00394 00395 } 00396 return ret; 00397 }
int Database::SecondaryIterator< T >::pget | ( | Dbt & | key, | |
u_int32_t | flags | |||
) |
Definition at line 421 of file generaldata.h.
References TrDb::Index::db, Database::SecondaryIterator< T >::index, Database::SecondaryIterator< T >::m_cursor, Database::SecondaryIterator< T >::m_GeneralData_answer, Database::setFromDbt(), and Database::SecondaryIterator< T >::txn.
Referenced by Database::SecondaryIterator< T >::first(), Database::SecondaryIterator< T >::last(), Database::SecondaryIterator< T >::next(), Database::SecondaryIterator< T >::nextdup(), Database::SecondaryIterator< T >::prev(), Database::SecondaryIterator< T >::set(), and Database::SecondaryIterator< T >::setRange().
00422 { 00423 if ( !m_cursor ) 00424 index.db->cursor( txn , &m_cursor, 0 ); 00425 00426 00427 Dbt primary_key; 00428 Dbt primary_data; 00429 int ret; 00430 if ((ret = m_cursor->pget(&key, &primary_key, &primary_data, flags )) != 0) { 00431 if ( ret != DB_NOTFOUND ) { 00432 index.db->err(ret, "pget call in SecondaryIterator::pget"); 00433 } 00434 // throw DbException(ret); 00435 } 00436 else { 00437 Database::setFromDbt( &primary_data, m_GeneralData_answer ); 00438 db_recno_t recno = * static_cast<db_recno_t *> ( primary_key.get_data() ); 00439 m_GeneralData_answer->setRecno( recno ); 00440 } 00441 return ret; 00442 }
T* Database::SecondaryIterator< T >::key | ( | ) | [inline] |
Definition at line 311 of file generaldata.h.
Referenced by Destroyer::destroy(), ReadsInRect::find(), TrapperView::findRead(), TrapperView::findTag(), TrapperView::getInfo(), TrapperDoc::importChromat(), TrapperDoc::importMates(), TrapperDoc::importPhd(), TrapperDoc::importTimeCourse(), TrapperView::paintFeatures(), MAl_Readonly::read_feat_from_db(), TrapperDoc::saveExport(), TrapperView::scrollToNextCluster(), TrapperView::selectCols(), TrapperView::selectRows(), and FindMatesAlgo::start().
00311 { return m_GeneralData_key; }
T* Database::SecondaryIterator< T >::answer | ( | ) | [inline] |
Definition at line 312 of file generaldata.h.
Referenced by TrapperDoc::all_readnames(), ReadsInRect::find(), TrapperView::findRead(), TrapperView::findTag(), TrapperView::fitContentsizeToData(), TrapperView::getInfo(), TrapperDoc::importChromat(), TrapperDoc::importMates(), TrapperDoc::importPhd(), TrapperDoc::importTimeCourse(), TrapperView::paintFeatures(), MAl_Readonly::read_feat_from_db(), TrapperDoc::saveExport(), TrapperView::scrollToNextCluster(), TrapperView::selectCols(), TrapperView::selectRows(), FindMatesAlgo::start(), and TrapperParser::startElement().
00312 { return m_GeneralData_answer; }
void Database::SecondaryIterator< T >::closeCursor | ( | ) |
Definition at line 357 of file generaldata.h.
References Database::SecondaryIterator< T >::m_cursor.
Referenced by TrapperView::paintFeatures().
void Database::SecondaryIterator< T >::fillSecondaryDataDbt | ( | Dbt & | secondaryKey, | |
const Dbt & | primaryData | |||
) | [protected] |
Definition at line 413 of file generaldata.h.
References TrDb::Index::associate_func, TrDb::Index::db, and Database::SecondaryIterator< T >::index.
Referenced by Database::SecondaryIterator< T >::delCurrentInclDups(), Database::SecondaryIterator< T >::set(), and Database::SecondaryIterator< T >::setRange().
00414 { 00415 Dbt primaryKey; 00416 index.associate_func( index.db , &primaryKey, &primaryData, &secondaryKey); 00417 return; 00418 }
T* Database::SecondaryIterator< T >::m_GeneralData_key [protected] |
Definition at line 316 of file generaldata.h.
Referenced by Database::SecondaryIterator< T >::delCurrentInclDups(), Database::SecondaryIterator< ReadData >::key(), Database::SecondaryIterator< T >::SecondaryIterator(), Database::SecondaryIterator< T >::set(), Database::SecondaryIterator< T >::setRange(), and Database::SecondaryIterator< T >::~SecondaryIterator().
T* Database::SecondaryIterator< T >::m_GeneralData_answer [protected] |
Definition at line 317 of file generaldata.h.
Referenced by Database::SecondaryIterator< ReadData >::answer(), Database::SecondaryIterator< T >::pget(), Database::SecondaryIterator< T >::SecondaryIterator(), and Database::SecondaryIterator< T >::~SecondaryIterator().
Dbc* Database::SecondaryIterator< T >::m_cursor [protected] |
Definition at line 318 of file generaldata.h.
Referenced by Database::SecondaryIterator< T >::closeCursor(), Database::SecondaryIterator< T >::pget(), Database::SecondaryIterator< T >::SecondaryIterator(), and Database::SecondaryIterator< T >::~SecondaryIterator().
TrDb::Index Database::SecondaryIterator< T >::index [protected] |
Definition at line 319 of file generaldata.h.
Referenced by Database::SecondaryIterator< T >::delCurrentInclDups(), Database::SecondaryIterator< T >::fillSecondaryDataDbt(), Database::SecondaryIterator< T >::pget(), and Database::SecondaryIterator< T >::SecondaryIterator().
std::string Database::SecondaryIterator< T >::m_name [protected] |
Definition at line 320 of file generaldata.h.
Referenced by Database::SecondaryIterator< ReadData >::name(), and Database::SecondaryIterator< T >::SecondaryIterator().
DbTxn* Database::SecondaryIterator< T >::txn [protected] |
Definition at line 321 of file generaldata.h.
Referenced by Database::SecondaryIterator< T >::delCurrentInclDups(), Database::SecondaryIterator< T >::pget(), and Database::SecondaryIterator< T >::SecondaryIterator().