#ifndef INITIALIZATIONUTILS_H #define INITIALIZATIONUTILS_H #include #include #include #include "model/databaseManager/core/DatabaseManagerNames.h" #define INIT_SINGLE(objectName, tableModel, fieldName, type, q) \ do \ { \ objectName.fieldName = tableModel->record(q).value(#fieldName).to ## type(); \ } \ while(0) #define INIT_SINGLE_STR(objectName, tableModel, fieldName, q) \ do \ { \ objectName.fieldName = tableModel->record(q).value(#fieldName); \ } \ while(0) \ #define INIT_SINGLE_STR_TO_ENUM(objectName, tableModel, fieldName, convertorFunction, q) \ do \ { \ objectName.fieldName = \ convertorFunction(tableModel->record(q).value(#fieldName).toString()); \ } \ while(0) \ #define INIT_LIST(objectName, tableModel, fieldName, Type, q) \ do \ { \ auto _ ## fieldName = tableModel->record(q).value(#fieldName).toString().split(',', \ QString::SkipEmptyParts); \ for(int i = 0; i < _ ## fieldName.length(); ++i) \ { \ objectName.fieldName.append(_ ## fieldName[i].to ## Type()); \ } \ } \ while(0) #define INIT_LIST_STR(objectName, tableModel, fieldName, q) \ do \ { \ auto _ ## fieldName = tableModel->record(q).value(#fieldName).toString().split(',', \ QString::SkipEmptyParts); \ for(int i = 0; i < _ ## fieldName.length(); ++i) \ { \ objectName.fieldName.append(_ ## fieldName[i]); \ } \ } \ while(0) \ #define INTI_LIST_LIST(objectName, tableModel, fieldName, type, Type, q) \ do { \ auto _ ## fieldName = tableModel->record(q).value(#fieldName).toString().split(';', \ QString::SkipEmptyParts); \ for(int i = 0; i < _ ## fieldName.length(); ++i){ \ auto __ ## fieldName = _ ## fieldName[i].split(',', QString::SkipEmptyParts); \ QList temp; \ for(int j = 0; j < __ ## fieldName.length(); ++j) \ { \ temp.append(__ ## fieldName[j].to ## Type()); \ } \ objectName.fieldName.append(temp); \ temp.clear(); \ } \ } while(0) #define GET_DATA(dbName, databaseDriver, objectName, funcName, var) \ do { \ auto databaseName = createDbName(dbName); \ databaseDriver.setDatabaseName(databaseName); \ databaseDriver.open(); \ QSqlTableModel* tableModel = new QSqlTableModel(this, databaseDriver); \ tableModel->clear(); \ Dbm ## objectName ins ## objectName; \ DbmDto ## objectName objectName ## Data; \ if(ins ## objectName.funcName(tableModel, objectName ## Data)) \ { \ var.setValue(objectName ## Data); \ result = true; \ } \ else \ { \ result = false; \ } \ delete tableModel; \ } while(0) #define GET_DATA_PARAM(dbName, databaseDriver, objectName, funcName, param, var) \ do { \ auto databaseName = createDbName(dbName); \ databaseDriver.setDatabaseName(databaseName); \ databaseDriver.open(); \ QSqlTableModel* tableModel = new QSqlTableModel(this, databaseDriver); \ tableModel->clear(); \ Dbm ## objectName ins ## objectName; \ DbmDto ## objectName objectName ## Data; \ if(ins ## objectName.funcName(param, tableModel, objectName ## Data)) \ { \ var.setValue(objectName ## Data); \ result = true; \ } \ else \ { \ result = false; \ } \ delete tableModel; \ } while(0) #define GET_DATA_LIST_PARAM(dbName, databaseDriver, objectName, funcName, param, var) \ do { \ auto databaseName = createDbName(dbName); \ databaseDriver.setDatabaseName(databaseName); \ databaseDriver.open(); \ QSqlTableModel* tableModel = new QSqlTableModel(this, databaseDriver); \ tableModel->clear(); \ Dbm ## objectName ins ## objectName; \ QList objectName ## Data; \ if(ins ## objectName.funcName(param, tableModel, objectName ## Data)) \ { \ var.setValue(objectName ## Data); \ result = true; \ } \ else \ { \ result = false; \ } \ delete tableModel; \ } while(0) #define GET_DATA_LIST(dbName, databaseDriver, objectName, funcName, var) \ do { \ auto databaseName = createDbName(dbName); \ databaseDriver.setDatabaseName(databaseName); \ databaseDriver.open(); \ QSqlTableModel* tableModel = new QSqlTableModel(this, databaseDriver); \ tableModel->clear(); \ Dbm ## objectName ins ## objectName; \ QList objectName ## Data; \ if(ins ## objectName.funcName(tableModel, objectName ## Data)) \ { \ var.setValue(objectName ## Data); \ result = true; \ } \ else \ { \ result = false; \ } \ delete tableModel; \ } while(0) #endif //INITIALIZATIONUTILS_H