animetitleparsetask.cpp \
mylistexportparsetask.cpp \
settings.cpp \
- renamehandler.cpp
+ renamehandler.cpp \
+ unknownfilelookuptask.cpp
HEADERS += \
localmylist_global.h \
animetitleparsetask.h \
mylistexportparsetask.h \
settings.h \
- renamehandler.h
+ renamehandler.h \
+ unknownfilelookuptask.h
CONV_HEADERS += \
include/LocalMyList/AbstractTask \
include/LocalMyList/MyList \
include/LocalMyList/MyListExportParseTask \
include/LocalMyList/MyListModel \
- include/LocalMyList/Settings
+ include/LocalMyList/Settings \
+ include/LocalMyList/UnknownFileLookupTask
SHARE += \
share/schema/schema.sql \
--- /dev/null
+#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
--- /dev/null
+#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