DPS/DataPlatform/DataManager.h

73 lines
1.6 KiB
C++

#ifndef DATAMANAGER_H
#define DATAMANAGER_H
#include<QList>
#include "DPData.h"
#include "DBPlatformNew.h"
#include "SysManager.h"
//根结点,管理所有数据
class DataManager :public DPData
{
Q_OBJECT
public:
DataManager();
~DataManager();
enum class DataType
{
project,
dataModel,
dataPack,
dataClass,
dataAttribute,
scene
};
public:
/*增加child数据*/
bool addChild(DPData* newData);
/*删除一条child数据*/
bool deleteChild(unsigned int id);
/*获取所有下层数据*/
void getAllChildren(DPData* pManager=nullptr, bool reload = false);
void clearAllProject();
void insertDataMap(DataType type, unsigned int id, DPData* pData);
void deleteInDataMap(DataType type, unsigned int id);
DPData* findObjectById(DataType type, int id);
//查找指定数据模型下的数据对象
DPData* findobjectByNameInDatamodel(int type, QString propertyName, QString name, int dataModelId);
DataType transformType(int type);
//获取指定数据类型的map
void getDataMap(DataType type, QMap<unsigned int, DPData*>& map);
/*最近打开两个项目*/
QList<DPData*> lastProject;
DBPlatformSpace::DBPlatformNew* pTheDBPlatform = nullptr;
bool _dbConnected = false; //数据库连接状态
private:
QMap<unsigned int, DPData*> platformDataMap; //所有数据对象---之后删除
QMap<unsigned int, DPData*> mapProject;
QMap<unsigned int, DPData*> mapDataModel;
QMap<unsigned int, DPData*> mapDataPack;
QMap<unsigned int, DPData*> mapDataClass;
QMap<unsigned int, DPData*> mapDataAttribute;
QMap<unsigned int, DPData*> mapDataScene;
QMap<DataType, QMap<unsigned int, DPData*>> platformData;
};
DataManager& GetDataRoot();
#endif