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();