comparison 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
comparison
equal deleted inserted replaced
0:a3834af36579 1:aae83c0a771d
1 #ifndef FILEDBLINK
2 #define FILEDBLINK
3
4 #include <QtCore/QDateTime>
5 #include <QtCore/QCryptographicHash>
6 #include <QtCore/QFileInfo>
7
8 class FileDBLink {
9 public:
10 class DBInfo {
11 public:
12 DBInfo(const QString& path, qint64 size, const QDateTime& mtime, const QByteArray& hash) : path_(path),
13 size_(size),
14 mtime_(mtime),
15 hash_(hash)
16 {}
17 DBInfo() {}
18
19 virtual ~DBInfo() {}
20
21 const QString& path() const
22 {
23 return path_;
24 }
25
26 QString name() const
27 {
28 QFileInfo finf(path());
29 return finf.fileName();
30 }
31
32 quint64 size() const
33 {
34 return size_;
35 }
36
37 const QDateTime& mtime() const
38 {
39 return mtime_;
40 }
41
42 const QByteArray checksum() const
43 {
44 return hash_;
45 }
46
47 virtual QString serialize() const
48 {
49 QString size = QString::number(size_);
50 QString str = path_;
51 str += ", " + size;
52 str += ", " + mtime_.toString();
53 str += ", " + hash_.toHex();
54 return str;
55 }
56
57 private:
58 QString path_;
59 qint64 size_;
60 QDateTime mtime_;
61 QByteArray hash_;
62 };
63
64 class ExtendedDBInfo : public DBInfo {
65 public:
66 ExtendedDBInfo(const DBInfo& dbinfo, const QString& closestEditPath, int editDistance) : DBInfo(dbinfo), closestEditPath_(closestEditPath), editDistance_(editDistance) {}
67 ExtendedDBInfo() {}
68
69 virtual ~ExtendedDBInfo() {}
70
71 virtual QString serialize() const
72 {
73 QString dist = QString::number(editDistance_);
74 QString str = DBInfo::serialize();
75 str += ", " + closestEditPath_;
76 str += ", " + dist;
77 return str;
78 }
79
80 int editDistance() const
81 {
82 return editDistance_;
83 }
84
85 private:
86 QString closestEditPath_;
87 int editDistance_;
88 };
89
90 static QSharedPointer<DBInfo> computedValue(const QSharedPointer<DBInfo>& info, const QList<QSharedPointer<DBInfo> >&);
91
92
93 public:
94 virtual ~FileDBLink() {}
95
96 void updateIfModified(const QString& path);
97 virtual void addFile(const QString& path, qint64 size, const QDateTime& dtime, const QCryptographicHash& hash) = 0;
98 void addFile(const QString& path, qint64 size, const QDateTime& dtime);
99 void addFile(const QFileInfo& fileinfo);
100 virtual bool exists(const QString& path) = 0;
101 virtual const QList<QSharedPointer<DBInfo> > values() const = 0;
102 virtual const QList<QSharedPointer<DBInfo> > computedValues() const;
103
104 enum SORTORDER { PATH, SIZE, MTIME, CHECKSUM, EDIT };
105
106 virtual const QList<QSharedPointer<DBInfo> > sortOn(SORTORDER order, bool extended = false);
107 };
108
109 #endif //FILEDBLINK