Mercurial > dedupe
diff FileDBLink.cpp @ 2:2833b7f8884a
Sql backend is working.
Need to get more speed on comparisson.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Tue, 21 Aug 2012 14:25:33 +0200 |
| parents | aae83c0a771d |
| children | b5943e4bf676 |
line wrap: on
line diff
--- a/FileDBLink.cpp Mon Aug 20 17:32:58 2012 +0200 +++ b/FileDBLink.cpp Tue Aug 21 14:25:33 2012 +0200 @@ -17,8 +17,18 @@ void FileDBLink::updateIfModified(const QString& path) { QFileInfo fileinfo(path); - if (!exists(path)) { + FileDBLink::DBStatus status = existsWithMtime(path, fileinfo.lastModified()); + + switch (status) { + case FileDBLink::NONE: { addFile(fileinfo); + break; + } + case FileDBLink::MTIME_DIFFERENT: { + updateFile(fileinfo); + } + default: { + } } } @@ -45,13 +55,39 @@ } } - addFile(path, size, lastModified, hash); + addFile(path, size, lastModified, hash.result()); } -const QList<QSharedPointer<FileDBLink::DBInfo> > FileDBLink::sortOn(SORTORDER order, bool extended) +void FileDBLink::updateFile(const QFileInfo& fileinfo) +{ + updateFile(fileinfo.absoluteFilePath(), fileinfo.size(), fileinfo.lastModified()); +} + +void FileDBLink::updateFile(const QString& path, qint64 size, const QDateTime& lastModified) { - QList<QSharedPointer<DBInfo> > list = (extended) ? computedValues() : computedValues(); + QCryptographicHash hash( QCryptographicHash::Sha1 ); + QFile file(path); + if ( file.open( QIODevice::ReadOnly ) ) { + hash.addData( file.readAll() ); + } + else { + QString errorMsg = path + ": " + file.errorString(); + qDebug()<<file.error(); + switch (file.error()) { + case QFile::PermissionsError: + throw PermissionException(errorMsg); + default: + throw IOException(errorMsg); + } + } + + updateFile(path, size, lastModified, hash.result()); +} + +const QList<QSharedPointer<FileDBLink::DBInfo> > FileDBLink::sortOn(const QString& prefix, SORTORDER order, bool extended) +{ + QList<QSharedPointer<DBInfo> > list = (extended) ? computedValues(prefix) : values(prefix); switch (order) { case PATH: @@ -122,10 +158,10 @@ return QSharedPointer<DBInfo>(new ExtendedDBInfo(*info, other, minDist)); } -const QList<QSharedPointer<FileDBLink::DBInfo> > FileDBLink::computedValues() const +const QList<QSharedPointer<FileDBLink::DBInfo> > FileDBLink::computedValues(const QString& prefix) const { QList<QSharedPointer<DBInfo> > list; - QList<QSharedPointer<DBInfo> > entries = values(); + QList<QSharedPointer<DBInfo> > entries = values(prefix); #if 1 list = QtConcurrent::blockingMapped(entries, boost::bind( &FileDBLink::computedValue, _1, entries));
