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 Member Functions | Private Attributes
cond::DbSession Class Reference

#include <DbSession.h>

Public Member Functions

const std::string & blobStreamingService () const
 
void close ()
 
const DbConnectionconnection () const
 
const std::string & connectionString () const
 
 DbSession ()
 
 DbSession (const DbConnection &connection)
 
 DbSession (const DbSession &rhs)
 
bool deleteMapping (const std::string &mappingVersion)
 
bool deleteObject (const std::string &objectId)
 
void flush ()
 
ora::Object getObject (const std::string &objectId)
 
template<typename T >
boost::shared_ptr< TgetTypedObject (const std::string &objectId)
 
bool importMapping (const std::string &sourceConnectionString, const std::string &contName)
 
std::string importObject (cond::DbSession &fromDatabase, const std::string &objectId)
 
bool isOpen () const
 
bool isTransactional () const
 
coral::ISchema & nominalSchema ()
 
void open (const std::string &connectionString, bool readOnly=false)
 
DbSessionoperator= (const DbSession &rhs)
 
coral::ISchema & schema (const std::string &schemaName)
 
ora::Databasestorage ()
 
template<typename T >
std::string storeObject (const T *object, const std::string &containerName)
 
DbTransactiontransaction ()
 
template<typename T >
bool updateObject (const T *object, const std::string &objectId)
 
virtual ~DbSession ()
 

Private Member Functions

std::string storeObject (const ora::Object &objectRef, const std::string &containerName)
 

Private Attributes

boost::shared_ptr< SessionImplm_implementation
 

Detailed Description

Definition at line 36 of file DbSession.h.

Constructor & Destructor Documentation

DbSession::DbSession ( )

Definition at line 99 of file DbSession.cc.

99  :
100  m_implementation( new SessionImpl ){
101 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
DbSession::DbSession ( const DbConnection connection)
explicit

Definition at line 103 of file DbSession.cc.

103  :
104  m_implementation( new SessionImpl ( connection ) ){
105 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
DbSession::DbSession ( const DbSession rhs)

Definition at line 107 of file DbSession.cc.

107  :
108  m_implementation( rhs.m_implementation ){
109 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
DbSession::~DbSession ( )
virtual

Definition at line 111 of file DbSession.cc.

111  {
112 }

Member Function Documentation

const std::string & DbSession::blobStreamingService ( ) const

Definition at line 148 of file DbSession.cc.

149 {
150  return m_implementation->blobStreamingService;
151 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
void DbSession::close ( void  )
cond::DbConnection const & DbSession::connection ( ) const

Definition at line 139 of file DbSession.cc.

139  {
140  return *(m_implementation->connection);
141 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
const std::string & DbSession::connectionString ( ) const

Definition at line 133 of file DbSession.cc.

Referenced by cond::IOVEditor::debugInfo(), PCLMetadataWriter::endRun(), and popcon::PopCon::initialize().

133  {
134  if(!m_implementation->database.get())
135  throw cond::Exception("DbSession::connectionString: cannot get connection string. Session has not been open.");
136  return m_implementation->database->connectionString();
137 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
bool DbSession::deleteMapping ( const std::string &  mappingVersion)

Definition at line 180 of file DbSession.cc.

References ora::DatabaseUtility::eraseMapping().

180  {
181  ora::DatabaseUtility utility = storage().utility();
182  utility.eraseMapping( mappingVersion );
183  return true;
184 }
DatabaseUtility utility()
Definition: Database.cc:335
void eraseMapping(const std::string &mappingVersion)
ora::Database & storage()
Definition: DbSession.cc:162
bool DbSession::deleteObject ( const std::string &  objectId)

Definition at line 207 of file DbSession.cc.

References cont, ora::Container::erase(), ora::Container::flush(), and cond::parseToken().

Referenced by cond::IOVEditor::deleteEntries(), and cond::IOVEditor::truncate().

207  {
208  std::pair<std::string,int> oidData = parseToken( objectId );
209  ora::Container cont = storage().containerHandle( oidData.first );
210  cont.erase( oidData.second );
211  cont.flush();
212  return true;
213 }
std::pair< std::string, int > parseToken(const std::string &objectId)
Definition: PoolToken.cc:16
Container containerHandle(const std::string &name)
Definition: Database.cc:236
void erase(int itemId)
Definition: Container.cc:133
int cont
ora::Database & storage()
Definition: DbSession.cc:162
void DbSession::flush ( )

Definition at line 223 of file DbSession.cc.

223  {
224  storage().flush();
225 }
void flush()
Definition: Database.cc:284
ora::Database & storage()
Definition: DbSession.cc:162
ora::Object DbSession::getObject ( const std::string &  objectId)

Definition at line 201 of file DbSession.cc.

References cont, ora::Container::fetchItem(), and cond::parseToken().

Referenced by importObject(), and cond::PayLoadInspector< DataT >::load().

201  {
202  std::pair<std::string,int> oidData = parseToken( objectId );
203  ora::Container cont = storage().containerHandle( oidData.first );
204  return cont.fetchItem( oidData.second );
205 }
std::pair< std::string, int > parseToken(const std::string &objectId)
Definition: PoolToken.cc:16
Object fetchItem(int itemId)
Definition: Container.cc:89
Container containerHandle(const std::string &name)
Definition: Database.cc:236
int cont
ora::Database & storage()
Definition: DbSession.cc:162
template<typename T >
boost::shared_ptr< T > DbSession::getTypedObject ( const std::string &  objectId)
inline
bool DbSession::importMapping ( const std::string &  sourceConnectionString,
const std::string &  contName 
)

Definition at line 186 of file DbSession.cc.

References cond::buildTechnologyProxy(), and ora::DatabaseUtility::importContainerSchema().

187  {
188  ora::DatabaseUtility utility = storage().utility();
189  std::auto_ptr<cond::TechnologyProxy> technologyProxy = buildTechnologyProxy(sourceConnectionString, *(m_implementation->connection));
190  utility.importContainerSchema( (*technologyProxy).getRealConnectString(), contName );
191  return true;
192 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
std::auto_ptr< cond::TechnologyProxy > buildTechnologyProxy(const std::string &userconnect, const DbConnection &connection)
Definition: DbSession.cc:16
void importContainerSchema(const std::string &sourceConnectionString, const std::string &containerName)
DatabaseUtility utility()
Definition: Database.cc:335
ora::Database & storage()
Definition: DbSession.cc:162
std::string DbSession::importObject ( cond::DbSession fromDatabase,
const std::string &  objectId 
)

Definition at line 215 of file DbSession.cc.

References runTheMatrix::data, ora::Object::destruct(), getObject(), and cond::parseToken().

Referenced by cond::IOVService::exportIOVRangeWithPayload(), and cond::IOVService::exportIOVWithPayload().

215  {
216  std::pair<std::string,int> oidData = parseToken( objectId );
217  ora::Object data = fromDatabase.getObject( objectId );
218  std::string tok = storeObject( data, oidData.first );
219  data.destruct();
220  return tok;
221 }
std::pair< std::string, int > parseToken(const std::string &objectId)
Definition: PoolToken.cc:16
std::string storeObject(const T *object, const std::string &containerName)
Definition: DbSession.h:104
ora::Object getObject(const std::string &objectId)
Definition: DbSession.cc:201
void destruct()
Definition: Object.cc:63
bool DbSession::isOpen ( ) const

Definition at line 129 of file DbSession.cc.

Referenced by popcon::PopConSourceHandler< T >::Ref::~Ref().

129  {
130  return m_implementation->isOpen;
131 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
bool DbSession::isTransactional ( ) const

Definition at line 144 of file DbSession.cc.

Referenced by CondDBESSource::CondDBESSource().

144  {
145  return m_implementation->technologyProxy->isTransactional();
146 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
coral::ISchema & DbSession::nominalSchema ( )
void DbSession::open ( const std::string &  connectionString,
bool  readOnly = false 
)
cond::DbSession & DbSession::operator= ( const DbSession rhs)

Definition at line 114 of file DbSession.cc.

References m_implementation.

114  {
115  if(this!=&rhs) m_implementation = rhs.m_implementation;
116  return *this;
117 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
coral::ISchema & DbSession::schema ( const std::string &  schemaName)
ora::Database & DbSession::storage ( )

Definition at line 162 of file DbSession.cc.

Referenced by getTypedObject(), storeObject(), and updateObject().

162  {
163  if(!m_implementation->connection.get() || !m_implementation->connection->isOpen())
164  throw cond::Exception("DbSession::storage: cannot access the storage. Underlying connection is closed.");
165  if(!m_implementation->database.get())
166  throw cond::Exception("DbSession::storage: cannot access the database. Session has not been open.");
167  return *m_implementation->database;
168 }
boost::shared_ptr< SessionImpl > m_implementation
Definition: DbSession.h:95
template<typename T >
std::string DbSession::storeObject ( const T object,
const std::string &  containerName 
)
inline

Definition at line 104 of file DbSession.h.

References ora::Container::className(), cont, ora::Database::containerHandle(), ora::Database::flush(), ora::Container::id(), ora::Database::insert(), ora::OId::itemId(), runTheMatrix::ret, storage(), and cond::writeToken().

Referenced by cond::IOVEditor::create(), cond::AlignSplitIOV::execute(), cond::IOVService::exportIOVRangeWithPayload(), cond::IOVService::exportIOVWithPayload(), cond::service::GetTokenFromPointer< T >::operator()(), l1t::WriterProxyT< Record, Type >::save(), and l1t::DataWriter::writeKeyList().

105  {
106  std::string ret("");
107  if( object ){
108  ora::OId oid = storage().insert( containerName, *object );
109  storage().flush();
110  ora::Container cont = storage().containerHandle( containerName );
111  int oid0 = cont.id(); // contID does not start from 0...
112  ret = writeToken( containerName, oid0, oid.itemId(), cont.className() );
113  }
114  return ret;
115  }
void flush()
Definition: Database.cc:284
OId insert(const std::string &containerName, const T &data)
Definition: OId.h:8
const std::string & className()
Definition: Container.cc:67
Container containerHandle(const std::string &name)
Definition: Database.cc:236
int cont
std::string writeToken(const std::string &containerName, int oid0, int oid1, const std::string &className)
Definition: PoolToken.cc:45
ora::Database & storage()
Definition: DbSession.cc:162
int itemId() const
Definition: OId.cc:44
std::string DbSession::storeObject ( const ora::Object objectRef,
const std::string &  containerName 
)
private

Definition at line 194 of file DbSession.cc.

References ora::OId::containerId(), ora::OId::itemId(), and cond::writeToken().

194  {
195  ora::OId oid = storage().insertItem( containerName, object );
196  storage().flush();
197  int oid0 = oid.containerId(); // no clue why in POOL contId does not start from 0...
198  return writeToken( containerName, oid0, oid.itemId(), object.typeName() );
199 }
void flush()
Definition: Database.cc:284
Definition: OId.h:8
int containerId() const
Definition: OId.cc:40
OId insertItem(const std::string &containerName, const Object &data)
Definition: Database.cc:263
std::string writeToken(const std::string &containerName, int oid0, int oid1, const std::string &className)
Definition: PoolToken.cc:45
ora::Database & storage()
Definition: DbSession.cc:162
int itemId() const
Definition: OId.cc:44
cond::DbTransaction & DbSession::transaction ( )
template<typename T >
bool DbSession::updateObject ( const T object,
const std::string &  objectId 
)
inline

Definition at line 117 of file DbSession.h.

References cont, ora::Database::containerHandle(), ora::Container::flush(), cond::parseToken(), runTheMatrix::ret, storage(), and ora::Container::update().

Referenced by cond::IOVEditor::append(), cond::IOVEditor::bulkAppend(), cond::IOVService::exportIOVRangeWithPayload(), cond::IOVEditor::freeInsert(), cond::IOVEditor::insert(), cond::IOVEditor::stamp(), cond::IOVEditor::truncate(), and cond::IOVEditor::updateClosure().

118  {
119  bool ret = false;
120  if( object ){
121  std::pair<std::string,int> oidData = parseToken( objectId );
122  ora::Container cont = storage().containerHandle( oidData.first );
123  cont.update( oidData.second, *object );
124  cont.flush();
125  ret = true;
126  }
127  return ret;
128  }
std::pair< std::string, int > parseToken(const std::string &objectId)
Definition: PoolToken.cc:16
Container containerHandle(const std::string &name)
Definition: Database.cc:236
void update(int itemId, const T &data)
Definition: Container.h:129
int cont
ora::Database & storage()
Definition: DbSession.cc:162

Member Data Documentation

boost::shared_ptr<SessionImpl> cond::DbSession::m_implementation
private

Definition at line 95 of file DbSession.h.

Referenced by operator=().