00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019
00020 #ifndef DBENGINE_H
00021 #define DBENGINE_H
00022
00023 #ifdef HAVE_CONFIG_H
00024 #include <config.h>
00025 #endif
00026
00027 #include <qlist.h>
00028 #include <qstringlist.h>
00029
00030 #include <ktrader.h>
00031
00032 #include "object.h"
00033 #include "plugin.h"
00034 #include "connection.h"
00035
00036 class KConfigBase;
00037
00038 namespace KDB {
00039
00040 class Database;
00041
00059 class DBEngine : public Object{
00060
00061 Q_OBJECT
00062
00063 public:
00064 virtual ~DBEngine();
00065
00069 static DBEngine *self();
00070
00074 PluginIterator beginPlugins();
00075
00079 Plugin * findPlugin(const QString &name);
00080
00084 QStringList pluginNames();
00085
00091 Connection * openConnection(const QString &pluginName, const QString &host, int port,
00092 const QString &user, const QString &password = QString::null);
00093
00098 Connection * openConnection(const QString &name);
00099
00103 virtual Connection * addConnection (const QString &pluginName,
00104 const QString &host,
00105 int port = 0,
00106 const QString &user = QString::null,
00107 const QString &password = QString::null);
00108
00114 void remove(Connection *);
00115
00121 Connection * findConnection(const QString &plugin,
00122 const QString &host,
00123 const int port,
00124 const QString &user);
00128 Connection * findConnection(const QString &name);
00129
00134 ConnectionIterator beginConnections();
00135
00141 void loadConnections(KConfigBase *config = 0L);
00142
00148 void saveConnections(KConfigBase *config = 0L);
00149
00153 Database * openDatabase(const QString &pluginName, const QString &host, int port,
00154 const QString &user, const QString &password,
00155 const QString &databaseName);
00156
00157 protected:
00158
00162 bool loadPlugin(const QString&);
00163
00164 protected slots:
00165
00166 void slotConnectionClosed(Connection *);
00167
00168 void slotDeleteConnection();
00169
00170 private:
00171
00172 explicit DBEngine();
00173 static DBEngine * m_engine;
00174
00175 KTrader::OfferList m_pluginData;
00176 PluginList m_plugins;
00177
00178 ConnectionList m_connections;
00179 Connection * m_connToDelete;
00180 };
00181
00182 }
00183 #define DBENGINE KDB::DBEngine::self()
00184
00185 #endif