Added some exception handling. Marked all the functions throwing
authorMikko Keinänen <mikko.keinanen@gmail.com>
Wed, 17 Nov 2010 22:31:34 +0000 (00:31 +0200)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Wed, 17 Nov 2010 22:31:34 +0000 (00:31 +0200)
EmuFrontException with a comment.

20 files changed:
src/db/databasemanager.cpp
src/db/dbemufrontfileobject.cpp
src/db/dbexecutable.cpp
src/db/dbfile.cpp
src/db/dbfilepath.cpp
src/db/dbmediaimagecontainer.cpp
src/db/dbsetup.cpp
src/db/dbtablemodelmanager.cpp
src/dialogs/executableeditdialog.cpp
src/dialogs/executableeditdialog.h
src/dialogs/mediaimagepathdialog.cpp
src/dialogs/setupeditdialog.cpp
src/dialogs/setupeditdialog.h
src/emulauncher.cpp
src/main.cpp
src/mainwindow.cpp
src/utils/emuhelper.cpp
src/utils/fileutil.cpp
src/utils/unziphelper.cpp
src/widgets/efcombobox.cpp

index 5f33485..448f271 100644 (file)
@@ -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<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;
index 120446b..5992d68 100644 (file)
@@ -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<EmuFrontFile*>(o);
     }
     EmuFrontObject *efo = createEmuFrontFileObject(id, name, f);
index b0bb849..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();
index 64884be..81d2d5d 100644 (file)
@@ -134,6 +134,7 @@ QSqlQueryModel* DbFile::getData()
     return model;
 }
 
+/* Throws EmuFrontException */
 EmuFrontObject* DbFile::getFileByChecksum(QString checksum)
 {
     return getDataObject(QString("checksum LIKE '%1'").arg(checksum));
index cc37e94..3c46f4f 100644 (file)
@@ -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<Setup*>(dbSetup->getDataObject(setupId));
+    Setup *sup = dynamic_cast<Setup*>(dbSetup->getDataObject(setupId)); /* Throws EmuFrontException */
        // TODO
     //int lastScanned = 0;
     return new FilePathObject(id, fpath, fileType, sup);
index 4ed6d10..738fd19 100644 (file)
@@ -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<FilePathObject*>(dbFilePath->getDataObject(fpId));
+        = dynamic_cast<FilePathObject*>(dbFilePath->getDataObject(fpId)); /* Throws EmuFrontException */
     //int supId = rec->value(MIC_SetupId).toInt();
     //Setup *sup = dbSetup->getDataObject(supId)
     QMap<QString, EmuFrontObject*> images = dbMediaImage->getMediaImages(id);
@@ -213,6 +214,7 @@ void DbMediaImageContainer::storeContainers(QList<MediaImageContainer *> lst, Fi
     }
 }
 
+/* Throws EmuFrontException */
 void DbMediaImageContainer::linkMediaImagesWithContainer(int micId, QList<EmuFrontObject*> 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));
index 0b648bf..8325544 100644 (file)
@@ -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<Platform*>(dbPlatform->getDataObject(plfId));
-    MediaType *mt = dynamic_cast<MediaType*>(dbMediaType->getDataObject(mtId));
+    Platform *plf = dynamic_cast<Platform*>(dbPlatform->getDataObject(plfId)); /* Throws EmuFrontException */
+    MediaType *mt = dynamic_cast<MediaType*>(dbMediaType->getDataObject(mtId)); /* Throws EmuFrontException */
     s = new Setup(id, plf, mt, list);
     return s;
 }
index fe25caa..87fdba4 100644 (file)
@@ -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!");
index 4be8b01..d23a838 100644 (file)
@@ -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<Setup*>(o);
     return ex;
index bd899ff..6b82aee 100644 (file)
@@ -46,7 +46,7 @@ private:
     void initWidgets();
     void layout();
     void setSelectedSetup(const Setup*);
-    Setup* getSelectedSetup() const;
+    Setup* getSelectedSetup();
     QLineEdit *nameEdit;
     QLineEdit *execEdit;
     QLineEdit *optEdit;
index 6c3e4f5..ea8276d 100644 (file)
@@ -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<Setup*>(ob);
 }
index c6fa561..5fce5d5 100644 (file)
@@ -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<Platform*>(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<MediaType*>(o);
     return mt;
index d116ce0..0ec58a8 100644 (file)
@@ -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
index f750963..42a6f41 100644 (file)
@@ -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);
index a8a4295..af5135c 100644 (file)
@@ -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;
index 733cefc..cdc0f29 100644 (file)
@@ -307,6 +307,7 @@ bool MainWindow::testDB(bool reset)
     }
 }
 
+/* Throws EmuFrontException */
 void MainWindow::createDB() const
 {
     try
index a816acc..6c06a2a 100644 (file)
@@ -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<MediaImageContainer *> micList)
 {
     if (micList.count() < 1) {
@@ -66,6 +67,7 @@ void EmuHelper::launch(const Executable * ex, QList<MediaImageContainer *> micLi
     qDeleteAll(micList);
 }
 
+/* Throws EmuFrontException */
 void EmuHelper::launch(const Executable * ex, QList<MediaImageContainer *> micList,
     QList<EmuFrontObject *> miList, int mediaCount, QString tmp)
 {
index ecc3b59..6ab5334 100644 (file)
@@ -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!!!
index 14b4bce..0304e5b 100644 (file)
@@ -33,6 +33,7 @@ UnzipHelper::UnzipHelper(QObject *parent) :
 {
 }
 
+/* Throws EmuFrontException */
 QMap<QString, EmuFrontObject*> UnzipHelper::listContents(const QString filePath, const FilePathObject *fp)
 {
     if (!fp->getSetup()){
index d0a3d80..bcd32b1 100644 (file)
@@ -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;
 }