19 const std::string& token
20 ):m_dbSess(dbSess),m_token(token),
31 co <<
" no token";
return;
34 co <<
" no iov for token " <<
m_token;
38 co <<
"\nStamp: " <<
m_iov->comment()
39 <<
"; time " <<
m_iov->timestamp()
40 <<
"; revision " <<
m_iov->revision();
42 if(
m_iov->iovs().empty() )
45 co <<
". size " <<
m_iov->iovs().size()
46 <<
"; last since " <<
m_iov->iovs().back().sinceTime();
50 std::ostringstream
out;
58 std::ostringstream
out;
61 out <<
"\n" << message <<
" for time: " <<
time;
70 reportError(
"cond::IOVEditor::create cannot create a IOV using an initialized Editor");
82 reportError(
"cond::IOVEditor::create cannot create a IOV using an initialized Editor");
86 reportError(
"cond::IOVEditor::create time not in global range",lastTill);
96 reportError(
"cond::IOVEditor::init cannot init w/o token change");
106 return m_iov->firstSince();
110 return m_iov->lastTill();
114 return m_iov->timeType();
131 const std::string& payloadToken
135 if(
m_iov->iovs().empty() )
136 reportError(
"cond::IOVEditor::insert cannot inser into empty IOV sequence",tillTime);
139 reportError(
"cond::IOVEditor::insert time not in global range",tillTime);
142 reportError(
"cond::IOVEditor::insert IOV not in range",tillTime);
145 unsigned int ret =
m_iov->add(newSince, payloadToken);
153 if (
values.empty())
return;
158 reportError(
"cond::IOVEditor::bulkInsert first time not in global range",firstTime);
161 reportError(
"cond::IOVEditor::bulkInsert last time not in global range",lastTime);
164 ( !
m_iov->iovs().empty() && firstTime<=
m_iov->iovs().back().sinceTime())
166 reportError(
"cond::IOVEditor::bulkInsert IOV not in range",firstTime);
168 for(std::vector< std::pair<cond::Time_t,std::string> >::const_iterator it=
values.begin(); it!=
values.end(); ++it){
170 m_iov->add(it->first,it->second);
177 if (values.empty())
return;
182 reportError(
"cond::IOVEditor::bulkInsert first time not in global range",firstTime);
185 reportError(
"cond::IOVEditor::bulkInsert last time not in global range",lastTime);
188 ( !
m_iov->iovs().empty() && firstTime<=
m_iov->iovs().back().sinceTime())
189 )
reportError(
"cond::IOVEditor::bulkInsert IOV not in range",firstTime);
198 m_iov->stamp(icomment, append);
205 if(
m_token.empty() )
reportError(
"cond::IOVEditor::updateClosure cannot change non-existing IOV index");
207 m_iov->updateLastTill(newtillTime);
213 const std::string&payloadToken
216 reportError(
"cond::IOVEditor::appendIOV cannot append to non-existing IOV index");
224 reportError(
"cond::IOVEditor::append time not in global range",sinceTime);
227 if( !
m_iov->iovs().empty() ){
230 if( sinceTime<= lastValidSince){
231 reportError(
"IOVEditor::append Error: since time out of range: below last since",sinceTime);
237 unsigned int ret =
m_iov->add(sinceTime,payloadToken);
245 const std::string& payloadToken
250 reportError(
"cond::IOVEditor::freeInsert cannot append to non-existing IOV index");
261 reportError(
"cond::IOVEditor::freeInsert time not in global range",sinceTime);
265 if (
m_iov->exist(sinceTime))
266 reportError(
"cond::IOVEditor::freeInsert sinceTime already existing",sinceTime);
272 unsigned int ret =
m_iov->add(sinceTime,payloadToken);
281 if(
m_token.empty() )
reportError(
"cond::IOVEditor::truncate cannot delete to non-existing IOV sequence");
283 if (
m_iov->piovs().empty())
return 0;
285 std::string tokenStr =
m_iov->piovs().back().wrapperToken();
288 unsigned int ret =
m_iov->truncate();
297 if(
m_token.empty() )
reportError(
"cond::IOVEditor::deleteEntries cannot delete to non-existing IOV sequence");
300 std::string tokenStr;
303 for(payloadIt=
m_iov->piovs().begin();payloadIt!=payloadItEnd;++payloadIt){
304 tokenStr=payloadIt->wrapperToken();
309 m_iov->piovs().clear();
314 if( !
m_token.empty() )
reportError(
"cond::IOVEditor::import IOV sequence already exists, cannot import");
const TimeTypeSpecs timeTypeSpecs[]
const std::string & connectionString() const
void debugInfo(std::ostream &co) const
bool deleteObject(const std::string &objectId)
void reportError(std::string message) const
bool validTime(cond::Time_t time, cond::TimeType timetype) const
Container::const_iterator const_iterator
unsigned int freeInsert(cond::Time_t sinceTime, const std::string &payloadToken)
insert a payload with known since in any position
void create(cond::TimeType timetype)
unsigned int truncate(bool withPayload=false)
unsigned long long Time_t
TimeType timetype() const
std::string storeObject(const T *object, const std::string &containerName)
unsigned int insert(cond::Time_t tillTime, const std::string &payloadToken)
Assign a payload with till time. Returns the payload index in the iov sequence.
void updateClosure(cond::Time_t newtillTime)
Update the closure of the iov sequence.
unsigned int append(cond::Time_t sinceTime, const std::string &payloadToken)
Append a payload with known since time. The previous last payload's till time will be adjusted to the...
void import(const std::string &sourceIOVtoken)
static std::string container()
void bulkAppend(std::vector< std::pair< cond::Time_t, std::string > > &values)
Bulk append of iov chunck.
boost::shared_ptr< cond::IOVSequence > m_iov
void stamp(std::string const &icomment, bool append=false)
void deleteEntries(bool withPayload=false)
IOVEditor(cond::DbSession &dbSess)
bool updateObject(const T *object, const std::string &objectId)
boost::shared_ptr< T > getTypedObject(const std::string &objectId)
Time_t firstSince() const