mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
eliminadas referencias al framework sql de la clase Folder
This commit is contained in:
parent
250152898d
commit
1faf36bbb1
@ -3,78 +3,3 @@
|
|||||||
#include <QSqlQuery>
|
#include <QSqlQuery>
|
||||||
#include <QSqlRecord>
|
#include <QSqlRecord>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
|
||||||
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<LibraryItem *> Folder::getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort)
|
|
||||||
{
|
|
||||||
QList<LibraryItem *> 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<QVariant> data;
|
|
||||||
QSqlRecord record = selectQuery.record();
|
|
||||||
for(int i=0;i<record.count();i++)
|
|
||||||
data << record.value(i);
|
|
||||||
//TODO sort by sort indicator and name
|
|
||||||
currentItem = new Folder(record.value("id").toULongLong(),record.value("parentId").toULongLong(),record.value("name").toString(),record.value("path").toString());
|
|
||||||
int lessThan = 0;
|
|
||||||
|
|
||||||
if(list.isEmpty() || !sort)
|
|
||||||
list.append(currentItem);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Folder * last = static_cast<Folder *>(list.back());
|
|
||||||
QString nameLast = last->name;
|
|
||||||
QString nameCurrent = currentItem->name;
|
|
||||||
QList<LibraryItem *>::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;
|
|
||||||
}
|
|
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
#include "library_item.h"
|
#include "library_item.h"
|
||||||
|
|
||||||
#include <QSqlDatabase>
|
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
|
||||||
class Folder : public LibraryItem
|
class Folder : public LibraryItem
|
||||||
@ -15,11 +14,8 @@ public:
|
|||||||
Folder():knownParent(false), knownId(false){};
|
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(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(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 setId(qulonglong sid){id = sid;knownId = true;};
|
||||||
void setFather(qulonglong pid){parentId = pid;knownParent = true;};
|
void setFather(qulonglong pid){parentId = pid;knownParent = true;};
|
||||||
static QList<LibraryItem *> getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort = true);
|
|
||||||
qulonglong insert(QSqlDatabase & db);
|
|
||||||
bool isDir(){return true;};
|
bool isDir(){return true;};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#ifndef __LIBRARY_ITEM_H
|
#ifndef __LIBRARY_ITEM_H
|
||||||
#define __LIBRARY_ITEM_H
|
#define __LIBRARY_ITEM_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
class LibraryItem
|
class LibraryItem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -62,7 +62,7 @@ QList<LibraryItem *> DBHelper::getFolderContentFromLibrary(const QString & libra
|
|||||||
QString libraryPath = DBHelper::getLibraries().value(libraryName);
|
QString libraryPath = DBHelper::getLibraries().value(libraryName);
|
||||||
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary");
|
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary");
|
||||||
|
|
||||||
QList<LibraryItem *> list = Folder::getFoldersFromParent(folderId,db,false);
|
QList<LibraryItem *> list = DBHelper::getFoldersFromParent(folderId,db,false);
|
||||||
|
|
||||||
db.close();
|
db.close();
|
||||||
QSqlDatabase::removeDatabase(libraryPath);
|
QSqlDatabase::removeDatabase(libraryPath);
|
||||||
@ -84,7 +84,7 @@ qulonglong DBHelper::getParentFromComicFolderId(const QString & libraryName, qul
|
|||||||
QString libraryPath = DBHelper::getLibraries().value(libraryName);
|
QString libraryPath = DBHelper::getLibraries().value(libraryName);
|
||||||
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary");
|
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary");
|
||||||
|
|
||||||
Folder f(id,db);
|
Folder f = DBHelper::loadFolder(id,db);
|
||||||
|
|
||||||
db.close();
|
db.close();
|
||||||
QSqlDatabase::removeDatabase(libraryPath);
|
QSqlDatabase::removeDatabase(libraryPath);
|
||||||
@ -128,6 +128,7 @@ QString DBHelper::getFolderName(const QString & libraryName, qulonglong id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//objects management
|
//objects management
|
||||||
|
//deletes
|
||||||
void DBHelper::removeFromDB(LibraryItem * item, QSqlDatabase & db)
|
void DBHelper::removeFromDB(LibraryItem * item, QSqlDatabase & db)
|
||||||
{
|
{
|
||||||
if(item->isDir())
|
if(item->isDir())
|
||||||
@ -148,4 +149,86 @@ void DBHelper::removeFromDB(ComicDB * comic, QSqlDatabase & db)
|
|||||||
query.prepare("DELETE FROM comic WHERE id = :id");
|
query.prepare("DELETE FROM comic WHERE id = :id");
|
||||||
query.bindValue(":id", comic->id);
|
query.bindValue(":id", comic->id);
|
||||||
query.exec();
|
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<LibraryItem *> DBHelper::getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort)
|
||||||
|
{
|
||||||
|
QList<LibraryItem *> 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<QVariant> data;
|
||||||
|
QSqlRecord record = selectQuery.record();
|
||||||
|
for(int i=0;i<record.count();i++)
|
||||||
|
data << record.value(i);
|
||||||
|
//TODO sort by sort indicator and name
|
||||||
|
currentItem = new Folder(record.value("id").toULongLong(),record.value("parentId").toULongLong(),record.value("name").toString(),record.value("path").toString());
|
||||||
|
int lessThan = 0;
|
||||||
|
|
||||||
|
if(list.isEmpty() || !sort)
|
||||||
|
list.append(currentItem);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Folder * last = static_cast<Folder *>(list.back());
|
||||||
|
QString nameLast = last->name;
|
||||||
|
QString nameCurrent = currentItem->name;
|
||||||
|
QList<LibraryItem *>::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;
|
||||||
}
|
}
|
@ -22,9 +22,19 @@ public:
|
|||||||
static QString getFolderName(const QString & libraryName, qulonglong id);
|
static QString getFolderName(const QString & libraryName, qulonglong id);
|
||||||
|
|
||||||
//objects management
|
//objects management
|
||||||
|
//deletes
|
||||||
static void removeFromDB(LibraryItem * item, QSqlDatabase & db);
|
static void removeFromDB(LibraryItem * item, QSqlDatabase & db);
|
||||||
static void removeFromDB(Folder * folder, QSqlDatabase & db);
|
static void removeFromDB(Folder * folder, QSqlDatabase & db);
|
||||||
static void removeFromDB(ComicDB * comic, QSqlDatabase & db);
|
static void removeFromDB(ComicDB * comic, QSqlDatabase & db);
|
||||||
|
//inserts
|
||||||
|
static qulonglong insert(Folder * folder, QSqlDatabase & db);
|
||||||
|
//updates
|
||||||
|
|
||||||
|
//queries
|
||||||
|
static QList<LibraryItem *> getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort = true);
|
||||||
|
|
||||||
|
//load
|
||||||
|
static Folder loadFolder(qulonglong id, QSqlDatabase & db);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -125,7 +125,7 @@ qulonglong LibraryCreator::insertFolders()
|
|||||||
if(!(i->knownId))
|
if(!(i->knownId))
|
||||||
{
|
{
|
||||||
i->setFather(currentId);
|
i->setFather(currentId);
|
||||||
currentId = i->insert(_database);//insertFolder(currentId,*i);
|
currentId = DBHelper::insert(&(*i),_database);//insertFolder(currentId,*i);
|
||||||
i->setId(currentId);
|
i->setId(currentId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -217,7 +217,7 @@ void LibraryCreator::update(QDir dirS)
|
|||||||
dirS.setSorting(QDir::Name|QDir::IgnoreCase|QDir::LocaleAware|QDir::DirsFirst);
|
dirS.setSorting(QDir::Name|QDir::IgnoreCase|QDir::LocaleAware|QDir::DirsFirst);
|
||||||
QFileInfoList listS = dirS.entryInfoList();
|
QFileInfoList listS = dirS.entryInfoList();
|
||||||
|
|
||||||
QList<LibraryItem *> folders = Folder::getFoldersFromParent(_currentPathFolders.last().id,_database);
|
QList<LibraryItem *> folders = DBHelper::getFoldersFromParent(_currentPathFolders.last().id,_database);
|
||||||
QList<LibraryItem *> comics = ComicDB::getComicsFromParent(_currentPathFolders.last().id,_database);
|
QList<LibraryItem *> comics = ComicDB::getComicsFromParent(_currentPathFolders.last().id,_database);
|
||||||
|
|
||||||
QList <LibraryItem *> listD;
|
QList <LibraryItem *> listD;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user