Expanded support for storing media image containers.
authorMikko Keinänen <mikko.keinanen@gmail.com>
Fri, 24 Sep 2010 19:17:07 +0000 (22:17 +0300)
committerMikko Keinänen <mikko.keinanen@gmail.com>
Fri, 24 Sep 2010 19:17:07 +0000 (22:17 +0300)
doc/uml-db_layer.dia
src/db/dbmediaimage.cpp
src/db/dbmediaimage.h
src/db/dbmediaimagecontainer.cpp
src/db/dbmediaimagecontainer.h

index 4479ecc..e3fe094 100644 (file)
Binary files a/doc/uml-db_layer.dia and b/doc/uml-db_layer.dia differ
index e67b1fc..d909556 100644 (file)
@@ -119,3 +119,10 @@ QList<int> DbMediaImage::storeMediaImages(QList<MediaImage *> images)
     }
     return ids;
 }
+
+void DbMediaImage::removeOrphanedMediaImages(QList<int> ids)
+{
+    // TODO
+    // go through the list of media image ids,
+    // if the media image with curr id doesn't have a container, delete it
+}
index c08207b..fde9bcc 100644 (file)
@@ -28,6 +28,7 @@ class DbMediaImage : public DbFile
 public:
     DbMediaImage(QObject *parent);
     QList<int> storeMediaImages(QList<MediaImage*>);
+    void removeOrphanedMediaImages(QList<int> ids);
     /*virtual bool updateDataObjectToModel(const EmuFrontObject *);
     virtual bool insertDataObjectToModel(const EmuFrontObject *);
     virtual bool deleteDataObjectFromModel(QModelIndex *);
index 84d2aba..830d8b3 100644 (file)
@@ -110,10 +110,22 @@ void DbMediaImageContainer::storeContainers(QList<MediaImageContainer *> lst)
         if (ids.count() > 0)
         {
             // store media image to db
+            int micId = insertDataObjectToModel(mic);
 
-            // get last insert id of stored media image
+            if (micId < 0){
+                // need to remove the media images without media image container in list 'ids'
+                dbMediaImage->removeOrphanedMediaImages(ids);
+                // 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()));
+            }
 
             // link all the media image ids in list to media image container id
+            linkMediaImagesWithContainer(micId, ids);
         }
     }
 }
+
+void DbMediaImageContainer::linkMediaImagesWithContainer(int micId, QList<int> miIds)
+{
+    // TODO
+}
index 0387ffa..c1a5494 100644 (file)
@@ -41,6 +41,7 @@ protected:
     virtual EmuFrontObject* recordToDataObject(const QSqlRecord *);
 private:
     virtual QSqlQueryModel* getData();
+    void linkMediaImagesWithContainer(int, QList<int>);
     DbMediaImage *dbMediaImage;
  };