CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
cond::persistency::Query< Types > Class Template Reference

#include <DbCore.h>

Public Member Functions

template<int n>
void _Query ()
 
template<int n, typename Arg1 , typename... Args>
void _Query ()
 
template<typename C , typename T >
QueryaddCondition (const T &value, const std::string condition="=")
 
template<typename C1 , typename C2 >
QueryaddCondition (const std::string condition="=")
 
template<typename C >
QueryaddOrderClause (bool ascending=true)
 
template<typename Col >
QueryaddTable ()
 
const QueryIterator< Types... > begin ()
 
const coral::AttributeList & currentRow () const
 
const QueryIterator< Types... > end ()
 
QuerygroupBy (const std::string &expression)
 
bool next ()
 
 Query (const coral::ISchema &schema, bool distinct=false)
 
size_t retrievedRows () const
 
QuerysetForUpdate ()
 
 ~Query ()
 

Private Attributes

std::unique_ptr< coral::IQuery > m_coralQuery
 
coral::ICursor * m_cursor = 0
 
size_t m_retrievedRows = 0
 
std::set< std::string > m_tables
 
std::string m_whereClause
 
coral::AttributeList m_whereData
 

Detailed Description

template<typename... Types>
class cond::persistency::Query< Types >

Definition at line 307 of file DbCore.h.

Constructor & Destructor Documentation

template<typename... Types>
cond::persistency::Query< Types >::Query ( const coral::ISchema &  schema,
bool  distinct = false 
)
inline

Definition at line 395 of file DbCore.h.

395  :
396  m_coralQuery( schema.newQuery() ),
397  m_whereData(),
398  m_whereClause(""),
399  m_tables(){
400  _Query<0, Types...>();
401  if( distinct ) m_coralQuery->setDistinct();
402  }
bool distinct(EventRange const &lh, EventRange const &rh)
Definition: EventRange.cc:72
Definition: Types.py:1
coral::AttributeList m_whereData
Definition: DbCore.h:487
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:484
std::string m_whereClause
Definition: DbCore.h:488
std::set< std::string > m_tables
Definition: DbCore.h:489
template<typename... Types>
cond::persistency::Query< Types >::~Query ( )
inline

Definition at line 404 of file DbCore.h.

404  {
405  }

Member Function Documentation

template<typename... Types>
template<int n>
void cond::persistency::Query< Types >::_Query ( )
inline

Definition at line 416 of file DbCore.h.

416 {}
template<typename... Types>
template<int n, typename Arg1 , typename... Args>
void cond::persistency::Query< Types >::_Query ( )
inline

Definition at line 419 of file DbCore.h.

419  {
420  addTable<Arg1>();
421  DefineQueryOutput<typename Arg1::type>::make( *m_coralQuery, Arg1::fullyQualifiedName() );
422  _Query<n+1, Args...>();
423  }
static void make(coral::IQuery &query, const std::string &fullyQualifiedName)
Definition: DbCore.h:367
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:484
template<typename... Types>
template<typename C , typename T >
Query& cond::persistency::Query< Types >::addCondition ( const T value,
const std::string  condition = "=" 
)
inline
template<typename... Types>
template<typename C1 , typename C2 >
Query& cond::persistency::Query< Types >::addCondition ( const std::string  condition = "=")
inline

Definition at line 431 of file DbCore.h.

431  {
432  addTable<C1>();
433  addTable<C2>();
434  f_add_condition<C1,C2>( m_whereClause, condition );
435  return *this;
436  }
std::string m_whereClause
Definition: DbCore.h:488
template<typename... Types>
template<typename C >
Query& cond::persistency::Query< Types >::addOrderClause ( bool  ascending = true)
inline

Definition at line 438 of file DbCore.h.

Referenced by cond::persistency::IOV::Table::getGroups(), cond::persistency::IOV::Table::getLastIov(), cond::persistency::GLOBAL_TAG_MAP::Table::select(), and cond::persistency::IOV::Table::select().

438  {
439  std::string orderClause( C::fullyQualifiedName() );
440  if(!ascending) orderClause += " DESC";
441  m_coralQuery->addToOrderList( orderClause );
442  return *this;
443  }
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:484
template<typename... Types>
template<typename Col >
Query& cond::persistency::Query< Types >::addTable ( )
inline

Definition at line 407 of file DbCore.h.

407  {
408  if( m_tables.find( Col::tableName() )==m_tables.end() ){
409  m_coralQuery->addToTableList( Col::tableName() );
410  m_tables.insert( Col::tableName() );
411  }
412  return *this;
413  }
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:484
std::set< std::string > m_tables
Definition: DbCore.h:489
template<typename... Types>
const QueryIterator<Types...> cond::persistency::Query< Types >::begin ( void  )
inline

Definition at line 467 of file DbCore.h.

467  {
468  m_coralQuery->setCondition( m_whereClause, m_whereData );
469  m_cursor = &m_coralQuery->execute();
470  m_retrievedRows = 0;
471  QueryIterator<Types...> ret ( this );
472  return ++ret;
473  }
Definition: Types.py:1
coral::AttributeList m_whereData
Definition: DbCore.h:487
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:484
std::string m_whereClause
Definition: DbCore.h:488
coral::ICursor * m_cursor
Definition: DbCore.h:485
template<typename... Types>
const coral::AttributeList& cond::persistency::Query< Types >::currentRow ( ) const
inline

Definition at line 462 of file DbCore.h.

Referenced by Vispa.Plugins.ConfigEditor.CodeTableView.CodeTableView::itemClicked(), and Vispa.Views.TableView.TableView::itemSelectionChanged().

462  {
463  if(!m_cursor) throwException( "The query has not been executed.","Query::currentRow");
464  return m_cursor->currentRow();
465  }
coral::ICursor * m_cursor
Definition: DbCore.h:485
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:14
template<typename... Types>
const QueryIterator<Types...> cond::persistency::Query< Types >::end ( void  )
inline

Definition at line 475 of file DbCore.h.

Referenced by Types.LuminosityBlockRange::cppID(), and Types.EventRange::cppID().

475  {
476  return QueryIterator<Types...>( this );
477  }
Definition: Types.py:1
template<typename... Types>
Query& cond::persistency::Query< Types >::groupBy ( const std::string &  expression)
inline

Definition at line 445 of file DbCore.h.

Referenced by cond::persistency::IOV::Table::getGroups(), cond::persistency::Query< Types... >::groupBy(), and SpecificationBuilder_cfi.Specification::saveAll().

445  {
446  m_coralQuery->groupBy( expression );
447  return *this;
448  }
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:484
template<typename... Types>
bool cond::persistency::Query< Types >::next ( void  )
inline

Definition at line 455 of file DbCore.h.

455  {
456  if(!m_cursor) throwException( "The query has not been executed.","Query::currentRow");
457  bool ret = m_cursor->next();
458  if( ret ) m_retrievedRows++;
459  return ret;
460  }
coral::ICursor * m_cursor
Definition: DbCore.h:485
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:14
template<typename... Types>
size_t cond::persistency::Query< Types >::retrievedRows ( ) const
inline

Definition at line 479 of file DbCore.h.

479  {
480  return m_retrievedRows;
481  }
template<typename... Types>
Query& cond::persistency::Query< Types >::setForUpdate ( )
inline

Definition at line 450 of file DbCore.h.

Referenced by cond::persistency::Query< Types... >::setForUpdate().

450  {
451  m_coralQuery->setForUpdate();
452  return *this;
453  }
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:484

Member Data Documentation

template<typename... Types>
std::unique_ptr<coral::IQuery> cond::persistency::Query< Types >::m_coralQuery
private

Definition at line 484 of file DbCore.h.

template<typename... Types>
coral::ICursor* cond::persistency::Query< Types >::m_cursor = 0
private

Definition at line 485 of file DbCore.h.

template<typename... Types>
size_t cond::persistency::Query< Types >::m_retrievedRows = 0
private

Definition at line 486 of file DbCore.h.

template<typename... Types>
std::set<std::string> cond::persistency::Query< Types >::m_tables
private

Definition at line 489 of file DbCore.h.

template<typename... Types>
std::string cond::persistency::Query< Types >::m_whereClause
private

Definition at line 488 of file DbCore.h.

template<typename... Types>
coral::AttributeList cond::persistency::Query< Types >::m_whereData
private

Definition at line 487 of file DbCore.h.