CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
ora::MultiRecordSelectOperation Class Reference

#include <MultiRecordSelectOperation.h>

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

Public Member Functions

int addBlobData (const std::string &columnName)
 
int addData (const std::string &columnName, const std::type_info &columnType)
 
int addId (const std::string &columnName)
 
void addOrderId (const std::string &columnName)
 
int 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 ()
 
- Public Member Functions inherited from ora::IRelationalData
virtual ~IRelationalData ()
 

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.

8  :
9  m_query( tableName, schema ),
10  m_idCols(),
11  m_cache(),
12  m_spec(),
13  m_row(){
14  //m_row( 0 ){
15 }
std::auto_ptr< coral::AttributeList > m_row
ora::MultiRecordSelectOperation::~MultiRecordSelectOperation ( )

Definition at line 17 of file MultiRecordSelectOperation.cc.

17  {
18 }

Member Function Documentation

int ora::MultiRecordSelectOperation::addBlobData ( const std::string &  columnName)
virtual

Implements ora::IRelationalData.

Definition at line 59 of file MultiRecordSelectOperation.cc.

59  {
60  m_spec.add( columnName, typeid(coral::Blob) );
61  return m_query.addBlobData( columnName );
62 }
size_t add(std::string const &name, std::type_info const &type)
Definition: Record.cc:37
int addBlobData(const std::string &columnName)
int ora::MultiRecordSelectOperation::addData ( const std::string &  columnName,
const std::type_info &  columnType 
)
virtual

Implements ora::IRelationalData.

Definition at line 53 of file MultiRecordSelectOperation.cc.

54  {
55  m_spec.add( columnName, columnType );
56  return m_query.addData( columnName, columnType );
57 }
int addData(const std::string &columnName, const std::type_info &columnType)
size_t add(std::string const &name, std::type_info const &type)
Definition: Record.cc:37
int ora::MultiRecordSelectOperation::addId ( const std::string &  columnName)
virtual

Implements ora::IRelationalData.

Definition at line 48 of file MultiRecordSelectOperation.cc.

48  {
49  m_spec.add( columnName, typeid(int) );
50  return m_query.addId( columnName );
51 }
int addId(const std::string &columnName)
size_t add(std::string const &name, std::type_info const &type)
Definition: Record.cc:37
void ora::MultiRecordSelectOperation::addOrderId ( const std::string &  columnName)

Definition at line 20 of file MultiRecordSelectOperation.cc.

20  {
21  m_query.addOrderId( columnName );
22  m_idCols.push_back( columnName );
23 }
void addOrderId(const std::string &columnName)
int ora::MultiRecordSelectOperation::addWhereId ( const std::string &  columnName)
virtual

Implements ora::IRelationalData.

Definition at line 64 of file MultiRecordSelectOperation.cc.

64  {
65  return m_query.addWhereId( columnName );
66 }
int addWhereId(const std::string &columnName)
void ora::MultiRecordSelectOperation::clear ( void  )
coral::AttributeList & ora::MultiRecordSelectOperation::data ( )
virtual

Implements ora::IRelationalData.

Definition at line 68 of file MultiRecordSelectOperation.cc.

References ora::throwException().

68  {
69  //if(!m_row){
70  if(!m_row.get()){
71  throwException( "No record available.",
72  "MultiRecordSelectOperation::data" );
73  }
74  return *m_row;
75 }
std::auto_ptr< coral::AttributeList > m_row
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:10
void ora::MultiRecordSelectOperation::execute ( )

Definition at line 85 of file MultiRecordSelectOperation.cc.

References i, and funct::true.

85  {
86  //m_row = 0;
87  // m_row.reset();
88  m_cache.clear();
89  m_query.execute();
90  std::vector<int> indexes;
91  while( m_query.nextCursorRow() ){
92  coral::AttributeList& row = m_query.data();
93  for(size_t i=0;i<m_idCols.size();i++){
94  indexes.push_back( row[m_idCols[i]].data<int>() );
95  }
96  Record rec(m_spec);
97  newRecordFromAttributeList(rec, row );
98  m_cache.push( indexes, rec );
99  indexes.clear();
100  }
101  m_row.reset(new coral::AttributeList(m_query.attributeListSpecification(), true ));
102  m_query.clear();
103 }
int i
Definition: DBlmapReader.cc:9
coral::AttributeListSpecification & attributeListSpecification()
size_t push(const std::vector< int > &indexes, Record &data)
coral::AttributeList & data()
std::auto_ptr< coral::AttributeList > m_row
size_t ora::MultiRecordSelectOperation::selectionSize ( const std::vector< int > &  selection,
size_t  numberOfIndexes 
)

Definition at line 34 of file MultiRecordSelectOperation.cc.

35  {
36  if(m_cache.size()==0) return 0;
37  return m_cache.branchSize(selection, numberOfIndexes);
38 }
selection
main part
Definition: corrVsCorr.py:98
size_t branchSize(const std::vector< int > &indexes, size_t depth=0) const
void ora::MultiRecordSelectOperation::selectRow ( const std::vector< int > &  selection)

Definition at line 25 of file MultiRecordSelectOperation.cc.

References ora::throwException().

25  {
26  if(!m_row.get())
27  throwException( "No row available.",
28  "MultiRecordSelectOperation::selectRow" );
29  //m_row = &m_cache.lookup( selection );
31  newAttributeListFromRecord( *m_row, rec );
32 }
void lookupAndClear(const std::vector< int > &indexes, Record &rec)
selection
main part
Definition: corrVsCorr.py:98
std::auto_ptr< coral::AttributeList > m_row
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:10
std::string & ora::MultiRecordSelectOperation::whereClause ( )
virtual

Implements ora::IRelationalData.

Definition at line 81 of file MultiRecordSelectOperation.cc.

81  {
82  return m_query.whereClause();
83 }
coral::AttributeList & ora::MultiRecordSelectOperation::whereData ( )
virtual

Implements ora::IRelationalData.

Definition at line 77 of file MultiRecordSelectOperation.cc.

77  {
78  return m_query.whereData();
79 }
coral::AttributeList & whereData()

Member Data Documentation

MultiIndexDataTrie ora::MultiRecordSelectOperation::m_cache
private

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.

SelectOperation ora::MultiRecordSelectOperation::m_query
private

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.

RecordSpec ora::MultiRecordSelectOperation::m_spec
private

Definition at line 40 of file MultiRecordSelectOperation.h.