CMS 3D CMS Logo

Public Member Functions | Private Attributes

ora::MultiRecordSelectOperation Class Reference

#include <MultiRecordSelectOperation.h>

Inheritance diagram for ora::MultiRecordSelectOperation:
ora::IRelationalData

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 addOrderId (const std::string &columnName)
void addWhereId (const std::string &columnName)
void clear ()
coral::AttributeList & data ()
void execute ()
 MultiRecordSelectOperation (const std::string &tableName, coral::ISchema &schema)
size_t selectionSize (const std::vector< int > &selection, size_t numberOfIndexes)
void selectRow (const std::vector< int > &selection)
std::string & whereClause ()
coral::AttributeList & whereData ()
 ~MultiRecordSelectOperation ()

Private Attributes

MultiIndexDataTrie m_cache
std::vector< std::string > m_idCols
SelectOperation m_query
std::auto_ptr
< coral::AttributeList > 
m_row
RecordSpec m_spec

Detailed Description

Definition at line 10 of file MultiRecordSelectOperation.h.


Constructor & Destructor Documentation

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

Definition at line 7 of file MultiRecordSelectOperation.cc.

                                                                                    :
  m_query( tableName, schema ),
  m_idCols(),
  m_cache(),
  m_spec(),
  m_row(){
  //m_row( 0 ){
}
ora::MultiRecordSelectOperation::~MultiRecordSelectOperation ( )

Definition at line 17 of file MultiRecordSelectOperation.cc.

                                                          {
}

Member Function Documentation

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

Implements ora::IRelationalData.

Definition at line 59 of file MultiRecordSelectOperation.cc.

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

Implements ora::IRelationalData.

Definition at line 53 of file MultiRecordSelectOperation.cc.

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

Implements ora::IRelationalData.

Definition at line 48 of file MultiRecordSelectOperation.cc.

                                                                    {
  m_query.addId( columnName );
  m_spec.add( columnName, typeid(int) );
}
void ora::MultiRecordSelectOperation::addOrderId ( const std::string &  columnName)

Definition at line 20 of file MultiRecordSelectOperation.cc.

                                                                         {
  m_query.addOrderId( columnName );
  m_idCols.push_back( columnName );
}
void ora::MultiRecordSelectOperation::addWhereId ( const std::string &  columnName) [virtual]

Implements ora::IRelationalData.

Definition at line 64 of file MultiRecordSelectOperation.cc.

                                                                         {
  m_query.addWhereId( columnName );
  
}
void ora::MultiRecordSelectOperation::clear ( void  )

Definition at line 40 of file MultiRecordSelectOperation.cc.

                                         {
  m_row.reset();
  //m_row = 0;
  m_cache.clear();
  //m_idCols.clear();
  m_query.clear();
}
coral::AttributeList & ora::MultiRecordSelectOperation::data ( ) [virtual]

Implements ora::IRelationalData.

Definition at line 69 of file MultiRecordSelectOperation.cc.

References ora::throwException().

                                                       {
  //if(!m_row){
  if(!m_row.get()){
    throwException( "No record available.",
                    "MultiRecordSelectOperation::data" );
  }
  return *m_row;
}
void ora::MultiRecordSelectOperation::execute ( )

Definition at line 86 of file MultiRecordSelectOperation.cc.

References i, and funct::true.

                                           {
  //m_row = 0;
  //  m_row.reset();
  m_cache.clear();
  m_query.execute();
  while( m_query.nextCursorRow() ){
    std::vector<int> indexes;
    coral::AttributeList& row = m_query.data();
    for(size_t i=0;i<m_idCols.size();i++){
      indexes.push_back( row[m_idCols[i]].data<int>() );
    }
    Record rec(m_spec);
    newRecordFromAttributeList(rec, row );
    m_cache.push( indexes, rec );
  }
  m_row.reset(new coral::AttributeList(m_query.attributeListSpecification(), true ));
  m_query.clear();
}
size_t ora::MultiRecordSelectOperation::selectionSize ( const std::vector< int > &  selection,
size_t  numberOfIndexes 
)

Definition at line 34 of file MultiRecordSelectOperation.cc.

                                                                                {
  if(m_cache.size()==0) return 0;
  return m_cache.branchSize(selection, numberOfIndexes);
}
void ora::MultiRecordSelectOperation::selectRow ( const std::vector< int > &  selection)

Definition at line 25 of file MultiRecordSelectOperation.cc.

References ora::throwException().

                                                                              {
  if(!m_row.get())
    throwException( "No row available.",
                    "MultiRecordSelectOperation::selectRow" );
  //m_row = &m_cache.lookup( selection );
  Record rec; m_cache.lookupAndClear( selection,rec );
  newAttributeListFromRecord( *m_row, rec );
}
std::string & ora::MultiRecordSelectOperation::whereClause ( ) [virtual]

Implements ora::IRelationalData.

Definition at line 82 of file MultiRecordSelectOperation.cc.

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

Implements ora::IRelationalData.

Definition at line 78 of file MultiRecordSelectOperation.cc.

                                                            {
  return m_query.whereData();
}

Member Data Documentation

Definition at line 39 of file MultiRecordSelectOperation.h.

std::vector<std::string> ora::MultiRecordSelectOperation::m_idCols [private]

Definition at line 38 of file MultiRecordSelectOperation.h.

Definition at line 37 of file MultiRecordSelectOperation.h.

std::auto_ptr<coral::AttributeList> ora::MultiRecordSelectOperation::m_row [private]

Definition at line 41 of file MultiRecordSelectOperation.h.

Definition at line 40 of file MultiRecordSelectOperation.h.