summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorZdenek Prikryl <zprikryl@redhat.com>2009-02-05 13:25:22 +0100
committerZdenek Prikryl <zprikryl@redhat.com>2009-02-05 13:25:22 +0100
commit7cbcf65b71aeaae5a8e0fde9e70bf1b54504f93c (patch)
tree99765bcc01c472b53ba78bcb71ccb38942544501 /lib
parentb965b7dff5bd04b13cf1de87e693aec6f1eff72b (diff)
downloadabrt-7cbcf65b71aeaae5a8e0fde9e70bf1b54504f93c.tar.gz
abrt-7cbcf65b71aeaae5a8e0fde9e70bf1b54504f93c.tar.xz
abrt-7cbcf65b71aeaae5a8e0fde9e70bf1b54504f93c.zip
added settings loading
Diffstat (limited to 'lib')
-rw-r--r--lib/MiddleWare/MiddleWare.cpp34
-rw-r--r--lib/MiddleWare/MiddleWare.h7
2 files changed, 39 insertions, 2 deletions
diff --git a/lib/MiddleWare/MiddleWare.cpp b/lib/MiddleWare/MiddleWare.cpp
index 12fa1e43..8cd4bec2 100644
--- a/lib/MiddleWare/MiddleWare.cpp
+++ b/lib/MiddleWare/MiddleWare.cpp
@@ -35,6 +35,12 @@ CMiddleWare::CMiddleWare(const std::string& pPlugisConfDir,
}
m_pPluginManager->LoadPlugins();
LoadSettings(pMiddleWareConfFile);
+
+ set_enabled_plugins_t::iterator it_p;
+ for (it_p = m_setEnabledPlugins.begin(); it_p != m_setEnabledPlugins.end(); it_p++)
+ {
+ m_pPluginManager->RegisterPlugin(*it_p);
+ }
}
CMiddleWare::~CMiddleWare()
@@ -50,11 +56,37 @@ void CMiddleWare::LoadSettings(const std::string& pPath)
load_settings(pPath, settings);
if (settings.find("BlackList") != settings.end())
{
- m_sBlackList = settings["BlackList"];
+ std::string blackList = settings["BlackList"];
+ std::string::size_type ii_old = 0, ii_new = 0;
+ ii_new = blackList.find(",");
+ while (ii_new != std::string::npos)
+ {
+ m_setBlackList.insert(blackList.substr(ii_old, ii_new - ii_old));
+ ii_old = ii_new + 1;
+ ii_new = blackList.find(",",ii_old);
+ }
+ m_setBlackList.insert(blackList.substr(ii_old));
+ }
+ if (settings.find("EnabledPlugins") != settings.end())
+ {
+ std::string enabledPlugins = settings["EnabledPlugins"];
+ std::string::size_type ii_old = 0, ii_new = 0;
+ ii_new = enabledPlugins.find(",");
+ while (ii_new != std::string::npos)
+ {
+ m_setEnabledPlugins.insert(enabledPlugins.substr(ii_old, ii_new - ii_old));
+ ii_old = ii_new + 1;
+ ii_new = enabledPlugins.find(",",ii_old);
+ }
+ m_setEnabledPlugins.insert(enabledPlugins.substr(ii_old));
}
if (settings.find("Database") != settings.end())
{
m_sDatabase = settings["Database"];
+ if (m_setEnabledPlugins.find(m_sDatabase) == m_setEnabledPlugins.end())
+ {
+ throw std::string("Database plugin '"+m_sDatabase+"' isn't enabled.");
+ }
}
else
{
diff --git a/lib/MiddleWare/MiddleWare.h b/lib/MiddleWare/MiddleWare.h
index 26af9076..5fdba84d 100644
--- a/lib/MiddleWare/MiddleWare.h
+++ b/lib/MiddleWare/MiddleWare.h
@@ -25,13 +25,18 @@
#define MIDDLEWARE_H_
#include "PluginManager.h"
+#include <set>
class CMiddleWare
{
private:
+ typedef std::set<std::string> set_blacklist_t;
+ typedef std::set<std::string> set_enabled_plugins_t;
+
CPluginManager* m_pPluginManager;
- std::string m_sBlackList;
+ set_blacklist_t m_setBlackList;
+ set_enabled_plugins_t m_setEnabledPlugins;
std::string m_sDatabase;
std::string GetLocalUUIDLanguage(const std::string& pLanguage,