Logo
  • Main Page
  • Related Pages
  • Modules
  • Classes
  • Files

mmspluginservice.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2005-2007 Stefan Schwarzer, Jens Schneider,             *
00003  *                           Matthias Hardt, Guido Madaus                  *
00004  *                                                                         *
00005  *   Copyright (C) 2007-2008 BerLinux Solutions GbR                        *
00006  *                           Stefan Schwarzer & Guido Madaus               *
00007  *                                                                         *
00008  *   Copyright (C) 2009-2013 BerLinux Solutions GmbH                       *
00009  *                                                                         *
00010  *   Authors:                                                              *
00011  *      Stefan Schwarzer   <stefan.schwarzer@diskohq.org>,                 *
00012  *      Matthias Hardt     <matthias.hardt@diskohq.org>,                   *
00013  *      Jens Schneider     <jens.schneider@diskohq.org>,                   *
00014  *      Guido Madaus       <guido.madaus@diskohq.org>,                     *
00015  *      Patrick Helterhoff <patrick.helterhoff@diskohq.org>,               *
00016  *      René Bählkow       <rene.baehlkow@diskohq.org>                     *
00017  *                                                                         *
00018  *   This library is free software; you can redistribute it and/or         *
00019  *   modify it under the terms of the GNU Lesser General Public            *
00020  *   License version 2.1 as published by the Free Software Foundation.     *
00021  *                                                                         *
00022  *   This library is distributed in the hope that it will be useful,       *
00023  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00024  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00025  *   Lesser General Public License for more details.                       *
00026  *                                                                         *
00027  *   You should have received a copy of the GNU Lesser General Public      *
00028  *   License along with this library; if not, write to the                 *
00029  *   Free Software Foundation, Inc.,                                       *
00030  *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
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 /* getAllPluginsByCategory */
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 }

Generated by doxygen