724 lines
19 KiB
C++
724 lines
19 KiB
C++
|
#pragma execution_character_set("utf-8")
|
|||
|
|
|||
|
#include "DataPack.h"
|
|||
|
#include <QDateTime>
|
|||
|
#include "M_EntityModelDAO.h"
|
|||
|
#include "M_EntityTableDAO.h"
|
|||
|
#include "M_FolderDAO.h"
|
|||
|
#include "DataManager.h"
|
|||
|
#include "DataClass.h"
|
|||
|
#include "global.h"
|
|||
|
#include "DataModelData.h"
|
|||
|
#include "SceneInfo.h"
|
|||
|
#include "M_SceneInfoDAO.h"
|
|||
|
#include < regex >
|
|||
|
//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
|
|||
|
DataPack::DataPack()
|
|||
|
{
|
|||
|
_baseType = g_TYPE_DATAPACK;
|
|||
|
}
|
|||
|
|
|||
|
DataPack::~DataPack()
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void static backupDAOData(DBPlatformSpace::M_FolderDAO& src, DBPlatformSpace::M_FolderDAO& dst)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void static restoreData(DBPlatformSpace::M_FolderDAO& src, DataPack& dst)
|
|||
|
{
|
|||
|
//<2F><>Ҫ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>updateTimeֵ
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*<2A><>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>children*/
|
|||
|
void DataPack::removeChildinDPMap()
|
|||
|
{
|
|||
|
DataManager& mgr = GetDataRoot();
|
|||
|
|
|||
|
QMap<unsigned int, DPData*>::iterator it = _childrenMap.begin();
|
|||
|
while (it != _childrenMap.end())
|
|||
|
{
|
|||
|
if ((*it)->_baseType == g_TYPE_DATAPACK)
|
|||
|
{
|
|||
|
mgr.deleteInDataMap(DataManager::DataType::dataPack, (*it)->_id);
|
|||
|
qobject_cast<DataPack*>(*it)->removeChildinDPMap();
|
|||
|
it++;
|
|||
|
}
|
|||
|
else if ((*it)->_baseType == g_TYPE_DATACLASS)
|
|||
|
{
|
|||
|
mgr.deleteInDataMap(DataManager::DataType::dataClass, (*it)->_id);
|
|||
|
qobject_cast<DataClass*>(*it)->removeChildinDPMap();
|
|||
|
it++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void DataPack::saveToDao()
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
M_FolderDAO* pDao = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
|
|||
|
if (pDao == nullptr)
|
|||
|
{
|
|||
|
pDao = new M_FolderDAO();
|
|||
|
_pDBDAO = pDao;
|
|||
|
}
|
|||
|
|
|||
|
// pDao->_ID = getID();
|
|||
|
pDao->_name = CommonHelper::qstringToStdString(getName()); //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD>ͱ<EFBFBD>ʶ
|
|||
|
pDao->_displayName = CommonHelper::qstringToStdString(_strDisplayName);
|
|||
|
pDao->_folderType = _folderType;
|
|||
|
pDao->_description = CommonHelper::qstringToStdString(_strDescription);
|
|||
|
pDao->_isGenerateDAO = _bIsGenerateTable;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/*<2A><><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
bool DataPack::saveSelf()
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>*/
|
|||
|
M_FolderDAO* pDao = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
/*<2A><><EFBFBD><EFBFBD>DAO<41><4F><EFBFBD><EFBFBD>*/
|
|||
|
M_FolderDAO oldDaoData;
|
|||
|
if (pDao == nullptr)
|
|||
|
{
|
|||
|
pDao = new M_FolderDAO();
|
|||
|
_pDBDAO = pDao;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
backupDAOData(*pDao, oldDaoData);
|
|||
|
}
|
|||
|
|
|||
|
saveToDao();
|
|||
|
|
|||
|
rm = pDao->save();
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_EntityTableDAO.save success");
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_EntityTableDAO.save failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
restoreData(oldDaoData, *this);
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
bool DataPack::addChild(DPData* pNewData)
|
|||
|
{
|
|||
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0BBB9><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
|
|||
|
if (pNewData->_baseType == g_TYPE_DATAPACK)
|
|||
|
{
|
|||
|
M_FolderDAO* pPackDAO = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
pNewData->saveToDao();
|
|||
|
M_FolderDAO* pNewDAO = dynamic_cast<M_FolderDAO*>(pNewData->_pDBDAO);
|
|||
|
|
|||
|
rm = pPackDAO->addM_SubFolderDAO(pNewDAO);
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_EntityTableDAO.addM_SubFolderDAO success");
|
|||
|
pNewData->_id = pNewDAO->_ID;
|
|||
|
pNewData->_parent = this;
|
|||
|
_childrenMap.insert(pNewData->_id, pNewData);
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_EntityTableDAO.addM_SubFolderDAO failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
else /*if (pNewData->_baseType == g_TYPE_DATACLASS)*/
|
|||
|
{
|
|||
|
// qobject_cast<DataClass*>(pNewData)->reName();
|
|||
|
pNewData->saveToDao();
|
|||
|
M_FolderDAO* pPackDAO = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
M_EntityTableDAO* pNewClassDAO = dynamic_cast<M_EntityTableDAO*>(pNewData->_pDBDAO);
|
|||
|
QString msg = "DataPack::addClass:newClass:" + QString::number(pNewClassDAO->_ID) + "--" + CommonHelper::stringToQstring(pNewClassDAO->_name);
|
|||
|
LOG(INFO) << CommonHelper::qstringToString(msg);
|
|||
|
rm = pPackDAO->addM_EntityTableDAO(pNewClassDAO);
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.addM_EntityTableDAO success");
|
|||
|
DataClass* pNewTable = qobject_cast<DataClass*>(pNewData);
|
|||
|
pNewTable->_id = pNewClassDAO->_ID;
|
|||
|
//version<6F><6E><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD> innerName<6D><65><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>
|
|||
|
pNewTable->_wCreateVersion = pNewClassDAO->_addVersion;
|
|||
|
pNewTable->_wDeleteVersion = pNewClassDAO->_delVersion;
|
|||
|
pNewTable->_strInternalName = CommonHelper::stringToQstring(pNewClassDAO->_innerName);
|
|||
|
pNewTable->_parent = this;
|
|||
|
//dao<61>е<EFBFBD><D0B5>Ƿ<EFBFBD>ɾ<EFBFBD><C9BE> Ҫ<><D2AA>Ҫ<EFBFBD><D2AA><EFBFBD>棿
|
|||
|
_childrenMap.insert(pNewData->_id, pNewData);
|
|||
|
QString msg = "DataPack::addend:" + QString::number(pNewClassDAO->_ID) + "--" + CommonHelper::stringToQstring(pNewClassDAO->_name);
|
|||
|
LOG(INFO) << CommonHelper::qstringToString(msg);
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.addM_EntityTableDAO failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*ɾ<><C9BE>һ<EFBFBD><D2BB>child<6C><64><EFBFBD><EFBFBD>*/
|
|||
|
bool DataPack::deleteChild(unsigned int id)
|
|||
|
{
|
|||
|
if (_childrenMap.remove(id))
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
bool DataPack::deleteSelf()
|
|||
|
{
|
|||
|
if (_pDBDAO)
|
|||
|
{
|
|||
|
DBPlatformSpace::ResultMsg rm = _pDBDAO->delself();
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.delself success");
|
|||
|
if (_parent)
|
|||
|
{
|
|||
|
_parent->deleteChild(_id);
|
|||
|
removeChildinDPMap();
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//_parentΪ<74><CEAA>
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.delself failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
//<2F><><EFBFBD>ݿ<EFBFBD>ɾ<EFBFBD><C9BE>ʧ<EFBFBD><CAA7>
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//_pDBDAOΪ<4F><CEAA>
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
bool DataPack::deleteSelf(QString& result)
|
|||
|
{
|
|||
|
if (_pDBDAO)
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
std::string resultStr;
|
|||
|
M_FolderDAO* pFolder = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
rm = pFolder->delself(resultStr);
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.delself success ");
|
|||
|
result = CommonHelper::stringToQstring(resultStr);
|
|||
|
DataClass::resolveDeleteResult(result);
|
|||
|
//ɾ<><C9BE>child
|
|||
|
_parent->deleteChild(_id);
|
|||
|
removeChildinDPMap();
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.delself failed ");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
//<2F><><EFBFBD>ݿ<EFBFBD>ɾ<EFBFBD><C9BE>ʧ<EFBFBD><CAA7>
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>*/
|
|||
|
void DataPack::loadData(DBPlatformSpace::DAO* pDao)
|
|||
|
{
|
|||
|
_pDBDAO = pDao;
|
|||
|
//<2F><>DAO<41><4F><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>DataModelData<74><61><EFBFBD><EFBFBD>
|
|||
|
DBPlatformSpace::M_FolderDAO* pDAOData = dynamic_cast<DBPlatformSpace::M_FolderDAO*>(_pDBDAO);
|
|||
|
setID(pDAOData->_ID);
|
|||
|
setName(CommonHelper::stringToQstring(pDAOData->_name)); //<2F><><EFBFBD><EFBFBD>ģ<EFBFBD>ͱ<EFBFBD>ʶ
|
|||
|
_folderType = pDAOData->_folderType;
|
|||
|
_strDescription = CommonHelper::stringToQstring(pDAOData->_description);
|
|||
|
_strDisplayName = CommonHelper::stringToQstring(pDAOData->_displayName);
|
|||
|
_bIsGenerateTable = pDAOData->_isGenerateDAO;
|
|||
|
_wCreateVersion = pDAOData->_addVersion;
|
|||
|
}
|
|||
|
|
|||
|
/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
void DataPack::getAllChildren(DPData* pManager)
|
|||
|
{
|
|||
|
if (!_initSubPack || !_initDataClass)
|
|||
|
{
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1>ģ<EFBFBD><C4A3>
|
|||
|
getSubPack(pManager);
|
|||
|
//<2F><>ȡ<EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
getDataClassAndAttribute(pManager);
|
|||
|
}
|
|||
|
// else
|
|||
|
// {
|
|||
|
// this->toJson(jsonObj, true);
|
|||
|
// }
|
|||
|
}
|
|||
|
|
|||
|
void DataPack::toJson(json& jsonObj, bool recursive)
|
|||
|
{
|
|||
|
jsonObj["id"] = _id;
|
|||
|
jsonObj["label"] = CommonHelper::qstringToUtf8(_strDisplayName);
|
|||
|
jsonObj["type"] = _folderType;
|
|||
|
jsonObj["name"] = CommonHelper::qstringToUtf8(_name);
|
|||
|
jsonObj["description"] = CommonHelper::qstringToUtf8(_strDescription);
|
|||
|
jsonObj["classType"] = g_TYPE_DATAPACK;
|
|||
|
jsonObj["canCreateTable"] = CommonHelper::intTobool(_bIsGenerateTable);
|
|||
|
jsonObj["version"] = _wCreateVersion;
|
|||
|
|
|||
|
if (recursive) {
|
|||
|
json subPacks;
|
|||
|
QMap<unsigned int, DPData*>::iterator it = _childrenMap.begin();
|
|||
|
while (it != _childrenMap.end())
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣתjson
|
|||
|
json child;
|
|||
|
(*it)->toJson(child, recursive);
|
|||
|
subPacks.push_back(child);
|
|||
|
it++;
|
|||
|
}
|
|||
|
jsonObj["children"] = subPacks;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1>ģ<EFBFBD><C4A3>
|
|||
|
void DataPack::getSubPack(DPData* pManager)
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
DataManager* pMng = qobject_cast<DataManager*>(pManager);
|
|||
|
if (!_initSubPack)
|
|||
|
{
|
|||
|
list<M_FolderDAO*> folderDAOList;
|
|||
|
M_FolderDAO* pCurFolderDAO = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
rm = pCurFolderDAO->getSubFolderDAOList(folderDAOList);
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.getSubFolderDAOList success");
|
|||
|
for (list<M_FolderDAO*>::iterator it = folderDAOList.begin(); it != folderDAOList.end(); ++it)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ص<EFBFBD>ǰģ<C7B0><C4A3>
|
|||
|
DataPack* pNew = new DataPack();
|
|||
|
pNew->loadData(*it);
|
|||
|
int id = (*it)->_ID;
|
|||
|
// <20><><EFBFBD>뵽map
|
|||
|
pNew->_parent = this;
|
|||
|
pNew->_bIsChildPack = true;
|
|||
|
_childrenMap.insert(id, pNew);
|
|||
|
pMng->insertDataMap(DataManager::DataType::dataPack, id, pNew);
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1>ģ<EFBFBD><C4A3>
|
|||
|
pNew->getAllChildren(pMng);
|
|||
|
}
|
|||
|
_initSubPack = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ִ<EFBFBD><D6B4>ʧ<EFBFBD><CAA7>
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.getSubFolderDAOList failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void DataPack::getDataClassAndAttribute(DPData* pManager)
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
DataManager* pMng = qobject_cast<DataManager*>(pManager);
|
|||
|
if (!_initDataClass)
|
|||
|
{
|
|||
|
list<M_EntityTableDAO*> tableDAOList;
|
|||
|
M_FolderDAO* pFolderDao = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
rm = pFolderDao->getM_EntityTableDAOList(tableDAOList);
|
|||
|
if (rm.rCode != 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.getM_EntityTableDAOList failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return;
|
|||
|
}
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.getM_EntityTableDAOList success");
|
|||
|
|
|||
|
for (list<M_EntityTableDAO*>::iterator it = tableDAOList.begin(); it != tableDAOList.end(); ++it)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ص<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ಢ<EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD>
|
|||
|
DataClass* pNew = new DataClass();
|
|||
|
pNew->loadData(*it);
|
|||
|
int id = (*it)->_ID;
|
|||
|
pNew->_parent = this;
|
|||
|
_childrenMap.insert(id, pNew);
|
|||
|
pMng->insertDataMap(DataManager::DataType::dataClass, id, pNew);
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
pNew->getAllChildren(pManager);
|
|||
|
//findby
|
|||
|
if (!pNew->getFindByInterface())
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ѯ<EFBFBD>ӿ<EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
//delby
|
|||
|
if (!pNew->getDelByInterface())
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD>ȡɾ<EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
}
|
|||
|
_initDataClass = true;
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
QMap<unsigned int, DPData*>::iterator it = _childrenMap.begin();
|
|||
|
while (it != _childrenMap.end())
|
|||
|
{
|
|||
|
DataClass* pData = qobject_cast<DataClass*>(*it);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣתjson
|
|||
|
json j;
|
|||
|
j["id"] = pData->_id;
|
|||
|
j["label"] = CommonHelper::qstringToUtf8(pData->_strDisplayName);
|
|||
|
j["name"] = CommonHelper::qstringToUtf8(pData->_name);
|
|||
|
j["type"] = pData->_type;
|
|||
|
j["description"] = CommonHelper::qstringToUtf8(pData->_strDescription);
|
|||
|
j["classType"] = g_TYPE_DATACLASS;
|
|||
|
j["createVersion"] = pData->_wCreateVersion;
|
|||
|
j["delVersion"] = pData->_wDeleteVersion;
|
|||
|
j["innerName"] = CommonHelper::qstringToUtf8(pData->_strInternalName);
|
|||
|
j["countType"] = pData->_wCountType;
|
|||
|
|
|||
|
it++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/*<2A><>ȡ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
void DataPack::getNewProperty(json& parameter, QVariantMap& valueMap)
|
|||
|
{
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD>ơ<EFBFBD><C6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD><CDA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ɱ<EFBFBD>
|
|||
|
//name,type,nameFlag,isGenerateTable
|
|||
|
auto data = parameter["data"];
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
valueMap.insert("displayName", CommonHelper::utf8ToQString(data["label"]));
|
|||
|
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
valueMap.insert("folderType", (int)data["type"]);
|
|||
|
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
if (!data["name"].is_null())
|
|||
|
{
|
|||
|
valueMap.insert("name", CommonHelper::utf8ToQString(data["name"]));
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
valueMap.insert("description", CommonHelper::utf8ToQString(data["description"]));
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ɱ<EFBFBD>
|
|||
|
valueMap.insert("generateTable", (bool)data["canCreateTable"]);
|
|||
|
}
|
|||
|
|
|||
|
void DataPack::setNewData(json& parameter)
|
|||
|
{
|
|||
|
QVariantMap newValues;
|
|||
|
getNewProperty(parameter, newValues);
|
|||
|
setProperties(newValues);
|
|||
|
}
|
|||
|
|
|||
|
/*<2A>ѵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>Ƶ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>*/
|
|||
|
bool DataPack::moveData(json& parameter, DPData* pManager)
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
DataManager* pMng = qobject_cast<DataManager*>(pManager);
|
|||
|
auto data = parameter["data"];
|
|||
|
//Ŀ<><C4BF>ģ<EFBFBD><C4A3>id
|
|||
|
int dstPackId = data["parentid"];
|
|||
|
//<2F><>ǰģ<C7B0><C4A3>
|
|||
|
M_FolderDAO* pCurPackDAO = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
//Ŀ<><C4BF>ģ<EFBFBD><C4A3>
|
|||
|
DataPack* pdstPack = qobject_cast<DataPack*>(pMng->findObjectById(DataManager::DataType::dataPack, dstPackId));
|
|||
|
M_FolderDAO* pDstPackDAO = dynamic_cast<M_FolderDAO*>(pdstPack->_pDBDAO);
|
|||
|
|
|||
|
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı䣩
|
|||
|
//<2F><>ǰģ<C7B0><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>黹<EFBFBD><E9BBB9>ģ<EFBFBD><C4A3><EFBFBD>¹<EFBFBD>
|
|||
|
if (pCurPackDAO->_t_M_FolderID > 0)
|
|||
|
{
|
|||
|
//<2F><>ģ<EFBFBD><C4A3>Ϊ<EFBFBD><CEAA>ģ<EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>㣬<EFBFBD>Ƴ<EFBFBD>
|
|||
|
M_FolderDAO* pfatherFolderDAO = dynamic_cast<M_FolderDAO*>(_parent->_pDBDAO);
|
|||
|
if (pfatherFolderDAO)
|
|||
|
{
|
|||
|
//<2F>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
rm = pfatherFolderDAO->removeSubFolderDAO(pCurPackDAO);
|
|||
|
if (rm.rCode != 0)
|
|||
|
{
|
|||
|
//<2F>Ƴ<EFBFBD><C6B3><EFBFBD>ģ<EFBFBD><C4A3>ʧ<EFBFBD><CAA7>
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_FolderDAO::removeSubFolderDAO failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_FolderDAO::removeSubFolderDAO success");
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
QString msg = "<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>" + QString::number(pCurPackDAO->_ID) + "--" + CommonHelper::stringToQstring(pCurPackDAO->_name) + "<EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD>";
|
|||
|
LOG(INFO) << CommonHelper::qstringToString(msg);
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><>ģ<EFBFBD>鲻<EFBFBD><E9B2BB>Ҫ<EFBFBD><D2AA><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ģ<EFBFBD><C4A3>
|
|||
|
rm = pDstPackDAO->addM_SubFolderDAO(pCurPackDAO);
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO::addM_SubFolderDAO success");
|
|||
|
QString msg = "ģ<EFBFBD><EFBFBD>" + QString::number(pCurPackDAO->_ID) + "--" + CommonHelper::stringToQstring(pCurPackDAO->_name) + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>" + CommonHelper::stringToQstring(pDstPackDAO->_name) + "<EFBFBD>ɹ<EFBFBD>";
|
|||
|
LOG(INFO) << CommonHelper::qstringToString(msg);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
_parent->_childrenMap.remove(_id); //<2F>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ƴ<EFBFBD>
|
|||
|
//<2F>µ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD>ڴ<EFBFBD><DAB4>м<EFBFBD><D0BC><EFBFBD>
|
|||
|
_parent = pdstPack;
|
|||
|
pdstPack->_childrenMap.insert(_id, this);
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO::addM_SubFolderDAO failed");
|
|||
|
QString msg = "ģ<EFBFBD><EFBFBD>" + QString::number(pCurPackDAO->_ID) + "--" + CommonHelper::stringToQstring(pCurPackDAO->_name) + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>" + CommonHelper::stringToQstring(pCurPackDAO->_name) + "ʧ<EFBFBD><EFBFBD>";
|
|||
|
LOG(INFO) << CommonHelper::qstringToString(msg);
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
bool DataPack::addScene(DPData* pNew)
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
SceneInfo* pScene = qobject_cast<SceneInfo*>(pNew);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
M_FolderDAO* pPackDao = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
pScene->saveToDao();
|
|||
|
M_SceneInfoDAO* pSceneDao = dynamic_cast<M_SceneInfoDAO*>(pScene->_pDBDAO);
|
|||
|
rm = pPackDao->addSceneInfo(pSceneDao);
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
pScene->_id = pSceneDao->_ID;
|
|||
|
pScene->_parent = this;
|
|||
|
_sceneMap.insert(pScene->_id, pScene);
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.addSceneInfo success");
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.addSceneInfo failed");
|
|||
|
LOG(INFO) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
bool DataPack::deleteScene(int id)
|
|||
|
{
|
|||
|
_sceneMap.remove(id);
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
//bool DataPack::moveScene(json& parameter)
|
|||
|
//{
|
|||
|
// return true;
|
|||
|
//}
|
|||
|
|
|||
|
bool DataPack::getScene(DPData* pMg)
|
|||
|
{
|
|||
|
DataManager* pManager = qobject_cast<DataManager*>(pMg);
|
|||
|
//<2F><>ȡ
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
list<M_SceneInfoDAO*> sceneList;
|
|||
|
M_FolderDAO* pPackDao = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
rm = pPackDao->getSceneInfoList(sceneList);
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
for (list<M_SceneInfoDAO*>::iterator it = sceneList.begin(); it != sceneList.end(); ++it)
|
|||
|
{
|
|||
|
SceneInfo* pScene;
|
|||
|
if (_sceneMap.contains((*it)->_ID))
|
|||
|
{
|
|||
|
//ȷ<><C8B7>ͳһ<CDB3><D2BB><EFBFBD>ɴ<EFBFBD><C9B4><EFBFBD><EFBFBD>ݿ⸲<DDBF><E2B8B2>
|
|||
|
pScene = _sceneMap.value((*it)->_ID);
|
|||
|
pScene->loadData(*it);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
pScene = new SceneInfo();
|
|||
|
pScene->loadData(*it);
|
|||
|
pScene->_parent = this;
|
|||
|
_sceneMap.insert(pScene->_id, pScene);
|
|||
|
pManager->insertDataMap(DataManager::DataType::scene, pScene->_id, pScene);
|
|||
|
}
|
|||
|
}
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.getSceneInfoList success");
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_FolderDAO.getSceneInfoList failed");
|
|||
|
LOG(INFO) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
bool DataPack::generateCode(/*DPData* pManager,*/ QStringList& qfileList)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD><D0B1><EFBFBD>
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
SysManager& sysMgr = GetSysManager();
|
|||
|
QString codeFileFolderPath = sysMgr._codeGeneratePath;
|
|||
|
codeFileFolderPath += "/C++/";
|
|||
|
list<string> fileList;
|
|||
|
// DataModelData* pModel = qobject_cast<DataModelData*>(getDataModelOwner());
|
|||
|
// M_EntityModelDAO* pModelDao = dynamic_cast<M_EntityModelDAO*>(pModel->_pDBDAO);
|
|||
|
M_FolderDAO* pFolderDao = dynamic_cast<M_FolderDAO*>(_pDBDAO);
|
|||
|
rm = pFolderDao->CreateCode(/*pModelDao, */string(codeFileFolderPath.toLocal8Bit()), fileList);
|
|||
|
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
for (auto i : fileList)
|
|||
|
{
|
|||
|
qfileList.append(CommonHelper::stringToQstring(i));
|
|||
|
}
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("M_EntityTableDAO.CreateCode success");
|
|||
|
return true;
|
|||
|
}
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("DataPack:M_EntityTableDAO.CreateCode failed");
|
|||
|
LOG(INFO) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
void DataPack::setFileData(FileGenerate* generator, QStringList flag)
|
|||
|
{
|
|||
|
int pos = flag.size(); //<2F>滻<EFBFBD>ı<EFBFBD>ʶλ<CAB6><CEBB>
|
|||
|
|
|||
|
if (flag.size() == 1)
|
|||
|
{
|
|||
|
//<2F><>ģ<EFBFBD><C4A3>
|
|||
|
generator->PackItem.append(new CCS_Report::CCSModelDataSet(flag[0]));
|
|||
|
generator->RootPack.append(new CCS_Report::CCSModelDataSet(flag[0], _strDisplayName));
|
|||
|
generator->PackTable.append(new CCS_Report::CCSModelDataSet(flag[0], _strDisplayName, _name, CommonHelper::convertFolderTypeToString(_folderType), CommonHelper::convertPropertyValue(_bIsGenerateTable), ""));
|
|||
|
|
|||
|
}
|
|||
|
if (flag.size() == 2)
|
|||
|
{
|
|||
|
//<2F>ڶ<EFBFBD><DAB6>㣨<EFBFBD><E3A3A8>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ģ<EFBFBD>飩
|
|||
|
generator->ChildPackItem.append(new CCS_Report::CCSModelDataSet(flag[0], flag[1]));
|
|||
|
generator->ChildPack1.append(new CCS_Report::CCSModelDataSet(flag[0], flag[1], _strDisplayName));
|
|||
|
generator->ChildPackTable.append(new CCS_Report::CCSModelDataSet(flag[0], flag[1], _strDisplayName, _name, CommonHelper::convertFolderTypeToString(_folderType), CommonHelper::convertPropertyValue(_bIsGenerateTable), _parent->_name));
|
|||
|
|
|||
|
}
|
|||
|
else if (flag.size() == 3)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
generator->Ch_childPackItem.append(new CCS_Report::CCSModelDataSet(flag[0], flag[1], flag[2]));
|
|||
|
generator->ChildPack2.append(new CCS_Report::CCSModelDataSet(flag[0], flag[1], flag[2], _strDisplayName));
|
|||
|
generator->Ch_childPackTable.append(new CCS_Report::CCSModelDataSet(flag[0], flag[1], flag[2], _strDisplayName, _name, CommonHelper::convertFolderTypeToString(_folderType), CommonHelper::convertPropertyValue(_bIsGenerateTable), _parent->_name));
|
|||
|
|
|||
|
}
|
|||
|
if (_childrenMap.size() > 0)
|
|||
|
{
|
|||
|
QMap<unsigned int, DPData*>::iterator it = _childrenMap.begin();
|
|||
|
int id = 0;
|
|||
|
flag << QString::number(id);
|
|||
|
while (it != _childrenMap.end())
|
|||
|
{
|
|||
|
flag.replace(pos, QString::number(id));
|
|||
|
(*it)->setFileData(generator, flag);
|
|||
|
it++;
|
|||
|
id++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6>size>=2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//true Ϊ<><CEAA><EFBFBD>Ϸ<EFBFBD> false Ϊ<>Ϸ<EFBFBD>
|
|||
|
bool DataPack::checkNameillegal( QString& errMsg)
|
|||
|
{
|
|||
|
if (_name.size() < 3 || _name.size() > 128)
|
|||
|
{
|
|||
|
errMsg = _name + " <20><><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (!_name.at(0).isLetter())
|
|||
|
{
|
|||
|
errMsg = _name + " ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6>λֻ<CEBB><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ";
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (!_name.at(2).isLetter())
|
|||
|
{
|
|||
|
errMsg = _name +" ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6>3λֻ<CEBB><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ";
|
|||
|
return true;
|
|||
|
}
|
|||
|
bool foundmatch = false;
|
|||
|
try {
|
|||
|
std::regex re(R"(^[\w\(\)\[\]\<EFBFBD><EFBFBD>\<EFBFBD><EFBFBD>]+$)");
|
|||
|
foundmatch = std::regex_search(_name.toStdString(), re);
|
|||
|
}
|
|||
|
catch (std::regex_error& e) {
|
|||
|
// Syntax error in the regular expression
|
|||
|
}
|
|||
|
if (foundmatch)
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
errMsg = "ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ " + _name + " <20><><EFBFBD><EFBFBD>Ч<EFBFBD>ַ<EFBFBD>";
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|