Mercurial > dedupe
view 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 source
#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
