Reorganization of the ConfigurationReader class interface
authorGuilherme Maciel Ferreira <guilherme.maciel.ferreira@intra2net.com>
Wed, 23 Feb 2011 16:19:45 +0000 (17:19 +0100)
committerGuilherme Maciel Ferreira <guilherme.maciel.ferreira@intra2net.com>
Wed, 23 Feb 2011 16:19:45 +0000 (17:19 +0100)
- Sticking methods together
- Providing more descriptive name to some methods
- Adding new methods to encapsulate some functionalities

src/config/configurationreader.cpp
src/config/configurationreader.h

index 20ae2c9..6f95678 100644 (file)
@@ -33,6 +33,32 @@ ConfigurationReader::~ConfigurationReader()
 {
 }
 
+bool ConfigurationReader::parse(
+        const int argc,
+        char* argv[]
+)
+{
+    BOOST_ASSERT( argc > 0 );
+    BOOST_ASSERT( argv != NULL );
+
+    variables_map vm;
+    bool command_line_processed = process_command_line( argc, argv, vm );
+    bool configuration_file_processed = process_configuration_file( vm );
+
+    bool input_processed = command_line_processed && configuration_file_processed;
+    if (input_processed)
+    {
+        return parse_configuration_options( vm );
+    }
+
+    return false;
+}
+
+Configuration ConfigurationReader::get_configuration() const
+{
+    return Config;
+}
+
 options_description ConfigurationReader::get_generic_options() const
 {
     options_description options( "Generic options" );
@@ -44,6 +70,35 @@ options_description ConfigurationReader::get_generic_options() const
     return options;
 }
 
+bool ConfigurationReader::is_generic_options( const variables_map& vm ) const
+{
+    bool is_help = vm.count( HelpCmdStr );
+    bool is_version = vm.count( VersionCmdStr );
+    bool is_a_generic_option = is_help || is_version;
+
+    return is_a_generic_option;
+}
+
+bool ConfigurationReader::parse_generic_options(
+        const variables_map& vm,
+        const options_description& visible_options
+)
+{
+    if ( vm.count( HelpCmdStr ) )
+    {
+        cout << visible_options << endl;
+        return true;
+    }
+
+    if ( vm.count( VersionCmdStr ) )
+    {
+        cout << PROJECT_NAME << " version " << VERSION_STRING << endl;
+        return true;
+    }
+
+    return false;
+}
+
 options_description ConfigurationReader::get_configuration_options() const
 {
     options_description options( "Configuration" );
@@ -54,7 +109,38 @@ options_description ConfigurationReader::get_configuration_options() const
     return options;
 }
 
-bool ConfigurationReader::parse_command_line(
+bool ConfigurationReader::parse_configuration_options( const variables_map& vm )
+{
+    if ( vm.count( ConfigFileCmdStr ) )
+    {
+        string config_file_name = vm[ ConfigFileCmdStr ].as<string> ();
+        Config.set_config_file_name( config_file_name );
+
+        cout << ConfigFileCmdStr << "=" << config_file_name << endl;
+    }
+
+    if ( vm.count( LimitToNotifyCmdStr ) )
+    {
+        uint32_t limit_to_notify = vm[ LimitToNotifyCmdStr ].as<int> ();
+        Config.set_limit_to_notify( limit_to_notify );
+
+        cout << LimitToNotifyCmdStr << "=" << limit_to_notify << endl;
+    }
+
+    if ( vm.count( HostNameCmdStr ) )
+    {
+        string host_name = vm[ HostNameCmdStr ].as<string> ();
+        Host host = Config.get_host();
+        host.set_address( host_name );
+        Config.set_host( host );
+
+        cout << HostNameCmdStr << "=" << host_name << endl;
+    }
+
+    return true;
+}
+
+bool ConfigurationReader::process_command_line(
         const int argc,
         char* argv[],
         variables_map& vm
@@ -79,16 +165,9 @@ bool ConfigurationReader::parse_command_line(
                 positional( p ).run(), vm );
         notify( vm );
 
-        if ( vm.count( HelpCmdStr ) )
+        if ( is_generic_options( vm ) )
         {
-            cout << visible << endl;
-            return false;
-        }
-
-        if ( vm.count( VersionCmdStr ) )
-        {
-            cout << PROJECT_NAME << " version " << VERSION_STRING << endl;
-            return false;
+            return parse_generic_options( vm, visible );
         }
 
     }
@@ -101,16 +180,16 @@ bool ConfigurationReader::parse_command_line(
     return true;
 }
 
-bool ConfigurationReader::parse_configuration_file( variables_map& vm )
+bool ConfigurationReader::process_configuration_file( variables_map& vm )
 {
     string config_file_name = "";
-    if ( fill_configuration( vm ) )
+    if ( parse_configuration_options( vm ) )
         config_file_name = Config.get_config_file_name();
 
-    return parse_configuration_file( config_file_name, vm );
+    return process_configuration_file( config_file_name, vm );
 }
 
-bool ConfigurationReader::parse_configuration_file(
+bool ConfigurationReader::process_configuration_file(
         const string& config_file_name,
         variables_map& vm
 )
@@ -135,60 +214,3 @@ bool ConfigurationReader::parse_configuration_file(
 
     return true;
 }
-
-bool ConfigurationReader::parse(
-        const int argc,
-        char* argv[]
-)
-{
-    BOOST_ASSERT( argc > 0 );
-    BOOST_ASSERT( argv != NULL );
-
-    variables_map vm;
-    bool command_line_parsed = parse_command_line( argc, argv, vm );
-    bool configuration_file_parsed = parse_configuration_file( vm );
-
-    bool parser_success = command_line_parsed && configuration_file_parsed;
-    if (parser_success)
-    {
-        return fill_configuration( vm );
-    }
-
-    return false;
-}
-
-bool ConfigurationReader::fill_configuration( const variables_map& vm )
-{
-    if ( vm.count( ConfigFileCmdStr ) )
-    {
-        string config_file_name = vm[ ConfigFileCmdStr ].as<string> ();
-        Config.set_config_file_name( config_file_name );
-
-        cout << ConfigFileCmdStr << "=" << config_file_name << endl;
-    }
-
-    if ( vm.count( LimitToNotifyCmdStr ) )
-    {
-        uint32_t limit_to_notify = vm[ LimitToNotifyCmdStr ].as<int> ();
-        Config.set_limit_to_notify( limit_to_notify );
-
-        cout << LimitToNotifyCmdStr << "=" << limit_to_notify << endl;
-    }
-
-    if ( vm.count( HostNameCmdStr ) )
-    {
-        string host_name = vm[ HostNameCmdStr ].as<string> ();
-        Host host = Config.get_host();
-        host.set_address( host_name );
-        Config.set_host( host );
-
-        cout << HostNameCmdStr << "=" << host_name << endl;
-    }
-
-    return true;
-}
-
-Configuration ConfigurationReader::get_configuration() const
-{
-    return Config;
-}
index 8c9af59..038368f 100644 (file)
@@ -24,19 +24,31 @@ public:
 
 private:
     boost::program_options::options_description get_generic_options() const;
+    bool is_generic_options(
+            const boost::program_options::variables_map& vm
+    ) const;
+    bool parse_generic_options(
+            const boost::program_options::variables_map& vm,
+            const boost::program_options::options_description& visible_options
+    );
+
     boost::program_options::options_description get_configuration_options() const;
+    bool parse_configuration_options(
+            const boost::program_options::variables_map& vm
+    );
 
-    bool parse_command_line(
+    bool process_command_line(
             const int argc,
             char* argv[],
             boost::program_options::variables_map& vm
     );
-    bool parse_configuration_file( boost::program_options::variables_map& vm );
-    bool parse_configuration_file(
+    bool process_configuration_file(
+            boost::program_options::variables_map& vm
+    );
+    bool process_configuration_file(
             const std::string& config_file_name,
             boost::program_options::variables_map& vm
     );
-    bool fill_configuration( const boost::program_options::variables_map& vm );
 
 private:
     Configuration Config;