Need FilePathObject AND SetUp. FilePathObject contains already SetUp, so
authorMikko Keinänen <mikko.keinanen@gmail.com>
Sun, 26 Sep 2010 14:15:46 +0000 (17:15 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Sun, 26 Sep 2010 14:15:46 +0000 (17:15 +0300)
FilePathObject replaces SetUp in MediaImageContainer.

src/dataobjects/mediaimagecontainer.cpp
src/dataobjects/mediaimagecontainer.h
src/db/dbmediaimage.cpp
src/db/dbmediaimagecontainer.cpp
src/utils/fileutil.cpp
src/utils/fileutil.h

index bfb6467..8671cd2 100644 (file)
@@ -23,21 +23,27 @@ MediaImageContainer::MediaImageContainer()
     : EmuFrontFile(EmuFrontFile::FileType_MediaImageContainer)
 {
     lstMediaImage = QList<MediaImage*>();
-    setup = 0;
+    //setup = 0;
+    filePath = 0;
 }
 
-MediaImageContainer::MediaImageContainer(int id, QString name, QString checksum, int size, QList<MediaImage *>images, Setup *setup)
-    : EmuFrontFile(id, name, checksum, size, EmuFrontFile::FileType_MediaImageContainer), lstMediaImage(images), setup(setup)
+MediaImageContainer::MediaImageContainer(int id, QString name, 
+    QString checksum, int size, QList<MediaImage *>images/*, Setup *setup*/, FilePathObject *fpo)
+    : EmuFrontFile(id, name, checksum, size, EmuFrontFile::FileType_MediaImageContainer),
+        lstMediaImage(images)/*, setup(setup)*/, filePath(fpo)
 { }
 
-MediaImageContainer::MediaImageContainer(QString name, QString checksum, int size, QList<MediaImage *>images, Setup *setup)
-    : EmuFrontFile(-1, name, checksum, size, EmuFrontFile::FileType_MediaImageContainer), lstMediaImage(images), setup(setup)
+MediaImageContainer::MediaImageContainer(QString name, QString checksum,
+    int size, QList<MediaImage *>images/*, Setup *setup*/, FilePathObject *fpo)
+    : EmuFrontFile(-1, name, checksum, size, EmuFrontFile::FileType_MediaImageContainer),
+        lstMediaImage(images)/*, setup(setup)*/, filePath(fpo)
 { }
 
 MediaImageContainer::~MediaImageContainer()
 {
     qDeleteAll(lstMediaImage);
-    delete setup;
+    //delete setup;
+    delete filePath;
 }
 
 MediaImageContainer::MediaImageContainer(MediaImageContainer &mic)
@@ -46,7 +52,8 @@ MediaImageContainer::MediaImageContainer(MediaImageContainer &mic)
     lstMediaImage = QList<MediaImage*>();
     foreach(MediaImage *mi, mic.lstMediaImage)
         lstMediaImage.append(new MediaImage(*mi));
-    setup = new Setup(*(mic.setup));
+    //setup = new Setup(*(mic.setup));
+    filePath = new FilePathObject(*(mic.filePath));
 }
 
 MediaImageContainer& MediaImageContainer::operator =(MediaImageContainer &mic)
@@ -60,7 +67,8 @@ MediaImageContainer& MediaImageContainer::operator =(MediaImageContainer &mic)
     qDeleteAll(lstMediaImage);
     foreach(MediaImage *mi, mic.lstMediaImage)
         lstMediaImage.append(new MediaImage(*mi));
-    setup = new Setup(*(mic.setup));
+    //setup = new Setup(*(mic.setup));
+    filePath = new FilePathObject(*(mic.filePath));
     return (*this);
 }
 
@@ -76,8 +84,14 @@ QList<MediaImage *> MediaImageContainer::getMediaImages() const
 void MediaImageContainer::addMediaImage(MediaImage *mi)
 {   lstMediaImage.append(mi); }
 
-Setup* MediaImageContainer::getSetup() const
+/*Setup* MediaImageContainer::getSetup() const
 { return setup; }
 
 void MediaImageContainer::setSetup(Setup *s)
-{ setup = s; }
+{ setup = s; }*/
+
+FilePathObject* MediaImageContainer::getFilePath() const
+{ return filePath; }
+
+void MediaImageContainer::setFilePath(FilePathObject *fp)
+{ filePath = fp; }
index ee94adb..419bc10 100644 (file)
 #include "emufrontfileobject.h"
 #include "mediaimage.h"
 #include "setup.h"
+#include "filepathobject.h"
 
 class MediaImageContainer : public EmuFrontFile
 {
 public:
     MediaImageContainer();
-    MediaImageContainer(int id, QString name, QString checksum, int size, QList<MediaImage*> images, Setup *setup);
-    MediaImageContainer(QString name, QString checksum, int size, QList<MediaImage*> images, Setup *setup);
+    MediaImageContainer(int id, QString name, QString checksum,
+        int size, QList<MediaImage*> images/*, Setup *setup*/, FilePathObject *fpo);
+    MediaImageContainer(QString name, QString checksum,
+        int size, QList<MediaImage*> images/*, Setup *setup*/, FilePathObject *fpo);
     ~MediaImageContainer();
     MediaImageContainer(MediaImageContainer&);
     MediaImageContainer& operator=(MediaImageContainer&);
     QList<MediaImage*> getMediaImages() const;
     void setMediaImages(QList<MediaImage*>);
     void addMediaImage(MediaImage*);
-    void setSetup(Setup *);
-    Setup* getSetup() const;
+    /*void setSetup(Setup *);
+    Setup* getSetup() const;*/
+    void setFilePath(FilePathObject*);
+    FilePathObject* getFilePath() const;
 private:
     QList<MediaImage*> lstMediaImage;
-    Setup *setup;
+    //Setup *setup;
+    FilePathObject *filePath;
 };
 
 #endif // MEDIAIMAGECONTAINER_H
index d909556..6d452a5 100644 (file)
@@ -114,8 +114,10 @@ QList<int> DbMediaImage::storeMediaImages(QList<MediaImage *> images)
                 qDebug() << "Failed inserting media image" << mi->getName();
             }
         }
-        if (id > 0)
+        if (id > 0) {
             ids.append(id);
+            mi->setId(id);
+        }
     }
     return ids;
 }
index 8e9d79c..5ad1f87 100644 (file)
@@ -35,7 +35,28 @@ bool DbMediaImageContainer::updateDataObjectToModel(const EmuFrontObject *efo)
 
 int DbMediaImageContainer::insertDataObjectToModel(const EmuFrontObject *efo)
 {
-    // TODO
+    /* "CREATE TABLE IF NOT EXISTS mediaimagecontainer "
+                        "(id INTEGER PRIMARY KEY, "
+                        "fileid INTEGER REFERENCES file(id), "
+                        "filepathid INTEGER REFERENCES filepath(id), "
+                        "updatetime NUMERIC)"*/
+
+    const MediaImageContainer *mic
+        = dynamic_cast<const MediaImageContainer *>(efo);
+
+    // Insert MediaImageContainer first as a EmuFrontFile object...
+
+    int fileId = DbFile::insertDataObjectToModel(mic);
+
+    if (fileId < 0) {
+        throw new EmuFrontException(
+                QString(tr("Inserting media image container %1 to file database failed"))
+                .arg(mic->getName()));
+
+    }
+
+    // Insert to mediaimagecontainer table
+
     return -1;
 }
 
@@ -116,14 +137,18 @@ void DbMediaImageContainer::storeContainers(QList<MediaImageContainer *> lst, Fi
                 // insert the media image container file to file table
                 int micFileId = DbFile::insertDataObjectToModel(mic);
                 if (micFileId < 0) {
-                    throw new EmuFrontException(QString(tr("Inserting media image container %1 to file database failed")).arg(mic->getName()));
+                    throw new EmuFrontException(
+                        QString(tr("Inserting media image container %1 to file database failed"))
+                            .arg(mic->getName()));
                 }
                 int fpId = fpo->getId();
                 // store media image to db
                 int micId = insertDataObjectToModel(mic);
                 if (micId < 0){
                     // because the previous insert failed, the next is most likely going to fail, throw exception
-                    throw new EmuFrontException(QString(tr("Failed inserting media image container '%1' to database!")).arg(mic->getName()));
+                    throw new EmuFrontException(
+                        QString(tr("Failed inserting media image container '%1' to database!"))
+                            .arg(mic->getName()));
                 }
 
                 // link all the media image ids in list to media image container id
index b2ec899..2df70b4 100644 (file)
@@ -20,7 +20,7 @@ FileUtil::~FileUtil()
     delete[] buf;
 }
 
-QList<MediaImageContainer*> FileUtil::scanFilePath(const FilePathObject *fp, QStringList filters)
+QList<MediaImageContainer*> FileUtil::scanFilePath(FilePathObject *fp, QStringList filters)
 {
     if (!fp->getSetup()){
         throw EmuFrontException(tr("Setup not available with %1.").arg(fp->getName()));
@@ -71,7 +71,8 @@ QList<MediaImageContainer*> FileUtil::scanFilePath(const FilePathObject *fp, QSt
                     // * 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()
+                    //fp->getSetup(),
+                    fp
                 );
             containers.append(con);
             qDebug() << "We have " << containers.size() << " containers.";
index 76ad3ba..3543ddc 100644 (file)
@@ -16,7 +16,7 @@ class FileUtil : QObject
 public:
     FileUtil(QObject *parent);
     ~FileUtil();
-    QList<MediaImageContainer*> scanFilePath(const FilePathObject *fpo, const QStringList filters);
+    QList<MediaImageContainer*> scanFilePath(FilePathObject *fpo, const QStringList filters);
 private:
     char *buf;
     quint32 readCrc32(QString filePath);