Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

Database::Creator< T > Class Template Reference

to create records in the berkeley db. More...

#include <generaldata.h>

Collaboration diagram for Database::Creator< T >:

Collaboration graph
[legend]
List of all members.

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

Detailed Description

template<class T>
class Database::Creator< T >

to create records in the berkeley db.

Parameters:
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.


Constructor & Destructor Documentation

template<class T>
Database::Creator< T >::Creator TrapperDoc doc,
std::string  dataType
 

constructor

Parameters:
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   }

template<class T>
Database::Creator< T >::~Creator  ) 
 

Definition at line 209 of file generaldata.h.

References Database::Creator< T >::m_data.

00210   {
00211     Q_CHECK_PTR( m_data );
00212     delete m_data;
00213   }


Member Function Documentation

template<class T>
db_recno_t Database::Creator< T >::create bool  useRecno,
DbTxn *  txnid = NULL
 

create a new record in the berkeley db

Parameters:
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 MAl::commit_feat_to_db(), MAl::commit_seq_to_db(), TrapperDoc::import(), TrapperDoc::importChromat(), TrapperDoc::importMates(), TrapperDoc::importPhd(), TrapperView::readSelected(), MoveAlgo::start(), and TrapperParser::startElement().

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   }

template<class T>
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 MAl::commit_feat_to_db(), MAl::commit_seq_to_db(), Database::Creator< T >::create(), Destroyer::destroy(), TrapperDoc::import(), TrapperDoc::importChromat(), TrapperDoc::importMates(), TrapperDoc::importPhd(), TrapperView::readSelected(), MoveAlgo::start(), and TrapperParser::startElement().

00192 { return m_data; }

template<class T>
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 MAl::commit_feat_to_db(), and 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   }


Member Data Documentation

template<class T>
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().

template<class T>
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().


The documentation for this class was generated from the following file:
Generated on Fri Mar 17 17:45:02 2006 for trapper by  doxygen 1.4.4