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;
+}
+
+