CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions
cond::AlignSplitIOV Class Reference
Inheritance diagram for cond::AlignSplitIOV:
cond::Utilities

Public Member Functions

 AlignSplitIOV ()
 
int execute ()
 
 ~AlignSplitIOV ()
 
- Public Member Functions inherited from cond::Utilities
void addAuthenticationOptions ()
 
void addConfigFileOption ()
 
void addConnectOption ()
 
void addConnectOption (const std::string &connectionOptionName, const std::string &shortName, const std::string &helpEntry)
 
void addDictionaryOption ()
 
void addLogDBOption ()
 
template<typename T >
void addOption (const std::string &fullName, const std::string &shortName, const std::string &helpEntry)
 
template<>
void addOption (const std::string &fullName, const std::string &shortName, const std::string &helpEntry)
 
void addSQLOutputOption ()
 
std::string getAuthenticationPathValue ()
 
std::string getConfigFileValue ()
 
std::string getConnectValue ()
 
std::string getDictionaryValue ()
 
std::string getLogDBValue ()
 
template<typename T >
T getOptionValue (const std::string &fullName)
 
std::string getPasswordValue ()
 
std::string getUserValue ()
 
bool hasDebug ()
 
bool hasOptionValue (const std::string &fullName)
 
void initializePluginManager ()
 
cond::DbSession openDbSession (const std::string &connectionParameterName, bool readOnly=false)
 
void parseCommand (int argc, char **argv)
 
int run (int argc, char **argv)
 
 Utilities (const std::string &commandName, std::string positionalParameter=std::string(""))
 
virtual ~Utilities ()
 

Detailed Description

Definition at line 35 of file aligncond_split_iov.cc.

Constructor & Destructor Documentation

cond::AlignSplitIOV::AlignSplitIOV ( )

Definition at line 43 of file aligncond_split_iov.cc.

References cond::Utilities::addAuthenticationOptions(), and cond::Utilities::addConnectOption().

44  :Utilities("aligncond_split_iov")
45 {
46  addConnectOption("sourceConnect","s","source connection string(required)");
47  addConnectOption("destConnect","d","destionation connection string(required)");
48  addOption<std::string>("sourceTag","i","tag to export( default = destination tag)");
49  addOption<std::string>("destTag","t","destination tag (required)");
51  addOption<bool>("verbose","v","verbose");
52 }
void addConnectOption()
Definition: Utilities.cc:111
void addAuthenticationOptions()
Definition: Utilities.cc:104
Utilities(const std::string &commandName, std::string positionalParameter=std::string(""))
Definition: Utilities.cc:35
cond::AlignSplitIOV::~AlignSplitIOV ( )

Definition at line 54 of file aligncond_split_iov.cc.

55 {
56 
57 }

Member Function Documentation

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::IOVService::timeType(), cond::IOVProxy::timetype(), cond::timeTypeSpecs, cond::IOVEditor::token(), cond::DbSession::transaction(), python.IdGenerator::transaction, and cond::userInfo().

60 {
62 
63  std::string sourceConnect = getOptionValue<std::string>("sourceConnect");
64  std::string destConnect = getOptionValue<std::string>("destConnect");
65 
66  std::string destTag = getOptionValue<std::string>("destTag");
67  std::string sourceTag(destTag);
68  if (hasOptionValue("sourceTag"))
69  sourceTag = getOptionValue<std::string>("sourceTag");
70 
71  bool verbose = hasOptionValue("verbose");
72 
75 
76  std::string sourceiovtoken;
77  cond::TimeType sourceiovtype;
78 
79  std::string destiovtoken;
80 
81  cond::DbSession sourcedb = openDbSession("sourceConnect", false);
82  cond::DbSession destdb = openDbSession("destConnect");
83 
84  sourcedb.transaction().start(false);
85  cond::MetaData sourceMetadata(sourcedb);
86  sourceiovtoken = sourceMetadata.getToken(sourceTag);
87  if (sourceiovtoken.empty())
88  throw std::runtime_error(std::string("tag ") + sourceTag + std::string(" not found"));
89 
90  if (verbose)
91  std::cout << "source iov token: " << sourceiovtoken << std::endl;
92 
93  cond::IOVService iovmanager(sourcedb);
94  sourceiovtype = iovmanager.timeType(sourceiovtoken);
95  std::string payloadContainer = iovmanager.payloadContainerName(sourceiovtoken);
96 
97  if (verbose)
98  std::cout << "source iov type " << sourceiovtype << std::endl;
99 
100  since = std::max(since, cond::timeTypeSpecs[sourceiovtype].beginValue);
101  till = std::min(till, cond::timeTypeSpecs[sourceiovtype].endValue);
102 
103  cond::IOVProxy iov(sourcedb, sourceiovtoken, true, false);
104  unsigned int counter = 0;
105  for (cond::IOVProxy::const_iterator ioviterator = iov.begin();
106  ioviterator != iov.end();
107  ++ioviterator) {
108 
109  std::stringstream newTag;
110  newTag << destTag << "_" << counter;
111 
112  std::cout << "iov " << counter << ":\t"
113  << ioviterator->since() << " \t "
114  << ioviterator->till() << std::endl;
115 
116  if (verbose)
117  std::cout << "\t" << ioviterator->token() << std::endl;
118 
119  boost::shared_ptr<Alignments> alignments = sourcedb.getTypedObject<Alignments>(ioviterator->token());
120 
122  transaction.start(false);
123 
124  std::string objToken = destdb.storeObject(alignments.get(), "Alignments");
125 
126  cond::IOVEditor editor(destdb);
127  editor.create(iov.timetype(), cond::timeTypeSpecs[sourceiovtype].endValue);
128  editor.append(cond::timeTypeSpecs[sourceiovtype].beginValue, objToken);
129  std::string iovToken = editor.token();
130  editor.stamp(cond::userInfo(),false);
131 
132  cond::MetaData metadata(destdb);
133  metadata.addMapping(newTag.str(), iovToken, sourceiovtype);
134  transaction.commit();
135 
136  ::sleep(1);
137 
138  ++counter;
139  }
140 
141  std::cout << "Total # of payload objects: " << counter << std::endl;
142 
143  return 0;
144 }
const TimeTypeSpecs timeTypeSpecs[]
Definition: Time.cc:22
DbTransaction & transaction()
Definition: DbSession.cc:153
#define min(a, b)
Definition: mlp_lapack.h:161
void sleep(Duration_t)
Definition: Utils.h:163
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
Definition: IOVProxy.h:84
TimeType
Definition: Time.h:21
int start(bool readOnly=false)
start transaction
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
void initializePluginManager()
Definition: Utilities.cc:202
tuple editor
Definition: idDealer.py:73
bool hasOptionValue(const std::string &fullName)
Definition: Utilities.cc:188
cond::DbSession openDbSession(const std::string &connectionParameterName, bool readOnly=false)
Definition: Utilities.cc:256
std::string userInfo()
Definition: IOVInfo.cc:9
tuple cout
Definition: gather_cfg.py:41
Time_t endValue
Definition: Time.h:46
boost::shared_ptr< T > getTypedObject(const std::string &objectId)
Definition: DbSession.h:98