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::IOVEditor Class Reference

#include <IOVEditor.h>

Public Member Functions

std::string description () const
 
cond::Time_t endOfValidity () const
 
bool flush ()
 
bool flush (const boost::posix_time::ptime &operationTime)
 
void insert (cond::Time_t since, const cond::Hash &payloadHash, bool checkType=false)
 
void insert (cond::Time_t since, const cond::Hash &payloadHash, const boost::posix_time::ptime &insertionTime, bool checkType=false)
 
 IOVEditor ()
 
 IOVEditor (const std::shared_ptr< SessionImpl > &session)
 
 IOVEditor (const std::shared_ptr< SessionImpl > &session, const std::string &tag, cond::TimeType timeType, const std::string &payloadType, cond::SynchronizationType synchronizationType, const boost::posix_time::ptime &creationTime=boost::posix_time::microsec_clock::universal_time())
 
 IOVEditor (const IOVEditor &rhs)
 
cond::Time_t lastValidatedTime () const
 
void load (const std::string &tag)
 
IOVEditoroperator= (const IOVEditor &rhs)
 
std::string payloadType () const
 
void setDescription (const std::string &description)
 
void setEndOfValidity (cond::Time_t validity)
 
void setLastValidatedTime (cond::Time_t time)
 
void setValidationMode ()
 
cond::SynchronizationType synchronizationType () const
 
std::string tag () const
 
cond::TimeType timeType () const
 

Private Member Functions

void checkTransaction (const std::string &ctx)
 

Private Attributes

std::shared_ptr< IOVEditorDatam_data
 
std::shared_ptr< SessionImplm_session
 

Detailed Description

Definition at line 28 of file IOVEditor.h.

Constructor & Destructor Documentation

IOVEditor::IOVEditor ( )

Definition at line 35 of file IOVEditor.cc.

35  :
36  m_data(),
37  m_session(){
38  }
std::shared_ptr< SessionImpl > m_session
Definition: IOVEditor.h:85
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
IOVEditor::IOVEditor ( const std::shared_ptr< SessionImpl > &  session)
explicit

Definition at line 40 of file IOVEditor.cc.

40  :
41  m_data( new IOVEditorData ),
42  m_session( session ){
43  }
std::shared_ptr< SessionImpl > m_session
Definition: IOVEditor.h:85
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
IOVEditor::IOVEditor ( const std::shared_ptr< SessionImpl > &  session,
const std::string &  tag,
cond::TimeType  timeType,
const std::string &  payloadType,
cond::SynchronizationType  synchronizationType,
const boost::posix_time::ptime &  creationTime = boost::posix_time::microsec_clock::universal_time() 
)

Definition at line 45 of file IOVEditor.cc.

References m_data, synchronizationType(), tag(), and timeType().

50  :
51  m_data( new IOVEditorData ),
52  m_session( session ){
53  m_data->tag = tag;
54  m_data->timeType = timeType;
55  m_data->payloadType = payloadObjectType;
56  m_data->synchronizationType = synchronizationType;
57  m_data->creationTime = creationTime;
58  m_data->change = true;
59  }
std::shared_ptr< SessionImpl > m_session
Definition: IOVEditor.h:85
cond::SynchronizationType synchronizationType() const
Definition: IOVEditor.cc:97
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
cond::TimeType timeType() const
Definition: IOVEditor.cc:89
std::string tag() const
Definition: IOVEditor.cc:84
IOVEditor::IOVEditor ( const IOVEditor rhs)

Definition at line 61 of file IOVEditor.cc.

61  :
62  m_data( rhs.m_data ),
63  m_session( rhs.m_session ){
64  }
std::shared_ptr< SessionImpl > m_session
Definition: IOVEditor.h:85
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84

Member Function Documentation

void IOVEditor::checkTransaction ( const std::string &  ctx)
private

Definition at line 203 of file IOVEditor.cc.

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

Referenced by flush(), and load().

203  {
204  if( !m_session.get() ) throwException("The session is not active.",ctx );
205  if( !m_session->isTransactionActive( false ) ) throwException("The transaction is not active.",ctx );
206  }
std::shared_ptr< SessionImpl > m_session
Definition: IOVEditor.h:85
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
std::string IOVEditor::description ( ) const

Definition at line 112 of file IOVEditor.cc.

References m_data.

Referenced by setDescription().

112  {
113  return m_data.get() ? m_data->description : "";
114  }
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
cond::Time_t IOVEditor::endOfValidity ( ) const

Definition at line 101 of file IOVEditor.cc.

References m_data, and cond::time::MIN_VAL().

101  {
102  return m_data.get() ? m_data->endOfValidity : cond::time::MIN_VAL;
103  }
const Time_t MIN_VAL(0)
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
bool IOVEditor::flush ( )
bool IOVEditor::flush ( const boost::posix_time::ptime &  operationTime)

Definition at line 154 of file IOVEditor.cc.

References checkTransaction(), h, cond::persistency::iovSorter(), prof2calltree::l, prof2calltree::last, m_data, m_session, visualization-live-secondInstance_cfg::msg, run_regression::ret, python.multivaluedict::sort(), cond::SYNCH_ANY, cond::SYNCH_VALIDATION, cond::synchronizationTypeNames(), and cond::persistency::throwException().

154  {
155  bool ret = false;
156  checkTransaction( "IOVEditor::flush" );
157  if( m_data->change ){
158  if( m_data->description.empty() ) throwException( "A non-empty description string is mandatory.","IOVEditor::flush" );
159  if( m_data->validationMode ) m_session->iovSchema().tagTable().setValidationMode();
160  if( !m_data->exists ){
161  m_session->iovSchema().tagTable().insert( m_data->tag, m_data->timeType, m_data->payloadType,
162  m_data->synchronizationType, m_data->endOfValidity,
163  m_data->description, m_data->lastValidatedTime, m_data->creationTime );
164  m_data->exists = true;
165  ret = true;
166  } else {
167  m_session->iovSchema().tagTable().update( m_data->tag, m_data->endOfValidity, m_data->description,
168  m_data->lastValidatedTime, operationTime );
169  ret = true;
170  }
171  m_data->change = false;
172  }
173  if( m_data->iovBuffer.size() ) {
174 
175  std::sort(m_data->iovBuffer.begin(),m_data->iovBuffer.end(),iovSorter);
176  cond::Time_t l = std::get<0>(m_data->iovBuffer.front());
177  if( m_data->synchronizationType != cond::SYNCH_ANY && m_data->synchronizationType != cond::SYNCH_VALIDATION ){
178  // retrieve the last since
179  cond::Time_t last = 0;
180  cond::Hash h;
181  m_session->iovSchema().iovTable().getLastIov( m_data->tag, last, h );
182  // check if the min iov is greater then the last since
183  if( l <= last ){
184  std::stringstream msg;
185  msg << "Can't insert iov since "<<l<<" on the tag "<< m_data->tag<<": last since is "<<last<<
186  " and synchronization is \""<<cond::synchronizationTypeNames( m_data->synchronizationType )<<"\"";
187  throwException( msg.str(),"IOVEditor::flush");
188  }
189  }
190 
191  // insert the new iovs
192  m_session->iovSchema().iovTable().insertMany( m_data->tag, m_data->iovBuffer );
193  m_data->iovBuffer.clear();
194  ret = true;
195  }
196  return ret;
197  }
std::string synchronizationTypeNames(SynchronizationType type)
Definition: Types.cc:46
void checkTransaction(const std::string &ctx)
Definition: IOVEditor.cc:203
std::shared_ptr< SessionImpl > m_session
Definition: IOVEditor.h:85
unsigned long long Time_t
Definition: Time.h:16
std::string Hash
Definition: Types.h:47
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
bool iovSorter(const std::tuple< cond::Time_t, cond::Hash, boost::posix_time::ptime > &f, const std::tuple< cond::Time_t, cond::Hash, boost::posix_time::ptime > &s)
Definition: IOVEditor.cc:150
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:11
void IOVEditor::insert ( cond::Time_t  since,
const cond::Hash payloadHash,
bool  checkType = false 
)

Definition at line 138 of file IOVEditor.cc.

References fileCollector::now.

Referenced by BeautifulSoup.PageElement::_invert(), cond::service::PoolDBOutputService::appendSinceTime(), cond::persistency::copyIov(), cond::persistency::copyTag(), cond::service::PoolDBOutputService::createNewIOV(), cond::persistency::importIovs(), and cond::persistency::migrateTag().

138  {
139  boost::posix_time::ptime now = boost::posix_time::microsec_clock::universal_time();
140  insert( since, payloadHash, now, checkType );
141  }
void insert(cond::Time_t since, const cond::Hash &payloadHash, bool checkType=false)
Definition: IOVEditor.cc:138
void IOVEditor::insert ( cond::Time_t  since,
const cond::Hash payloadHash,
const boost::posix_time::ptime &  insertionTime,
bool  checkType = false 
)

Definition at line 143 of file IOVEditor.cc.

References m_data.

Referenced by BeautifulSoup.PageElement::_invert().

143  {
144  if( m_data.get() ){
145  // here the type check could be added
146  m_data->iovBuffer.push_back( std::tie( since, payloadHash, insertionTime ) );
147  }
148  }
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
cond::Time_t IOVEditor::lastValidatedTime ( ) const

Definition at line 123 of file IOVEditor.cc.

References m_data, and cond::time::MIN_VAL().

123  {
124  return m_data.get() ? m_data->lastValidatedTime : cond::time::MIN_VAL;
125  }
const Time_t MIN_VAL(0)
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
void IOVEditor::load ( const std::string &  tag)

Definition at line 72 of file IOVEditor.cc.

References checkTransaction(), m_data, m_session, tag(), and cond::throwException().

Referenced by cond::persistency::Session::editIov(), MatrixToProcess.MatrixToProcess::getProcess(), and MatrixToProcess.MatrixToProcess::listAll().

72  {
73  checkTransaction( "IOVEditor::load" );
74  // loads the current header data in memory
75  if( !m_session->iovSchema().tagTable().select( tag, m_data->timeType, m_data->payloadType, m_data->synchronizationType,
76  m_data->endOfValidity, m_data->description, m_data->lastValidatedTime ) ){
77  cond::throwException( "Tag \""+tag+"\" has not been found in the database.","IOVEditor::load");
78  }
79  m_data->tag = tag;
80  m_data->exists = true;
81  m_data->change = false;
82  }
void checkTransaction(const std::string &ctx)
Definition: IOVEditor.cc:203
std::shared_ptr< SessionImpl > m_session
Definition: IOVEditor.h:85
void throwException(std::string const &message, std::string const &methodName)
Definition: Exception.cc:17
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
std::string tag() const
Definition: IOVEditor.cc:84
IOVEditor & IOVEditor::operator= ( const IOVEditor rhs)

Definition at line 66 of file IOVEditor.cc.

References m_data, and m_session.

66  {
67  m_data = rhs.m_data;
68  m_session = rhs.m_session;
69  return *this;
70  }
std::shared_ptr< SessionImpl > m_session
Definition: IOVEditor.h:85
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
std::string IOVEditor::payloadType ( ) const

Definition at line 93 of file IOVEditor.cc.

References m_data.

Referenced by cond::service::PoolDBOutputService::appendSinceTime(), cond::persistency::copyIov(), cond::service::PoolDBOutputService::createNewIOV(), and cond::persistency::importIovs().

93  {
94  return m_data.get() ? m_data->payloadType : "";
95  }
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
void IOVEditor::setDescription ( const std::string &  description)

Definition at line 116 of file IOVEditor.cc.

References description(), and m_data.

Referenced by cond::persistency::copyIov(), cond::persistency::copyTag(), cond::service::PoolDBOutputService::createNewIOV(), cond::persistency::importIovs(), and cond::persistency::migrateTag().

116  {
117  if( m_data.get() ) {
118  m_data->description = description;
119  m_data->change = true;
120  }
121  }
std::string description() const
Definition: IOVEditor.cc:112
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
void IOVEditor::setEndOfValidity ( cond::Time_t  validity)

Definition at line 105 of file IOVEditor.cc.

References m_data, and cond::rpcobgas::time.

Referenced by cond::service::PoolDBOutputService::closeIOV().

105  {
106  if( m_data.get() ) {
107  m_data->endOfValidity = time;
108  m_data->change = true;
109  }
110  }
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
void IOVEditor::setLastValidatedTime ( cond::Time_t  time)

Definition at line 127 of file IOVEditor.cc.

References m_data, and cond::rpcobgas::time.

127  {
128  if( m_data.get() ) {
129  m_data->lastValidatedTime = time;
130  m_data->change = true;
131  }
132  }
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
void IOVEditor::setValidationMode ( )

Definition at line 134 of file IOVEditor.cc.

References m_data.

Referenced by cond::persistency::copyTag().

134  {
135  if( m_data.get() ) m_data->validationMode = true;
136  }
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
cond::SynchronizationType IOVEditor::synchronizationType ( ) const

Definition at line 97 of file IOVEditor.cc.

References m_data, and cond::SYNCH_ANY.

Referenced by IOVEditor().

97  {
98  return m_data.get()? m_data->synchronizationType : cond::SYNCH_ANY ;
99  }
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
std::string IOVEditor::tag ( ) const

Definition at line 84 of file IOVEditor.cc.

References m_data.

Referenced by IOVEditor(), load(), and Inspector.Inspector::SetTag().

84  {
85  return m_data.get()? m_data->tag : "" ;
86  }
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84
cond::TimeType IOVEditor::timeType ( ) const

Definition at line 89 of file IOVEditor.cc.

References cond::invalid, and m_data.

Referenced by cond::persistency::copyIov(), cond::persistency::importIovs(), and IOVEditor().

89  {
90  return m_data.get() ? m_data->timeType : cond::invalid;
91  }
std::shared_ptr< IOVEditorData > m_data
Definition: IOVEditor.h:84

Member Data Documentation

std::shared_ptr<IOVEditorData> cond::persistency::IOVEditor::m_data
private
std::shared_ptr<SessionImpl> cond::persistency::IOVEditor::m_session
private

Definition at line 85 of file IOVEditor.h.

Referenced by checkTransaction(), flush(), load(), and operator=().