Mercurial > dedupe
diff MemoryDBLink.cpp @ 7:d6fdca3bf24e
Make sure everything works for MemoryDBLink.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Wed, 22 Aug 2012 01:07:06 +0200 |
| parents | aae83c0a771d |
| children | b9515dc35fe4 |
line wrap: on
line diff
--- a/MemoryDBLink.cpp Wed Aug 22 00:42:25 2012 +0200 +++ b/MemoryDBLink.cpp Wed Aug 22 01:07:06 2012 +0200 @@ -2,9 +2,9 @@ #include <QtCore/QStringList> -void MemoryDBLink::addFile(const QString& path, qint64 size, const QDateTime& dtime, const QCryptographicHash& hash) +void MemoryDBLink::addFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash) { - addFile(DBInfo(path, size, dtime, hash.result())); + addFile(DBInfo(path, size, dtime, hash)); } bool MemoryDBLink::tryAddFile(const DBInfo& dbinfo) @@ -35,7 +35,58 @@ return list; } -const QList<QSharedPointer<FileDBLink::DBInfo> > MemoryDBLink::values() const +const QList<QSharedPointer<FileDBLink::DBInfo> > MemoryDBLink::values(const QString& prefix) const +{ + if (prefix.size() == 0) + return entries.values(); + + QList<QSharedPointer<FileDBLink::DBInfo> > list; + foreach (QString key, entries.keys()) { + if (key.startsWith(prefix)) + list << entries[key]; + } + return list; +} + + +void MemoryDBLink::deleteFileFromDB(const QString& path) +{ + entries.remove(path); +} + + +void MemoryDBLink::keepOnlyFromPrefix(const QString& prefix, const QStringList& files) { - return entries.values(); + QStringList list; + foreach(QSharedPointer<DBInfo> info, values(prefix)) { + if (!files.contains(info->path())) { + list << info->path(); + } + } + foreach(QString path, list) { + deleteFileFromDB(path); + } } + +FileDBLink::DBStatus MemoryDBLink::existsWithMtime(const QString& path, const QDateTime& mtime) +{ + if (entries.contains(path)) { + QSharedPointer<DBInfo> info = entries[path]; + if (info->mtime() == mtime) + return SAME; + return MTIME_DIFFERENT; + } + return NONE; +} + +void MemoryDBLink::updateFile(const QString& path, qint64 size, const QDateTime& dtime, const QByteArray& hash) +{ + updateFile(DBInfo(path, size, dtime, hash)); +} + +void MemoryDBLink::updateFile(const DBInfo& dbinfo) +{ + *entries[dbinfo.path()] = dbinfo; +} + +
