CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Public Attributes
cond::persistency::SessionImpl Class Reference

#include <SessionImpl.h>

Public Types

enum  FailureOnOpeningPolicy { THROW, DO_NOT_THROW, CREATE }
 

Public Member Functions

void close ()
 
void commitTransaction ()
 
IGTSchemagtSchema ()
 
IIOVSchemaiovSchema ()
 
bool isActive () const
 
bool isOra ()
 
bool isTransactionActive (bool deep=true) const
 
void openGTDb ()
 
void openIovDb (FailureOnOpeningPolicy policy=THROW)
 
void rollbackTransaction ()
 
 SessionImpl ()
 
 SessionImpl (boost::shared_ptr< coral::ISessionProxy > &session, const std::string &connectionString)
 
void startTransaction (bool readOnly=true)
 
 ~SessionImpl ()
 

Public Attributes

std::string connectionString
 
boost::shared_ptr
< coral::ISessionProxy > 
coralSession
 
std::unique_ptr< IGTSchemagtSchemaHandle
 
std::unique_ptr< IIOVSchemaiovSchemaHandle
 
std::unique_ptr< ITransactiontransaction
 

Detailed Description

Definition at line 39 of file SessionImpl.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

cond::persistency::SessionImpl::SessionImpl ( )

Definition at line 60 of file SessionImpl.cc.

60  :
61  coralSession(){
62  }
boost::shared_ptr< coral::ISessionProxy > coralSession
Definition: SessionImpl.h:63
cond::persistency::SessionImpl::SessionImpl ( boost::shared_ptr< coral::ISessionProxy > &  session,
const std::string &  connectionString 
)

Definition at line 64 of file SessionImpl.cc.

64  :
66  connectionString( connectionStr ){
67  }
boost::shared_ptr< coral::ISessionProxy > coralSession
Definition: SessionImpl.h:63
cond::persistency::SessionImpl::~SessionImpl ( )

Definition at line 69 of file SessionImpl.cc.

References close().

69  {
70  close();
71  }

Member Function Documentation

void cond::persistency::SessionImpl::close ( void  )

Definition at line 73 of file SessionImpl.cc.

References coralSession, and transaction.

Referenced by lumiQTWidget.ApplicationWindow::fileQuit(), Vispa.Gui.BoxContentDialog.BoxContentDialog::keyPressEvent(), Vispa.Gui.FindDialog.FindDialog::keyPressEvent(), and ~SessionImpl().

73  {
74  if( coralSession.get() ){
75  if( coralSession->transaction().isActive() ){
76  coralSession->transaction().rollback();
77  }
78  coralSession.reset();
79  }
80  transaction.reset();
81  }
boost::shared_ptr< coral::ISessionProxy > coralSession
Definition: SessionImpl.h:63
std::unique_ptr< ITransaction > transaction
Definition: SessionImpl.h:66
void cond::persistency::SessionImpl::commitTransaction ( )

Definition at line 112 of file SessionImpl.cc.

References gtSchemaHandle, iovSchemaHandle, and transaction.

Referenced by cond::persistency::Transaction::commit().

112  {
113  if( transaction ) {
114  transaction->clients--;
115  if( !transaction->clients ){
116  transaction->commit();
117  transaction.reset();
118  iovSchemaHandle.reset();
119  gtSchemaHandle.reset();
120  }
121  }
122  }
std::unique_ptr< IIOVSchema > iovSchemaHandle
Definition: SessionImpl.h:67
std::unique_ptr< IGTSchema > gtSchemaHandle
Definition: SessionImpl.h:68
std::unique_ptr< ITransaction > transaction
Definition: SessionImpl.h:66
IGTSchema & cond::persistency::SessionImpl::gtSchema ( )

Definition at line 170 of file SessionImpl.cc.

References gtSchemaHandle.

Referenced by startTransaction().

170  {
171  return *gtSchemaHandle;
172  }
std::unique_ptr< IGTSchema > gtSchemaHandle
Definition: SessionImpl.h:68
IIOVSchema & cond::persistency::SessionImpl::iovSchema ( )

Definition at line 166 of file SessionImpl.cc.

References iovSchemaHandle.

Referenced by startTransaction().

166  {
167  return *iovSchemaHandle;
168  }
std::unique_ptr< IIOVSchema > iovSchemaHandle
Definition: SessionImpl.h:67
bool cond::persistency::SessionImpl::isActive ( ) const

Definition at line 83 of file SessionImpl.cc.

References coralSession.

83  {
84  return coralSession.get();
85  }
boost::shared_ptr< coral::ISessionProxy > coralSession
Definition: SessionImpl.h:63
bool cond::persistency::SessionImpl::isOra ( )

Definition at line 174 of file SessionImpl.cc.

References cond::persistency::throwException(), and transaction.

174  {
175  if(!transaction.get()) throwException( "The transaction is not active.","SessionImpl::open" );
176  return transaction->isOra;
177  }
std::unique_ptr< ITransaction > transaction
Definition: SessionImpl.h:66
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
bool cond::persistency::SessionImpl::isTransactionActive ( bool  deep = true) const

Definition at line 133 of file SessionImpl.cc.

References transaction.

Referenced by cond::persistency::Transaction::isActive().

133  {
134  if( !transaction ) return false;
135  if( !deep ) return true;
136  return transaction->isActive();
137  }
std::unique_ptr< ITransaction > transaction
Definition: SessionImpl.h:66
void cond::persistency::SessionImpl::openGTDb ( )

Definition at line 155 of file SessionImpl.cc.

References gtSchemaHandle, cond::persistency::throwException(), and transaction.

155  {
156  if(!transaction.get()) throwException( "The transaction is not active.","SessionImpl::open" );
157  if( !transaction->gtDbOpen ){
158  transaction->gtDbExists = gtSchemaHandle->exists();
159  transaction->gtDbOpen = true;
160  }
161  if( !transaction->gtDbExists ){
162  throwException( "GT Database does not exist.","SessionImpl::openGTDb");
163  }
164  }
std::unique_ptr< IGTSchema > gtSchemaHandle
Definition: SessionImpl.h:68
std::unique_ptr< ITransaction > transaction
Definition: SessionImpl.h:66
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
void cond::persistency::SessionImpl::openIovDb ( SessionImpl::FailureOnOpeningPolicy  policy = THROW)

Definition at line 139 of file SessionImpl.cc.

References CREATE, iovSchemaHandle, THROW, cond::persistency::throwException(), and transaction.

139  {
140  if(!transaction.get()) throwException( "The transaction is not active.","SessionImpl::openIovDb" );
141  if( !transaction->iovDbOpen ){
142  transaction->iovDbExists = iovSchemaHandle->exists();
143  transaction->iovDbOpen = true;
144  }
145  if( !transaction->iovDbExists ){
146  if( policy==CREATE ){
147  iovSchemaHandle->create();
148  transaction->iovDbExists = true;
149  } else {
150  if( policy==THROW) throwException( "IOV Database does not exist.","SessionImpl::openIovDb");
151  }
152  }
153  }
std::unique_ptr< IIOVSchema > iovSchemaHandle
Definition: SessionImpl.h:67
std::unique_ptr< ITransaction > transaction
Definition: SessionImpl.h:66
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
void cond::persistency::SessionImpl::rollbackTransaction ( )

Definition at line 124 of file SessionImpl.cc.

References gtSchemaHandle, iovSchemaHandle, and transaction.

Referenced by cond::persistency::Transaction::rollback().

124  {
125  if( transaction ) {
126  transaction->rollback();
127  transaction.reset();
128  iovSchemaHandle.reset();
129  gtSchemaHandle.reset();
130  }
131  }
std::unique_ptr< IIOVSchema > iovSchemaHandle
Definition: SessionImpl.h:67
std::unique_ptr< IGTSchema > gtSchemaHandle
Definition: SessionImpl.h:68
std::unique_ptr< ITransaction > transaction
Definition: SessionImpl.h:66
void cond::persistency::SessionImpl::startTransaction ( bool  readOnly = true)

Definition at line 87 of file SessionImpl.cc.

References connectionString, coralSession, cond::DbConnection::createSession(), gtSchema(), gtSchemaHandle, iovSchema(), iovSchemaHandle, cond::DbSession::open(), cond::DbTransaction::start(), cond::persistency::throwException(), cond::DbSession::transaction(), and transaction.

Referenced by cond::persistency::Transaction::start().

87  {
88  if( !transaction.get() ){
89  cond::DbConnection oraConnection;
90  cond::DbSession oraSession = oraConnection.createSession();
91  oraSession.open( coralSession, connectionString );
92  transaction.reset( new OraTransaction( oraSession ) );
93  oraSession.transaction().start( readOnly );
94  iovSchemaHandle.reset( new OraIOVSchema( oraSession ) );
95  gtSchemaHandle.reset( new OraGTSchema( oraSession ) );
96  if( !iovSchemaHandle->exists() && !gtSchemaHandle->exists() ){
97  std::unique_ptr<IIOVSchema> iovSchema( new IOVSchema( coralSession->nominalSchema() ) );
98  std::unique_ptr<IGTSchema> gtSchema( new GTSchema( coralSession->nominalSchema() ) );
99  if( iovSchema->exists() ){
100  iovSchemaHandle = std::move(iovSchema);
101  gtSchemaHandle = std::move(gtSchema);
102  transaction.reset( new CondDBTransaction( coralSession ) );
103  }
104  }
105  } else {
106  if(!readOnly ) throwException( "An update transaction is already active.",
107  "SessionImpl::startTransaction" );
108  }
109  transaction->clients++;
110  }
DbTransaction & transaction()
Definition: DbSession.cc:208
void open(const std::string &connectionString, bool readOnly=false)
Definition: DbSession.cc:159
std::unique_ptr< IIOVSchema > iovSchemaHandle
Definition: SessionImpl.h:67
int start(bool readOnly=false)
start transaction
boost::shared_ptr< coral::ISessionProxy > coralSession
Definition: SessionImpl.h:63
std::unique_ptr< IGTSchema > gtSchemaHandle
Definition: SessionImpl.h:68
DbSession createSession() const
Definition: DbConnection.cc:66
std::unique_ptr< ITransaction > transaction
Definition: SessionImpl.h:66
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11

Member Data Documentation

std::string cond::persistency::SessionImpl::connectionString

Definition at line 65 of file SessionImpl.h.

Referenced by startTransaction().

boost::shared_ptr<coral::ISessionProxy> cond::persistency::SessionImpl::coralSession

Definition at line 63 of file SessionImpl.h.

Referenced by close(), isActive(), and startTransaction().

std::unique_ptr<IGTSchema> cond::persistency::SessionImpl::gtSchemaHandle
std::unique_ptr<IIOVSchema> cond::persistency::SessionImpl::iovSchemaHandle
std::unique_ptr<ITransaction> cond::persistency::SessionImpl::transaction