CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Session.cc
Go to the documentation of this file.
2 #include "SessionImpl.h"
3 //
4 
5 namespace cond {
6 
7  namespace persistency {
8 
10  m_session( &session ){
11  }
12 
14  m_session( rhs.m_session ){
15  }
16 
18  m_session = rhs.m_session;
19  return *this;
20  }
21 
22  void Transaction::start( bool readOnly ){
23  m_session->startTransaction( readOnly );
24  }
25 
28  }
29 
32  }
33 
36  }
37 
39  m_session( new SessionImpl ),
40  m_transaction( *m_session ){
41  }
42 
43  Session::Session( const std::shared_ptr<SessionImpl>& sessionImpl ):
44  m_session( sessionImpl ),
45  m_transaction( *m_session ){
46  }
47 
48  Session::Session( boost::shared_ptr<coral::ISessionProxy>& session, const std::string& connectionString ):
49  m_session( new SessionImpl( session, connectionString ) ),
50  m_transaction( *m_session ){
51  }
52 
53  Session::Session( const Session& rhs ):
54  m_session( rhs.m_session ),
55  m_transaction( rhs.m_transaction ){
56  }
57 
59  }
60 
62  m_session = rhs.m_session;
64  return *this;
65  }
66 
68  m_session->close();
69  }
70 
72  return m_transaction;
73  }
74 
75  //
78  return m_session->transaction->iovDbExists;
79  }
80 
81  //
83  m_session->openIovDb( SessionImpl::CREATE );
84  }
85 
87  m_session->openIovDb();
88  IOVProxy proxy( m_session );
89  proxy.load( tag, full );
90  return proxy;
91  }
92 
94  m_session->openIovDb();
95  return m_session->iovSchema().tagTable().select( tag );
96  }
97 
99  m_session->openIovDb();
100  IOVProxy proxy( m_session );
101  return proxy;
102  }
103 
104  IOVEditor Session::createIov( const std::string& payloadType, const std::string& tag, cond::TimeType timeType,
105  cond::SynchronizationType synchronizationType ){
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  }
112 
114  cond::SynchronizationType synchronizationType ){
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  }
124 
126  m_session->openIovDb();
128  editor.load( tag );
129  return editor;
130  }
131 
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");
136  GTEditor editor( m_session, name );
137  return editor;
138  }
139 
141  m_session->openGTDb();
143  editor.load( name );
144  return editor;
145  }
146 
148  m_session->openGTDb();
149  GTProxy proxy( m_session );
150  proxy.load( name );
151  return proxy;
152  }
153 
154  GTProxy Session::readGlobalTag( const std::string& name, const std::string& preFix, const std::string& postFix ){
155  m_session->openGTDb();
156  GTProxy proxy( m_session );
157  proxy.load( name, preFix, postFix );
158  return proxy;
159  }
160 
162  const cond::Binary& payloadData,
163  const boost::posix_time::ptime& creationTime ){
164  m_session->openIovDb( SessionImpl::CREATE );
165  return m_session->iovSchema().payloadTable().insertIfNew( payloadObjectType, payloadData, creationTime );
166  }
167 
168  bool Session::fetchPayloadData( const cond::Hash& payloadHash,
169  std::string& payloadType,
170  cond::Binary& payloadData ){
171  m_session->openIovDb();
172  return m_session->iovSchema().payloadTable().select( payloadHash, payloadType, payloadData );
173  }
174 
176  return m_session->isOra();
177  }
178 
179  bool Session::checkMigrationLog( const std::string& sourceAccount, const std::string& sourceTag, std::string& destTag ){
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  }
184 
185  void Session::addToMigrationLog( const std::string& sourceAccount, const std::string& sourceTag, const std::string& destTag ){
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  }
190 
192  return m_session->connectionString;
193  }
194 
195  coral::ISessionProxy& Session::coralSession(){
196  if( !m_session->coralSession.get() ) throwException( "The session is not active.","Session::coralSession");
197  return *m_session->coralSession;
198  }
199 
200  coral::ISchema& Session::nominalSchema(){
201  return coralSession().nominalSchema();
202  }
203 
205  m_transaction(transaction),m_status(true){
207  }
208 
210  if(!m_status && m_transaction.isActive() ) {
212  }
213  }
214 
215  void TransactionScope::start( bool readOnly ){
216  m_transaction.start( readOnly );
217  m_status = false;
218  }
219 
222  m_status = true;
223  }
224 
226  m_status = true;
227  }
228 
229  }
230 }
GTEditor editGlobalTag(const std::string &name)
Definition: Session.cc:140
Transaction(SessionImpl &session)
Definition: Session.cc:9
void load(const std::string &tag, bool full=false)
Definition: IOVProxy.cc:123
bool fetchPayloadData(const cond::Hash &payloadHash, std::string &payloadType, cond::Binary &payloadData)
Definition: Session.cc:168
void start(bool readOnly=true)
Definition: Session.cc:22
void addToMigrationLog(const std::string &sourceAccount, const std::string &sourceTag, const std::string &destinationTag)
Definition: Session.cc:185
void load(const std::string &tag)
Definition: IOVEditor.cc:68
TransactionScope(Transaction &transaction)
Definition: Session.cc:204
Transaction & transaction()
Definition: Session.cc:71
TimeType
Definition: Time.h:21
IOVProxy readIov(const std::string &tag, bool full=false)
Definition: Session.cc:86
Transaction & operator=(const Transaction &rhs)
Definition: Session.cc:17
void load(const std::string &gtName, const std::string &preFix="", const std::string &postFix="")
Definition: GTProxy.cc:112
coral::ISchema & nominalSchema()
Definition: Session.cc:200
Definition: GenABIO.cc:193
void start(bool readOnly=true)
Definition: Session.cc:215
std::string Hash
Definition: Types.h:34
std::string connectionString()
Definition: Session.cc:191
IOVEditor editIov(const std::string &tag)
Definition: Session.cc:125
void startTransaction(bool readOnly=true)
Definition: SessionImpl.cc:87
IOVEditor createIovForPayload(const Hash &payloadHash, const std::string &tag, cond::TimeType timeType, cond::SynchronizationType synchronizationType=cond::OFFLINE)
Definition: Session.cc:113
tuple editor
Definition: idDealer.py:73
bool checkMigrationLog(const std::string &sourceAccount, const std::string &sourceTag, std::string &destinationTag)
Definition: Session.cc:179
bool existsIov(const std::string &tag)
Definition: Session.cc:93
coral::ISessionProxy & coralSession()
Definition: Session.cc:195
IOVEditor createIov(const std::string &tag, cond::TimeType timeType, cond::SynchronizationType synchronizationType=cond::OFFLINE)
Definition: Session.h:153
SynchronizationType
Definition: Types.h:22
bool isTransactionActive(bool deep=true) const
Definition: SessionImpl.cc:133
GTEditor createGlobalTag(const std::string &name)
Definition: Session.cc:132
Session & operator=(const Session &rhs)
Definition: Session.cc:61
GTProxy readGlobalTag(const std::string &name)
Definition: Session.cc:147
void load(const std::string &gtName)
Definition: GTEditor.cc:53
Transaction m_transaction
Definition: Session.h:150
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
std::shared_ptr< SessionImpl > m_session
Definition: Session.h:149
cond::Hash storePayloadData(const std::string &payloadObjectType, const cond::Binary &payloadData, const boost::posix_time::ptime &creationTime)
Definition: Session.cc:161