Added some exception handling. Marked all the functions throwing
[emufront] / src / db / dbexecutable.cpp
index c0c1c13..9b3a5e8 100644 (file)
@@ -34,13 +34,15 @@ DbExecutable::DbExecutable(QObject *parent)
     tableName = DbExecutable::DB_TABLE_EXECUTABLE;
 }
 
+
+/* Throws EmuFrontException */
 EmuFrontObject* DbExecutable::recordToDataObject(const QSqlRecord* rec)
 {
     Executable *ex = 0;
     if (!rec) return ex;
     int id = rec->value(Executable_Id).toInt();
     int supid = rec->value(Executable_SetupId).toInt();
-    EmuFrontObject *ob = dbSetup->getDataObject(supid);
+    EmuFrontObject *ob = dbSetup->getDataObject(supid); /* Throws EmuFrontException */
     Setup *sup = dynamic_cast<Setup*>(ob);
     qDebug() << "Setup id " << sup->getId() << ", platform " << sup->getPlatform()->getName();
     QString name = rec->value(Executable_Name).toString();
@@ -119,7 +121,7 @@ QString DbExecutable::constructFilterById(int id) const
 
 QString DbExecutable::constructSelect(QString whereClause) const
 {
-    return QString("SELECT "
+    QString sql = QString("SELECT "
         "executable.id AS ExecutableId, "
         "executable.name AS ExecutableName, "
         "executable.executable AS Executable, "
@@ -132,8 +134,9 @@ QString DbExecutable::constructSelect(QString whereClause) const
         "INNER JOIN platform ON setup.platformid=platform.id "
         "INNER JOIN mediatype ON setup.mediatypeid=mediatype.id "
         "%1 "
-        "ORDER BY executable.name ")
-        .arg(whereClause);
+        "ORDER BY executable.name ").arg(whereClause);
+    qDebug() << sql;
+    return sql;
 }
 
 /*bool DbExecutable::deleteDataObject(int id) const
@@ -164,3 +167,11 @@ QString DbExecutable::getCountRefsSelect(int id) const
     // currently.
     return QString("SELECT 0");
 }
+
+void DbExecutable::filterByPlatformMediaType(int platformId, int mediaTypeId)
+{
+    QList<QString> filters;
+    filters.append(QString("setup.platformid=%1").arg(platformId));
+    filters.append(QString("setup.mediatypeid=%1").arg(mediaTypeId));
+    filterDataObjects(filters);
+}