From: APTX Date: Wed, 13 Jun 2012 02:01:27 +0000 (+0200) Subject: Add UnknownFileLookupTask to remove known files from unkown_file and (optionally... X-Git-Url: https://gitweb.tyo.aptx.org/?a=commitdiff_plain;h=724157c2415090a9bc3be953e0bd3951e0674e86;p=localmylist.git Add UnknownFileLookupTask to remove known files from unkown_file and (optionally) add a file location --- diff --git a/localmylist/include/LocalMyList/UnknownFileLookupTask b/localmylist/include/LocalMyList/UnknownFileLookupTask new file mode 100644 index 0000000..3283420 --- /dev/null +++ b/localmylist/include/LocalMyList/UnknownFileLookupTask @@ -0,0 +1,2 @@ +#include "../../unknownfilelookuptask.h" + diff --git a/localmylist/localmylist.pro b/localmylist/localmylist.pro index 3c2951e..e5149a7 100644 --- a/localmylist/localmylist.pro +++ b/localmylist/localmylist.pro @@ -22,7 +22,8 @@ SOURCES += \ animetitleparsetask.cpp \ mylistexportparsetask.cpp \ settings.cpp \ - renamehandler.cpp + renamehandler.cpp \ + unknownfilelookuptask.cpp HEADERS += \ localmylist_global.h \ @@ -38,7 +39,8 @@ HEADERS += \ animetitleparsetask.h \ mylistexportparsetask.h \ settings.h \ - renamehandler.h + renamehandler.h \ + unknownfilelookuptask.h CONV_HEADERS += \ include/LocalMyList/AbstractTask \ @@ -49,7 +51,8 @@ CONV_HEADERS += \ include/LocalMyList/MyList \ include/LocalMyList/MyListExportParseTask \ include/LocalMyList/MyListModel \ - include/LocalMyList/Settings + include/LocalMyList/Settings \ + include/LocalMyList/UnknownFileLookupTask SHARE += \ share/schema/schema.sql \ diff --git a/localmylist/unknownfilelookuptask.cpp b/localmylist/unknownfilelookuptask.cpp new file mode 100644 index 0000000..78f6bce --- /dev/null +++ b/localmylist/unknownfilelookuptask.cpp @@ -0,0 +1,68 @@ +#include "unknownfilelookuptask.h" + +#include "database.h" + +namespace LocalMyList { + +UnknownFileLookupTask::UnknownFileLookupTask(Database *db, QObject *parent) : + AbstractTask(db, parent) +{ +} + +QString UnknownFileLookupTask::taskSubject() const +{ + return tr("Unkown File Lookup"); +} + +bool UnknownFileLookupTask::canUseThreads() const +{ + return true; +} + +void UnknownFileLookupTask::start() +{ + offset = 0; + workUnit(); +} + +void UnknownFileLookupTask::workUnit() +{ + RaiiTransaction t(db); + + QSqlQuery q(db->connection()); + q.prepare("SELECT ed2k, size, host_id, path FROM unknown_file " + "LIMIT :limit " + "OFFSET :offset"); + + q.bindValue(":limit", OPERATIONS_PER_UNIT); + q.bindValue(":offset", offset); + + if (!db->exec(q)) + { + emit finished(); + return; + } + + while (q.next()) + { + File f; + f.ed2k = q.value(0).toByteArray(); + f.size = q.value(1).toLongLong(); + f.fid = db->isKnownFile(f.ed2k, f.size); + + if (!f.fid) + continue; + db->removeKnownUnknownFile(f); + } + t.commit(); + + offset += OPERATIONS_PER_UNIT; + + + if (q.size() < OPERATIONS_PER_UNIT) + emit finished(); + else + emit nextWorkUnit(); +} + +} // namespace LocalMyList diff --git a/localmylist/unknownfilelookuptask.h b/localmylist/unknownfilelookuptask.h new file mode 100644 index 0000000..856af8a --- /dev/null +++ b/localmylist/unknownfilelookuptask.h @@ -0,0 +1,29 @@ +#ifndef UNKNOWNFILELOOKUPTASK_H +#define UNKNOWNFILELOOKUPTASK_H + +#include "abstracttask.h" + +namespace LocalMyList { + +class LOCALMYLISTSHARED_EXPORT UnknownFileLookupTask : public AbstractTask +{ + Q_OBJECT +public: + explicit UnknownFileLookupTask(Database *db, QObject *parent = 0); + + QString taskSubject() const; + bool canUseThreads() const; + +public slots: + void start(); + +protected: + void workUnit(); + +private: + int offset; +}; + +} // namespace LocalMyList + +#endif // UNKNOWNFILELOOKUPTASK_H