423 lines
10 KiB
C++
423 lines
10 KiB
C++
|
#pragma execution_character_set("utf-8")
|
|||
|
|
|||
|
#include "ProjectData.h"
|
|||
|
#include "DataModelData.h"
|
|||
|
#include "DataManager.h"
|
|||
|
#include "M_ProjectDAO.h"
|
|||
|
#include "M_EntityModelDAO.h"
|
|||
|
#include "CommonDataPublic.h"
|
|||
|
#include <QTime>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
void static backupDAOData(DBPlatformSpace::M_ProjectDAO& src, DBPlatformSpace::M_ProjectDAO& dst)
|
|||
|
{
|
|||
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<DEB8>ֵ
|
|||
|
dst._name = src._name;
|
|||
|
dst._type = src._type;
|
|||
|
dst._author = src._author;
|
|||
|
}
|
|||
|
|
|||
|
void static restoreProjectData(DBPlatformSpace::M_ProjectDAO& src, ProjectData& dst)
|
|||
|
{
|
|||
|
//<2F><>Ҫ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
dst._name = CommonHelper::stringToQstring(src._name);
|
|||
|
dst._type = src._type;
|
|||
|
dst._author = CommonHelper::stringToQstring(src._author);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
ProjectData::ProjectData()
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
ProjectData::~ProjectData()
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
QString ProjectData::getAuthor() const
|
|||
|
{
|
|||
|
return _author;
|
|||
|
}
|
|||
|
void ProjectData::setAuthor(QString author)
|
|||
|
{
|
|||
|
this->_author = author;
|
|||
|
}
|
|||
|
|
|||
|
QString ProjectData::getCreateTime() const
|
|||
|
{
|
|||
|
return _createTime;
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::setCreateTime(QString createTime)
|
|||
|
{
|
|||
|
this->_createTime = createTime;
|
|||
|
}
|
|||
|
|
|||
|
QString ProjectData::getUpdateTime() const
|
|||
|
{
|
|||
|
return _updateTime;
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::setUpdateTime(QString updateTime)
|
|||
|
{
|
|||
|
this->_updateTime = updateTime;
|
|||
|
}
|
|||
|
|
|||
|
bool ProjectData::getFocus() const
|
|||
|
{
|
|||
|
return _focus;
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::setFocus(bool focus)
|
|||
|
{
|
|||
|
this->_focus = focus;
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::removeChildinDPMap()
|
|||
|
{
|
|||
|
DataManager& mgr = GetDataRoot();
|
|||
|
QMap<unsigned int, DPData*>::iterator it = _childrenMap.begin();
|
|||
|
while (it != _childrenMap.end())
|
|||
|
{
|
|||
|
mgr.deleteInDataMap(DataManager::DataType::dataModel, (*it)->_id);
|
|||
|
qobject_cast<DataModelData*>(*it)->removeChildinDPMap();
|
|||
|
it++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
bool ProjectData::saveSelf()
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
M_ProjectDAO oldDaoData;
|
|||
|
ResultMsg rm;
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>*/
|
|||
|
M_ProjectDAO* pDao = dynamic_cast<M_ProjectDAO*>(_pDBDAO);
|
|||
|
|
|||
|
if (pDao == nullptr)
|
|||
|
{
|
|||
|
pDao = new M_ProjectDAO();
|
|||
|
_pDBDAO = pDao;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A><><EFBFBD><EFBFBD>DAO<41><4F><EFBFBD><EFBFBD>*/
|
|||
|
backupDAOData(*pDao, oldDaoData);
|
|||
|
}
|
|||
|
|
|||
|
pDao->_name = CommonHelper::qstringToStdString(this->_name);
|
|||
|
pDao->_type = this->_type;
|
|||
|
pDao->_focus = this->_focus;
|
|||
|
pDao->_author = CommonHelper::qstringToStdString(this->_author);
|
|||
|
pDao->_createTime = CommonHelper::qstringToStdString(this->_createTime);
|
|||
|
pDao->_updateTime = CommonHelper::qstringToStdString(this->_updateTime);
|
|||
|
|
|||
|
rm = pDao->save();
|
|||
|
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::save success");
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::save failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
//<2F>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
restoreProjectData(oldDaoData, *this);
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::loadData(DBPlatformSpace::DAO* pDao)
|
|||
|
{
|
|||
|
_pDBDAO = pDao;
|
|||
|
//<2F><>DAO<41><4F><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>projectData<74><61><EFBFBD><EFBFBD>
|
|||
|
DBPlatformSpace::M_ProjectDAO* pDAOData = dynamic_cast<DBPlatformSpace::M_ProjectDAO*>(_pDBDAO);
|
|||
|
_id = pDAOData->_ID;
|
|||
|
_name = CommonHelper::stringToQstring(pDAOData->_name);
|
|||
|
_type = pDAOData->_type;
|
|||
|
_focus = pDAOData->_focus;
|
|||
|
_author = CommonHelper::stringToQstring(pDAOData->_author);
|
|||
|
_createTime = CommonHelper::stringToQstring(pDAOData->_createTime);
|
|||
|
_updateTime = CommonHelper::stringToQstring(pDAOData->_updateTime);
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
bool ProjectData::deleteSelf()
|
|||
|
{
|
|||
|
if (_pDBDAO)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>ݿ<EFBFBD>ɾ<EFBFBD><C9BE>
|
|||
|
DBPlatformSpace::ResultMsg rm = _pDBDAO->delself();
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ݿ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>Ŀ<EFBFBD><C4BF>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
_parent->deleteChild(_id);
|
|||
|
removeChildinDPMap();
|
|||
|
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::delself success");
|
|||
|
return true;
|
|||
|
}
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::delself failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::toJson(json& jsonObj, bool /*recursive*/)
|
|||
|
{
|
|||
|
jsonObj["id"] = _id;
|
|||
|
jsonObj["author"] = CommonHelper::qstringToUtf8(getAuthor());
|
|||
|
jsonObj["name"] = CommonHelper::qstringToUtf8(_name);
|
|||
|
jsonObj["type"] = getType();
|
|||
|
jsonObj["createTime"] = CommonHelper::qstringToUtf8(getCreateTime());
|
|||
|
jsonObj["updateTime"] = CommonHelper::qstringToUtf8(getUpdateTime());
|
|||
|
jsonObj["focus"] = getFocus();
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/*<2A><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>*/
|
|||
|
void ProjectData::getAllChildren(DPData* pManager)
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
DataManager* pDManager = qobject_cast<DataManager*>(pManager);
|
|||
|
|
|||
|
M_ProjectDAO* pProject = dynamic_cast<M_ProjectDAO*>(_pDBDAO);
|
|||
|
list<M_EntityModelDAO*> listDataModel;
|
|||
|
rm = pProject->getEntityModelList(listDataModel);
|
|||
|
if (rm.rCode != 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::getEntityModelList failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return;
|
|||
|
}
|
|||
|
if (listDataModel.size() != _childrenMap.size())
|
|||
|
{
|
|||
|
qDeleteAll(_childrenMap);
|
|||
|
_childrenMap.clear();
|
|||
|
}
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::getEntityModelList success");
|
|||
|
for (list<M_EntityModelDAO*>::iterator it = listDataModel.begin(); it != listDataModel.end(); ++it)
|
|||
|
{
|
|||
|
int id = (*it)->_ID;
|
|||
|
DataModelData* pNew = nullptr;
|
|||
|
if (_childrenMap.contains(id))
|
|||
|
{
|
|||
|
_childrenMap.value(id)->loadData(*it);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
pNew = new DataModelData();
|
|||
|
pNew->loadData(*it);
|
|||
|
pNew->_parent = this;
|
|||
|
_childrenMap.insert(id, pNew);
|
|||
|
//<2F><><EFBFBD><EFBFBD>model map
|
|||
|
pDManager->insertDataMap(DataManager::DataType::dataModel, pNew->_id, pNew);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*<2A>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>Ŀ*/
|
|||
|
bool ProjectData::addChild(DPData* pNewData)
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
DataModelData* pNewModelData = qobject_cast<DataModelData*>(pNewData);
|
|||
|
pNewModelData->saveToDao();
|
|||
|
M_EntityModelDAO* pNewModelDAO = dynamic_cast<M_EntityModelDAO*>(pNewData->_pDBDAO);
|
|||
|
M_ProjectDAO* pProjectDAO = dynamic_cast<M_ProjectDAO*>(_pDBDAO);
|
|||
|
rm = pProjectDAO->addEntityModel(pNewModelDAO);
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::addEntityModel success");
|
|||
|
pNewModelData->_id = pNewModelDAO->_ID;
|
|||
|
pNewModelData->_version = pNewModelDAO->_version;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>ͳɹ<CDB3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>childMap
|
|||
|
_childrenMap.insert(pNewData->_id, pNewData);
|
|||
|
return true;
|
|||
|
}
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::addEntityModel failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
bool ProjectData::deleteChild(unsigned int dataModelId)
|
|||
|
{
|
|||
|
_childrenMap.remove(dataModelId);
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::getNewProperty(json& parameter, QVariantMap& valueMap)
|
|||
|
{
|
|||
|
auto data = parameter["data"];
|
|||
|
if (!data["name"].is_null())
|
|||
|
{
|
|||
|
valueMap.insert("name", CommonHelper::utf8ToQString(data["name"]));
|
|||
|
}
|
|||
|
if (!data["author"].is_null())
|
|||
|
{
|
|||
|
valueMap.insert("author", CommonHelper::utf8ToQString(data["author"]));
|
|||
|
}
|
|||
|
if (!data["type"].is_null())
|
|||
|
{
|
|||
|
valueMap.insert("type", (int)data["type"]);
|
|||
|
}
|
|||
|
if (!data["focus"].is_null())
|
|||
|
{
|
|||
|
valueMap.insert("focus", (bool)data["focus"]);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::setNewData(json& parameter)
|
|||
|
{
|
|||
|
//<2F><>ǰʱ<C7B0><CAB1>
|
|||
|
QString curTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm");
|
|||
|
|
|||
|
QVariantMap newValue;
|
|||
|
getNewProperty(parameter, newValue);
|
|||
|
newValue.insert("createTime", curTime);
|
|||
|
newValue.insert("updateTime", curTime);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
setProperties(newValue);
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::setEditData(json& parameter)
|
|||
|
{
|
|||
|
//<2F>༭<EFBFBD><E0BCAD>Ŀ<EFBFBD><C4BF><EFBFBD>Ĺ<DEB8>ע״̬ʱ<CCAC><CAB1><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
// QString curTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm");
|
|||
|
QVariantMap newValue;
|
|||
|
getNewProperty(parameter, newValue);
|
|||
|
// newValue.insert("updateTime", curTime);
|
|||
|
setProperties(newValue);
|
|||
|
}
|
|||
|
|
|||
|
bool ProjectData::getImportProjectList(QList<ProjectData*>& proList, QString importFilePath)
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
list<M_ProjectDAO*> plist;
|
|||
|
rm = M_ProjectDAO::getImportProjectList(plist, CommonHelper::qstringToStdString(importFilePath));
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
//list<M_ProjectDAO*>ת<><D7AA><EFBFBD><EFBFBD> QList<ProjectData*>
|
|||
|
for (list<M_ProjectDAO*>::iterator it = plist.begin(); it != plist.end(); ++it)
|
|||
|
{
|
|||
|
ProjectData* pProjecct = new ProjectData();
|
|||
|
pProjecct->loadData(*it);
|
|||
|
proList.append(pProjecct);
|
|||
|
}
|
|||
|
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::getImportProjectList success");
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::getImportProjectList failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
bool ProjectData::importData(json& parameter, QList<int>& projectIdlist)
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
ResultMsg rm;
|
|||
|
auto data = parameter["data"];
|
|||
|
list<int> importIds;
|
|||
|
for (auto j : data)
|
|||
|
{
|
|||
|
importIds.push_back(j.get<int>());
|
|||
|
projectIdlist.append(j.get<int>());
|
|||
|
}
|
|||
|
SysManager& sysMgr = GetSysManager();
|
|||
|
rm = M_ProjectDAO::importProject(CommonHelper::qstringToStdString(sysMgr._importFilePath), importIds);//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD>е<EFBFBD><D0B5><EFBFBD>Ŀ"
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::importProject success");
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::importProject failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
bool ProjectData::exportData(json& parameter, QString exportPath)
|
|||
|
{
|
|||
|
DBPlatformSpace::ResultMsg rm;
|
|||
|
auto data = parameter["data"];
|
|||
|
list<int> projectIds;
|
|||
|
for (auto j : data)
|
|||
|
{
|
|||
|
projectIds.push_back(j.get<int>());
|
|||
|
}
|
|||
|
rm = DBPlatformSpace::M_ProjectDAO::exportProject(projectIds, CommonHelper::qstringToStdString(exportPath));
|
|||
|
if (rm.rCode == 0)
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::exportProject success");
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString(" M_ProjectDAO::exportProject failed");
|
|||
|
LOG(ERROR) << rm.rMsg;
|
|||
|
return false;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::findDatamodelByName(QString name, QList<DPData*>& modellist)
|
|||
|
{
|
|||
|
if (_childrenMap.size() == 0)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
QMap<unsigned int, DPData*>::iterator it = _childrenMap.begin();
|
|||
|
while (it != _childrenMap.end())
|
|||
|
{
|
|||
|
if (name.compare((*it)->_name) == 0)
|
|||
|
{
|
|||
|
modellist.append((*it));
|
|||
|
}
|
|||
|
it++;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
void ProjectData::setCurrentProject()
|
|||
|
{
|
|||
|
using namespace DBPlatformSpace;
|
|||
|
M_ProjectDAO::setCurrProjectID(_id);
|
|||
|
}
|
|||
|
|
|||
|
bool ProjectData::hasRepetitiveName(QString name, DataManager* pMgr)
|
|||
|
{
|
|||
|
QMap<unsigned int, DPData*>::iterator it;
|
|||
|
it = pMgr->_childrenMap.begin();
|
|||
|
while (it != pMgr->_childrenMap.end())
|
|||
|
{
|
|||
|
ProjectData* pData = qobject_cast<ProjectData*>(*it);
|
|||
|
QString n = pData->property("name").toString();
|
|||
|
if (n == name)
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
it++;
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|