diff --git a/3rdparty/serializer b/3rdparty/serializer index 51500a4..e0bdec4 160000 --- a/3rdparty/serializer +++ b/3rdparty/serializer @@ -1 +1 @@ -Subproject commit 51500a497933444196942ee0db6628338a0422af +Subproject commit e0bdec4a7c93b4d4307fd89200000ff817a86c99 diff --git a/src/query.h b/src/query.h index ca1a7f5..e53fc04 100644 --- a/src/query.h +++ b/src/query.h @@ -272,14 +272,14 @@ Q_OUTOFLINE_TEMPLATE RowList Query::toList(int count) // check if key value is changed if (data.lastKeyValue == q.value(data.keyFiledname)) { --p; - qDebug() << "key os not changed for" << data.keyFiledname; +// qDebug() << "key os not changed for" << data.keyFiledname; continue; } // check if master if current table has processed foreach (int m, data.masters) if (!checked[m]) { - qDebug() << "row is checked"; +// qDebug() << "row is checked"; continue; } @@ -288,26 +288,29 @@ Q_OUTOFLINE_TEMPLATE RowList Query::toList(int count) data.lastKeyValue = q.value(data.keyFiledname); //create table row - Table *table; - Row shp; + Table *tbl; + Row table; if (data.table->className() == d->className) { - table = new T(); + tbl = new T; +// table = Nut::create(); #ifdef NUT_SHARED_POINTER - shp = QSharedPointer(qobject_cast(table)); - returnList.append(shp); - d->tableSet->add(shp); + table.reset(tbl); + returnList.append(qSharedPointerCast(table)); #else - returnList.append(dynamic_cast(table)); + returnList.append(qobject_cast(table1)); #endif - table->setParentTableSet(d->tableSet); + d->tableSet->add(table); +// table->setParentTableSet(d->tableSet); } else { const QMetaObject *childMetaObject = QMetaType::metaObjectForType(data.table->typeId()); - table = qobject_cast
(childMetaObject->newInstance()); - if (!table) + tbl = qobject_cast
(childMetaObject->newInstance()); + if (!tbl) qFatal("Could not create instance of %s", qPrintable(data.table->name())); + table.reset(tbl); + } QList childFields = data.table->fields(); @@ -322,7 +325,7 @@ Q_OUTOFLINE_TEMPLATE RowList Query::toList(int count) #ifdef NUT_SHARED_POINTER QString mName = QString("set%1").arg(levels[master].lastRow->metaObject()->className()); QString type = QString("Nut::Row<%1>").arg(levels[master].lastRow->metaObject()->className()); - bool ok = table->metaObject()->invokeMethod(table, + bool ok = tbl->metaObject()->invokeMethod(tbl, mName.toLocal8Bit().data(), QGenericArgument(type.toLatin1().data(), levels[master].lastRow)); #else @@ -336,10 +339,10 @@ Q_OUTOFLINE_TEMPLATE RowList Query::toList(int count) auto tableset = levels[master].lastRow->childTableSet( data.table->className()); - table->setParentTableSet(tableset); -#ifdef NUT_SHARED_POINTER - tableset->add(qSharedPointerCast
(shp)); -#endif +// table->setParentTableSet(tableset); +//#ifdef NUT_SHARED_POINTER + tableset->add(table); +//#endif } table->setStatus(Table::FeatchedFromDB); @@ -347,7 +350,7 @@ Q_OUTOFLINE_TEMPLATE RowList Query::toList(int count) table->clear(); //set last created row - data.lastRow = /*QSharedPointer
*/(table); + data.lastRow = tbl;///*QSharedPointer
*/(table.data()); } //while } // while diff --git a/src/table.cpp b/src/table.cpp index 9d3c9c5..d27bb72 100644 --- a/src/table.cpp +++ b/src/table.cpp @@ -51,8 +51,8 @@ Table::~Table() { //Q_D(Table); - if (d->parentTableSet) - d->parentTableSet->remove(this); +// if (d->parentTableSet) +// d->parentTableSet->remove(this); } void Table::add(TableSetBase *t) @@ -156,8 +156,8 @@ void Table::setParentTableSet(TableSetBase *parent) //Q_D(Table); d->parentTableSet = parent; - if (parent) - d->parentTableSet->add(this); +// if (parent) +// d->parentTableSet->add(this); } TableSetBase *Table::childTableSet(const QString &name) const diff --git a/src/tablesetbase.cpp b/src/tablesetbase.cpp index 8ee15a0..3bfe94b 100644 --- a/src/tablesetbase.cpp +++ b/src/tablesetbase.cpp @@ -44,7 +44,8 @@ TableSetBase::~TableSetBase() t->setParentTableSet(nullptr); foreach (Row
t, data->childs) - t->setParentTableSet(nullptr); + if (t) + t->setParentTableSet(nullptr); } int TableSetBase::save(Database *db, bool cleanUp) @@ -54,7 +55,7 @@ int TableSetBase::save(Database *db, bool cleanUp) if (data->table) masterModel = db->model().tableByClassName(data->table->metaObject()->className()); - foreach (Table *t, data->childRows) { + foreach (Row
t, data->childs) { if(data->table) t->setParentTable(data->table, masterModel, @@ -88,26 +89,27 @@ void TableSetBase::clearChilds() data->childRows.clear(); } -void TableSetBase::add(Table *t) -{ - if(!data->tables.contains(get(t))){ - data.detach(); - data->tables.insert(get(t)); - data->childRows.append(get(t)); - } -} +//void TableSetBase::add(Table *t) +//{ +// if(!data->tables.contains(get(t))){ +// data.detach(); +// data->tables.insert(get(t)); +// data->childRows.append(get(t)); +// } +//} -void TableSetBase::remove(Table *t) -{ - data.detach(); - data->tables.remove(get(t)); - data->childRows.removeOne(get(t)); -} +//void TableSetBase::remove(Table *t) +//{ +// data.detach(); +// data->tables.remove(get(t)); +// data->childRows.removeOne(get(t)); +//} void TableSetBase::add(Row
t) { data.detach(); data->childs.append(t); + t->setParentTableSet(this); } void TableSetBase::remove(Row
t) diff --git a/src/tablesetbase_p.h b/src/tablesetbase_p.h index 5911f42..f5805ba 100644 --- a/src/tablesetbase_p.h +++ b/src/tablesetbase_p.h @@ -49,17 +49,11 @@ public: void setDatabase(Database *database); protected: -// QSet _tables; -// RowList
_childRows; -// Database *_database; -// Table *_table; -//// QString _tableName; -// QString _childClassName; QExplicitlySharedDataPointer data; public://TODO: change this to private - void add(Table* t); - void remove(Table *t); +// void add(Table* t); +// void remove(Table *t); void add(Row
t); void remove(Row
t);