Exception handling.
[emufront] / src / db / databasemanager.cpp
index 86c92c6..faca76e 100644 (file)
@@ -30,7 +30,7 @@
 #include <QDebug>
 #include <QDateTime>
 
-const QString DatabaseManager::DB_FILENAME = QString("my.db.sqlite");
+const QString DatabaseManager::DB_FILENAME = QString("emufront.db.sqlite");
 const QString DatabaseManager::DATABASE = QString("QSQLITE");
 const QString DatabaseManager::DB_TABLE_NAME_MEDIATYPE = QString("mediatype");
 const QString DatabaseManager::DB_TABLE_NAME_PLATFORM = QString("platform");
@@ -54,9 +54,17 @@ DatabaseManager::~DatabaseManager()
     // be destroyed when parent is destroyed
 }
 
+/*
+ You may wanna set the possible filters (filterDataObjects) before calling getDataModel.
+ After filtering do not set update to true. Data model is already updated.
+*/
 QSqlQueryModel* DatabaseManager::getDataModel(bool update)
 {
-    if (!sqlTableModel || (sqlTableModel && !update)) sqlTableModel = getData();
+    if (!sqlTableModel) {
+        sqlTableModel = getData();
+    }
+    else if (update)
+        clearFilters();
     return sqlTableModel;
 }
 
@@ -97,33 +105,24 @@ int DatabaseManager::countRows(QString tableName, QString columnName, int id) co
     return numEntries;
 }
 
+
+/* Throws EmuFrontException if filtered data was not found. */
 EmuFrontObject* DatabaseManager::getDataObject(int id)
 {
     filterById(id);
     return getFilteredDataObject();
-    /*EmuFrontObject *plf = 0;
-    if (sqlTableModel->rowCount() == 1)
-    {
-        QSqlRecord record = sqlTableModel->record(0);
-        if (record.isEmpty())
-        {
-            throw new EmuFrontException(tr("No data available for id %1").arg(id));
-        }
-        else plf = recordToDataObject(&record);
-    }
-    return plf;*/
 }
 
+/* Throws EmuFrontException if filtered data was not found. */
 EmuFrontObject* DatabaseManager::getDataObject(QString filter)
 {
-    qDebug() << "Filtering data object" << filter;
     QList<QString> filters;
     filters.append(filter);
     filterDataObjects(filters);
-    qDebug() << "...done filtering.";
     return getFilteredDataObject();
 }
 
+/* Throws EmuFrontException if filtered data was not found. */
 EmuFrontObject* DatabaseManager::getFilteredDataObject()
 {
     EmuFrontObject *plf = 0;
@@ -132,15 +131,14 @@ EmuFrontObject* DatabaseManager::getFilteredDataObject()
     if (sqlTableModel->rowCount() >= 1)
     {
         QSqlRecord record = sqlTableModel->record(0);
-        if (record.isEmpty())
-        {
-            throw new EmuFrontException(tr("No filtered data available"));
+        if (record.isEmpty()) {
+            throw EmuFrontException(tr("No filtered data available"));
         }
         else plf = recordToDataObject(&record);
     }
      return plf;
 }
-
+/* Throws EmuFrontException */
 EmuFrontObject* DatabaseManager::getDataObjectFromModel(QModelIndex *index)
 {
     if (!sqlTableModel) sqlTableModel = getDataModel();