From 1faf36bbb1c2a430808cba6380e4f545a5a78443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Mon, 27 May 2013 13:08:47 +0200 Subject: [PATCH] eliminadas referencias al framework sql de la clase Folder --- YACReaderLibrary/db/folder.cpp | 75 ------------------------ YACReaderLibrary/db/folder.h | 4 -- YACReaderLibrary/db/library_item.h | 2 + YACReaderLibrary/db_helper.cpp | 87 +++++++++++++++++++++++++++- YACReaderLibrary/db_helper.h | 10 ++++ YACReaderLibrary/library_creator.cpp | 4 +- 6 files changed, 99 insertions(+), 83 deletions(-) diff --git a/YACReaderLibrary/db/folder.cpp b/YACReaderLibrary/db/folder.cpp index 7cc10264..ddd1d4e8 100644 --- a/YACReaderLibrary/db/folder.cpp +++ b/YACReaderLibrary/db/folder.cpp @@ -3,78 +3,3 @@ #include #include #include - -Folder::Folder(qulonglong id, QSqlDatabase & db) -{ - QSqlQuery query(db); - query.prepare("SELECT * FROM folder WHERE id = :id"); - query.bindValue(":id",id); - query.exec(); - this->id = id; - this->parentId = 0; - if(query.next()) - { - QSqlRecord record = query.record(); - this->parentId = record.value("parentId").toULongLong(); - this->name = record.value("name").toString(); - this->path = record.value("path").toString(); - } -} - -qulonglong Folder::insert(QSqlDatabase & db) -{ - QSqlQuery query(db); - query.prepare("INSERT INTO folder (parentId, name, path) " - "VALUES (:parentId, :name, :path)"); - query.bindValue(":parentId", parentId); - query.bindValue(":name", name); - query.bindValue(":path", path); - query.exec(); - return query.lastInsertId().toULongLong(); -} - -QList Folder::getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort) -{ - QList list; - - QSqlQuery selectQuery(db); //TODO check - selectQuery.prepare("SELECT * FROM folder WHERE parentId = :parentId and id <> 1"); - selectQuery.bindValue(":parentId", parentId); - selectQuery.exec(); - - Folder * currentItem; - while (selectQuery.next()) - { - QList data; - QSqlRecord record = selectQuery.record(); - for(int i=0;i(list.back()); - QString nameLast = last->name; - QString nameCurrent = currentItem->name; - QList::iterator i; - i = list.end(); - i--; - while ((0 > (lessThan = nameCurrent.localeAwareCompare(nameLast))) && i != list.begin()) - { - i--; - nameLast = (*i)->name; - } - if(lessThan>0) //si se ha encontrado un elemento menor que current, se inserta justo después - list.insert(++i,currentItem); - else - list.insert(i,currentItem); - - } - } - - return list; -} \ No newline at end of file diff --git a/YACReaderLibrary/db/folder.h b/YACReaderLibrary/db/folder.h index a2c2455a..6999e877 100644 --- a/YACReaderLibrary/db/folder.h +++ b/YACReaderLibrary/db/folder.h @@ -3,7 +3,6 @@ #include "library_item.h" -#include #include class Folder : public LibraryItem @@ -15,11 +14,8 @@ public: Folder():knownParent(false), knownId(false){}; Folder(qulonglong sid, qulonglong pid,QString fn, QString fp):knownParent(true), knownId(true){id = sid; parentId = pid;name = fn; path = fp;}; Folder(QString fn, QString fp):knownParent(false), knownId(false){name = fn; path = fp;}; - Folder(qulonglong id, QSqlDatabase & db);//loads a folder from db; void setId(qulonglong sid){id = sid;knownId = true;}; void setFather(qulonglong pid){parentId = pid;knownParent = true;}; - static QList getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort = true); - qulonglong insert(QSqlDatabase & db); bool isDir(){return true;}; }; diff --git a/YACReaderLibrary/db/library_item.h b/YACReaderLibrary/db/library_item.h index bd365012..2f6b8d9f 100644 --- a/YACReaderLibrary/db/library_item.h +++ b/YACReaderLibrary/db/library_item.h @@ -1,6 +1,8 @@ #ifndef __LIBRARY_ITEM_H #define __LIBRARY_ITEM_H +#include + class LibraryItem { public: diff --git a/YACReaderLibrary/db_helper.cpp b/YACReaderLibrary/db_helper.cpp index 44bf6977..6a468450 100644 --- a/YACReaderLibrary/db_helper.cpp +++ b/YACReaderLibrary/db_helper.cpp @@ -62,7 +62,7 @@ QList DBHelper::getFolderContentFromLibrary(const QString & libra QString libraryPath = DBHelper::getLibraries().value(libraryName); QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); - QList list = Folder::getFoldersFromParent(folderId,db,false); + QList list = DBHelper::getFoldersFromParent(folderId,db,false); db.close(); QSqlDatabase::removeDatabase(libraryPath); @@ -84,7 +84,7 @@ qulonglong DBHelper::getParentFromComicFolderId(const QString & libraryName, qul QString libraryPath = DBHelper::getLibraries().value(libraryName); QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary"); - Folder f(id,db); + Folder f = DBHelper::loadFolder(id,db); db.close(); QSqlDatabase::removeDatabase(libraryPath); @@ -128,6 +128,7 @@ QString DBHelper::getFolderName(const QString & libraryName, qulonglong id) } //objects management +//deletes void DBHelper::removeFromDB(LibraryItem * item, QSqlDatabase & db) { if(item->isDir()) @@ -148,4 +149,86 @@ void DBHelper::removeFromDB(ComicDB * comic, QSqlDatabase & db) query.prepare("DELETE FROM comic WHERE id = :id"); query.bindValue(":id", comic->id); query.exec(); +} + +//inserts +qulonglong DBHelper::insert(Folder * folder, QSqlDatabase & db) +{ + QSqlQuery query(db); + query.prepare("INSERT INTO folder (parentId, name, path) " + "VALUES (:parentId, :name, :path)"); + query.bindValue(":parentId", folder->parentId); + query.bindValue(":name", folder->name); + query.bindValue(":path", folder->path); + query.exec(); + return query.lastInsertId().toULongLong(); +} + +//queries +QList DBHelper::getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort) +{ + QList list; + + QSqlQuery selectQuery(db); //TODO check + selectQuery.prepare("SELECT * FROM folder WHERE parentId = :parentId and id <> 1"); + selectQuery.bindValue(":parentId", parentId); + selectQuery.exec(); + + Folder * currentItem; + while (selectQuery.next()) + { + QList data; + QSqlRecord record = selectQuery.record(); + for(int i=0;i(list.back()); + QString nameLast = last->name; + QString nameCurrent = currentItem->name; + QList::iterator i; + i = list.end(); + i--; + while ((0 > (lessThan = nameCurrent.localeAwareCompare(nameLast))) && i != list.begin()) + { + i--; + nameLast = (*i)->name; + } + if(lessThan>0) //si se ha encontrado un elemento menor que current, se inserta justo después + list.insert(++i,currentItem); + else + list.insert(i,currentItem); + + } + } + + return list; +} + +//loads +Folder DBHelper::loadFolder(qulonglong id, QSqlDatabase & db) +{ + Folder folder; + + QSqlQuery query(db); + query.prepare("SELECT * FROM folder WHERE id = :id"); + query.bindValue(":id",id); + query.exec(); + folder.id = id; + folder.parentId = 0; + if(query.next()) + { + QSqlRecord record = query.record(); + folder.parentId = record.value("parentId").toULongLong(); + folder.name = record.value("name").toString(); + folder.path = record.value("path").toString(); + } + + return folder; } \ No newline at end of file diff --git a/YACReaderLibrary/db_helper.h b/YACReaderLibrary/db_helper.h index d5e02e5f..5346dcf8 100644 --- a/YACReaderLibrary/db_helper.h +++ b/YACReaderLibrary/db_helper.h @@ -22,9 +22,19 @@ public: static QString getFolderName(const QString & libraryName, qulonglong id); //objects management + //deletes static void removeFromDB(LibraryItem * item, QSqlDatabase & db); static void removeFromDB(Folder * folder, QSqlDatabase & db); static void removeFromDB(ComicDB * comic, QSqlDatabase & db); + //inserts + static qulonglong insert(Folder * folder, QSqlDatabase & db); + //updates + + //queries + static QList getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort = true); + + //load + static Folder loadFolder(qulonglong id, QSqlDatabase & db); }; #endif \ No newline at end of file diff --git a/YACReaderLibrary/library_creator.cpp b/YACReaderLibrary/library_creator.cpp index 89151bad..0d603ae0 100644 --- a/YACReaderLibrary/library_creator.cpp +++ b/YACReaderLibrary/library_creator.cpp @@ -125,7 +125,7 @@ qulonglong LibraryCreator::insertFolders() if(!(i->knownId)) { i->setFather(currentId); - currentId = i->insert(_database);//insertFolder(currentId,*i); + currentId = DBHelper::insert(&(*i),_database);//insertFolder(currentId,*i); i->setId(currentId); } else @@ -217,7 +217,7 @@ void LibraryCreator::update(QDir dirS) dirS.setSorting(QDir::Name|QDir::IgnoreCase|QDir::LocaleAware|QDir::DirsFirst); QFileInfoList listS = dirS.entryInfoList(); - QList folders = Folder::getFoldersFromParent(_currentPathFolders.last().id,_database); + QList folders = DBHelper::getFoldersFromParent(_currentPathFolders.last().id,_database); QList comics = ComicDB::getComicsFromParent(_currentPathFolders.last().id,_database); QList listD;