try to polish Query::toList
This commit is contained in:
parent
34f494e674
commit
65b94d363b
|
|
@ -1 +1 @@
|
|||
Subproject commit 51500a497933444196942ee0db6628338a0422af
|
||||
Subproject commit e0bdec4a7c93b4d4307fd89200000ff817a86c99
|
||||
39
src/query.h
39
src/query.h
|
|
@ -272,14 +272,14 @@ Q_OUTOFLINE_TEMPLATE RowList<T> Query<T>::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<T> Query<T>::toList(int count)
|
|||
data.lastKeyValue = q.value(data.keyFiledname);
|
||||
|
||||
//create table row
|
||||
Table *table;
|
||||
Row<T> shp;
|
||||
Table *tbl;
|
||||
Row<Table> table;
|
||||
if (data.table->className() == d->className) {
|
||||
table = new T();
|
||||
tbl = new T;
|
||||
// table = Nut::create<T>();
|
||||
#ifdef NUT_SHARED_POINTER
|
||||
shp = QSharedPointer<T>(qobject_cast<T*>(table));
|
||||
returnList.append(shp);
|
||||
d->tableSet->add(shp);
|
||||
table.reset(tbl);
|
||||
returnList.append(qSharedPointerCast<T>(table));
|
||||
#else
|
||||
returnList.append(dynamic_cast<T*>(table));
|
||||
returnList.append(qobject_cast<T>(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<Table *>(childMetaObject->newInstance());
|
||||
if (!table)
|
||||
tbl = qobject_cast<Table *>(childMetaObject->newInstance());
|
||||
if (!tbl)
|
||||
qFatal("Could not create instance of %s",
|
||||
qPrintable(data.table->name()));
|
||||
|
||||
table.reset(tbl);
|
||||
|
||||
}
|
||||
|
||||
QList<FieldModel*> childFields = data.table->fields();
|
||||
|
|
@ -322,7 +325,7 @@ Q_OUTOFLINE_TEMPLATE RowList<T> Query<T>::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<T> Query<T>::toList(int count)
|
|||
|
||||
auto tableset = levels[master].lastRow->childTableSet(
|
||||
data.table->className());
|
||||
table->setParentTableSet(tableset);
|
||||
#ifdef NUT_SHARED_POINTER
|
||||
tableset->add(qSharedPointerCast<Table>(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<T> Query<T>::toList(int count)
|
|||
table->clear();
|
||||
|
||||
//set last created row
|
||||
data.lastRow = /*QSharedPointer<Table>*/(table);
|
||||
data.lastRow = tbl;///*QSharedPointer<Table>*/(table.data());
|
||||
} //while
|
||||
} // while
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ TableSetBase::~TableSetBase()
|
|||
t->setParentTableSet(nullptr);
|
||||
|
||||
foreach (Row<Table> t, data->childs)
|
||||
if (t)
|
||||
t->setParentTableSet(nullptr);
|
||||
}
|
||||
|
||||
|
|
@ -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<Table> 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<Table> t)
|
||||
{
|
||||
data.detach();
|
||||
data->childs.append(t);
|
||||
t->setParentTableSet(this);
|
||||
}
|
||||
|
||||
void TableSetBase::remove(Row<Table> t)
|
||||
|
|
|
|||
|
|
@ -49,17 +49,11 @@ public:
|
|||
void setDatabase(Database *database);
|
||||
|
||||
protected:
|
||||
// QSet<Table*> _tables;
|
||||
// RowList<Table> _childRows;
|
||||
// Database *_database;
|
||||
// Table *_table;
|
||||
//// QString _tableName;
|
||||
// QString _childClassName;
|
||||
QExplicitlySharedDataPointer<TableSetBaseData> 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<Table> t);
|
||||
void remove(Row<Table> t);
|
||||
|
|
|
|||
Loading…
Reference in New Issue