Mercurial > dedupe
comparison DataController.cpp @ 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 | a3834af36579 |
| children | 2833b7f8884a |
comparison
equal
deleted
inserted
replaced
| 0:a3834af36579 | 1:aae83c0a771d |
|---|---|
| 1 #include "DataController.hpp" | 1 #include "DataController.hpp" |
| 2 | 2 |
| 3 #include "MemoryDbLink.hpp" | 3 #include "MemoryDBLink.hpp" |
| 4 | 4 |
| 5 #include "PermissionException.hpp" | 5 #include "PermissionException.hpp" |
| 6 #include "DataController.hpp" | 6 #include "DataController.hpp" |
| 7 | 7 |
| 8 #include <QtGui/QApplication> | 8 #include <QtGui/QApplication> |
| 24 #include <QtGui/QProgressBar> | 24 #include <QtGui/QProgressBar> |
| 25 | 25 |
| 26 #include "EditDistance.hpp" | 26 #include "EditDistance.hpp" |
| 27 | 27 |
| 28 #include <cassert> | 28 #include <cassert> |
| 29 void findFiles(const QDir& dir, FileDbLink& dblink) | 29 void findFiles(const QDir& dir, FileDBLink& dblink) |
| 30 { | 30 { |
| 31 /* | 31 /* |
| 32 QProgressDialog progressDialog(this); | 32 QProgressDialog progressDialog(this); |
| 33 progressDialog.setCancelButtonText(tr("&Cancel")); | 33 progressDialog.setCancelButtonText(tr("&Cancel")); |
| 34 progressDialog.setRange(0, files.size()); | 34 progressDialog.setRange(0, files.size()); |
| 53 exit(1); | 53 exit(1); |
| 54 } | 54 } |
| 55 } | 55 } |
| 56 } | 56 } |
| 57 | 57 |
| 58 QTreeWidgetItem* DataController::createItem(const FileDbLink::DBInfo& info) | 58 QTreeWidgetItem* DataController::createItem(const FileDBLink::DBInfo& info) |
| 59 { | 59 { |
| 60 QTreeWidgetItem* item = new QTreeWidgetItem(); | 60 QTreeWidgetItem* item = new QTreeWidgetItem(); |
| 61 item->setData(0, Qt::DisplayRole, info.name()); | 61 item->setData(0, Qt::DisplayRole, info.name()); |
| 62 item->setData(0, 32, info.path()); | 62 item->setData(0, 32, info.path()); |
| 63 item->setData(0, 33, info.name()); | 63 item->setData(0, 33, info.name()); |
| 84 bool showMTimeDups, bool showCheckSumDups, | 84 bool showMTimeDups, bool showCheckSumDups, |
| 85 float editDistanceCutoff) | 85 float editDistanceCutoff) |
| 86 { | 86 { |
| 87 tw->clear(); | 87 tw->clear(); |
| 88 | 88 |
| 89 const QList<QSharedPointer<FileDbLink::DBInfo> > elems = dblink->sortOn(FileDbLink::EDIT, true); | 89 const QList<QSharedPointer<FileDBLink::DBInfo> > elems = dblink->sortOn(FileDBLink::EDIT, true); |
| 90 | 90 |
| 91 QProgressBar bar; | 91 QProgressBar bar; |
| 92 | 92 |
| 93 bar.resize(200,25); | 93 bar.resize(200,25); |
| 94 bar.setValue(0); | 94 bar.setValue(0); |
| 100 | 100 |
| 101 int n = 0; | 101 int n = 0; |
| 102 | 102 |
| 103 tw->setUpdatesEnabled(false); | 103 tw->setUpdatesEnabled(false); |
| 104 | 104 |
| 105 foreach(QSharedPointer<FileDbLink::DBInfo> line, elems) { | 105 foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) { |
| 106 QTreeWidgetItem* item = 0; | 106 QTreeWidgetItem* item = 0; |
| 107 bool anyAdded = false; | 107 bool anyAdded = false; |
| 108 | 108 |
| 109 if (showNameDups) { | 109 if (showNameDups) { |
| 110 QTreeWidgetItem* topLevelItem = 0; | 110 QTreeWidgetItem* topLevelItem = 0; |
| 111 foreach(QSharedPointer<FileDbLink::DBInfo> dup, elems) { | 111 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { |
| 112 if(dup != line && line->name() == dup->name() ) { | 112 if(dup != line && line->name() == dup->name() ) { |
| 113 if (!topLevelItem) { | 113 if (!topLevelItem) { |
| 114 topLevelItem = new QTreeWidgetItem(); | 114 topLevelItem = new QTreeWidgetItem(); |
| 115 topLevelItem->setData(0, Qt::DisplayRole, "Name"); | 115 topLevelItem->setData(0, Qt::DisplayRole, "Name"); |
| 116 if(!item) | 116 if(!item) |
| 123 } | 123 } |
| 124 } | 124 } |
| 125 | 125 |
| 126 if (showSizeDups) { | 126 if (showSizeDups) { |
| 127 QTreeWidgetItem* topLevelItem = 0; | 127 QTreeWidgetItem* topLevelItem = 0; |
| 128 foreach(QSharedPointer<FileDbLink::DBInfo> dup, elems) { | 128 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { |
| 129 if(dup != line && line->size() == dup->size() ) { | 129 if(dup != line && line->size() == dup->size() ) { |
| 130 if (!topLevelItem) { | 130 if (!topLevelItem) { |
| 131 topLevelItem = new QTreeWidgetItem(); | 131 topLevelItem = new QTreeWidgetItem(); |
| 132 topLevelItem->setData(0, Qt::DisplayRole, "Size"); | 132 topLevelItem->setData(0, Qt::DisplayRole, "Size"); |
| 133 if(!item) | 133 if(!item) |
| 140 } | 140 } |
| 141 } | 141 } |
| 142 | 142 |
| 143 if (showMTimeDups) { | 143 if (showMTimeDups) { |
| 144 QTreeWidgetItem* topLevelItem = 0; | 144 QTreeWidgetItem* topLevelItem = 0; |
| 145 foreach(QSharedPointer<FileDbLink::DBInfo> dup, elems) { | 145 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { |
| 146 if(dup != line && line->mtime() == dup->mtime() ) { | 146 if(dup != line && line->mtime() == dup->mtime() ) { |
| 147 if (!topLevelItem) { | 147 if (!topLevelItem) { |
| 148 topLevelItem = new QTreeWidgetItem(); | 148 topLevelItem = new QTreeWidgetItem(); |
| 149 topLevelItem->setData(0, Qt::DisplayRole, "MTime"); | 149 topLevelItem->setData(0, Qt::DisplayRole, "MTime"); |
| 150 if(!item) | 150 if(!item) |
| 157 } | 157 } |
| 158 } | 158 } |
| 159 | 159 |
| 160 if (showCheckSumDups) { | 160 if (showCheckSumDups) { |
| 161 QTreeWidgetItem* topLevelItem = 0; | 161 QTreeWidgetItem* topLevelItem = 0; |
| 162 foreach(QSharedPointer<FileDbLink::DBInfo> dup, elems) { | 162 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { |
| 163 if(dup != line && line->checksum() == dup->checksum() ) { | 163 if(dup != line && line->checksum() == dup->checksum() ) { |
| 164 if (!topLevelItem) { | 164 if (!topLevelItem) { |
| 165 topLevelItem = new QTreeWidgetItem(); | 165 topLevelItem = new QTreeWidgetItem(); |
| 166 topLevelItem->setData(0, Qt::DisplayRole, "Checksum"); | 166 topLevelItem->setData(0, Qt::DisplayRole, "Checksum"); |
| 167 if(!item) | 167 if(!item) |
| 174 } | 174 } |
| 175 } | 175 } |
| 176 | 176 |
| 177 if (editDistanceCutoff < 1.0) { | 177 if (editDistanceCutoff < 1.0) { |
| 178 QTreeWidgetItem* topLevelItem = 0; | 178 QTreeWidgetItem* topLevelItem = 0; |
| 179 QMultiMap<int, QSharedPointer<FileDbLink::DBInfo> > oList; | 179 QMultiMap<int, QSharedPointer<FileDBLink::DBInfo> > oList; |
| 180 | 180 |
| 181 int absoluteCutoff = line->name().length() * editDistanceCutoff; | 181 int absoluteCutoff = line->name().length() * editDistanceCutoff; |
| 182 foreach(QSharedPointer<FileDbLink::DBInfo> dup, elems) { | 182 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { |
| 183 if(dup != line) { | 183 if(dup != line) { |
| 184 int distance = EditDistance::Compute(line->name(), dup->name()); | 184 int distance = EditDistance::Compute(line->name(), dup->name()); |
| 185 | 185 |
| 186 if (distance <= absoluteCutoff) { | 186 if (distance <= absoluteCutoff) { |
| 187 oList.insert(distance, dup); | 187 oList.insert(distance, dup); |
| 196 item = createItem(*line); | 196 item = createItem(*line); |
| 197 item->addChild(topLevelItem); | 197 item->addChild(topLevelItem); |
| 198 anyAdded = true; | 198 anyAdded = true; |
| 199 } | 199 } |
| 200 | 200 |
| 201 foreach(QSharedPointer<FileDbLink::DBInfo> dup, oList.values()) { | 201 foreach(QSharedPointer<FileDBLink::DBInfo> dup, oList.values()) { |
| 202 topLevelItem->addChild(createItem(*dup)); | 202 topLevelItem->addChild(createItem(*dup)); |
| 203 } | 203 } |
| 204 } | 204 } |
| 205 | 205 |
| 206 | 206 |
| 222 populateDelay = new QTimer(this); | 222 populateDelay = new QTimer(this); |
| 223 populateDelay->setSingleShot(true); | 223 populateDelay->setSingleShot(true); |
| 224 populateDelay->setInterval(500); | 224 populateDelay->setInterval(500); |
| 225 connect(populateDelay, SIGNAL(timeout()), this, SLOT(populate())); | 225 connect(populateDelay, SIGNAL(timeout()), this, SLOT(populate())); |
| 226 | 226 |
| 227 dblink = new MemoryDbLink(); | 227 dblink = new MemoryDBLink(); |
| 228 | 228 |
| 229 findFiles(QDir("."), *dblink); | 229 findFiles(QDir("."), *dblink); |
| 230 | 230 |
| 231 mw = new QMainWindow(); | 231 mw = new QMainWindow(); |
| 232 QMenuBar* mb = new QMenuBar(); | 232 QMenuBar* mb = new QMenuBar(); |
