Tracking down error with storing media image files to database.
authorMikko Keinänen <mikko.keinanen@gmail.com>
Thu, 2 Sep 2010 21:15:18 +0000 (00:15 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Thu, 2 Sep 2010 21:15:18 +0000 (00:15 +0300)
src/db/databasemanager.cpp
src/db/dbfile.cpp
src/db/dbmediaimage.cpp
src/db/dbmediaimage.h
src/db/dbmediaimagecontainer.cpp
src/dialogs/mediaimagepathmaindialog.cpp
src/utils/fileutil.cpp

index ae612b4..64ed170 100644 (file)
@@ -115,7 +115,9 @@ EmuFrontObject* DatabaseManager::getDataObject(int id)
 
 EmuFrontObject* DatabaseManager::getDataObject(QString filter)
 {
+    qDebug() << "Filtering data object" << filter;
     filterDataObjects(filter);
+    qDebug() << "...done filtering.";
     return getFilteredDataObject();
 }
 
index d462e82..d607ca5 100644 (file)
@@ -17,6 +17,7 @@
 // You should have received a copy of the GNU General Public License
 // along with EmuFront.  If not, see <http://www.gnu.org/licenses/>.
 
+#include <QDebug>
 #include <QSqlRecord>
 #include <QSqlQuery>
 #include <QSqlTableModel>
@@ -78,6 +79,7 @@ bool DbFile::insertDataObjectToModel(const EmuFrontObject *ob)
 
 int DbFile::insertFile(const EmuFrontFile *mi)
 {
+    qDebug() << "Inserting file " << mi->getName() << " to db.";
     QSqlQuery q;
     q.prepare("INSERT INTO file "
         "(id, name, type, checksum, size, updatetime) "
index 1741980..a56620c 100644 (file)
@@ -28,31 +28,31 @@ DbMediaImage::DbMediaImage(QObject *parent)
     type = EmuFrontFile::FileType_MediaImage;
 }
 
-/*bool DbMediaImage::updateDataObjectToModel(const EmuFrontObject *efo)
+bool DbMediaImage::updateDataObjectToModel(const EmuFrontObject *efo)
 {
     // TODO
     return false;
-}*/
+}
 
-/*bool DbMediaImage::insertDataObjectToModel(const EmuFrontObject *efo)
+bool DbMediaImage::insertDataObjectToModel(const EmuFrontObject *efo)
 {
     // TODO
     return false;
-}*/
+}
 
-/*bool DbMediaImage::deleteDataObjectFromModel(QModelIndex *i)
+bool DbMediaImage::deleteDataObjectFromModel(QModelIndex *i)
 {
     // TODO
     return false;
-}*/
+}
 
-/*int DbMediaImage::countDataObjectRefs(int id) const
+int DbMediaImage::countDataObjectRefs(int id) const
 {
     // TODO
     return -1;
-}*/
+}
 
-/*QString DbMediaImage::constructSelect(QString whereClause) const
+QString DbMediaImage::constructSelect(QString whereClause) const
 {
     // TODO
     return "";
@@ -62,21 +62,20 @@ QString DbMediaImage::constructSelectById(int id) const
 {
     // TODO
     return "";
-}*/
+}
 
-/*EmuFrontObject* DbMediaImage::recordToDataObject(const QSqlRecord *)
+EmuFrontObject* DbMediaImage::recordToDataObject(const QSqlRecord *)
 {
     // TODO
     return 0;
-}*/
+}
 
-/*QSqlQueryModel* DbMediaImage::getData()
+QSqlQueryModel* DbMediaImage::getData()
 {
     QSqlTableModel *model = new QSqlTableModel;
     model->setTable(DB_TABLE_NAME_FILE);
-}*/
-
-
+    return model;
+}
 
 int DbMediaImage::insertMediaImage(const MediaImage *mi)
 {
@@ -85,19 +84,26 @@ int DbMediaImage::insertMediaImage(const MediaImage *mi)
 
 QList<int> DbMediaImage::storeMediaImages(QList<MediaImage *> images)
 {
+    qDebug() << "Storing media images to database.";
     QList<int> ids  = QList<int>();
     foreach(MediaImage* mi, images)
     {
         QString cksum = mi->getCheckSum();
+        qDebug() << "Storing media image " << mi->getName()
+            << " with checksum " << cksum;
+        // TODO: Crashed: Filtering never gets to dbtablemodelmanagers
+        // filterDataObjects!
         EmuFrontObject *o = getFileByChecksum(cksum);
         int id = o ? o->getId() : -1;
         if (id >= 0)
         {
+            qDebug() << "This media image already exists with id " << id;
             // this media image is already in the database
             // TODO: what if the name differs?
         }
         else if (id < 0)
         {
+            qDebug() << "This media image is not yet in the db.";
             id = insertMediaImage(mi);
             if (id < 0)
             {
@@ -107,4 +113,5 @@ QList<int> DbMediaImage::storeMediaImages(QList<MediaImage *> images)
         }
         ids.append(id);
     }
+    return ids;
 }
index 77032b7..f17abfd 100644 (file)
@@ -28,18 +28,18 @@ class DbMediaImage : public DbFile
 public:
     DbMediaImage(QObject *parent);
     QList<int> storeMediaImages(QList<MediaImage*>);
-    //virtual bool updateDataObjectToModel(const EmuFrontObject *);
-    //virtual bool insertDataObjectToModel(const EmuFrontObject *);
-    //virtual bool deleteDataObjectFromModel(QModelIndex *);
-    //virtual int countDataObjectRefs(int id) const;
-    //int getMediaImage(QString checksum) const;
+    virtual bool updateDataObjectToModel(const EmuFrontObject *);
+    virtual bool insertDataObjectToModel(const EmuFrontObject *);
+    virtual bool deleteDataObjectFromModel(QModelIndex *);
+    virtual int countDataObjectRefs(int id) const;
+    int getMediaImage(QString checksum) const;
     int insertMediaImage(const MediaImage*);
 protected:
-    //virtual QString constructSelect(QString whereClause) const;
-    //virtual QString constructSelectById(int id) const;
-    //virtual EmuFrontObject* recordToDataObject(const QSqlRecord *);
+    virtual QString constructSelect(QString whereClause) const;
+    virtual QString constructSelectById(int id) const;
+    virtual EmuFrontObject* recordToDataObject(const QSqlRecord *);
 private:
-    //virtual QSqlQueryModel* getData();
+    virtual QSqlQueryModel* getData();
 };
 
 #endif // DBMEDIAIMAGE_H
index a0a4569..d35a9a8 100644 (file)
@@ -17,6 +17,7 @@
 // You should have received a copy of the GNU General Public License
 // along with EmuFront.  If not, see <http://www.gnu.org/licenses/>.
 
+#include <QDebug>
 #include "dbmediaimagecontainer.h"
 
 DbMediaImageContainer::DbMediaImageContainer(QObject *parent)
@@ -81,8 +82,10 @@ int DbMediaImageContainer::getMediaImageContainer(QString checksum) const
 
 void DbMediaImageContainer::storeContainers(QList<MediaImageContainer *> lst)
 {
+    qDebug() << "Storing media image containers to database.";
     foreach(MediaImageContainer *mic, lst)
     {
+        qDebug() << "Media image container " << mic->getName();
         QList<MediaImage*> images = mic->getMediaImages();
         if (getMediaImageContainer(mic->getCheckSum()) >= 0)
             continue;
index 8af45ef..23c6121 100644 (file)
@@ -69,7 +69,9 @@ void MediaImagePathMainDialog::beginScanFilePath()
         l << "*.zip"; // TODO set filters in a global constant class
 
         QList<MediaImageContainer*> files = fileUtil.scanFilePath(fpo, l);
+        qDebug() << "Storing scanned " << files.size() << " files to database";
         dbMediaImageContainer->storeContainers(files);
+        qDebug() << "Done storing scanned " << files.size() << " files to database";
     }
     catch (EmuFrontException s)
     {
index a92f751..222941c 100644 (file)
@@ -33,6 +33,7 @@ QList<MediaImageContainer*> FileUtil::scanFilePath(const FilePathObject *fp, QSt
     if (!dir.exists() || !dir.isReadable())
         throw EmuFrontException(tr("Directory %1 doesn't exists or isn't readable!").arg(fp->getName()));
 
+    qDebug() << QString("Scanning directory %1.").arg(fp->getName());
     dir.setFilter(QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot | QDir::Readable);
 
     if (filters.count() > 0) dir.setNameFilters(filters);
@@ -60,11 +61,14 @@ QList<MediaImageContainer*> FileUtil::scanFilePath(const FilePathObject *fp, QSt
                     // * if we assign a copy of the setup object -> waste of memory and time
                     // * this function is designed to be used from media image path main dialog
                     //   where we can ensure the lifecycle of file path object -> maybe move the implementation there!?
+                    // TODO: Ensure this! We really need a reference instead of 1000s of copies of setup object!!!
                     fp->getSetup()
                 );
             containers.append(con);
+            qDebug() << "We have " << containers.size() << " containers.";
         }
     }
+    qDebug() << "Done scanning files!";
     return containers;
 }
 
@@ -76,20 +80,27 @@ QList<MediaImage*> FileUtil::listContents(const QString filePath, const FilePath
     if (ec != UnZip::Ok)
         throw EmuFrontException(tr("Error while opening zip-file %1, error code %2").arg(filePath).arg(ec));
 
+    if (!fp->getSetup()){
+        throw EmuFrontException(tr("Setup not available with %1.").arg(fp->getName()));
+    }
+
     Setup *sup = fp->getSetup();
     QList<UnZip::ZipEntry> list = uz.entryList();
     QList<MediaImage*>  fileList;
     foreach(UnZip::ZipEntry entry, list)
     {
+        qDebug() << "Zip entry " << entry.filename;
         if (isSupportedFile(entry.filename, sup->getSupportedFileTypeExtensions()))
         {
             QString checksum = QString("%1").arg(entry.crc32, 0, 16);
+            qDebug() << "Checksum " << checksum;
             MediaImage *effo = new MediaImage(entry.filename,
                 checksum, entry.uncompressedSize);
             fileList << effo;
         }
     }
 
+    qDebug() << "File list has " << fileList.size() << " entries.";
     return fileList;
 
 }