CMS 3D CMS Logo

Public Member Functions | Private Attributes

ora::MultiRecordInsertOperation Class Reference

#include <MultiRecordInsertOperation.h>

Inheritance diagram for ora::MultiRecordInsertOperation:
ora::IRelationalData ora::IRelationalOperation

List of all members.

Public Member Functions

void addBlobData (const std::string &columnName)
void addData (const std::string &columnName, const std::type_info &columnType)
void addId (const std::string &columnName)
void addWhereId (const std::string &columnName)
coral::AttributeList & data ()
bool execute ()
bool isRequired ()
 MultiRecordInsertOperation (const std::string &tableName, coral::ISchema &schema)
void reset ()
InsertCachesetUp (int rowCacheSize)
std::string & whereClause ()
coral::AttributeList & whereData ()
 ~MultiRecordInsertOperation ()

Private Attributes

std::vector< InsertCache * > m_bulkInserts
InputRelationalData m_relationalData
coral::ISchema & m_schema
RecordSpec m_spec
std::string m_tableName

Detailed Description

Definition at line 27 of file MultiRecordInsertOperation.h.


Constructor & Destructor Documentation

ora::MultiRecordInsertOperation::MultiRecordInsertOperation ( const std::string &  tableName,
coral::ISchema &  schema 
)

Definition at line 33 of file MultiRecordInsertOperation.cc.

ora::MultiRecordInsertOperation::~MultiRecordInsertOperation ( )

Definition at line 38 of file MultiRecordInsertOperation.cc.

                                                          {
  for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin();
       iB != m_bulkInserts.end(); ++iB ){
    delete *iB;
  }
}

Member Function Documentation

void ora::MultiRecordInsertOperation::addBlobData ( const std::string &  columnName) [virtual]

Implements ora::IRelationalData.

Definition at line 61 of file MultiRecordInsertOperation.cc.

                                                                          {
  m_relationalData.addBlobData( columnName );
  m_spec.add( columnName, typeid(coral::Blob) );
}
void ora::MultiRecordInsertOperation::addData ( const std::string &  columnName,
const std::type_info &  columnType 
) [virtual]

Implements ora::IRelationalData.

Definition at line 55 of file MultiRecordInsertOperation.cc.

                                                                         {
  m_relationalData.addData( columnName, columnType );
  m_spec.add( columnName, columnType );
}
void ora::MultiRecordInsertOperation::addId ( const std::string &  columnName) [virtual]

Implements ora::IRelationalData.

Definition at line 50 of file MultiRecordInsertOperation.cc.

                                                                      {
  m_relationalData.addId( columnName );
  m_spec.add( columnName, typeid(int) );
}
void ora::MultiRecordInsertOperation::addWhereId ( const std::string &  columnName) [virtual]

Implements ora::IRelationalData.

Definition at line 66 of file MultiRecordInsertOperation.cc.

                                                                           {
  m_relationalData.addWhereId( columnName );
}
coral::AttributeList & ora::MultiRecordInsertOperation::data ( ) [virtual]

Implements ora::IRelationalData.

Definition at line 70 of file MultiRecordInsertOperation.cc.

                                                       {
  return m_relationalData.data();
}
bool ora::MultiRecordInsertOperation::execute ( ) [virtual]

Implements ora::IRelationalOperation.

Definition at line 87 of file MultiRecordInsertOperation.cc.

References i, INSERTCACHESIZE, and asciidump::table.

                                           {
  for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin();
       iB != m_bulkInserts.end(); ++iB ){
    coral::ITable& table = m_schema.tableHandle( m_tableName );
    std::auto_ptr<coral::IBulkOperation> bulkExecute( table.dataEditor().bulkInsert( m_relationalData.data(), (*iB)->records().size()  ) );
    unsigned int i=0;
    for( std::vector<Record*>::const_iterator iR = (*iB)->records().begin();
         iR != (*iB)->records().end(); ++iR ){
      i++;
      newAttributeListFromRecord( m_relationalData.data(), *(*iR) );
      bulkExecute->processNextIteration();
      if( i== INSERTCACHESIZE ){
         bulkExecute->flush();
         i = 0;
      }
    }
    bulkExecute->flush();
    delete *iB;
  }
  m_bulkInserts.clear();
  return true;
}
bool ora::MultiRecordInsertOperation::isRequired ( ) [virtual]

Implements ora::IRelationalOperation.

Definition at line 83 of file MultiRecordInsertOperation.cc.

                                         {
  return false;
}
void ora::MultiRecordInsertOperation::reset ( void  ) [virtual]

Implements ora::IRelationalOperation.

Definition at line 110 of file MultiRecordInsertOperation.cc.

                                         {
  for( std::vector<InsertCache*>::iterator iB = m_bulkInserts.begin();
       iB != m_bulkInserts.end(); ++iB ){
    delete *iB;
  }
  m_bulkInserts.clear();  
}
ora::InsertCache & ora::MultiRecordInsertOperation::setUp ( int  rowCacheSize)

Definition at line 45 of file MultiRecordInsertOperation.cc.

                                                         {
  m_bulkInserts.push_back( new InsertCache( m_spec, m_relationalData.data() ) );
  return *m_bulkInserts.back(); 
}
std::string & ora::MultiRecordInsertOperation::whereClause ( ) [virtual]

Implements ora::IRelationalData.

Definition at line 78 of file MultiRecordInsertOperation.cc.

                                                     {
  return m_relationalData.whereClause();
}
coral::AttributeList & ora::MultiRecordInsertOperation::whereData ( ) [virtual]

Implements ora::IRelationalData.

Definition at line 74 of file MultiRecordInsertOperation.cc.

                                                            {
  return m_relationalData.whereData();
}

Member Data Documentation

Definition at line 51 of file MultiRecordInsertOperation.h.

Definition at line 47 of file MultiRecordInsertOperation.h.

coral::ISchema& ora::MultiRecordInsertOperation::m_schema [private]

Definition at line 50 of file MultiRecordInsertOperation.h.

Definition at line 48 of file MultiRecordInsertOperation.h.

Definition at line 49 of file MultiRecordInsertOperation.h.