From: Mikko Keinänen Date: Wed, 17 Nov 2010 22:31:34 +0000 (+0200) Subject: Added some exception handling. Marked all the functions throwing X-Git-Url: http://vcs.maemo.org/git/?a=commitdiff_plain;h=d38eb0a7e2159377a2e851c6b7eccce5095422a3;hp=df46147595428b33d45a952c4577811289b6a917;p=emufront Added some exception handling. Marked all the functions throwing EmuFrontException with a comment. --- diff --git a/src/db/databasemanager.cpp b/src/db/databasemanager.cpp index 5f33485..448f271 100644 --- a/src/db/databasemanager.cpp +++ b/src/db/databasemanager.cpp @@ -105,22 +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(); } +/* Throws EmuFrontException if filtered data was not found. */ EmuFrontObject* DatabaseManager::getDataObject(QString filter) { - qDebug() << "Filtering data object" << filter; QList 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; diff --git a/src/db/dbemufrontfileobject.cpp b/src/db/dbemufrontfileobject.cpp index 120446b..5992d68 100644 --- a/src/db/dbemufrontfileobject.cpp +++ b/src/db/dbemufrontfileobject.cpp @@ -30,6 +30,7 @@ DbEmuFrontFileObject::DbEmuFrontFileObject(QObject *parent) dbFile = new DbFile(this); } +/* Throws EmuFrontException */ EmuFrontObject* DbEmuFrontFileObject::recordToDataObject(const QSqlRecord *record) { int id = record->value(EmuFrontFileObject_Id).toInt(); @@ -38,7 +39,7 @@ EmuFrontObject* DbEmuFrontFileObject::recordToDataObject(const QSqlRecord *recor EmuFrontFile *f = 0; if (fileId > 0) { - EmuFrontObject *o = dbFile->getDataObject(fileId); + EmuFrontObject *o = dbFile->getDataObject(fileId); /* Throws EmuFrontException */ f = dynamic_cast(o); } EmuFrontObject *efo = createEmuFrontFileObject(id, name, f); diff --git a/src/db/dbexecutable.cpp b/src/db/dbexecutable.cpp index b0bb849..9b3a5e8 100644 --- a/src/db/dbexecutable.cpp +++ b/src/db/dbexecutable.cpp @@ -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(ob); qDebug() << "Setup id " << sup->getId() << ", platform " << sup->getPlatform()->getName(); QString name = rec->value(Executable_Name).toString(); diff --git a/src/db/dbfile.cpp b/src/db/dbfile.cpp index 64884be..81d2d5d 100644 --- a/src/db/dbfile.cpp +++ b/src/db/dbfile.cpp @@ -134,6 +134,7 @@ QSqlQueryModel* DbFile::getData() return model; } +/* Throws EmuFrontException */ EmuFrontObject* DbFile::getFileByChecksum(QString checksum) { return getDataObject(QString("checksum LIKE '%1'").arg(checksum)); diff --git a/src/db/dbfilepath.cpp b/src/db/dbfilepath.cpp index cc37e94..3c46f4f 100644 --- a/src/db/dbfilepath.cpp +++ b/src/db/dbfilepath.cpp @@ -31,13 +31,14 @@ DbFilePath::DbFilePath(QObject *parent) : DbQueryModelManager(parent) dbSetup = new DbSetup(this); } +/* Throws EmuFrontException */ EmuFrontObject* DbFilePath::recordToDataObject(const QSqlRecord *rec) { int id = rec->value(FilePath_Id).toInt(); QString fpath = rec->value(FilePath_Name).toString(); int setupId = rec->value(FilePath_SetupId).toInt(); int fileType = rec->value(FilePath_FileTypeId).toInt(); - Setup *sup = dynamic_cast(dbSetup->getDataObject(setupId)); + Setup *sup = dynamic_cast(dbSetup->getDataObject(setupId)); /* Throws EmuFrontException */ // TODO //int lastScanned = 0; return new FilePathObject(id, fpath, fileType, sup); diff --git a/src/db/dbmediaimagecontainer.cpp b/src/db/dbmediaimagecontainer.cpp index 4ed6d10..738fd19 100644 --- a/src/db/dbmediaimagecontainer.cpp +++ b/src/db/dbmediaimagecontainer.cpp @@ -41,7 +41,7 @@ bool DbMediaImageContainer::updateDataObjectToModel(const EmuFrontObject *efo) return false; } - +/* Throws EmuFrontException */ int DbMediaImageContainer::storeMediaImageContainer(EmuFrontObject *efo) { MediaImageContainer *mic @@ -143,6 +143,7 @@ QString DbMediaImageContainer::constructSelectById(int id) const ); } +/* Throws EmuFrontException */ EmuFrontObject* DbMediaImageContainer::recordToDataObject(const QSqlRecord *rec) { // TODO: checks! @@ -154,7 +155,7 @@ EmuFrontObject* DbMediaImageContainer::recordToDataObject(const QSqlRecord *rec) int size = rec->value(MIC_FileSize).toInt(); int fpId = rec->value(MIC_FilePathId).toInt(); FilePathObject *fpo - = dynamic_cast(dbFilePath->getDataObject(fpId)); + = dynamic_cast(dbFilePath->getDataObject(fpId)); /* Throws EmuFrontException */ //int supId = rec->value(MIC_SetupId).toInt(); //Setup *sup = dbSetup->getDataObject(supId) QMap images = dbMediaImage->getMediaImages(id); @@ -213,6 +214,7 @@ void DbMediaImageContainer::storeContainers(QList lst, Fi } } +/* Throws EmuFrontException */ void DbMediaImageContainer::linkMediaImagesWithContainer(int micId, QList mediaImages) { if (micId < 0 || mediaImages.count() <= 0) @@ -271,6 +273,7 @@ QString DbMediaImageContainer::getDeleteObjectSql() const return QString("DELETE FROM file WHERE id=:id"); } +/* Throws EmuFrontException */ EmuFrontObject* DbMediaImageContainer::getMediaImageContainerByChecksum(QString checksum) { return getDataObject(QString("file.checksum LIKE '%1'").arg(checksum)); diff --git a/src/db/dbsetup.cpp b/src/db/dbsetup.cpp index 0b648bf..8325544 100644 --- a/src/db/dbsetup.cpp +++ b/src/db/dbsetup.cpp @@ -34,6 +34,7 @@ DbSetup::DbSetup(QObject *parent) : DbQueryModelManager(parent) dbMediaType = new DbMediaType(this); } +/* Throws EmuFrontException */ EmuFrontObject* DbSetup::recordToDataObject(const QSqlRecord *rec) { Setup *s = 0; @@ -45,8 +46,8 @@ EmuFrontObject* DbSetup::recordToDataObject(const QSqlRecord *rec) list = extensions.split(FILE_TYPE_EXTENSION_SEPARATOR); int plfId = rec->value(Setup_PlatformId).toInt(); int mtId = rec->value(Setup_MediaTypeId).toInt(); - Platform *plf = dynamic_cast(dbPlatform->getDataObject(plfId)); - MediaType *mt = dynamic_cast(dbMediaType->getDataObject(mtId)); + Platform *plf = dynamic_cast(dbPlatform->getDataObject(plfId)); /* Throws EmuFrontException */ + MediaType *mt = dynamic_cast(dbMediaType->getDataObject(mtId)); /* Throws EmuFrontException */ s = new Setup(id, plf, mt, list); return s; } diff --git a/src/db/dbtablemodelmanager.cpp b/src/db/dbtablemodelmanager.cpp index fe25caa..87fdba4 100644 --- a/src/db/dbtablemodelmanager.cpp +++ b/src/db/dbtablemodelmanager.cpp @@ -30,6 +30,7 @@ void DbTableModelManager::filterById(int id) return filterDataObjects(QString("id = %1").arg(id)); } +/* Throws EmuFrontException */ void DbTableModelManager::filterDataObjects(QString filter) { if (!sqlTableModel) sqlTableModel = getDataModel(); // throw EmuFrontException("Data model not available!"); diff --git a/src/dialogs/executableeditdialog.cpp b/src/dialogs/executableeditdialog.cpp index 4be8b01..d23a838 100644 --- a/src/dialogs/executableeditdialog.cpp +++ b/src/dialogs/executableeditdialog.cpp @@ -154,9 +154,12 @@ void ExecutableEditDialog::setSelectedSetup(const Setup *su) setupComBox->setSelected(su); } -Setup* ExecutableEditDialog::getSelectedSetup() const +Setup* ExecutableEditDialog::getSelectedSetup() { - EmuFrontObject *o = setupComBox->getSelected(); + EmuFrontObject *o = 0; + try { o = setupComBox->getSelected(); } + catch(EmuFrontException &e){ QMessageBox::warning(this, "Exception", e.what()); } + if (!o) return 0; Setup *ex = dynamic_cast(o); return ex; diff --git a/src/dialogs/executableeditdialog.h b/src/dialogs/executableeditdialog.h index bd899ff..6b82aee 100644 --- a/src/dialogs/executableeditdialog.h +++ b/src/dialogs/executableeditdialog.h @@ -46,7 +46,7 @@ private: void initWidgets(); void layout(); void setSelectedSetup(const Setup*); - Setup* getSelectedSetup() const; + Setup* getSelectedSetup(); QLineEdit *nameEdit; QLineEdit *execEdit; QLineEdit *optEdit; diff --git a/src/dialogs/mediaimagepathdialog.cpp b/src/dialogs/mediaimagepathdialog.cpp index 6c3e4f5..ea8276d 100644 --- a/src/dialogs/mediaimagepathdialog.cpp +++ b/src/dialogs/mediaimagepathdialog.cpp @@ -102,7 +102,15 @@ void MediaImagePathDialog::setSelectedSetup(const Setup *sup) Setup* MediaImagePathDialog::getSelectedSetup() { - EmuFrontObject *ob = setupComBox->getSelected(); + EmuFrontObject *ob = 0; + + try { + ob = setupComBox->getSelected(); + } + catch(EmuFrontException &e){ + QMessageBox::warning(this, "Exception", e.what()); + } + if (!ob) return 0; return dynamic_cast(ob); } diff --git a/src/dialogs/setupeditdialog.cpp b/src/dialogs/setupeditdialog.cpp index c6fa561..5fce5d5 100644 --- a/src/dialogs/setupeditdialog.cpp +++ b/src/dialogs/setupeditdialog.cpp @@ -143,17 +143,24 @@ void SetupEditDialog::setSelectedMediaType(const MediaType *plf) mediaTypeComBox->setSelected(plf); } -Platform* SetupEditDialog::getSelectedPlatform() const +Platform* SetupEditDialog::getSelectedPlatform() { - EmuFrontObject *o = platformComBox->getSelected(); + EmuFrontObject *o = 0; + try { o = platformComBox->getSelected(); } + catch(EmuFrontException &e){ + QMessageBox::warning(this, "Exception", e.what()); + } + if (!o) return 0; Platform *plf = dynamic_cast(o); return plf; } -MediaType* SetupEditDialog::getSelectedMediaType() const +MediaType* SetupEditDialog::getSelectedMediaType() { - EmuFrontObject *o = mediaTypeComBox->getSelected(); + EmuFrontObject *o = 0; + try { o = mediaTypeComBox->getSelected(); } + catch(EmuFrontException &e){ QMessageBox::warning(this, "Exception", e.what()); } if (!o) return 0; MediaType *mt = dynamic_cast(o); return mt; diff --git a/src/dialogs/setupeditdialog.h b/src/dialogs/setupeditdialog.h index d116ce0..0ec58a8 100644 --- a/src/dialogs/setupeditdialog.h +++ b/src/dialogs/setupeditdialog.h @@ -55,8 +55,8 @@ private: void layout(); void setSelectedMediaType(const MediaType*); void setSelectedPlatform(const Platform*); - MediaType* getSelectedMediaType() const; - Platform* getSelectedPlatform() const; + MediaType* getSelectedMediaType(); + Platform* getSelectedPlatform(); }; #endif // SETUPEDITDIALOG_H diff --git a/src/emulauncher.cpp b/src/emulauncher.cpp index f750963..42a6f41 100644 --- a/src/emulauncher.cpp +++ b/src/emulauncher.cpp @@ -103,12 +103,19 @@ void EmuLauncher::connectSignals() void EmuLauncher::updateMediaImageContainers() { qDebug() << "updateMediaImageContainers slot"; - int mtid = mediaTypeSelectBox->getSelected() - ? mediaTypeSelectBox->getSelected()->getId() - : -1; - int plfid = platformSelectBox->getSelected() - ? platformSelectBox->getSelected()->getId() - : -1; + int mtid, plfid = -1; + try { + mtid = mediaTypeSelectBox->getSelected() + ? mediaTypeSelectBox->getSelected()->getId() + : -1; + plfid = platformSelectBox->getSelected() + ? platformSelectBox->getSelected()->getId() + : -1; + } + catch(EmuFrontException &e){ + QMessageBox::warning(this, "Exception", e.what()); + return; + } if (!dbMic) dbMic = new DbMediaImageContainer(this); dbMic->filter(mtid, plfid); diff --git a/src/main.cpp b/src/main.cpp index a8a4295..af5135c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -23,7 +23,7 @@ int main(int argc, char *argv[]) { - QApplication app(argc, argv); + QApplication app(argc, argv); QStringList arglst = app.arguments(); bool reset = arglst.contains("reset", Qt::CaseInsensitive); MainWindow mw; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 733cefc..cdc0f29 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -307,6 +307,7 @@ bool MainWindow::testDB(bool reset) } } +/* Throws EmuFrontException */ void MainWindow::createDB() const { try diff --git a/src/utils/emuhelper.cpp b/src/utils/emuhelper.cpp index a816acc..6c06a2a 100644 --- a/src/utils/emuhelper.cpp +++ b/src/utils/emuhelper.cpp @@ -35,6 +35,7 @@ EmuHelper::EmuHelper(QObject *parent) : // TODO: These two launch functions may be merged to one and/or split into some common helper functions. +/* Throws EmuFrontException */ void EmuHelper::launch(const Executable * ex, QList micList) { if (micList.count() < 1) { @@ -66,6 +67,7 @@ void EmuHelper::launch(const Executable * ex, QList micLi qDeleteAll(micList); } +/* Throws EmuFrontException */ void EmuHelper::launch(const Executable * ex, QList micList, QList miList, int mediaCount, QString tmp) { diff --git a/src/utils/fileutil.cpp b/src/utils/fileutil.cpp index ecc3b59..6ab5334 100644 --- a/src/utils/fileutil.cpp +++ b/src/utils/fileutil.cpp @@ -132,6 +132,7 @@ int FileUtil::scanFilePath(FilePathObject *fp, } /* Uses crc32 from zlib.h to count crc32 checksum value */ +/* Throws EmuFrontException */ quint32 FileUtil::readCrc32(QString filePath) { // todo ... use some crc32 tool for this ... or maybe use md5 or something like that!!! diff --git a/src/utils/unziphelper.cpp b/src/utils/unziphelper.cpp index 14b4bce..0304e5b 100644 --- a/src/utils/unziphelper.cpp +++ b/src/utils/unziphelper.cpp @@ -33,6 +33,7 @@ UnzipHelper::UnzipHelper(QObject *parent) : { } +/* Throws EmuFrontException */ QMap UnzipHelper::listContents(const QString filePath, const FilePathObject *fp) { if (!fp->getSetup()){ diff --git a/src/widgets/efcombobox.cpp b/src/widgets/efcombobox.cpp index d0a3d80..bcd32b1 100644 --- a/src/widgets/efcombobox.cpp +++ b/src/widgets/efcombobox.cpp @@ -29,8 +29,6 @@ EFComboBox::EFComboBox(DatabaseManager *dbMan, QWidget *parent) : QComboBox(parent), dbManager(dbMan) { - if (!dbManager) - throw EmuFrontException("Database manager is not available!"); setSizeAdjustPolicy(QComboBox::AdjustToContents); updateDataModel(); } @@ -46,6 +44,7 @@ void EFComboBox::updateDataModel(bool reset) setModel(model); } +/* Throws EmuFrontException */ EmuFrontObject* EFComboBox::getSelected() const { EmuFrontObject *efo = 0; @@ -67,7 +66,7 @@ EmuFrontObject* EFComboBox::getSelected() const qDebug() << "Fetching a data object with id " << rec.value(dataModelIndex_id).toInt(); EmuFrontObject *o - = dbManager->getDataObject(rec.value(dataModelIndex_id).toInt()); + = dbManager->getDataObject(rec.value(dataModelIndex_id).toInt()); /* Throws EmuFrontException */ return o; }