#include "dbsetup.h"
#include "../dataobjects/executable.h"
+
DbExecutable::DbExecutable(QObject *parent)
: DbQueryModelManager(parent)
{
dbSetup = new DbSetup(this);
+ 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();
return false;
}
-int DbExecutable::countDataObjectRefs(int) const
-{
- // TODO
- return 0;
-}
-
QString DbExecutable::constructSelectById(int id) const
{
return constructSelect(
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, "
"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
+/*bool DbExecutable::deleteDataObject(int id) const
{
// TODO
return false;
-}
+}*/
QSqlQueryModel* DbExecutable::getData()
{
- QSqlQueryModel *model = new QSqlQueryModel;
+ QSqlQueryModel *model = new QSqlQueryModel(this);
QString select = constructSelect();
qDebug() << select;
model->setHeaderData(Executable_Id, Qt::Horizontal, tr("Id"));
return model;
}
+QString DbExecutable::getCountRefsSelect(int id) const
+{
+ // These objects don't have references from other objects
+ // 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);
+}