You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

156 lines
4.4 KiB

#ifndef INITIALIZATIONUTILS_H
#define INITIALIZATIONUTILS_H
#include <QObject>
#include <typeinfo>
#include <QString>
#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<type> 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<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(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<DbmDto ## objectName> 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