Skip to content

Commit 7d4248e

Browse files
committed
Keep field information in sqlb::Table object rather than DBBrowserObject
Keep all the table and field information in a sqlb::Table object (which itself is stored in DBBrowserObject) rather than storing field information in DBBrowserObject and sqlb::Table objects at the same time.
1 parent d076134 commit 7d4248e

File tree

5 files changed

+20
-22
lines changed

5 files changed

+20
-22
lines changed

src/DbStructureModel.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,12 +169,12 @@ void DbStructureModel::reloadData(DBBrowserDB* db)
169169
// If it is a table or view add the field Nodes
170170
if((*it).gettype() == "table" || (*it).gettype() == "view")
171171
{
172-
for(int i=0; i < it->fldmap.size(); ++i)
172+
for(int i=0; i < (*it).table.fields().size(); ++i)
173173
{
174174
QTreeWidgetItem *fldItem = new QTreeWidgetItem(tableItem);
175-
fldItem->setText(0, (*it).fldmap.at(i)->name());
175+
fldItem->setText(0, (*it).table.fields().at(i)->name());
176176
fldItem->setText(1, "field");
177-
fldItem->setText(2, (*it).fldmap.at(i)->type());
177+
fldItem->setText(2, (*it).table.fields().at(i)->type());
178178
fldItem->setIcon(0, QIcon(":/icons/field"));
179179
}
180180
}

src/ImportCsvDialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ void ImportCsvDialog::accept()
9191
{
9292
if(i.value().gettype() == "table" && i.value().getname() == ui->editName->text())
9393
{
94-
if(i.value().fldmap.size() != numfields)
94+
if(i.value().table.fields().size() != numfields)
9595
{
9696
QMessageBox::warning(this, QApplication::applicationName(),
9797
tr("There is already a table of that name and an import into an existing table is only possible if the number of columns match."));

src/MainWindow.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,13 @@ void MainWindow::populateStructure()
268268
if((*it).gettype() == "table" || (*it).gettype() == "view")
269269
{
270270
QStandardItemModel* tablefieldmodel = new QStandardItemModel();
271-
tablefieldmodel->setRowCount((*it).fldmap.count());
271+
tablefieldmodel->setRowCount((*it).table.fields().count());
272272
tablefieldmodel->setColumnCount(1);
273273

274274
int fldrow = 0;
275-
for(int i=0; i < (*it).fldmap.size(); ++i, ++fldrow)
275+
for(int i=0; i < (*it).table.fields().size(); ++i, ++fldrow)
276276
{
277-
QString fieldname = (*it).fldmap.at(i)->name();
277+
QString fieldname = (*it).table.fields().at(i)->name();
278278
QStandardItem* fldItem = new QStandardItem(fieldname);
279279
fldItem->setIcon(QIcon(":/icons/field"));
280280
tablefieldmodel->setItem(fldrow, 0, fldItem);

src/sqlitedb.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -750,8 +750,8 @@ QStringList DBBrowserDB::getTableFields(const QString & tablename) const
750750
{
751751
if((*it).getname() == tablename)
752752
{
753-
for(int i=0;i<(*it).fldmap.size();i++)
754-
res.append((*it).fldmap.at(i)->name());
753+
for(int i=0;i<(*it).table.fields().size();i++)
754+
res.append((*it).table.fields().at(i)->name());
755755
}
756756
}
757757
return res;
@@ -834,8 +834,7 @@ void DBBrowserDB::updateSchema( )
834834
// pragma SQLite offers.
835835
if((*it).gettype() == "table")
836836
{
837-
sqlb::Table t((*it).getname());
838-
(*it).fldmap = t.parseSQL((*it).getsql()).first.fields();
837+
(*it).table = sqlb::Table::parseSQL((*it).getsql()).first;
839838
} else if((*it).gettype() == "view") {
840839
statement = QString("PRAGMA TABLE_INFO(`%1`);").arg((*it).getname());
841840
logSQL(statement, kLogMsg_App);
@@ -849,7 +848,7 @@ void DBBrowserDB::updateSchema( )
849848
QString val_type = QString::fromUtf8((const char *)sqlite3_column_text(vm, 2));
850849

851850
sqlb::FieldPtr f(new sqlb::Field(val_name, val_type));
852-
(*it).addField(f);
851+
(*it).table.addField(f);
853852
}
854853
}
855854
sqlite3_finalize(vm);

src/sqlitedb.h

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,24 @@ typedef QMultiMap<QString, class DBBrowserObject> objectMap;
2020
class DBBrowserObject
2121
{
2222
public:
23-
DBBrowserObject() : name( "" ) { }
23+
DBBrowserObject() : table(""), name( "" ) { }
2424
DBBrowserObject( const QString& wname,const QString& wsql, const QString& wtype, const QString& tbl_name )
25-
: name( wname), sql( wsql ), type(wtype), table_name(tbl_name)
25+
: table(wname), name( wname), sql( wsql ), type(wtype), table_name(tbl_name)
2626
{ }
2727

28-
void addField(sqlb::FieldPtr field) { fldmap.push_back(field); }
29-
3028
QString getname() const { return name; }
3129
QString getsql() const { return sql; }
3230
QString gettype() const { return type; }
3331
QString getTableName() const { return table_name; }
34-
sqlb::FieldPtr getField(const QString& name) const
32+
sqlb::FieldPtr getField(const QString& name)
3533
{
36-
for(int i=0;i<fldmap.size();i++)
37-
if(fldmap.at(i)->name() == name)
38-
return fldmap.at(i);
39-
return sqlb::FieldPtr();
34+
int id = table.findField(name);
35+
if(id == -1)
36+
return sqlb::FieldPtr();
37+
else
38+
return table.fields().at(id);
4039
}
41-
sqlb::FieldVector fldmap;
40+
sqlb::Table table;
4241
private:
4342
QString name;
4443
QString sql;

0 commit comments

Comments
 (0)