DPS/include/DAO.h

167 lines
4.0 KiB
C++

#pragma once
#include <iostream>
#include "CommonDataPublic.h"
#include <list>
//#include <string>
#include <vector>
#include <map>
using namespace std;
//using namespace DBPlatformSpace;
namespace DBPlatformSpace
{
class Mapper;
class InstanceDataManager;
#define COMMIT_T_IMMEDIATELY 0
#define COMMIT_T_GROUP 1
#define DAO_T_BASE 0
#define DAO_T_TOTAL 1
#define DAO_T_SUBDB 2
#define DAO_T_BASEMETA 3
#define DAO_T_DPS 4
///所有DAO的基类
class DAO
{
public:
int _ID; ///<DAO的唯一标识
string _name; ///<名称
int _daoType; ///<(数据平台内部用)
ODI DAO();
virtual ODI ~DAO();
virtual ODI ResultMsg save(int commitType = COMMIT_T_IMMEDIATELY);
virtual ODI ResultMsg delself(int commitType = COMMIT_T_IMMEDIATELY);
virtual ODI ResultMsg delAll(int commitType = COMMIT_T_IMMEDIATELY);
virtual ODI Mapper* createMapper();
virtual ODI InstanceDataManager* getIDM();
ODI static vector<int> returnMsgToVId(string rMsg);
ODI static ResultMsg CreateInstancePtr(string daoName, DAO*& pdao);
// [9/13/2023 wwu]
///DAO数据转为map<string,string>
///@param mapdao 转换后的map数据
virtual ODI ResultMsg toMapData(map<string, string>& mapdao);
///将map<string,string>转换为DAO数据
///@param mapdao 转换的map数据源
virtual ODI ResultMsg transfromMapData(map<string, string>& mapdao, DAO* &pResultDao);
///返回当前对象的类名
/// note: 真实类名,即当基类指针指向子类时,返回子类名称
virtual ODI string GetDAOClassName();
//------------------
};
//////////////////////////////////////////////////////////////////////////
///(数据平台内部用)所有工程公用信息类
class totalDAO :public DAO
{
public:
ODI totalDAO(void);
ODI ~totalDAO(void);
//// 拷贝构造函数
//ODI totalDAO(const totalDAO& C);
//ODI const totalDAO& operator=(const totalDAO& refdao);
virtual ODI InstanceDataManager* getIDM() ;
};
//////////////////////////////////////////////////////////////////////////
///(数据平台内部用)工程自有信息类
///@note 继承于该类的数据类,在存取接口前,需要执行 DBPlatform::SetCurrentProject(int prjectId) 设置当前工程ID。
class subDBDAO :public DAO
{
public:
///
//int _taskID; ///<任务ID (内部用)
ODI subDBDAO(void);
ODI ~subDBDAO(void);
//// 拷贝构造函数
//ODI subDBDAO(const subDBDAO& C);
//ODI const subDBDAO& operator=(const subDBDAO& refdao);
//virtual ODI int save();
virtual ODI InstanceDataManager* getIDM();
};
//////////////////////////////////////////////////////////////////////////
///(数据平台内部用)数据字典类
class dataDictionaryDAO :public DAO
{
public:
ODI dataDictionaryDAO(void);
ODI ~dataDictionaryDAO(void);
virtual ODI InstanceDataManager* getIDM();
};
struct IOrderClause;
///(数据平台暂时内部用)
class DAOFinder
{
public:
ODI ResultMsg findByID(string daoName, int id, DAO* &pdaofind);
ODI ResultMsg findAll(string daoName, list<DAO*>& pdaolist, IOrderClause * pOderbyClause = NULL);
ODI ResultMsg findByOneAttr(string daoName, string attrName, string operation, string attrValue, list<DAO*>& pdaolist, IOrderClause* pOderbyClause = NULL);
ODI ResultMsg findByManyAndAttr( string daoName, vector<string> v_attrName, vector<string> v_operation, vector<string> v_attrValue, list<DAO*>& pdaolist, IOrderClause* pOderbyClause = NULL);
ODI ResultMsg findByManyOrAttr(string daoName, vector<string> v_attrName, vector<string> v_operation, vector<string> v_attrValue, list<DAO*>& pdaolist, IOrderClause* pOderbyClause = NULL);
};
class SectionChildDAO : public subDBDAO
{
public:
int _sectionID; ///<剖面id
virtual ODI ResultMsg delAllBySectionID(int sectionId, int commitType = COMMIT_T_IMMEDIATELY);
SectionChildDAO();
};
//class TransBulkheadChildDAO : public subDBDAO
//{
//public:
// int _sectionID; ///<剖面id
// ResultMsg delAllByTransBulkheadID(int transBulkheadId, int commitType = COMMIT_T_IMMEDIATELY);
//};
}