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::persistency::Session Class Reference

#include <Session.h>

Public Member Functions

void addToMigrationLog (const std::string &sourceAccount, const std::string &sourceTag, const std::string &destinationTag)
 
bool checkMigrationLog (const std::string &sourceAccount, const std::string &sourceTag, std::string &destinationTag)
 
void close ()
 
std::string connectionString ()
 
coral::ISessionProxy & coralSession ()
 
void createDatabase ()
 
GTEditor createGlobalTag (const std::string &name)
 
template<typename T >
IOVEditor createIov (const std::string &tag, cond::TimeType timeType, cond::SynchronizationType synchronizationType=cond::OFFLINE)
 
IOVEditor createIov (const std::string &payloadType, const std::string &tag, cond::TimeType timeType, cond::SynchronizationType synchronizationType=cond::OFFLINE)
 
IOVEditor createIovForPayload (const Hash &payloadHash, const std::string &tag, cond::TimeType timeType, cond::SynchronizationType synchronizationType=cond::OFFLINE)
 
GTEditor editGlobalTag (const std::string &name)
 
IOVEditor editIov (const std::string &tag)
 
bool existsDatabase ()
 
bool existsIov (const std::string &tag)
 
template<typename T >
boost::shared_ptr< TfetchPayload (const cond::Hash &payloadHash)
 
bool fetchPayloadData (const cond::Hash &payloadHash, std::string &payloadType, cond::Binary &payloadData)
 
IOVProxy iovProxy ()
 
bool isOraSession ()
 
coral::ISchema & nominalSchema ()
 
Sessionoperator= (const Session &rhs)
 
GTProxy readGlobalTag (const std::string &name)
 
GTProxy readGlobalTag (const std::string &name, const std::string &preFix, const std::string &postFix)
 
IOVProxy readIov (const std::string &tag, bool full=false)
 
 Session ()
 
 Session (const std::shared_ptr< SessionImpl > &sessionImpl)
 
 Session (boost::shared_ptr< coral::ISessionProxy > &session, const std::string &connectionString)
 
 Session (const Session &rhs)
 
template<typename T >
cond::Hash storePayload (const T &payload, const boost::posix_time::ptime &creationTime=boost::posix_time::microsec_clock::universal_time())
 
Transactiontransaction ()
 
virtual ~Session ()
 

Private Member Functions

cond::Hash storePayloadData (const std::string &payloadObjectType, const cond::Binary &payloadData, const boost::posix_time::ptime &creationTime)
 

Private Attributes

std::shared_ptr< SessionImplm_session
 
Transaction m_transaction
 

Detailed Description

Definition at line 59 of file Session.h.

Constructor & Destructor Documentation

Session::Session ( )

Definition at line 38 of file Session.cc.

38  :
39  m_session( new SessionImpl ),
41  }
Transaction m_transaction
Definition: Session.h:150
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
Session::Session ( const std::shared_ptr< SessionImpl > &  sessionImpl)
explicit

Definition at line 43 of file Session.cc.

43  :
44  m_session( sessionImpl ),
46  }
Transaction m_transaction
Definition: Session.h:150
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
Session::Session ( boost::shared_ptr< coral::ISessionProxy > &  session,
const std::string &  connectionString 
)

Definition at line 48 of file Session.cc.

48  :
49  m_session( new SessionImpl( session, connectionString ) ),
51  }
std::string connectionString()
Definition: Session.cc:191
Transaction m_transaction
Definition: Session.h:150
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
Session::Session ( const Session rhs)

Definition at line 53 of file Session.cc.

53  :
54  m_session( rhs.m_session ),
55  m_transaction( rhs.m_transaction ){
56  }
Transaction m_transaction
Definition: Session.h:150
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
Session::~Session ( )
virtual

Definition at line 58 of file Session.cc.

58  {
59  }

Member Function Documentation

void Session::addToMigrationLog ( const std::string &  sourceAccount,
const std::string &  sourceTag,
const std::string &  destinationTag 
)

Definition at line 185 of file Session.cc.

References m_session.

185  {
186  if(! m_session->iovSchema().tagMigrationTable().exists() ) m_session->iovSchema().tagMigrationTable().create();
187  m_session->iovSchema().tagMigrationTable().insert( sourceAccount, sourceTag, destTag,
188  boost::posix_time::microsec_clock::universal_time() );
189  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
bool Session::checkMigrationLog ( const std::string &  sourceAccount,
const std::string &  sourceTag,
std::string &  destinationTag 
)

Definition at line 179 of file Session.cc.

References m_session.

179  {
180  if(! m_session->iovSchema().tagMigrationTable().exists() ) m_session->iovSchema().tagMigrationTable().create();
181  //throwException( "Migration Log Table does not exist in this schema.","Session::checkMigrationLog");
182  return m_session->iovSchema().tagMigrationTable().select( sourceAccount, sourceTag, destTag );
183  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
void Session::close ( void  )
std::string Session::connectionString ( )

Definition at line 191 of file Session.cc.

References m_session.

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

191  {
192  return m_session->connectionString;
193  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
coral::ISessionProxy & Session::coralSession ( )

Definition at line 195 of file Session.cc.

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

Referenced by nominalSchema().

195  {
196  if( !m_session->coralSession.get() ) throwException( "The session is not active.","Session::coralSession");
197  return *m_session->coralSession;
198  }
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
void Session::createDatabase ( )

Definition at line 82 of file Session.cc.

References cond::persistency::SessionImpl::CREATE, and m_session.

82  {
83  m_session->openIovDb( SessionImpl::CREATE );
84  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
GTEditor Session::createGlobalTag ( const std::string &  name)

Definition at line 132 of file Session.cc.

References idDealer::editor, m_session, and cond::persistency::throwException().

132  {
133  m_session->openGTDb();
134  if( m_session->gtSchema().gtTable().select( name ) )
135  throwException( "The specified Global Tag \""+name+"\" already exist in the database.","Session::createGlobalTag");
137  return editor;
138  }
tuple editor
Definition: idDealer.py:73
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
template<typename T >
IOVEditor Session::createIov ( const std::string &  tag,
cond::TimeType  timeType,
cond::SynchronizationType  synchronizationType = cond::OFFLINE 
)
inline

Definition at line 153 of file Session.h.

References ora::ClassUtils::demangledName().

153  {
154  return createIov( cond::demangledName( typeid(T) ), tag, timeType, synchronizationType );
155  }
std::string demangledName(const std::type_info &typeInfo)
Definition: ClassUtils.cc:82
IOVEditor createIov(const std::string &tag, cond::TimeType timeType, cond::SynchronizationType synchronizationType=cond::OFFLINE)
Definition: Session.h:153
long double T
IOVEditor Session::createIov ( const std::string &  payloadType,
const std::string &  tag,
cond::TimeType  timeType,
cond::SynchronizationType  synchronizationType = cond::OFFLINE 
)

Definition at line 104 of file Session.cc.

References cond::persistency::SessionImpl::CREATE, idDealer::editor, m_session, and cond::persistency::throwException().

105  {
106  m_session->openIovDb( SessionImpl::CREATE );
107  if( m_session->iovSchema().tagTable().select( tag ) )
108  throwException( "The specified tag \""+tag+"\" already exist in the database.","Session::createIov");
109  IOVEditor editor( m_session, tag, timeType, payloadType, synchronizationType );
110  return editor;
111  }
tuple editor
Definition: idDealer.py:73
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
IOVEditor Session::createIovForPayload ( const Hash payloadHash,
const std::string &  tag,
cond::TimeType  timeType,
cond::SynchronizationType  synchronizationType = cond::OFFLINE 
)

Definition at line 113 of file Session.cc.

References cond::persistency::SessionImpl::CREATE, idDealer::editor, m_session, AlCaHLTBitMon_QueryRunRegistry::string, and cond::persistency::throwException().

114  {
115  m_session->openIovDb( SessionImpl::CREATE );
116  if( m_session->iovSchema().tagTable().select( tag ) )
117  throwException( "The specified tag \""+tag+"\" already exist in the database.","Session::createIovForPayload");
118  std::string payloadType("");
119  if( !m_session->iovSchema().payloadTable().getType( payloadHash, payloadType ) )
120  throwException( "The specified payloadId \""+payloadHash+"\" does not exist in the database.","Session::createIovForPayload");
121  IOVEditor editor( m_session, tag, timeType, payloadType, synchronizationType );
122  return editor;
123  }
tuple editor
Definition: idDealer.py:73
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
GTEditor Session::editGlobalTag ( const std::string &  name)

Definition at line 140 of file Session.cc.

References idDealer::editor, cond::persistency::GTEditor::load(), and m_session.

140  {
141  m_session->openGTDb();
143  editor.load( name );
144  return editor;
145  }
tuple editor
Definition: idDealer.py:73
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
IOVEditor Session::editIov ( const std::string &  tag)

Definition at line 125 of file Session.cc.

References idDealer::editor, cond::persistency::IOVEditor::load(), and m_session.

125  {
126  m_session->openIovDb();
128  editor.load( tag );
129  return editor;
130  }
tuple editor
Definition: idDealer.py:73
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
bool Session::existsDatabase ( )

Definition at line 76 of file Session.cc.

References cond::persistency::SessionImpl::DO_NOT_THROW, and m_session.

76  {
78  return m_session->transaction->iovDbExists;
79  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
bool Session::existsIov ( const std::string &  tag)

Definition at line 93 of file Session.cc.

References m_session.

93  {
94  m_session->openIovDb();
95  return m_session->iovSchema().tagTable().select( tag );
96  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
template<typename T >
boost::shared_ptr< T > Session::fetchPayload ( const cond::Hash payloadHash)
inline

Definition at line 163 of file Session.h.

References fetchPayloadData(), isOraSession(), AlCaHLTBitMon_QueryRunRegistry::string, and cond::persistency::throwException().

Referenced by cond::persistency::PayloadProxy< std::vector< cond::Time_t > >::loadPayload(), l1t::DataWriter::readObject(), and popcon::PopConSourceHandler< T >::Ref::Ref().

163  {
164  cond::Binary payloadData;
165  std::string payloadType;
166  if(! fetchPayloadData( payloadHash, payloadType, payloadData ) )
167  throwException( "Payload with id="+payloadHash+" has not been found in the database.",
168  "Session::fetchPayload" );
169  return deserialize<T>( payloadType, payloadData, isOraSession() );
170  }
bool fetchPayloadData(const cond::Hash &payloadHash, std::string &payloadType, cond::Binary &payloadData)
Definition: Session.cc:168
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
bool Session::fetchPayloadData ( const cond::Hash payloadHash,
std::string &  payloadType,
cond::Binary payloadData 
)

Definition at line 168 of file Session.cc.

References m_session.

Referenced by cond::persistency::fetch(), fetchPayload(), and cond::persistency::KeyList::load().

170  {
171  m_session->openIovDb();
172  return m_session->iovSchema().payloadTable().select( payloadHash, payloadType, payloadData );
173  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
IOVProxy Session::iovProxy ( )

Definition at line 98 of file Session.cc.

References m_session.

98  {
99  m_session->openIovDb();
100  IOVProxy proxy( m_session );
101  return proxy;
102  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
bool Session::isOraSession ( )

Definition at line 175 of file Session.cc.

References m_session.

Referenced by fetchPayload(), cond::persistency::KeyList::load(), and storePayload().

175  {
176  return m_session->isOra();
177  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
coral::ISchema & Session::nominalSchema ( )

Definition at line 200 of file Session.cc.

References coralSession().

Referenced by DTUserKeyedConfigHandler::chkConfigList(), DTKeyedConfigHandler::chkConfigList(), DTUserKeyedConfigHandler::getNewObjects(), and DTKeyedConfigHandler::getNewObjects().

200  {
201  return coralSession().nominalSchema();
202  }
coral::ISessionProxy & coralSession()
Definition: Session.cc:195
Session & Session::operator= ( const Session rhs)

Definition at line 61 of file Session.cc.

References m_session, and m_transaction.

61  {
62  m_session = rhs.m_session;
63  m_transaction = rhs.m_transaction;
64  return *this;
65  }
Transaction m_transaction
Definition: Session.h:150
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
GTProxy Session::readGlobalTag ( const std::string &  name)

Definition at line 147 of file Session.cc.

References cond::persistency::GTProxy::load(), and m_session.

Referenced by CondDBESSource::fillTagCollectionFromGT().

147  {
148  m_session->openGTDb();
149  GTProxy proxy( m_session );
150  proxy.load( name );
151  return proxy;
152  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
GTProxy Session::readGlobalTag ( const std::string &  name,
const std::string &  preFix,
const std::string &  postFix 
)

Definition at line 154 of file Session.cc.

References cond::persistency::GTProxy::load(), and m_session.

154  {
155  m_session->openGTDb();
156  GTProxy proxy( m_session );
157  proxy.load( name, preFix, postFix );
158  return proxy;
159  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
IOVProxy Session::readIov ( const std::string &  tag,
bool  full = false 
)

Definition at line 86 of file Session.cc.

References cond::persistency::IOVProxy::load(), and m_session.

Referenced by cond::persistency::BasePayloadProxy::loadTag(), and l1t::DataWriter::payloadToken().

86  {
87  m_session->openIovDb();
88  IOVProxy proxy( m_session );
89  proxy.load( tag, full );
90  return proxy;
91  }
Definition: GenABIO.cc:193
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
template<typename T >
cond::Hash Session::storePayload ( const T payload,
const boost::posix_time::ptime &  creationTime = boost::posix_time::microsec_clock::universal_time() 
)
inline

Definition at line 157 of file Session.h.

References ora::ClassUtils::demangledName(), isOraSession(), cond::serialize(), storePayloadData(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by cond::service::PoolDBOutputService::appendSinceTime(), cond::service::PoolDBOutputService::createNewIOV(), l1t::WriterProxyT< Record, Type >::save(), l1t::DataWriter::writeKeyList(), and cond::service::PoolDBOutputService::writeOne().

157  {
158 
159  std::string payloadObjectType = cond::demangledName(typeid(payload));
160  return storePayloadData( payloadObjectType, serialize( payload, isOraSession() ), creationTime );
161  }
std::string demangledName(const std::type_info &typeInfo)
Definition: ClassUtils.cc:82
Binary serialize(const T &payload, bool packingOnly=false)
Definition: Serialization.h:87
cond::Hash storePayloadData(const std::string &payloadObjectType, const cond::Binary &payloadData, const boost::posix_time::ptime &creationTime)
Definition: Session.cc:161
cond::Hash Session::storePayloadData ( const std::string &  payloadObjectType,
const cond::Binary payloadData,
const boost::posix_time::ptime &  creationTime 
)
private

Definition at line 161 of file Session.cc.

References cond::persistency::SessionImpl::CREATE, and m_session.

Referenced by storePayload().

163  {
164  m_session->openIovDb( SessionImpl::CREATE );
165  return m_session->iovSchema().payloadTable().insertIfNew( payloadObjectType, payloadData, creationTime );
166  }
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
Transaction & Session::transaction ( )

Member Data Documentation

std::shared_ptr<SessionImpl> cond::persistency::Session::m_session
private
Transaction cond::persistency::Session::m_transaction
private

Definition at line 150 of file Session.h.

Referenced by operator=(), and transaction().