comparison FileDBLink.cpp @ 64:b9515dc35fe4

Make sure no file has greater linewidth than 80.
author Tom Fredrik Blenning Klaussen <bfg@blenning.no>
date Fri, 14 Sep 2012 22:50:45 +0200
parents 247adcbbaf8b
children 9744ec195be3
comparison
equal deleted inserted replaced
63:dd086ec3220d 64:b9515dc35fe4
26 } 26 }
27 } 27 }
28 28
29 void FileDBLink::addFile(const QFileInfo& fileinfo) 29 void FileDBLink::addFile(const QFileInfo& fileinfo)
30 { 30 {
31 addFile(fileinfo.absoluteFilePath(), fileinfo.size(), fileinfo.lastModified()); 31 addFile(fileinfo.absoluteFilePath(), fileinfo.size(),
32 fileinfo.lastModified());
32 } 33 }
33 34
34 QByteArray FileDBLink::computeHash(const QString& path, QCryptographicHash::Algorithm algorithm) 35 QByteArray FileDBLink::computeHash(const QString& path,
36 QCryptographicHash::Algorithm algorithm)
35 { 37 {
36 const static uint buffersize = 32768; 38 const static uint buffersize = 32768;
37 QCryptographicHash hash(algorithm); 39 QCryptographicHash hash(algorithm);
38 QFile file(path); 40 QFile file(path);
39 if ( file.open( QIODevice::ReadOnly ) ) { 41 if ( file.open( QIODevice::ReadOnly ) ) {
53 } 55 }
54 return hash.result(); 56 return hash.result();
55 } 57 }
56 58
57 59
58 void FileDBLink::addFile(const QString& path, qint64 size, const QDateTime& lastModified) 60 void FileDBLink::addFile(const QString& path, qint64 size,
61 const QDateTime& lastModified)
59 { 62 {
60 addFile(path, size, lastModified, computeHash(path)); 63 addFile(path, size, lastModified, computeHash(path));
61 } 64 }
62 65
63 void FileDBLink::updateFile(const QFileInfo& fileinfo) 66 void FileDBLink::updateFile(const QFileInfo& fileinfo)
64 { 67 {
65 updateFile(fileinfo.absoluteFilePath(), fileinfo.size(), fileinfo.lastModified()); 68 updateFile(fileinfo.absoluteFilePath(), fileinfo.size(),
69 fileinfo.lastModified());
66 } 70 }
67 71
68 void FileDBLink::updateFile(const QString& path, qint64 size, const QDateTime& lastModified) 72 void FileDBLink::updateFile(const QString& path, qint64 size,
73 const QDateTime& lastModified)
69 { 74 {
70 updateFile(path, size, lastModified, computeHash(path)); 75 updateFile(path, size, lastModified, computeHash(path));
71 } 76 }
72 77
73 const QList<QSharedPointer<FileDBLink::DBInfo> > FileDBLink::sortOn(const QString& prefix, SORTORDER order, bool extended) 78 const QList<FileDBLink::dbinf_ptr_t >
79 FileDBLink::sortOn(const QString& prefix, SORTORDER order, bool extended)
74 { 80 {
75 QList<QSharedPointer<DBInfo> > list = (extended) ? computedValues(prefix) : values(prefix); 81 QList<dbinf_ptr_t > list =
82 (extended) ? computedValues(prefix) : values(prefix);
76 83
77 switch (order) { 84 switch (order) {
78 case PATH: 85 case PATH:
79 { 86 {
80 QList<QSharedPointer<FileDBLink::DBInfo> > oList; 87 QList<FileDBLink::dbinf_ptr_t > oList;
81 foreach(QSharedPointer<DBInfo> info, list) { 88 foreach(dbinf_ptr_t info, list) {
82 oList.push_back(info); 89 oList.push_back(info);
83 } 90 }
84 return oList; 91 return oList;
85 } 92 }
86 case SIZE: 93 case SIZE:
87 { 94 {
88 QMultiMap<quint64, QSharedPointer<DBInfo> > oList; 95 QMultiMap<quint64, dbinf_ptr_t > oList;
89 foreach(QSharedPointer<DBInfo> info, list) { 96 foreach(dbinf_ptr_t info, list) {
90 oList.insert(info->size(), info); 97 oList.insert(info->size(), info);
91 } 98 }
92 return oList.values(); 99 return oList.values();
93 } 100 }
94 case MTIME: 101 case MTIME:
95 { 102 {
96 QMultiMap<QDateTime, QSharedPointer<DBInfo> > oList; 103 QMultiMap<QDateTime, dbinf_ptr_t > oList;
97 foreach(QSharedPointer<DBInfo> info, list) { 104 foreach(dbinf_ptr_t info, list) {
98 oList.insert(info->mtime(), info); 105 oList.insert(info->mtime(), info);
99 } 106 }
100 return oList.values(); 107 return oList.values();
101 } 108 }
102 case CHECKSUM: 109 case CHECKSUM:
103 { 110 {
104 QMultiMap<QByteArray, QSharedPointer<DBInfo> > oList; 111 QMultiMap<QByteArray, dbinf_ptr_t > oList;
105 foreach(QSharedPointer<DBInfo> info, list) { 112 foreach(dbinf_ptr_t info, list) {
106 oList.insert(info->checksum(), info); 113 oList.insert(info->checksum(), info);
107 } 114 }
108 return oList.values(); 115 return oList.values();
109 } 116 }
110 case EDIT: 117 case EDIT:
111 { 118 {
112 assert(extended); 119 assert(extended);
113 QMultiMap<int, QSharedPointer<DBInfo> > oList; 120 QMultiMap<int, dbinf_ptr_t > oList;
114 foreach(QSharedPointer<DBInfo> info, list) { 121 foreach(dbinf_ptr_t info, list) {
115 QSharedPointer<ExtendedDBInfo> ptr; 122 QSharedPointer<ExtendedDBInfo> ptr;
116 ptr = info.dynamicCast<ExtendedDBInfo>(); 123 ptr = info.dynamicCast<ExtendedDBInfo>();
117 oList.insert(ptr->editDistance(), info); 124 oList.insert(ptr->editDistance(), info);
118 } 125 }
119 return oList.values(); 126 return oList.values();
121 } 128 }
122 } 129 }
123 abort(); 130 abort();
124 } 131 }
125 132
126 QSharedPointer<FileDBLink::DBInfo> FileDBLink::computedValue(const QSharedPointer<DBInfo>& info, 133 FileDBLink::dbinf_ptr_t
127 const QList<QSharedPointer<DBInfo> >& entries) 134 FileDBLink::computedValue(const dbinf_ptr_t& info,
135 const QList<dbinf_ptr_t >& entries)
128 { 136 {
129 QString p1 = info->name(); 137 QString p1 = info->name();
130 int minDist = 100000; 138 int minDist = 100000;
131 QString other; 139 QString other;
132 for (QList<QSharedPointer<DBInfo> >::const_iterator it2 = entries.begin(); 140 for (QList<dbinf_ptr_t >::const_iterator it2 = entries.begin();
133 it2 != entries.end(); ++it2) { 141 it2 != entries.end(); ++it2) {
134 if (info == *it2) 142 if (info == *it2)
135 continue; 143 continue;
136 QString p2 = (*it2)->name(); 144 QString p2 = (*it2)->name();
137 int dist = EditDistance::Compute(p1, p2, false); 145 int dist = EditDistance::Compute(p1, p2, false);
138 if (dist < minDist) { 146 if (dist < minDist) {
139 minDist = dist; 147 minDist = dist;
140 other = (*it2)->path(); 148 other = (*it2)->path();
141 } 149 }
142 } 150 }
143 return QSharedPointer<DBInfo>(new ExtendedDBInfo(*info, other, minDist)); 151 return dbinf_ptr_t(new ExtendedDBInfo(*info, other, minDist));
144 } 152 }
145 153
146 const QList<QSharedPointer<FileDBLink::DBInfo> > FileDBLink::computedValues(const QString& prefix) const 154 const QList<FileDBLink::dbinf_ptr_t>
155 FileDBLink::computedValues(const QString& prefix) const
147 { 156 {
148 QList<QSharedPointer<DBInfo> > list; 157 QList<dbinf_ptr_t > list;
149 QList<QSharedPointer<DBInfo> > entries = values(prefix); 158 QList<dbinf_ptr_t > entries = values(prefix);
150 159
151 #if 1 160 #if 1
152 list = QtConcurrent::blockingMapped(entries, boost::bind( &FileDBLink::computedValue, _1, entries)); 161 list =
162 QtConcurrent::blockingMapped(entries,
163 boost::bind( &FileDBLink::computedValue,
164 _1,
165 entries));
153 #else 166 #else
154 for (QList<QSharedPointer<DBInfo> >::const_iterator it1 = entries.begin(); 167 for (QList<dbinf_ptr_t >::const_iterator it1 = entries.begin();
155 it1 != entries.end(); ++it1) { 168 it1 != entries.end(); ++it1) {
156 QSharedPointer<DBInfo> ext = computedValue(*it1, entries); 169 dbinf_ptr_t ext = computedValue(*it1, entries);
157 list.push_back(ext); 170 list.push_back(ext);
158 } 171 }
159 #endif 172 #endif
160 return list; 173 return list;
161 } 174 }