Removed some whitespaces..
[quassel.git] / src / core / abstractsqlstorage.cpp
index bc18caf..3919825 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "abstractsqlstorage.h"
 
+#include "logger.h"
+
 #include <QSqlError>
 #include <QSqlQuery>
 
@@ -50,8 +52,8 @@ QSqlDatabase AbstractSqlStorage::logDb() {
     return db;
 
   if(!openDb()) {
-    qWarning() << "Unable to Open Database" << engineName();
-    qWarning() << " -" << db.lastError().text();
+    quWarning() << "Unable to Open Database" << displayName();
+    quWarning() << "-" << db.lastError().text();
   }
 
   return QSqlDatabase::database("quassel_connection");
@@ -83,32 +85,42 @@ bool AbstractSqlStorage::init(const QVariantMap &settings) {
     return false;
 
   if(installedSchemaVersion() == -1) {
-    qDebug() << "Storage Schema is missing!";
+    quError() << "Storage Schema is missing!";
     return false;
   }
 
   if(installedSchemaVersion() > schemaVersion()) {
-    qWarning() << "Installed Schema is newer then any known Version.";
+    quError() << "Installed Schema is newer then any known Version.";
     return false;
   }
   
   if(installedSchemaVersion() < schemaVersion()) {
-    qWarning() << "Installed Schema is not up to date. Upgrading...";
+    quWarning() << "Installed Schema is not up to date. Upgrading...";
     if(!upgradeDb())
       return false;
   }
   
-  qDebug() << "Storage Backend is ready. Quassel Schema Version:" << installedSchemaVersion();
+  quInfo() << "Storage Backend is ready. Quassel Schema Version:" << installedSchemaVersion();
   return true;
 }
 
+void AbstractSqlStorage::sync() {
+  QHash<QPair<QString, int>, QSqlQuery *>::iterator iter = _queryCache.begin();
+  while(iter != _queryCache.end()) {
+    delete *iter;
+    iter = _queryCache.erase(iter);
+  }
+
+  logDb().commit();
+}
+
 QString AbstractSqlStorage::queryString(const QString &queryName, int version) {
   if(version == 0)
     version = schemaVersion();
     
-  QFileInfo queryInfo(QString(":/SQL/%1/%2/%3.sql").arg(engineName()).arg(version).arg(queryName));
+  QFileInfo queryInfo(QString(":/SQL/%1/%2/%3.sql").arg(displayName()).arg(version).arg(queryName));
   if(!queryInfo.exists() || !queryInfo.isFile() || !queryInfo.isReadable()) {
-    qWarning() << "Unable to read SQL-Query" << queryName << "for Engine" << engineName();
+    quError() << "Unable to read SQL-Query" << queryName << "for engine" << displayName();
     return QString();
   }
 
@@ -141,7 +153,7 @@ QSqlQuery *AbstractSqlStorage::cachedQuery(const QString &queryName) {
 
 QStringList AbstractSqlStorage::setupQueries() {
   QStringList queries;
-  QDir dir = QDir(QString(":/SQL/%1/%2/").arg(engineName()).arg(schemaVersion()));
+  QDir dir = QDir(QString(":/SQL/%1/%2/").arg(displayName()).arg(schemaVersion()));
   foreach(QFileInfo fileInfo, dir.entryInfoList(QStringList() << "setup*", QDir::NoFilter, QDir::Name)) {
     queries << queryString(fileInfo.baseName());
   }
@@ -152,14 +164,14 @@ bool AbstractSqlStorage::setup(const QVariantMap &settings) {
   Q_UNUSED(settings)
   QSqlDatabase db = logDb();
   if(!db.isOpen()) {
-    qWarning() << "Unable to setup Logging Backend!";
+    quError() << "Unable to setup Logging Backend!";
     return false;
   }
 
   foreach(QString queryString, setupQueries()) {
     QSqlQuery query = db.exec(queryString);
     if(!watchQuery(&query)) {
-      qWarning() << "Unable to setup Logging Backend!";
+      quError() << "Unable to setup Logging Backend!";
       return false;
     }
   }
@@ -168,9 +180,9 @@ bool AbstractSqlStorage::setup(const QVariantMap &settings) {
 
 QStringList AbstractSqlStorage::upgradeQueries(int version) {
   QStringList queries;
-  QDir dir = QDir(QString(":/SQL/%1/%2/").arg(engineName()).arg(version));
+  QDir dir = QDir(QString(":/SQL/%1/%2/").arg(displayName()).arg(version));
   foreach(QFileInfo fileInfo, dir.entryInfoList(QStringList() << "upgrade*", QDir::NoFilter, QDir::Name)) {
-    queries << queryString(fileInfo.baseName());
+    queries << queryString(fileInfo.baseName(), version);
   }
   return queries;
 }
@@ -185,7 +197,7 @@ bool AbstractSqlStorage::upgradeDb() {
     foreach(QString queryString, upgradeQueries(ver)) {
       QSqlQuery query = db.exec(queryString);
       if(!watchQuery(&query)) {
-       qWarning() << "Unable to upgrade Logging Backend!";
+       quError() << "Unable to upgrade Logging Backend!";
        return false;
       }
     }
@@ -202,7 +214,7 @@ int AbstractSqlStorage::schemaVersion() {
 
   int version;
   bool ok;
-  QDir dir = QDir(":/SQL/" + engineName());
+  QDir dir = QDir(":/SQL/" + displayName());
   foreach(QFileInfo fileInfo, dir.entryInfoList()) {
     if(!fileInfo.isDir())
       continue;
@@ -219,14 +231,17 @@ int AbstractSqlStorage::schemaVersion() {
 
 bool AbstractSqlStorage::watchQuery(QSqlQuery *query) {
   if(query->lastError().isValid()) {
-    qWarning() << "unhandled Error in QSqlQuery!";
-    qWarning() << "                  last Query:\n" << query->lastQuery();
-    qWarning() << "              executed Query:\n" << query->executedQuery();
-    qWarning() << "                bound Values:"   << query->boundValues();
-    qWarning() << "                Error Number:"   << query->lastError().number();
-    qWarning() << "               Error Message:"   << query->lastError().text();
-    qWarning() << "              Driver Message:"   << query->lastError().driverText();
-    qWarning() << "                  DB Message:"   << query->lastError().databaseText();
+    quError() << "unhandled Error in QSqlQuery!";
+    quError() << "                  last Query:\n" << query->lastQuery();
+    quError() << "              executed Query:\n" << query->executedQuery();
+    quError() << "                bound Values:";
+    QList<QVariant> list = query->boundValues().values();
+    for (int i = 0; i < list.size(); ++i)
+      quError() << i << ": " << list.at(i).toString().toAscii().data();
+    quError() << "                Error Number:"   << query->lastError().number();
+    quError() << "               Error Message:"   << query->lastError().text();
+    quError() << "              Driver Message:"   << query->lastError().driverText();
+    quError() << "                  DB Message:"   << query->lastError().databaseText();
     
     return false;
   }