movido el codigo de eliminaci?n de objetos de la base de datos a DBHelper

This commit is contained in:
Luis Ángel San Martín 2013-05-27 12:37:37 +02:00
parent 62a6561485
commit 250152898d
8 changed files with 41 additions and 31 deletions

View File

@ -136,15 +136,6 @@ void ComicDB::update(QSqlDatabase & db)
}
void ComicDB::removeFromDB(QSqlDatabase & db)
{
QSqlQuery query(db);
query.prepare("DELETE FROM comic WHERE id = :id");
query.bindValue(":id", id);
query.exec();
//query.finish();
}
bool ComicDB::isDir()
{
return false;

View File

@ -128,7 +128,6 @@ public:
bool load(qulonglong id, QSqlDatabase & db);
qulonglong insert(QSqlDatabase & db);
void removeFromDB(QSqlDatabase & db);
void update(QSqlDatabase & db);
bool hasCover() {return _hasCover;};

View File

@ -77,13 +77,4 @@ QList<LibraryItem *> Folder::getFoldersFromParent(qulonglong parentId, QSqlDatab
}
return list;
}
void Folder::removeFromDB(QSqlDatabase & db)
{
QSqlQuery query(db);
query.prepare("DELETE FROM folder WHERE id = :id");
query.bindValue(":id", id);
query.exec();
}
}

View File

@ -21,7 +21,6 @@ public:
static QList<LibraryItem *> getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort = true);
qulonglong insert(QSqlDatabase & db);
bool isDir(){return true;};
void removeFromDB(QSqlDatabase & db);
};
#endif

View File

@ -1,13 +1,10 @@
#ifndef __LIBRARY_ITEM_H
#define __LIBRARY_ITEM_H
#include <QSqlDatabase>
class LibraryItem
{
public:
virtual bool isDir() = 0;
virtual void removeFromDB(QSqlDatabase & db) = 0;
QString name;
QString path;
qulonglong parentId;

View File

@ -8,6 +8,7 @@
#include <QFileInfo>
#include <QCoreApplication>
#include <QTextStream>
#include <QSqlDatabase>
#include "library_item.h"
#include "comic_db.h"
@ -124,4 +125,27 @@ QString DBHelper::getFolderName(const QString & libraryName, qulonglong id)
db.close();
QSqlDatabase::removeDatabase(libraryPath);
return name;
}
//objects management
void DBHelper::removeFromDB(LibraryItem * item, QSqlDatabase & db)
{
if(item->isDir())
DBHelper::removeFromDB(dynamic_cast<Folder *>(item),db);
else
DBHelper::removeFromDB(dynamic_cast<ComicDB *>(item),db);
}
void DBHelper::removeFromDB(Folder * folder, QSqlDatabase & db)
{
QSqlQuery query(db);
query.prepare("DELETE FROM folder WHERE id = :id");
query.bindValue(":id", folder->id);
query.exec();
}
void DBHelper::removeFromDB(ComicDB * comic, QSqlDatabase & db)
{
QSqlQuery query(db);
query.prepare("DELETE FROM comic WHERE id = :id");
query.bindValue(":id", comic->id);
query.exec();
}

View File

@ -2,11 +2,14 @@
#define DB_HELPER_H
class QString;
class LibraryItem;
#include "comic_db.h"
#include <QMap>
#include <QList>
class ComicDB;
class Folder;
class LibraryItem;
class QSqlDatabase;
class DBHelper
{
public:
@ -16,7 +19,12 @@ public:
static QList<LibraryItem *> getFolderComicsFromLibrary(const QString & libraryName, qulonglong folderId);
static qulonglong getParentFromComicFolderId(const QString & libraryName, qulonglong id);
static ComicDB getComicInfo(const QString & libraryName, qulonglong id);
static QString getFolderName(const QString & libraryName, qulonglong id);
static QString getFolderName(const QString & libraryName, qulonglong id);
//objects management
static void removeFromDB(LibraryItem * item, QSqlDatabase & db);
static void removeFromDB(Folder * folder, QSqlDatabase & db);
static void removeFromDB(ComicDB * comic, QSqlDatabase & db);
};
#endif

View File

@ -7,6 +7,7 @@
#include <QSqlRecord>
#include "data_base_management.h"
#include "qnaturalsorting.h"
#include "db_helper.h"
#include <algorithm>
using namespace std;
@ -241,7 +242,7 @@ void LibraryCreator::update(QDir dirS)
{
if(stopRunning)
return;
listD.at(j)->removeFromDB(_database);
DBHelper::removeFromDB(listD.at(j),(_database));
}
updated = true;
}
@ -298,7 +299,7 @@ void LibraryCreator::update(QDir dirS)
{
if(nameS!="/.yacreaderlibrary")
{
fileInfoD->removeFromDB(_database);
DBHelper::removeFromDB(fileInfoD,_database);
j++;
}
else
@ -318,7 +319,7 @@ void LibraryCreator::update(QDir dirS)
else
if(fileInfoD->isDir()) //delete this folder from library
{
fileInfoD->removeFromDB(_database);
DBHelper::removeFromDB(fileInfoD,_database);
j++;
}
else //both are files //BUG on windows (no case sensitive)
@ -334,7 +335,7 @@ void LibraryCreator::update(QDir dirS)
{
if(comparation > 0) //delete thumbnail
{
fileInfoD->removeFromDB(_database);
DBHelper::removeFromDB(fileInfoD,_database);
j++;
}
else //same file