#include <generaldata.h>
Collaboration diagram for Database::Creator< T >:
Public Member Functions | |
Creator (TrapperDoc *doc, std::string dataType) | |
constructor | |
~Creator () | |
db_recno_t | create (bool useRecno, DbTxn *txnid=NULL) |
create a new record in the berkeley db | |
void | destroy (DbTxn *txnid=NULL) |
Removes a record from the DB. | |
T * | data () |
returns a pointer to the data | |
Protected Attributes | |
T * | m_data |
Db * | m_db |
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 169 of file generaldata.h.
Database::Creator< T >::Creator | ( | TrapperDoc * | doc, | |
std::string | dataType | |||
) |
constructor
doc | doc with the berkeley dbs opened | |
dataType | the lookup string for the derived GeneralData class that are to be stored. |
Definition at line 199 of file generaldata.h.
References TrapperDoc::findTrDb(), Database::Creator< T >::m_data, Database::Creator< T >::m_db, GeneralMaker::newData(), and TrDb::primaryDb().
00200 { 00201 m_data = dynamic_cast< T * >(GeneralMaker::newData( dataType )); 00202 Q_CHECK_PTR( m_data ); 00203 std::string datatype = m_data->uniqueName(); 00204 m_db = doc->findTrDb( datatype )->primaryDb(); 00205 // cerr<<"In Creator(), doc: "<<doc<<endl; 00206 }
Database::Creator< T >::~Creator | ( | ) |
db_recno_t Database::Creator< T >::create | ( | bool | useRecno, | |
DbTxn * | txnid = NULL | |||
) |
create a new record in the berkeley db
useRecno | if true save at the index place of given from the GeneralData::getRecno() of the data(). If false a new recno value is automatically chosen by berkeley db. | |
txnid | a transaction id to encompass this operation in. If NULL this operation will not be transaction-protected. |
Definition at line 216 of file generaldata.h.
References Database::Creator< T >::data(), Database::Creator< T >::m_data, and Database::Creator< T >::m_db.
Referenced by MacsimParser::endElement(), TrapperDoc::importChromat(), TrapperDoc::importPhd(), optimize_layout(), TrapperView::readSelected(), and MoveAlgo::start().
00217 { 00218 // std::cerr<<"In "<<std::endl; 00219 // std::cerr<<"txnid: "<<txnid<<std::endl; 00220 QByteArray ar; 00221 QDataStream stream( ar, IO_WriteOnly ); 00222 // std::cerr<<"Check1 "<<std::endl; 00223 m_data->writeStream( stream ); 00224 // std::cerr<<"Check2 "<<std::endl; 00225 00226 Dbt data( ar.data(), ar.size() ); 00227 // std::cerr<<"Check3 "<<std::endl; 00228 Dbt key; 00229 00230 // db_recno_t recno; 00231 db_recno_t the_recno(0);//EA 00232 u_int32_t flags = 0; 00233 if ( useRecno ) 00234 { 00235 // std::cerr<<"Check4:1 "<<std::endl; 00236 the_recno = m_data->getRecno(); 00237 key.set_data( &the_recno ); 00238 key.set_size( sizeof( the_recno ) ); 00239 } 00240 else 00241 { 00242 // std::cerr<<"Check4:2 "<<std::endl; 00243 flags |= DB_APPEND; 00244 assert( flags == DB_APPEND ); 00245 } 00246 // std::cerr<<"Check5 "<<std::endl; 00247 // std::cerr<<"Db: "<<m_db<<std::endl; 00248 // m_data->print_debug_info(); 00249 // std::cerr<<"Back from debug "<<endl; 00250 00251 int ret; 00252 if ((ret = m_db->put(txnid, &key, &data, flags )) != 0) 00253 { 00254 // std::cerr<<"Check5:1 "<<std::endl; 00255 m_db->err(ret, "error in create"); 00256 // std::cerr<<"Check5:2 "<<std::endl; 00257 exit( 1 ); 00258 } 00259 // std::cerr<<"Check6 "<<std::endl; 00260 db_recno_t recnoRet = * static_cast< db_recno_t * >( key.get_data() ); 00261 // std::cerr<<"Out "<<std::endl; 00262 return recnoRet; 00263 }
void Database::Creator< T >::destroy | ( | DbTxn * | txnid = NULL |
) |
Removes a record from the DB.
Definition at line 265 of file generaldata.h.
References Database::Creator< T >::m_data, and Database::Creator< T >::m_db.
Referenced by Destroyer::destroy().
00266 { 00267 Dbt key; 00268 00269 db_recno_t the_recno(0); 00270 u_int32_t flags = 0; 00271 the_recno = m_data->getRecno(); 00272 key.set_data( &the_recno ); 00273 key.set_size( sizeof( the_recno ) ); 00274 00275 int ret; 00276 if ((ret = m_db->del(txnid, &key, flags )) != 0) 00277 { 00278 m_db->err(ret, "error in Creator::destroy"); 00279 exit( 1 ); 00280 } 00281 }
T* Database::Creator< T >::data | ( | ) | [inline] |
returns a pointer to the data
Definition at line 192 of file generaldata.h.
References Database::Creator< T >::m_data.
Referenced by Database::Creator< T >::create(), Destroyer::destroy(), MacsimParser::endElement(), TrapperDoc::import(), TrapperDoc::importChromat(), TrapperDoc::importPhd(), optimize_layout(), TrapperView::readSelected(), and MoveAlgo::start().
00192 { return m_data; }
T* Database::Creator< T >::m_data [protected] |
Definition at line 194 of file generaldata.h.
Referenced by Database::Creator< T >::create(), Database::Creator< T >::Creator(), Database::Creator< T >::data(), Database::Creator< T >::destroy(), and Database::Creator< T >::~Creator().
Db* Database::Creator< T >::m_db [protected] |
Definition at line 195 of file generaldata.h.
Referenced by Database::Creator< T >::create(), Database::Creator< T >::Creator(), and Database::Creator< T >::destroy().