CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Utilities.h
Go to the documentation of this file.
1 #ifndef Utilities_Utilities_h
2 #define Utilities_Utilities_h
3 
6 #include <boost/program_options.hpp>
7 #include <sstream>
8 #include <set>
9 
10 namespace edm {
11  class ServiceToken;
12 }
13 
14 namespace cond {
15  class DbConnection;
16 
17  class UtilitiesError : public Exception {
18  public:
20  virtual ~UtilitiesError() throw();
21  };
22 
23  class Utilities {
24  public:
25  Utilities( const std::string& commandName, std::string positionalParameter=std::string("") );
26 
27  virtual ~Utilities();
28 
29  virtual int execute();
30  int run( int argc, char** argv );
31 
33  void addConnectOption();
34  void addConnectOption(const std::string& connectionOptionName,
35  const std::string& shortName,
36  const std::string& helpEntry );
37  void addLogDBOption();
38  void addDictionaryOption();
39  void addConfigFileOption();
40  void addSQLOutputOption();
41 
42  template <typename T> void addOption(const std::string& fullName,
43  const std::string& shortName,
44  const std::string& helpEntry );
45 
46  void parseCommand( int argc, char** argv );
47 
55  template <typename T> T getOptionValue(const std::string& fullName);
56  bool hasOptionValue(const std::string& fullName);
57  bool hasDebug();
59  cond::DbSession openDbSession( const std::string& connectionParameterName, bool readOnly=false );
60  cond::DbSession openDbSession( const std::string& connectionParameterName, const std::string& role, bool readOnly=false );
61 
62  protected:
63  cond::DbSession newDbSession( const std::string& connectionString, bool readOnly=false );
64  cond::DbSession newDbSession( const std::string& connectionString, const std::string& role, bool readOnly=false );
66 
67  private:
68 
69  std::string getValueIfExists(const std::string& fullName);
70  void sendException( const std::string& message );
71  void sendError( const std::string& message );
72 
73  protected:
75 
76  private:
77 
79  //boost::program_options::options_description m_description;
80  boost::program_options::options_description m_options;
81  boost::program_options::positional_options_description m_positionalOptions;
82  boost::program_options::variables_map m_values;
84  std::set<std::string> m_dbSessions;
85  };
86 
87 
88 template <typename T> inline void Utilities::addOption(const std::string& fullName,
89  const std::string& shortName,
90  const std::string& helpEntry){
91  std::stringstream optInfo;
92  optInfo << fullName;
93  if(!shortName.empty()) optInfo << ","<<shortName;
94  m_options.add_options()
95  (optInfo.str().c_str(),boost::program_options::value<T>(),helpEntry.c_str());
96 }
97 
98 template <> inline void Utilities::addOption<bool>(const std::string& fullName,
99  const std::string& shortName,
100  const std::string& helpEntry){
101  std::stringstream optInfo;
102  optInfo << fullName;
103  if(!shortName.empty()) optInfo << ","<<shortName;
104  m_options.add_options()
105  (optInfo.str().c_str(),helpEntry.c_str());
106 }
107 
108 }
109 
110 
111 template <typename T> inline T cond::Utilities::getOptionValue(const std::string& fullName){
112  const void* found = m_options.find_nothrow(fullName, false);
113  if(!found){
114  std::stringstream message;
115  message << "Utilities::getOptionValue: option \"" << fullName << "\" is not known by the command.";
116  sendException(message.str());
117  }
118 
119  if (!m_values.count(fullName)) {
120  std::stringstream message;
121  message << "Error: Option \"" << fullName << "\" has not been provided.";
122  sendError(message.str());
123  }
124  return m_values[fullName].as<T>();
125 }
126 
127 #endif
128 
129 
std::string getUserValue()
Definition: Utilities.cc:163
void parseCommand(int argc, char **argv)
Definition: Utilities.cc:145
virtual ~UtilitiesError()
Definition: Utilities.cc:23
int run(int argc, char **argv)
Definition: Utilities.cc:53
std::string getValueIfExists(const std::string &fullName)
Definition: Utilities.cc:273
UtilitiesError(const std::string &message)
Definition: Utilities.cc:21
void addConnectOption()
Definition: Utilities.cc:111
std::string message() const
Definition: Exception.cc:187
virtual ~Utilities()
Definition: Utilities.cc:45
std::string getPasswordValue()
Definition: Utilities.cc:167
edm::ServiceToken * m_currentToken
Definition: Utilities.h:74
std::string getDictionaryValue()
Definition: Utilities.cc:179
std::string getConfigFileValue()
Definition: Utilities.cc:183
void addOption(const std::string &fullName, const std::string &shortName, const std::string &helpEntry)
Definition: Utilities.h:88
std::set< std::string > m_dbSessions
Definition: Utilities.h:84
std::string getAuthenticationPathValue()
Definition: Utilities.cc:159
cond::DbConnection * m_dbConnection
Definition: Utilities.h:83
void addAuthenticationOptions()
Definition: Utilities.cc:104
void addSQLOutputOption()
Definition: Utilities.cc:141
void addConfigFileOption()
Definition: Utilities.cc:136
std::string getConnectValue()
Definition: Utilities.cc:171
void addLogDBOption()
Definition: Utilities.cc:126
void initializePluginManager()
Definition: Utilities.cc:202
T getOptionValue(const std::string &fullName)
Definition: Utilities.h:111
string connectionString
Definition: autoCondHLT.py:4
string fullName
void addDictionaryOption()
Definition: Utilities.cc:131
Utilities(const std::string &commandName, std::string positionalParameter=std::string(""))
Definition: Utilities.cc:25
tuple argc
Definition: dir2webdir.py:38
std::string getLogDBValue()
Definition: Utilities.cc:175
boost::program_options::variables_map m_values
Definition: Utilities.h:82
bool hasOptionValue(const std::string &fullName)
Definition: Utilities.cc:188
void sendError(const std::string &message)
Definition: Utilities.cc:281
cond::DbSession openDbSession(const std::string &connectionParameterName, bool readOnly=false)
Definition: Utilities.cc:267
void sendException(const std::string &message)
Definition: Utilities.cc:285
std::string m_name
Definition: Utilities.h:78
cond::DbSession newDbSession(const std::string &connectionString, bool readOnly=false)
Definition: Utilities.cc:245
boost::program_options::options_description m_options
Definition: Utilities.h:80
long double T
virtual int execute()
Definition: Utilities.cc:49
void initializeForDbConnection()
Definition: Utilities.cc:206
boost::program_options::positional_options_description m_positionalOptions
Definition: Utilities.h:81