DPS/DataPlatform/DataPack.cpp

724 lines
19 KiB
C++
Raw Normal View History

2025-06-23 10:41:33 +08:00
#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;
}
}
}