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 cond {
11  class DbConnection;
12 
13  class UtilitiesError : public Exception {
14  public:
15  UtilitiesError(const std::string& message );
16  virtual ~UtilitiesError() throw();
17  };
18 
19  class Utilities {
20  public:
21  Utilities( const std::string& commandName, std::string positionalParameter=std::string("") );
22 
23  virtual ~Utilities();
24 
25  virtual int execute();
26  int run( int argc, char** argv );
27 
29  void addConnectOption();
30  void addConnectOption(const std::string& connectionOptionName,
31  const std::string& shortName,
32  const std::string& helpEntry );
33  void addLogDBOption();
34  void addDictionaryOption();
35  void addConfigFileOption();
36  void addSQLOutputOption();
37 
38  template <typename T> void addOption(const std::string& fullName,
39  const std::string& shortName,
40  const std::string& helpEntry );
41 
42  void parseCommand( int argc, char** argv );
43 
44  std::string getAuthenticationPathValue();
45  std::string getUserValue();
46  std::string getPasswordValue();
47  std::string getConnectValue();
48  std::string getLogDBValue();
49  std::string getDictionaryValue();
50  std::string getConfigFileValue();
51  template <typename T> T getOptionValue(const std::string& fullName);
52  bool hasOptionValue(const std::string& fullName);
53  bool hasDebug();
55  cond::DbSession openDbSession( const std::string& connectionParameterName, bool readOnly=false );
56  cond::DbSession openDbSession( const std::string& connectionParameterName, const std::string& role, bool readOnly=false );
57 
58  private:
59 
60  std::string getValueIfExists(const std::string& fullName);
61  void sendException( const std::string& message );
62  void sendError( const std::string& message );
64 
65  private:
66 
67  std::string m_name;
68  //boost::program_options::options_description m_description;
69  boost::program_options::options_description m_options;
70  boost::program_options::positional_options_description m_positionalOptions;
71  boost::program_options::variables_map m_values;
74  std::set<std::string> m_dbSessions;
75  };
76 
77 
78 template <typename T> inline void Utilities::addOption(const std::string& fullName,
79  const std::string& shortName,
80  const std::string& helpEntry){
81  std::stringstream optInfo;
82  optInfo << fullName;
83  if(!shortName.empty()) optInfo << ","<<shortName;
84  m_options.add_options()
85  (optInfo.str().c_str(),boost::program_options::value<T>(),helpEntry.c_str());
86 }
87 
88 template <> inline void Utilities::addOption<bool>(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(),helpEntry.c_str());
96 }
97 
98 }
99 
100 
101 template <typename T> inline T cond::Utilities::getOptionValue(const std::string& fullName){
102  const void* found = m_options.find_nothrow(fullName, false);
103  if(!found){
104  std::stringstream message;
105  message << "Utilities::getOptionValue: option \"" << fullName << "\" is not known by the command.";
106  sendException(message.str());
107  }
108 
109  if (!m_values.count(fullName)) {
110  std::stringstream message;
111  message << "Error: Option \"" << fullName << "\" has not been provided.";
112  sendError(message.str());
113  }
114  return m_values[fullName].as<T>();
115 }
116 
117 #endif
118 
119 
std::string getUserValue()
Definition: Utilities.cc:153
void parseCommand(int argc, char **argv)
Definition: Utilities.cc:135
virtual ~UtilitiesError()
Definition: Utilities.cc:23
int run(int argc, char **argv)
Definition: Utilities.cc:54
std::string getValueIfExists(const std::string &fullName)
Definition: Utilities.cc:267
UtilitiesError(const std::string &message)
Definition: Utilities.cc:21
bool m_pluginMgrInitialized
Definition: Utilities.h:73
void addConnectOption()
Definition: Utilities.cc:101
std::string message() const
Definition: Exception.cc:187
virtual ~Utilities()
Definition: Utilities.cc:46
std::string getPasswordValue()
Definition: Utilities.cc:157
std::string getDictionaryValue()
Definition: Utilities.cc:169
std::string getConfigFileValue()
Definition: Utilities.cc:173
void addOption(const std::string &fullName, const std::string &shortName, const std::string &helpEntry)
Definition: Utilities.h:78
std::set< std::string > m_dbSessions
Definition: Utilities.h:74
std::string getAuthenticationPathValue()
Definition: Utilities.cc:149
cond::DbConnection * m_dbConnection
Definition: Utilities.h:72
void addAuthenticationOptions()
Definition: Utilities.cc:94
void addSQLOutputOption()
Definition: Utilities.cc:131
void addConfigFileOption()
Definition: Utilities.cc:126
std::string getConnectValue()
Definition: Utilities.cc:161
void addLogDBOption()
Definition: Utilities.cc:116
void initializePluginManager()
Definition: Utilities.cc:192
T getOptionValue(const std::string &fullName)
Definition: Utilities.h:101
string fullName
void addDictionaryOption()
Definition: Utilities.cc:121
Utilities(const std::string &commandName, std::string positionalParameter=std::string(""))
Definition: Utilities.cc:25
tuple argc
Definition: dir2webdir.py:41
std::string getLogDBValue()
Definition: Utilities.cc:165
boost::program_options::variables_map m_values
Definition: Utilities.h:71
bool hasOptionValue(const std::string &fullName)
Definition: Utilities.cc:178
void sendError(const std::string &message)
Definition: Utilities.cc:275
cond::DbSession openDbSession(const std::string &connectionParameterName, bool readOnly=false)
Definition: Utilities.cc:258
void sendException(const std::string &message)
Definition: Utilities.cc:279
std::string m_name
Definition: Utilities.h:67
boost::program_options::options_description m_options
Definition: Utilities.h:69
long double T
virtual int execute()
Definition: Utilities.cc:50
void initializeForDbConnection()
Definition: Utilities.cc:208
boost::program_options::positional_options_description m_positionalOptions
Definition: Utilities.h:70