EmuFrontObject* DatabaseManager::getDataObject(QString filter)
{
qDebug() << "Filtering data object" << filter;
- filterDataObjects(filter);
+ QList<QString> filters;
+ filters.append(filter);
+ filterDataObjects(filters);
qDebug() << "...done filtering.";
return getFilteredDataObject();
}
QSqlQueryModel* sqlTableModel;
virtual EmuFrontObject* recordToDataObject(const QSqlRecord* ) = 0;
virtual void filterById(int id) = 0;
- virtual void filterDataObjects(QString filter) = 0;
+ virtual void filterDataObjects(QList<QString> filter) = 0;
virtual void clearFilters() = 0;
int countRows(QString tableName, QString columnName, int id) const;
static const QString DB_TABLE_NAME_FILE;
*/
}
-QString DbEmuFrontFileObject::constructSelect(QString whereClause) const
+QString DbEmuFrontFileObject::constructSelect(QString where) const
{
- QString where = whereClause.isEmpty()
- ? "" : QString("WHERE ").append(whereClause);
+ /*QString where = whereClause.isEmpty()
+ ? "" : QString("WHERE ").append(whereClause);*/
return QString("SELECT maintbl.id AS FileObjectId, "
"maintbl.name AS Name, "
QString DbEmuFrontFileObject::constructSelectById(int id) const
{
- return constructSelect(constructFilterById(id));
+ return constructSelect(QString("WHERE %1").arg(constructFilterById(id)));
}
QString DbEmuFrontFileObject::constructFilterById(int id) const
return q.exec();
}
-QString DbFile::constructSelect(QString whereClause) const
+QString DbFile::constructSelect(QString where) const
{
- QString where = whereClause.isEmpty()
- ? "" : QString("WHERE ").append(whereClause);
+ /*QString where = whereClause.isEmpty()
+ ? "" : QString("WHERE ").append(whereClause);*/
return QString("SELECT file.id AS FileId, "
"file.name AS Name, "
QString DbFile::constructSelectById(int id) const
{
- return constructSelect(constructFilterById(id));
+ return constructSelect(QString("WHERE %1").arg(constructFilterById(id)));
}
QSqlQueryModel* DbFile::getData()
return q.exec();
}
-QString DbFilePath::constructSelect(QString whereClause) const
+QString DbFilePath::constructSelect(QString where) const
{
- QString where = whereClause.isEmpty()
- ? "" : QString("WHERE ").append(whereClause);
+ /*QString where = whereClause.isEmpty()
+ ? "" : QString("WHERE ").append(whereClause);*/
return QString("SELECT filepath.id AS FilePathId, "
"filepath.name AS Name, "
QString DbFilePath::constructSelectById(int id) const
{
- return constructSelect(constructFilterById(id));
+ QString where = QString("WHERE %1").arg(constructFilterById(id));
+ return constructSelect(where);
}
QSqlQueryModel* DbFilePath::getData()
}
}
-void DbMediaImageContainer::filter(int mediaTypeId, int platformId) const
+void DbMediaImageContainer::filter(int mediaTypeId, int platformId)
{
- /*
- WHERE setup.platformid = :platformid
- AND setup.mediatypeid = :mediatypeid
- */
+ QList<QString> filters;
+ if (mediaTypeId >= 0)
+ filters.append(QString("mediatype.id=%1").arg(mediaTypeId));
+ if (platformId >= 0)
+ filters.append(QString("platform.id=%1").arg(platformId));
+ filterDataObjects(filters);
}
+
virtual int countDataObjectRefs(int id) const;
void storeContainers(QList<MediaImageContainer*>, FilePathObject*);
int getMediaImageContainer(QString checksum) const;
- void filter(int mediaTypeId, int platformId) const;
+ void filter(int mediaTypeId, int platformId);
protected:
- virtual QString constructSelect(QString whereClause) const;
+ virtual QString constructSelect(QString whereClause = "") const;
virtual QString constructSelectById(int id) const;
virtual QString constructFilterById(int id) const;
virtual EmuFrontObject* recordToDataObject(const QSqlRecord *);
// along with EmuFront. If not, see <http://www.gnu.org/licenses/>.
#include <QSqlQueryModel>
+#include <QDebug>
#include "dbquerymodelmanager.h"
DbQueryModelManager::DbQueryModelManager(QObject *parent)
void DbQueryModelManager::filterById(int id)
{
- filterDataObjects(constructFilterById(id));
+ QList<QString> filters;
+ filters.append(constructFilterById(id));
+ filterDataObjects(filters);
}
-/* filter must be in SQL where clause format (without the WHERE word) */
-void DbQueryModelManager::filterDataObjects(QString filter)
+/* filters is a list of SQL conditions e.g. setup.id=1 */
+void DbQueryModelManager::filterDataObjects(QList<QString> filters)
{
if (!sqlTableModel) sqlTableModel = getDataModel();
- QString query = constructSelect(filter);
+ QString query = constructSelect(constructWhereByFilters(filters));
sqlTableModel->setQuery(query);
}
+QString DbQueryModelManager::constructWhereByFilters(QList<QString>filters)
+{
+ if (filters.count() == 0) return "";
+ QString where = " WHERE ";
+ int c = 0;
+ foreach(QString filter, filters){
+ where.append(" %1 ").arg(filter);
+ if (++c < filters.count())
+ where.append(" AND ");
+ }
+ qDebug() << "constructWhereByFilters: " << where;
+ return where;
+}
+
void DbQueryModelManager::clearFilters()
{
sqlTableModel->setQuery(constructSelect());
DbQueryModelManager(QObject *parent);
protected:
void filterById(int id);
- void filterDataObjects(QString filter);
+ void filterDataObjects(QList<QString> filter);
void clearFilters();
+ QString constructWhereByFilters(QList<QString> filters);
virtual QString constructSelectById(int id) const = 0;
virtual QString constructFilterById(int id) const = 0;
virtual QString constructSelect(QString whereClause = "") const = 0;
return 0;
}
-QString DbSetup::constructSelect(QString whereClause) const
+QString DbSetup::constructSelect(QString where) const
{
- QString where = whereClause.isEmpty()
- ? "" : QString("WHERE ").append(whereClause);
+ /*QString where = whereClause.isEmpty()
+ ? "" : QString("WHERE ").append(whereClause);*/
return QString(
"SELECT setup.id AS SetupId, "
"setup.platformid AS PlatformId, "
QString DbSetup::constructSelectById(int id) const
{
- return constructSelect(constructFilterById(id));
+ return constructSelect(QString("WHERE %1").append(constructFilterById(id)));
}
// WARNING: this will delete also all the databindings to selected media image path
{
dbPlatform = new DbPlatform(this);
dbMediaType = new DbMediaType(this);
+ dbMic = 0;
initWidgets();
layout();
connectSignals();
? platformSelectBox->getSelected()->getId()
: -1;
+ if (!dbMic) dbMic = new DbMediaImageContainer(this);
dbMic->filter(mtid, plfid);
micTable->setModel(dbMic->getDataModel());
micTable->resizeColumnsToContents();