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

#include <IOVService.h>

Public Member Functions

void deleteAll (bool withPayload=false)
 
std::string exportIOVRangeWithPayload (cond::DbSession &destDB, const std::string &iovToken, const std::string &destToken, cond::Time_t since, cond::Time_t till, bool outOfOrder)
 
std::string exportIOVWithPayload (cond::DbSession &destDB, const std::string &iovToken)
 
 IOVService (cond::DbSession &dbSess)
 
bool isValid (const std::string &iovToken, cond::Time_t currenttime)
 
IOVEditornewIOVEditor (const std::string &token="")
 
std::string payloadContainerName (const std::string &iovtoken)
 
std::string payloadToken (const std::string &iovToken, cond::Time_t currenttime)
 
cond::TimeType timeType (const std::string &iovToken)
 
std::pair< cond::Time_t,
cond::Time_t
validity (const std::string &iovToken, cond::Time_t currenttime)
 
virtual ~IOVService ()
 

Private Member Functions

cond::IOVSequence const & iovSeq (const std::string &iovToken)
 

Private Attributes

cond::DbSession m_dbSess
 
boost::shared_ptr
< cond::IOVSequence
m_iov
 
std::string m_token
 

Detailed Description

Definition at line 10 of file IOVService.h.

Constructor & Destructor Documentation

cond::IOVService::IOVService ( cond::DbSession dbSess)

Definition at line 14 of file IOVService.cc.

14  :
15  m_dbSess(dbSess) {}
cond::DbSession m_dbSess
Definition: IOVService.h:62
cond::IOVService::~IOVService ( )
virtual

Definition at line 17 of file IOVService.cc.

17 {}

Member Function Documentation

void cond::IOVService::deleteAll ( bool  withPayload = false)

Definition at line 96 of file IOVService.cc.

References ora::PVector< Tp >::begin(), cont, cond::IOVNames::container(), ora::Database::containerHandle(), EcalCondDB::db, ora::Container::erase(), ora::Container::flush(), ora::ContainerIterator::get(), o2o::iov, cond::IOVSequence::iovs(), ora::ContainerIterator::itemId(), ora::Container::iterator(), and ora::ContainerIterator::next().

96  {
99  ora::ContainerIterator it = cont.iterator();
100  while ( it.next() ) {
101  if(withPayload){
102  std::string tokenStr;
103  IOVSequence::const_iterator payloadIt;
104  boost::shared_ptr<cond::IOVSequence> iov = it.get<cond::IOVSequence>();
105  IOVSequence::const_iterator payloadItBegin=iov->iovs().begin();
106  IOVSequence::const_iterator payloadItEnd=iov->iovs().end();
107  for(payloadIt=payloadItBegin;payloadIt!=payloadItEnd;++payloadIt){
108  tokenStr=payloadIt->wrapperToken();
109  m_dbSess.deleteObject( tokenStr );
110  }
111  }
112  cont.erase( it.itemId() );
113  }
114  cont.flush();
115 }
bool deleteObject(const std::string &objectId)
Definition: DbSession.cc:207
boost::shared_ptr< T > get()
Definition: Container.h:105
tuple db
Definition: EcalCondDB.py:151
cond::DbSession m_dbSess
Definition: IOVService.h:62
Container::const_iterator const_iterator
Definition: IOVSequence.h:27
tuple iov
Definition: o2o.py:307
Container containerHandle(const std::string &name)
Definition: Database.cc:236
void erase(int itemId)
Definition: Container.cc:133
int cont
static std::string container()
Definition: futureIOVNames.h:7
ContainerIterator iterator()
Definition: Container.cc:79
ora::Database & storage()
Definition: DbSession.cc:162
std::string cond::IOVService::exportIOVRangeWithPayload ( cond::DbSession destDB,
const std::string &  iovToken,
const std::string &  destToken,
cond::Time_t  since,
cond::Time_t  till,
bool  outOfOrder 
)

export IOV selected by token within selected range and associated payload to another database return new iov token string

maybe no longer required...

Definition at line 146 of file IOVService.cc.

References prof2calltree::back, cond::IOVNames::container(), ora::PVector< Tp >::end(), edm::hlt::Exception, cond::IOVSequence::find(), cond::IOVSequence::firstSince(), cond::DbSession::getTypedObject(), cond::DbSession::importObject(), o2o::iov, cond::IOVSequence::iovs(), cond::IOVSequence::lastTill(), max(), cond::IOVSequence::metadataToken(), cond::DbSession::storeObject(), cond::IOVSequence::timeType(), cond::DbSession::updateObject(), and cond::userInfo().

152  {
153 
154 
156  //loadDicts(iovToken);
157  cond::IOVSequence const & iov=iovSeq(iovToken);
158  since = std::max(since, iov.firstSince());
159  IOVSequence::const_iterator ifirstTill=iov.find(since);
160  IOVSequence::const_iterator isecondTill=iov.find(till);
161  if( isecondTill!=iov.iovs().end() ) isecondTill++;
162 
163  if (ifirstTill==isecondTill)
164  throw cond::Exception("IOVServiceImpl::exportIOVRangeWithPayload Error: empty input range");
165 
166  // since > ifirstTill->sinceTime() used to overwrite the actual time
167  //since = ifirstTill->sinceTime();
168 
169  boost::shared_ptr<cond::IOVSequence> newiovref;
170  //FIXME more option and eventually ability to resume (roll back is difficult)
171  std::string dToken = destToken;
172  if (dToken.empty()) {
173  // create a new one
174  newiovref.reset( new cond::IOVSequence(iov.timeType(), iov.lastTill(),iov.metadataToken()));
175  dToken = destDB.storeObject( newiovref.get(),cond::IOVNames::container());
176  } else {
177  newiovref = destDB.getTypedObject<cond::IOVSequence>(destToken);
178  if (newiovref->iovs().empty()) ; // do not waist time
179  else if (outOfOrder) {
180  for( IOVSequence::const_iterator it=ifirstTill;
181  it!=isecondTill; ++it)
182  if (newiovref->exist(it->sinceTime()))
183  throw cond::Exception("IOVServiceImpl::exportIOVRangeWithPayload Error: since time already exists");
184  } else if (since <= newiovref->iovs().back().sinceTime())
185  throw cond::Exception("IOVServiceImpl::exportIOVRangeWithPayload Error: since time out of range, below last since");
186  destDB.updateObject( newiovref.get(),destToken );
187  }
188 
189  cond::Time_t lsince = since;
190  for( IOVSequence::const_iterator it=ifirstTill;
191  it!=isecondTill; ++it, lsince=it->sinceTime()){
192  // first since overwritten by global since...
193 
194  std::string newPtoken = destDB.importObject( m_dbSess,it->wrapperToken());
195  newiovref->add(lsince, newPtoken);
196  }
197  newiovref->stamp(cond::userInfo(),false);
198  destDB.updateObject( newiovref.get(),dToken );
199  return dToken;
200 }
cond::Time_t lastTill() const
Definition: IOVSequence.h:63
iterator end()
Definition: PVector.h:67
std::string const & metadataToken() const
Definition: IOVSequence.h:74
const_iterator find(cond::Time_t time) const
Definition: IOVSequence.cc:85
cond::Time_t firstSince() const
Definition: IOVSequence.h:61
Container const & iovs() const
Definition: IOVSequence.cc:54
cond::DbSession m_dbSess
Definition: IOVService.h:62
Container::const_iterator const_iterator
Definition: IOVSequence.h:27
unsigned long long Time_t
Definition: Time.h:16
tuple iov
Definition: o2o.py:307
const T & max(const T &a, const T &b)
std::string storeObject(const T *object, const std::string &containerName)
Definition: DbSession.h:104
std::string importObject(cond::DbSession &fromDatabase, const std::string &objectId)
Definition: DbSession.cc:215
static std::string container()
Definition: futureIOVNames.h:7
std::string userInfo()
Definition: IOVInfo.cc:9
bool updateObject(const T *object, const std::string &objectId)
Definition: DbSession.h:117
cond::IOVSequence const & iovSeq(const std::string &iovToken)
Definition: IOVService.cc:27
boost::shared_ptr< T > getTypedObject(const std::string &objectId)
Definition: DbSession.h:98
cond::TimeType timeType() const
Definition: IOVSequence.h:58
std::string cond::IOVService::exportIOVWithPayload ( cond::DbSession destDB,
const std::string &  iovToken 
)

export IOV selected by token and associated payload to another database return new iov token string

Definition at line 118 of file IOVService.cc.

References ora::PVector< Tp >::begin(), cond::IOVNames::container(), ora::PVector< Tp >::end(), cond::DbSession::importObject(), o2o::iov, cond::IOVSequence::iovs(), cond::IOVSequence::lastTill(), cond::IOVSequence::metadataToken(), cond::DbSession::storeObject(), and cond::IOVSequence::timeType().

119  {
120  cond::IOVSequence const & iov=iovSeq(iovToken);
121 
122  boost::shared_ptr<cond::IOVSequence> newiov(new cond::IOVSequence(iov.timeType(), iov.lastTill(),iov.metadataToken()));
123 
124  for( IOVSequence::const_iterator it=iov.iovs().begin();
125  it!=iov.iovs().end(); ++it){
126  std::string newPToken = destDB.importObject( m_dbSess, it->wrapperToken());
127  newiov->add(it->sinceTime(),newPToken);
128  }
129  return destDB.storeObject(newiov.get(), cond::IOVNames::container());
130 }
cond::Time_t lastTill() const
Definition: IOVSequence.h:63
iterator end()
Definition: PVector.h:67
std::string const & metadataToken() const
Definition: IOVSequence.h:74
iterator begin()
Definition: PVector.h:62
Container const & iovs() const
Definition: IOVSequence.cc:54
cond::DbSession m_dbSess
Definition: IOVService.h:62
Container::const_iterator const_iterator
Definition: IOVSequence.h:27
tuple iov
Definition: o2o.py:307
std::string storeObject(const T *object, const std::string &containerName)
Definition: DbSession.h:104
std::string importObject(cond::DbSession &fromDatabase, const std::string &objectId)
Definition: DbSession.cc:215
static std::string container()
Definition: futureIOVNames.h:7
cond::IOVSequence const & iovSeq(const std::string &iovToken)
Definition: IOVService.cc:27
cond::TimeType timeType() const
Definition: IOVSequence.h:58
cond::IOVSequence const & cond::IOVService::iovSeq ( const std::string &  iovToken)
private

Definition at line 27 of file IOVService.cc.

27  {
28  if (m_token!=iovToken) {
30  m_token=iovToken;
31  }
32  return *m_iov;
33 }
cond::DbSession m_dbSess
Definition: IOVService.h:62
std::string m_token
Definition: IOVService.h:63
boost::shared_ptr< cond::IOVSequence > m_iov
Definition: IOVService.h:64
boost::shared_ptr< T > getTypedObject(const std::string &objectId)
Definition: DbSession.h:98
bool cond::IOVService::isValid ( const std::string &  iovToken,
cond::Time_t  currenttime 
)

Definition at line 54 of file IOVService.cc.

References cond::IOVSequence::firstSince(), o2o::iov, and cond::IOVSequence::lastTill().

55  {
56 
57  cond::IOVSequence const & iov=iovSeq(iovToken);
58  return ( currenttime >= iov.firstSince() &&
59  currenttime <= iov.lastTill() );
60 }
cond::Time_t lastTill() const
Definition: IOVSequence.h:63
cond::Time_t firstSince() const
Definition: IOVSequence.h:61
tuple iov
Definition: o2o.py:307
cond::IOVSequence const & iovSeq(const std::string &iovToken)
Definition: IOVService.cc:27
cond::IOVEditor * cond::IOVService::newIOVEditor ( const std::string &  token = "")

create an editor to the iov selected by the token user aquires the ownership of the pointer. Need explicit delete after usage

Definition at line 20 of file IOVService.cc.

20  {
21  return new cond::IOVEditor( m_dbSess,token);
22 }
cond::DbSession m_dbSess
Definition: IOVService.h:62
std::string cond::IOVService::payloadContainerName ( const std::string &  iovtoken)

Definition at line 83 of file IOVService.cc.

References ora::PVector< Tp >::front(), o2o::iov, cond::IOVSequence::iovs(), and cond::parseToken().

Referenced by cond::AlignSplitIOV::execute().

83  {
84  cond::IOVSequence const & iov=iovSeq(iovToken);
85 
86  // FIXME move to metadata
87  std::string payloadtokstr=iov.iovs().front().wrapperToken();
88  std::pair<std::string,int> oidData = parseToken( payloadtokstr );
89  return oidData.first;
90 }
std::pair< std::string, int > parseToken(const std::string &objectId)
Definition: PoolToken.cc:16
Container const & iovs() const
Definition: IOVSequence.cc:54
tuple iov
Definition: o2o.py:307
reference front()
Definition: PVector.h:152
cond::IOVSequence const & iovSeq(const std::string &iovToken)
Definition: IOVService.cc:27
std::string cond::IOVService::payloadToken ( const std::string &  iovToken,
cond::Time_t  currenttime 
)

Definition at line 38 of file IOVService.cc.

References ora::PVector< Tp >::end(), cond::IOVSequence::find(), o2o::iov, and cond::IOVSequence::iovs().

Referenced by l1t::DataWriter::payloadToken().

39  {
40  cond::IOVSequence const & iov=iovSeq(iovToken);
41  cond::IOVSequence::const_iterator iEnd=iov.find(currenttime);
42  if( iEnd==iov.iovs().end() ){
43  return "";
44  }else{
45  return iEnd->wrapperToken();
46  }
47 }
iterator end()
Definition: PVector.h:67
const_iterator find(cond::Time_t time) const
Definition: IOVSequence.cc:85
Container const & iovs() const
Definition: IOVSequence.cc:54
Container::const_iterator const_iterator
Definition: IOVSequence.h:27
tuple iov
Definition: o2o.py:307
cond::IOVSequence const & iovSeq(const std::string &iovToken)
Definition: IOVService.cc:27
cond::TimeType cond::IOVService::timeType ( const std::string &  iovToken)

Definition at line 49 of file IOVService.cc.

References o2o::iov, and cond::IOVSequence::timeType().

Referenced by cond::AlignSplitIOV::execute().

49  {
50  cond::IOVSequence const & iov=iovSeq(iovToken);
51  return iov.timeType();
52 }
tuple iov
Definition: o2o.py:307
cond::IOVSequence const & iovSeq(const std::string &iovToken)
Definition: IOVService.cc:27
cond::TimeType timeType() const
Definition: IOVSequence.h:58
std::pair< cond::Time_t, cond::Time_t > cond::IOVService::validity ( const std::string &  iovToken,
cond::Time_t  currenttime 
)

Definition at line 63 of file IOVService.cc.

References ora::PVector< Tp >::end(), cond::IOVSequence::find(), cond::IOVSequence::firstSince(), o2o::iov, cond::IOVSequence::iovs(), and cond::IOVSequence::lastTill().

63  {
64 
65  cond::IOVSequence const & iov=iovSeq(iovToken);
66 
67  cond::Time_t since=iov.firstSince();
68  cond::Time_t till=iov.lastTill();
69  IOVSequence::const_iterator iter=iov.find(currenttime);
70  if (iter!=iov.iovs().end()) {
71  since=iter->sinceTime();
72  iter++;
73  if (iter!=iov.iovs().end())
74  till = iter->sinceTime()-1;
75  }
76  else {
77  since=iov.lastTill();
78  }
79  return std::pair<cond::Time_t, cond::Time_t>(since,till);
80 }
cond::Time_t lastTill() const
Definition: IOVSequence.h:63
iterator end()
Definition: PVector.h:67
const_iterator find(cond::Time_t time) const
Definition: IOVSequence.cc:85
cond::Time_t firstSince() const
Definition: IOVSequence.h:61
Container const & iovs() const
Definition: IOVSequence.cc:54
Container::const_iterator const_iterator
Definition: IOVSequence.h:27
unsigned long long Time_t
Definition: Time.h:16
tuple iov
Definition: o2o.py:307
cond::IOVSequence const & iovSeq(const std::string &iovToken)
Definition: IOVService.cc:27

Member Data Documentation

cond::DbSession cond::IOVService::m_dbSess
private

Definition at line 62 of file IOVService.h.

boost::shared_ptr<cond::IOVSequence> cond::IOVService::m_iov
private

Definition at line 64 of file IOVService.h.

std::string cond::IOVService::m_token
private

Definition at line 63 of file IOVService.h.