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 310 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 398 of file DbCore.h.

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

Definition at line 407 of file DbCore.h.

407  {
408  }

Member Function Documentation

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

Definition at line 419 of file DbCore.h.

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

Definition at line 422 of file DbCore.h.

422  {
423  addTable<Arg1>();
424  DefineQueryOutput<typename Arg1::type>::make( *m_coralQuery, Arg1::fullyQualifiedName() );
425  _Query<n+1, Args...>();
426  }
static void make(coral::IQuery &query, const std::string &fullyQualifiedName)
Definition: DbCore.h:370
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:487
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 434 of file DbCore.h.

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

Definition at line 441 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().

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

Definition at line 410 of file DbCore.h.

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

Definition at line 470 of file DbCore.h.

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

Definition at line 465 of file DbCore.h.

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

465  {
466  if(!m_cursor) throwException( "The query has not been executed.","Query::currentRow");
467  return m_cursor->currentRow();
468  }
coral::ICursor * m_cursor
Definition: DbCore.h:488
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 478 of file DbCore.h.

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

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

Definition at line 448 of file DbCore.h.

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

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

Definition at line 458 of file DbCore.h.

458  {
459  if(!m_cursor) throwException( "The query has not been executed.","Query::currentRow");
460  bool ret = m_cursor->next();
461  if( ret ) m_retrievedRows++;
462  return ret;
463  }
coral::ICursor * m_cursor
Definition: DbCore.h:488
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 482 of file DbCore.h.

482  {
483  return m_retrievedRows;
484  }
template<typename... Types>
Query& cond::persistency::Query< Types >::setForUpdate ( )
inline

Definition at line 453 of file DbCore.h.

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

453  {
454  m_coralQuery->setForUpdate();
455  return *this;
456  }
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:487

Member Data Documentation

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

Definition at line 487 of file DbCore.h.

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

Definition at line 488 of file DbCore.h.

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

Definition at line 489 of file DbCore.h.

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

Definition at line 492 of file DbCore.h.

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

Definition at line 491 of file DbCore.h.

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

Definition at line 490 of file DbCore.h.