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
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 >
void addCondition (const T &value, const std::string condition="=")
 
template<typename C1 , typename C2 >
void addCondition (const std::string condition="=")
 
template<typename C >
void addOrderClause (bool ascending=true)
 
template<typename Col >
void addTable ()
 
const QueryIterator< Types...> begin ()
 
const coral::AttributeList & currentRow () const
 
const QueryIterator< Types...> end ()
 
void groupBy (const std::string &expression)
 
bool next ()
 
 Query (const coral::ISchema &schema, bool distinct=false)
 
size_t retrievedRows () const
 
void setForUpdate ()
 
 ~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 311 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 399 of file DbCore.h.

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

Definition at line 408 of file DbCore.h.

408  {
409  }

Member Function Documentation

template<typename... Types>
template<int n>
void cond::persistency::Query< Types >::_Query ( )
inline
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:371
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:482
template<typename... Types>
template<typename C , typename T >
void cond::persistency::Query< Types >::addCondition ( const T value,
const std::string  condition = "=" 
)
inline
template<typename... Types>
template<typename C1 , typename C2 >
void cond::persistency::Query< Types >::addCondition ( const std::string  condition = "=")
inline

Definition at line 433 of file DbCore.h.

433  {
434  addTable<C1>();
435  addTable<C2>();
436  f_add_condition<C1,C2>( m_whereClause, condition );
437  }
std::string m_whereClause
Definition: DbCore.h:486
template<typename... Types>
template<typename C >
void cond::persistency::Query< Types >::addOrderClause ( bool  ascending = true)
inline
template<typename... Types>
template<typename Col >
void cond::persistency::Query< Types >::addTable ( )
inline

Definition at line 411 of file DbCore.h.

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

Definition at line 465 of file DbCore.h.

465  {
466  m_coralQuery->setCondition( m_whereClause, m_whereData );
467  m_cursor = &m_coralQuery->execute();
468  m_retrievedRows = 0;
469  QueryIterator<Types...> ret ( this );
470  return ++ret;
471  }
tuple ret
prodAgent to be discontinued
coral::AttributeList m_whereData
Definition: DbCore.h:485
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:482
std::string m_whereClause
Definition: DbCore.h:486
coral::ICursor * m_cursor
Definition: DbCore.h:483
template<typename... Types>
const coral::AttributeList& cond::persistency::Query< Types >::currentRow ( ) const
inline

Definition at line 460 of file DbCore.h.

Referenced by Vispa.Plugins.ConfigEditor.CodeTableView.CodeTableView::itemClicked(), Vispa.Views.TableView.TableView::itemSelectionChanged(), and cond::persistency::QueryIterator< Types >::operator++().

460  {
461  if(!m_cursor) throwException( "The query has not been executed.","Query::currentRow");
462  return m_cursor->currentRow();
463  }
coral::ICursor * m_cursor
Definition: DbCore.h:483
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 473 of file DbCore.h.

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

473  {
474  return QueryIterator<Types...>( this );
475  }
template<typename... Types>
void cond::persistency::Query< Types >::groupBy ( const std::string &  expression)
inline

Definition at line 445 of file DbCore.h.

Referenced by cond::persistency::IOV::Table::selectGroups(), and cond::persistency::IOV::Table::selectSnapshotGroups().

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

Definition at line 453 of file DbCore.h.

Referenced by BeautifulSoup.PageElement::_invert(), and cond::persistency::QueryIterator< Types >::operator++().

453  {
454  if(!m_cursor) throwException( "The query has not been executed.","Query::currentRow");
455  bool ret = m_cursor->next();
456  if( ret ) m_retrievedRows++;
457  return ret;
458  }
tuple ret
prodAgent to be discontinued
coral::ICursor * m_cursor
Definition: DbCore.h:483
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 477 of file DbCore.h.

477  {
478  return m_retrievedRows;
479  }
template<typename... Types>
void cond::persistency::Query< Types >::setForUpdate ( )
inline

Definition at line 449 of file DbCore.h.

449  {
450  m_coralQuery->setForUpdate();
451  }
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:482

Member Data Documentation

template<typename... Types>
std::unique_ptr<coral::IQuery> cond::persistency::Query< Types >::m_coralQuery
private
template<typename... Types>
coral::ICursor* cond::persistency::Query< Types >::m_cursor = 0
private
template<typename... Types>
size_t cond::persistency::Query< Types >::m_retrievedRows = 0
private
template<typename... Types>
std::set<std::string> cond::persistency::Query< Types >::m_tables
private

Definition at line 487 of file DbCore.h.

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

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