![]() |
![]() |
Public Member Functions | |
AlignSplitIOV () | |
int | execute () |
~AlignSplitIOV () |
Definition at line 35 of file aligncond_split_iov.cc.
cond::AlignSplitIOV::AlignSplitIOV | ( | ) |
Definition at line 43 of file aligncond_split_iov.cc.
References cond::Utilities::addAuthenticationOptions(), and cond::Utilities::addConnectOption().
:Utilities("aligncond_split_iov") { addConnectOption("sourceConnect","s","source connection string(required)"); addConnectOption("destConnect","d","destionation connection string(required)"); addOption<std::string>("sourceTag","i","tag to export( default = destination tag)"); addOption<std::string>("destTag","t","destination tag (required)"); addAuthenticationOptions(); addOption<bool>("verbose","v","verbose"); }
cond::AlignSplitIOV::~AlignSplitIOV | ( | ) |
Definition at line 54 of file aligncond_split_iov.cc.
{ }
int cond::AlignSplitIOV::execute | ( | ) | [virtual] |
Reimplemented from cond::Utilities.
Definition at line 59 of file aligncond_split_iov.cc.
References cond::MetaData::addMapping(), cond::IOVEditor::append(), cond::IOVProxy::begin(), cmsDriverOptions::counter, gather_cfg::cout, cond::IOVEditor::create(), idDealer::editor, cond::IOVProxy::end(), cond::TimeTypeSpecs::endValue, cond::MetaData::getToken(), cond::DbSession::getTypedObject(), o2o::iov, max(), min, cond::IOVService::payloadContainerName(), stor::utils::sleep(), cond::IOVEditor::stamp(), cond::DbTransaction::start(), cond::DbSession::storeObject(), cond::IOVProxy::timetype(), cond::IOVService::timeType(), cond::timeTypeSpecs, cond::IOVEditor::token(), cond::DbSession::transaction(), python::IdGenerator::transaction, and cond::userInfo().
{ initializePluginManager(); std::string sourceConnect = getOptionValue<std::string>("sourceConnect"); std::string destConnect = getOptionValue<std::string>("destConnect"); std::string destTag = getOptionValue<std::string>("destTag"); std::string sourceTag(destTag); if (hasOptionValue("sourceTag")) sourceTag = getOptionValue<std::string>("sourceTag"); bool verbose = hasOptionValue("verbose"); cond::Time_t since = std::numeric_limits<cond::Time_t>::min(); cond::Time_t till = std::numeric_limits<cond::Time_t>::max(); std::string sourceiovtoken; cond::TimeType sourceiovtype; std::string destiovtoken; cond::DbSession sourcedb = openDbSession("sourceConnect", false); cond::DbSession destdb = openDbSession("destConnect"); sourcedb.transaction().start(false); cond::MetaData sourceMetadata(sourcedb); sourceiovtoken = sourceMetadata.getToken(sourceTag); if (sourceiovtoken.empty()) throw std::runtime_error(std::string("tag ") + sourceTag + std::string(" not found")); if (verbose) std::cout << "source iov token: " << sourceiovtoken << std::endl; cond::IOVService iovmanager(sourcedb); sourceiovtype = iovmanager.timeType(sourceiovtoken); std::string payloadContainer = iovmanager.payloadContainerName(sourceiovtoken); if (verbose) std::cout << "source iov type " << sourceiovtype << std::endl; since = std::max(since, cond::timeTypeSpecs[sourceiovtype].beginValue); till = std::min(till, cond::timeTypeSpecs[sourceiovtype].endValue); cond::IOVProxy iov(sourcedb, sourceiovtoken, true, false); unsigned int counter = 0; for (cond::IOVProxy::const_iterator ioviterator = iov.begin(); ioviterator != iov.end(); ++ioviterator) { std::stringstream newTag; newTag << destTag << "_" << counter; std::cout << "iov " << counter << ":\t" << ioviterator->since() << " \t " << ioviterator->till() << std::endl; if (verbose) std::cout << "\t" << ioviterator->token() << std::endl; boost::shared_ptr<Alignments> alignments = sourcedb.getTypedObject<Alignments>(ioviterator->token()); cond::DbScopedTransaction transaction(destdb); transaction.start(false); std::string objToken = destdb.storeObject(alignments.get(), "Alignments"); cond::IOVEditor editor(destdb); editor.create(iov.timetype(), cond::timeTypeSpecs[sourceiovtype].endValue); editor.append(cond::timeTypeSpecs[sourceiovtype].beginValue, objToken); std::string iovToken = editor.token(); editor.stamp(cond::userInfo(),false); cond::MetaData metadata(destdb); metadata.addMapping(newTag.str(), iovToken, sourceiovtype); transaction.commit(); ::sleep(1); ++counter; } std::cout << "Total # of payload objects: " << counter << std::endl; return 0; }