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 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  }
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:484
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:481
std::string m_whereClause
Definition: DbCore.h:485
std::set< std::string > m_tables
Definition: DbCore.h:486
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
template<typename... Types>
template<int n, typename Arg1 , typename... Args>
void cond::persistency::Query< Types >::_Query ( )
inline

Definition at line 421 of file DbCore.h.

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

432  {
433  addTable<C1>();
434  addTable<C2>();
435  f_add_condition<C1,C2>( m_whereClause, condition );
436  }
std::string m_whereClause
Definition: DbCore.h:485
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 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  }
std::unique_ptr< coral::IQuery > m_coralQuery
Definition: DbCore.h:481
std::set< std::string > m_tables
Definition: DbCore.h:486
template<typename... Types>
const QueryIterator<Types...> cond::persistency::Query< Types >::begin ( void  )
inline

Definition at line 464 of file DbCore.h.

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

Definition at line 459 of file DbCore.h.

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

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

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

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

Definition at line 444 of file DbCore.h.

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

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

Definition at line 452 of file DbCore.h.

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

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

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

Definition at line 448 of file DbCore.h.

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

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 486 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