Exception handling
authorMikko Keinänen <mikko.keinanen@gmail.com>
Sat, 22 May 2010 23:03:54 +0000 (02:03 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Sat, 22 May 2010 23:03:54 +0000 (02:03 +0300)
src/db/dbcreator.cpp
src/main.cpp

index 2ae2b32..726f5fe 100644 (file)
 #include <QObject>
 #include <QSqlDatabase>
 #include <QSqlQuery>
+#include <QDebug>
+#include <exception>
 #include "dbcreator.h"
 
+using namespace std;
+
 DbCreator::DbCreator(QObject *parent) : QObject(parent)
 {
 }
@@ -32,37 +36,52 @@ bool DbCreator::createDB()
     bool ret = false;
     QSqlQuery query;
 
-    if (!tableExists("platform"))
+    try
     {
-        query.exec("create table platform "
-                         "(id integer primary key, "
-                         "name varchar(30), "
-                         "filename varchar(125))");
-    }
-    if (!tableExists("mediatype"))
-    {
-        query.exec("create table mediatype "
-                         "(id integer primary key, "
-                         "name varchar(30), "
-                         "filename varchar(125))");
-    }
-    if (!tableExists("filetype"))
-    {
-        query.exec("create table filetype "
-                            "(id integer primary key, "
-                            "name varchar(30))");
-        query.exec("insert into filetype (id, name) values (1, 'media image container')");
-        query.exec("insert into filetype (id, name) values (2, 'screenshot')");
-        query.exec("insert into filetype (id, name) values (3, 'platform icon')");
-        query.exec("insert into filetype (id, name) values (4, 'media type icon')");
-    }
-    /*if (!tableExists("filepath"))
+        if (!tableExists("platform"))
+        {
+            qDebug() << "Creating table platform";
+            ret = query.exec("create table platform "
+                             "(id integer primary key, "
+                             "name varchar(30), "
+                             "filename varchar(125))");
+            if (!ret) throw QString("platform.");
+        }
+        if (!tableExists("mediatype"))
+        {
+            qDebug() << "Creating table mediatype";
+            ret = query.exec("create table mediatype "
+                             "(id integer primary key, "
+                             "name varchar(30), "
+                             "filename varchar(125))");
+            if (!ret) throw QString("mediatype.");
+        }
+        if (!tableExists("filetype"))
+        {
+            qDebug() << "Creating table filetype";
+            ret = query.exec("create table filetype "
+                             "(id integer primary key, "
+                             "name varchar(30))");
+            if (!ret) throw QString("filetype.");
+            query.exec("insert into filetype (id, name) values (1, 'media image container')");
+            query.exec("insert into filetype (id, name) values (2, 'screenshot')");
+            query.exec("insert into filetype (id, name) values (3, 'platform icon')");
+            query.exec("insert into filetype (id, name) values (4, 'media type icon')");
+        }
+        /*if (!tableExists("filepath"))
     {
+        qDebug() << "Creating table filepath";
         query.exec("create table filepath "
                     "(id integer primary key, "
                     "name varchar(255))");
 
+        if (!ret) throw QString("filepath");
     }*/
+    }
+    catch (QString tbl)
+    {
+        throw QString("Couldn't create database '%1'!").arg(tbl);
+    }
     return ret;
 }
 
index 443151d..cbba0ae 100644 (file)
@@ -24,8 +24,6 @@
 #include "db/databasemanager.h"
 #include "db/dbcreator.h"
 
-//#include "dialogs/platformnamedialog.h"
-
 int main(int argc, char *argv[])
 {
        QApplication app(argc, argv);
@@ -36,18 +34,23 @@ int main(int argc, char *argv[])
        else cout << " Database connection failed!" << endl;
 
     if (DbCreator::dbExists())
+    {
                cout << " Database exists!" << endl;
+    }
        else 
        {
-               cout << " Database is missing!" << endl;
-        DbCreator dbCreator;
-        if (dbCreator.createDB())
-                       cout << " Database created succesfully!" << endl;
-               else {
-                       cout << "Failed creating database!" << endl;
+        try
+        {
+            cout << " Database is missing!" << endl;
+            DbCreator dbCreator;
+            dbCreator.createDB();
+            cout << " Database created succesfully!" << endl;
+        }
+        catch (QString str) {
+            cout << str << endl;
                        exit(1);
                }
-        }
+    }
        MainWindow *mw = new MainWindow;
        mw->show();
        return app.exec();