Mercurial > dedupe
diff FileDBLink.hpp @ 1:aae83c0a771d
Refactor:
-Rename all Db to DB.
Add setup script
Add support for Sqlite3 in configuration.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Mon, 20 Aug 2012 17:32:58 +0200 |
| parents | FileDbLink.hpp@a3834af36579 |
| children | 2833b7f8884a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FileDBLink.hpp Mon Aug 20 17:32:58 2012 +0200 @@ -0,0 +1,109 @@ +#ifndef FILEDBLINK +#define FILEDBLINK + +#include <QtCore/QDateTime> +#include <QtCore/QCryptographicHash> +#include <QtCore/QFileInfo> + +class FileDBLink { +public: + class DBInfo { + public: + DBInfo(const QString& path, qint64 size, const QDateTime& mtime, const QByteArray& hash) : path_(path), + size_(size), + mtime_(mtime), + hash_(hash) + {} + DBInfo() {} + + virtual ~DBInfo() {} + + const QString& path() const + { + return path_; + } + + QString name() const + { + QFileInfo finf(path()); + return finf.fileName(); + } + + quint64 size() const + { + return size_; + } + + const QDateTime& mtime() const + { + return mtime_; + } + + const QByteArray checksum() const + { + return hash_; + } + + virtual QString serialize() const + { + QString size = QString::number(size_); + QString str = path_; + str += ", " + size; + str += ", " + mtime_.toString(); + str += ", " + hash_.toHex(); + return str; + } + + private: + QString path_; + qint64 size_; + QDateTime mtime_; + QByteArray hash_; + }; + + class ExtendedDBInfo : public DBInfo { + public: + ExtendedDBInfo(const DBInfo& dbinfo, const QString& closestEditPath, int editDistance) : DBInfo(dbinfo), closestEditPath_(closestEditPath), editDistance_(editDistance) {} + ExtendedDBInfo() {} + + virtual ~ExtendedDBInfo() {} + + virtual QString serialize() const + { + QString dist = QString::number(editDistance_); + QString str = DBInfo::serialize(); + str += ", " + closestEditPath_; + str += ", " + dist; + return str; + } + + int editDistance() const + { + return editDistance_; + } + + private: + QString closestEditPath_; + int editDistance_; + }; + + static QSharedPointer<DBInfo> computedValue(const QSharedPointer<DBInfo>& info, const QList<QSharedPointer<DBInfo> >&); + + +public: + virtual ~FileDBLink() {} + + void updateIfModified(const QString& path); + virtual void addFile(const QString& path, qint64 size, const QDateTime& dtime, const QCryptographicHash& hash) = 0; + void addFile(const QString& path, qint64 size, const QDateTime& dtime); + void addFile(const QFileInfo& fileinfo); + virtual bool exists(const QString& path) = 0; + virtual const QList<QSharedPointer<DBInfo> > values() const = 0; + virtual const QList<QSharedPointer<DBInfo> > computedValues() const; + + enum SORTORDER { PATH, SIZE, MTIME, CHECKSUM, EDIT }; + + virtual const QList<QSharedPointer<DBInfo> > sortOn(SORTORDER order, bool extended = false); +}; + +#endif //FILEDBLINK
