00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "mmsconfig/mmspluginservice.h"
00034 #include "mmstools/mmsdbconnmgr.h"
00035 #include "mmstools/tools.h"
00036 #include "mmsconfig/mmsplugindao.h"
00037 #include "mmsconfig/mmspluginpropertydao.h"
00038 #include "mmsconfig/mmsimportpropertydao.h"
00039 #include "mmsconfig/mmsplugincategorydao.h"
00040 #include "mmsconfig/mmsplugintypedao.h"
00041
00042 MMSPluginService::MMSPluginService(DataSource *datasource) :
00043 dbconn(NULL) {
00044 MMSDBConnMgr connMgr(datasource);
00045 if((this->dbconn = connMgr.getConnection()))
00046 this->dbconn->connect();
00047 }
00048
00049 MMSPluginService::~MMSPluginService() {
00050 if(this->dbconn) {
00051 this->dbconn->disconnect();
00052 delete this->dbconn;
00053 }
00054 }
00055
00056 void MMSPluginService::setPlugin(MMSPluginData *data) {
00057 MMSPluginDAO myPluginDAO(this->dbconn);
00058 myPluginDAO.saveOrUpdate(data);
00059
00060 MMSPluginPropertyDAO myPropertyDAO(this->dbconn);
00061 myPropertyDAO.saveOrUpdate(data);
00062 }
00063
00064 void MMSPluginService::setPlugin(vector<MMSPluginData *> dataList) {
00065 MMSPluginDAO myPluginDAO(this->dbconn);
00066 myPluginDAO.saveOrUpdate(dataList);
00067 MMSPluginPropertyDAO myPropertyDAO(this->dbconn);
00068 myPropertyDAO.saveOrUpdate(dataList);
00069 }
00070
00071 const inline void MMSPluginService::setPluginProperties(MMSPluginData *plugin) const {
00072 if(plugin) {
00073 MMSPluginPropertyDAO myPropertyDAO(this->dbconn);
00074 vector <MMSPropertyData *> properties;
00075 properties = myPropertyDAO.findAllPluginPropertiesByPlugin(plugin);
00076 plugin->setProperties(properties);
00077 }
00078 }
00079
00080 const inline void MMSPluginService::setPluginProperties(vector<MMSPluginData*> &pluginList) const {
00081 MMSPluginPropertyDAO myPropertyDAO(this->dbconn);
00082 for(vector<MMSPluginData*>::iterator i = pluginList.begin(); i != pluginList.end(); ++i) {
00083 (*i)->setProperties(myPropertyDAO.findAllPluginPropertiesByPlugin(*i));
00084 }
00085 }
00086
00087 MMSPluginData *MMSPluginService::getPluginByName(string name) {
00088 MMSPluginDAO myPluginDAO(this->dbconn);
00089
00090 MMSPluginData *plugin = myPluginDAO.findPluginByName(name);
00091 setPluginProperties(plugin);
00092
00093 return plugin;
00094 }
00095
00096 MMSPluginData *MMSPluginService::getPluginByID(int id) {
00097 MMSPluginDAO myPluginDAO(this->dbconn);
00098
00099 MMSPluginData *plugin = myPluginDAO.findPluginByID(id);
00100 setPluginProperties(plugin);
00101
00102 return plugin;
00103 }
00104
00105 vector<MMSPluginData*> MMSPluginService::getAllPlugins(const bool inactiveToo) {
00106 MMSPluginDAO myPluginDAO(this->dbconn);
00107
00108 vector <MMSPluginData *> pluginList = myPluginDAO.findAllPlugins(inactiveToo);
00109 setPluginProperties(pluginList);
00110
00111 return pluginList;
00112 }
00113
00114 vector<MMSPluginData *> MMSPluginService::getOSDPlugins(const bool inactiveToo) {
00115 MMSPluginDAO myPluginDAO(this->dbconn);
00116
00117 vector <MMSPluginData *> pluginList = myPluginDAO.findAllPluginsByType(PT_OSD_PLUGIN, inactiveToo);
00118 setPluginProperties(pluginList);
00119
00120 DEBUGMSG("PLUGINSERVICE", "Working with %d OSD plugins", pluginList.size());
00121
00122 return pluginList;
00123 }
00124
00125 vector<MMSPluginData *> MMSPluginService::getCentralPlugins(const bool inactiveToo) {
00126 MMSPluginDAO myPluginDAO(this->dbconn);
00127
00128 vector <MMSPluginData *> pluginList = myPluginDAO.findAllPluginsByType(PT_CENTRAL_PLUGIN, inactiveToo);
00129 setPluginProperties(pluginList);
00130
00131 DEBUGMSG("PLUGINSERVICE", "Working with %d Central plugins", pluginList.size());
00132
00133 return pluginList;
00134 }
00135
00136 vector<MMSPluginData *> MMSPluginService::getImportPlugins(const bool inactiveToo) {
00137 MMSPluginDAO myPluginDAO(this->dbconn);
00138 MMSPluginPropertyDAO myPropertyDAO(this->dbconn);
00139 MMSImportPropertyDAO myImportPropertyDAO(this->dbconn);
00140
00141 vector <MMSPluginData *> pluginList = myPluginDAO.findAllPluginsByType(PT_IMPORT_PLUGIN, inactiveToo);
00142
00143 for(vector<MMSPluginData*>::iterator i = pluginList.begin(); i != pluginList.end(); ++i) {
00144 (*i)->setProperties(myPropertyDAO.findAllPluginPropertiesByPlugin(*i));
00145 (*i)->setImportProperties(myImportPropertyDAO.findImportPropertyByPlugin(*i));
00146 }
00147
00148 DEBUGMSG("PLUGINSERVICE", "Working with %d Import plugins", pluginList.size());
00149
00150 return pluginList;
00151 }
00152
00153 vector<MMSPluginData *> MMSPluginService::getBackendPlugins(const bool inactiveToo) {
00154 MMSPluginDAO myPluginDAO(this->dbconn);
00155 MMSPluginPropertyDAO myPropertyDAO(this->dbconn);
00156
00157 vector <MMSPluginData *> pluginList = myPluginDAO.findAllPluginsByType(PT_BACKEND_PLUGIN, inactiveToo);
00158 setPluginProperties(pluginList);
00159
00160 DEBUGMSG("PLUGINSERVICE", "Working with %d Backend plugins", pluginList.size());
00161
00162 return pluginList;
00163 }
00164
00165
00166 vector<MMSPluginData*> MMSPluginService::getPluginsByCategory(MMSPluginCategoryData *category, const bool inactiveToo) {
00167 MMSPluginDAO myPluginDAO(this->dbconn);
00168 MMSPluginPropertyDAO myPropertyDAO(this->dbconn);
00169 MMSImportPropertyDAO myImportPropertyDAO(this->dbconn);
00170 vector <MMSPluginData *> pluginList = myPluginDAO.findAllPluginsByCategory(category, inactiveToo);
00171
00172 for(vector<MMSPluginData*>::iterator i = pluginList.begin(); i != pluginList.end(); ++i) {
00173 if((*i)->getType()->getName() == PT_IMPORT_PLUGIN) {
00174 (*i)->setImportProperties(myImportPropertyDAO.findImportPropertyByPlugin(*i));
00175 }
00176 (*i)->setProperties(myPropertyDAO.findAllPluginPropertiesByPlugin(*i));
00177 }
00178
00179 return pluginList;
00180 }
00181
00182 vector<MMSPluginData*> MMSPluginService::getPluginsByType(MMSPluginTypeData *type, const bool inactiveToo) {
00183 MMSPluginDAO myPluginDAO(this->dbconn);
00184 MMSPluginPropertyDAO myPropertyDAO(this->dbconn);
00185 MMSImportPropertyDAO myImportPropertyDAO(this->dbconn);
00186 vector <MMSPluginData *> pluginList = myPluginDAO.findAllPluginsByType(type, inactiveToo);
00187
00188 for(vector<MMSPluginData*>::iterator i = pluginList.begin(); i != pluginList.end(); ++i) {
00189 if((*i)->getType()->getName() == PT_IMPORT_PLUGIN) {
00190 (*i)->setImportProperties(myImportPropertyDAO.findImportPropertyByPlugin(*i));
00191 }
00192 (*i)->setProperties(myPropertyDAO.findAllPluginPropertiesByPlugin(*i));
00193 }
00194
00195 return pluginList;
00196 }
00197
00198 MMSPluginCategoryData* MMSPluginService::getPluginCategoryByName(string name) {
00199 MMSPluginCategoryDAO categoryDAO(this->dbconn);
00200 return categoryDAO.findCategoryByName(name);
00201 }
00202
00203 MMSPluginTypeData* MMSPluginService::getPluginTypeByName(string name) {
00204 MMSPluginTypeDAO typeDAO(this->dbconn);
00205 return typeDAO.findTypeByName(name);
00206 }
00207
00208 vector<MMSPluginCategoryData*> MMSPluginService::getPluginCategories() {
00209 MMSPluginCategoryDAO categoryDAO(this->dbconn);
00210 return categoryDAO.findAllCategories();
00211 }
00212
00213 void MMSPluginService::getSystemProperties(std::map<string,MMSPropertyData*> &result) {
00214 MMSPluginDAO myPluginDAO(this->dbconn);
00215
00216 MMSPluginData *plugin = myPluginDAO.findPluginByID(-2);
00217 if(plugin) {
00218 MMSPluginPropertyDAO myPropertyDAO(this->dbconn);
00219 vector <MMSPropertyData *> properties;
00220 properties = myPropertyDAO.findAllPluginPropertiesByPlugin(plugin);
00221 for(vector <MMSPropertyData *>::iterator it = properties.begin(); it!= properties.end(); it++) {
00222 result.insert(std::make_pair(string((*it)->getParameter()),*it));
00223 }
00224 }
00225 }