1659 lines
40 KiB
C++
1659 lines
40 KiB
C++
|
#pragma execution_character_set("utf-8")
|
|||
|
|
|||
|
#include <QStack>
|
|||
|
#include "TransformExcel.h"
|
|||
|
#include "DataModelData.h"
|
|||
|
#include "DataPack.h"
|
|||
|
#include "DataClass.h"
|
|||
|
#include "DataAttribute.h"
|
|||
|
#include "DataManager.h"
|
|||
|
#include "M_NormalColumnDAO.h"
|
|||
|
#include "global.h"
|
|||
|
#include "common.h"
|
|||
|
#include <Qdir>
|
|||
|
#include <QFile>
|
|||
|
#include <QApplication>
|
|||
|
|
|||
|
|
|||
|
static const int PROCESSED = 1;
|
|||
|
|
|||
|
TransformExcel::TransformExcel(DataManager* pManager, int datamodeld) :_pDataManager_ref(pManager), _dataModelId(datamodeld)
|
|||
|
{
|
|||
|
attributeHead << "<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
|||
|
<< "Ĭ<EFBFBD><EFBFBD>ֵ" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD>Ψһ" << "<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD>ֵλ<EFBFBD><EFBFBD>"
|
|||
|
<< "<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
|
|||
|
dataClassHead << "<EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
packHead << "<EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ" << "<EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << "<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>";
|
|||
|
}
|
|||
|
|
|||
|
void TransformExcel::freeNode(DPData* pData)
|
|||
|
{
|
|||
|
if (pData == nullptr)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
qDeleteAll(pData->_childrenMap);
|
|||
|
pData->_childrenMap.clear();
|
|||
|
}
|
|||
|
|
|||
|
TransformExcel::~TransformExcel()
|
|||
|
{
|
|||
|
if (newTreeRoot._childrenMap.size() == 0)
|
|||
|
{
|
|||
|
return;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
DPData* pData = &newTreeRoot;
|
|||
|
freeNode(pData);
|
|||
|
}
|
|||
|
|
|||
|
bool TransformExcel::importData(QString& errMsg)
|
|||
|
{
|
|||
|
bool hasEmptyCell;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ---------
|
|||
|
QList<QStringList> result;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (!excel.readSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>", result, hasEmptyCell))
|
|||
|
{
|
|||
|
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: û<><C3BB>ģ<EFBFBD><C4A3>sheetҳ<74><D2B3><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
return false;
|
|||
|
}
|
|||
|
if (!addDataPackToTree(result))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
result.clear();
|
|||
|
if (!excel.readSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", result, hasEmptyCell))
|
|||
|
{
|
|||
|
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sheetҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
return false;
|
|||
|
}
|
|||
|
if (!addDataClassToTree(result))
|
|||
|
{
|
|||
|
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>";
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>
|
|||
|
result.clear();
|
|||
|
if (!excel.readSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", result, hasEmptyCell))
|
|||
|
{
|
|||
|
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>sheetҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
return false;
|
|||
|
}
|
|||
|
if (!addDataAttributetoTree(result))
|
|||
|
{
|
|||
|
errMsg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD>д<EFBFBD>";
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
backupDBFile();
|
|||
|
//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>-------------
|
|||
|
//1. <20>ӵײ㿪ʼ<E3BFAA><CABC><EFBFBD><EFBFBD>
|
|||
|
levelNodeOrder.push_back(&newTreeRoot);
|
|||
|
if (!processDataImport(&newTreeRoot))
|
|||
|
{
|
|||
|
if (rollBackDBFile())
|
|||
|
{
|
|||
|
errMsg = "ģ<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
QString tempFile = QCoreApplication::applicationDirPath() + "/rollback.txt";
|
|||
|
QFile file(tempFile);
|
|||
|
if (file.exists())
|
|||
|
{
|
|||
|
QFile::remove(tempFile);
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>
|
|||
|
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
file.open(QIODevice::ReadWrite | QIODevice::Text);
|
|||
|
QTextStream stream(&file);
|
|||
|
stream << _srcFile;
|
|||
|
file.close();
|
|||
|
//<2F><><EFBFBD>ݻع<DDBB>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LOG(ERROR) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
errMsg = "<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 2);
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
QFileInfo fileInfo(_bakFile);
|
|||
|
if (fileInfo.isFile())
|
|||
|
{
|
|||
|
bool ret = QFile::remove(_bakFile);
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
bool TransformExcel::processDataImport(DPData* /*pData*/)
|
|||
|
{
|
|||
|
bool ret = false;
|
|||
|
int index = 0;
|
|||
|
while (index < levelNodeOrder.size())
|
|||
|
{
|
|||
|
DPData* pdata = levelNodeOrder.at(index);
|
|||
|
for (auto i : pdata->_childrenMap)
|
|||
|
{
|
|||
|
if (i->_baseType == g_TYPE_DATAATTRUBUTE)
|
|||
|
{
|
|||
|
continue;
|
|||
|
}
|
|||
|
levelNodeOrder.push_back(i);
|
|||
|
}
|
|||
|
index++;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>㣨ģ<E3A3A8>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㶼Ҫ<E3B6BC><D2AA><EFBFBD><EFBFBD>
|
|||
|
for (int i = levelNodeOrder.size() - 1; i > 0; i--)
|
|||
|
{
|
|||
|
DPData* pdata = levelNodeOrder.at(i);
|
|||
|
if (dataMark[pdata->_name] == PROCESSED)
|
|||
|
{
|
|||
|
continue;
|
|||
|
}
|
|||
|
ret = processCurrentNode(pdata);
|
|||
|
if (!ret)
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
|||
|
for (int i = 0; i < relAttList.size(); i++)
|
|||
|
{
|
|||
|
DataAttribute* pAtt = relAttList.at(i);
|
|||
|
DPData* pClass = _pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATACLASS, "name", pAtt->_fkname, _dataModelId);
|
|||
|
if (pClass)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ģ<EFBFBD><C4A3><EFBFBD>е<EFBFBD><D0B5><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
|||
|
DPData* pRealAtt = _pDataManager_ref->findObjectById(DataManager::DataType::dataAttribute, pAtt->_id);
|
|||
|
if (pRealAtt)
|
|||
|
{
|
|||
|
qobject_cast<DataAttribute*>(pRealAtt)->_wFkTableID = pClass->_id;
|
|||
|
if (!pRealAtt->saveSelf())
|
|||
|
{
|
|||
|
QString msg = "<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" + pRealAtt->_name + "--" + "class ID:" + QString::number(pRealAtt->_parent->_id);
|
|||
|
LOG(INFO) << CommonHelper::qstringToString(msg);
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
QString msg = "<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:" + pRealAtt->_name + "--" + "fkTableID:" + QString::number(qobject_cast<DataAttribute*>(pRealAtt)->_wFkTableID);
|
|||
|
LOG(INFO) << CommonHelper::qstringToString(msg);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::qstringToString("<EFBFBD>ҹ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
|||
|
QString msg = "<EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + pAtt->_name;
|
|||
|
CommonHelper::message(msg,2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
else {
|
|||
|
QString msg = "<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + pAtt->_fkname;
|
|||
|
CommonHelper::message(msg, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool TransformExcel::processCurrentNode(DPData* pData)
|
|||
|
{
|
|||
|
static DPData* pdst = nullptr;
|
|||
|
int ret = findAndProcessSameNode(pData);
|
|||
|
if (ret == 1)
|
|||
|
{
|
|||
|
return false;//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
}
|
|||
|
if (ret == 0)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>Ѱ<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
dataMark.insert(pData->_name, PROCESSED);
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (pData->_baseType == g_TYPE_DATAMODEL)
|
|||
|
{
|
|||
|
//<2F><>ǰΪ<C7B0><CEAA>ģ<EFBFBD><C4A3>
|
|||
|
return processImportStack(pdst);
|
|||
|
}
|
|||
|
if (processNoSameNode(pData))
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
|
|||
|
// 0: ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>¼ӳɹ<D3B3>
|
|||
|
// 1<><31><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
// 2: û<>ҵ<EFBFBD>ͬ<EFBFBD><CDAC>
|
|||
|
int TransformExcel::findAndProcessSameNode(DPData* pData)
|
|||
|
{
|
|||
|
|
|||
|
DPData* pfindData = nullptr;
|
|||
|
pfindData = _pDataManager_ref->findobjectByNameInDatamodel(pData->_baseType, "name", pData->_name, _dataModelId);
|
|||
|
if (pfindData)
|
|||
|
{
|
|||
|
if (pData->_baseType == g_TYPE_DATACLASS)
|
|||
|
{
|
|||
|
DataClass* pNew = qobject_cast<DataClass*>(pData);
|
|||
|
DataClass* pOld = qobject_cast<DataClass*>(pfindData);
|
|||
|
importExcelData(pNew, pOld);
|
|||
|
_importClassCount++;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>滻<EFBFBD><E6BBBB><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (proccessAttribute(pNew, pOld))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD>
|
|||
|
pNew->_parent->deleteChild(pNew->_id);
|
|||
|
delete pNew;
|
|||
|
pNew = nullptr;
|
|||
|
return 0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
}
|
|||
|
else if (pData->_baseType == g_TYPE_DATAPACK)
|
|||
|
{
|
|||
|
//ģ<><C4A3>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>child
|
|||
|
DataPack* pNew = qobject_cast<DataPack*>(pData);
|
|||
|
DataPack* pOld = qobject_cast<DataPack*>(pfindData);
|
|||
|
importExcelData(pNew, pOld);
|
|||
|
if (!processImportStack(pOld))
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
return 0;
|
|||
|
}
|
|||
|
return 2;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool TransformExcel::processNoSameNode(DPData* pData)
|
|||
|
{
|
|||
|
importStack.push(pData);
|
|||
|
DPData* pCur = pData;
|
|||
|
|
|||
|
while (pCur->_parent)
|
|||
|
{
|
|||
|
pCur = pCur->_parent;
|
|||
|
return processCurrentNode(pCur);
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// <20><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// bool TransformExcel::ProcessNoSameDataClass(DataClass*& pNew, QMap<int,DPData*>& sameNamePack)
|
|||
|
// {
|
|||
|
// QStack<DPData*> importStack; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>뵽<EFBFBD><EBB5BD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// importStack.push(pNew);
|
|||
|
// DPData* pOldDst = nullptr; //Ŀ<><C4BF>ģ<EFBFBD><C4A3>
|
|||
|
// DPData* pCur = pNew->_parent;
|
|||
|
// while (pCur->_parent)
|
|||
|
// {
|
|||
|
// //<2F>Ȳ<EFBFBD><C8B2><EFBFBD>ͬ<EFBFBD><CDAC>ģ<EFBFBD><C4A3>
|
|||
|
// pOldDst = _pDataManager_ref->findobjectByNameInDatamodel(pCur->_baseType, "name", pCur->_name, _dataModelId);
|
|||
|
// if (pOldDst)
|
|||
|
// {
|
|||
|
// //<2F>ҵ<EFBFBD>ͬ<EFBFBD><CDAC>ģ<EFBFBD><C4A3>,<2C>ϲ<EFBFBD><CFB2><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// DataPack* pNew = qobject_cast<DataPack*>(pCur);
|
|||
|
// DataPack* pOld = qobject_cast<DataPack*>(pOldDst);
|
|||
|
// importExcelData(pNew, pOld);
|
|||
|
// // sameNamePack.insert(pCur->_id, pCur);
|
|||
|
// break;
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// //û<><C3BB>ͬ<EFBFBD><CDAC>ģ<EFBFBD>飬<EFBFBD><E9A3AC>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>
|
|||
|
// importStack.push(pCur);
|
|||
|
// pCur = pCur->_parent;
|
|||
|
// }
|
|||
|
// }
|
|||
|
//
|
|||
|
// return processImportStack(/*importStack, */pOldDst);
|
|||
|
// }
|
|||
|
|
|||
|
bool TransformExcel::processImportStack(/*QStack<DPData*>& importStack,*/ DPData* pOldDst)
|
|||
|
{
|
|||
|
while (!importStack.isEmpty())
|
|||
|
{
|
|||
|
DPData* pData = importStack.pop();
|
|||
|
if (dataMark.value(pData->_name) == PROCESSED)
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
if (pData->_baseType == g_TYPE_DATACLASS)
|
|||
|
{
|
|||
|
DataClass* pClass = qobject_cast<DataClass*>(pData);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ࣬<E0A3AC><D6B1><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
|
|||
|
if (pOldDst)
|
|||
|
{
|
|||
|
int oldMapId = pClass->_id;
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6>ģ<EFBFBD>飬
|
|||
|
int id = 0;
|
|||
|
if (_pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATAPACK, "name", pClass->_name, _dataModelId))
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><EFBFBD>ͬ");
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʾ<EFBFBD><CABE><EFBFBD>Ƶ<EFBFBD><C6B5>࣬<EFBFBD><E0A3AC><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
id = 0;
|
|||
|
QString oldname = pClass->_strDisplayName;
|
|||
|
while (_pDataManager_ref->findobjectByNameInDatamodel(pClass->_baseType, "displayName", pClass->_strDisplayName, _dataModelId))
|
|||
|
{
|
|||
|
id++;
|
|||
|
pClass->_strDisplayName = oldname + QString::number(id);
|
|||
|
}
|
|||
|
oldname = pClass->_strDisplayName;
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ģ<EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
id = 0;
|
|||
|
if (_pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATAPACK, "displayName", pClass->_strDisplayName, _dataModelId))
|
|||
|
{
|
|||
|
id++;
|
|||
|
pClass->_strDisplayName = oldname + QString::number(id);
|
|||
|
}
|
|||
|
pClass->_id = -1;
|
|||
|
// if (pClass->_type != g_RELATED_CLASS)
|
|||
|
// {
|
|||
|
// pClass->reName();
|
|||
|
// }
|
|||
|
DPData* pOldParent = pClass->_parent;
|
|||
|
if (pOldDst->addChild(pClass))
|
|||
|
{
|
|||
|
pOldParent->_childrenMap.remove(oldMapId);//<2F><>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
|||
|
_pDataManager_ref->insertDataMap(DataManager::DataType::dataClass, pClass->_id, pClass);
|
|||
|
_importClassCount++;
|
|||
|
dataMark.insert(pClass->_name, PROCESSED);
|
|||
|
QMap<unsigned int, DPData*> tmpMap = pClass->_childrenMap;
|
|||
|
pClass->_childrenMap.clear();
|
|||
|
QMap<unsigned int, DPData*>::iterator it = tmpMap.begin();
|
|||
|
while (it != tmpMap.end())
|
|||
|
{
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
DPData* pData = pClass->hasSameNameChild("name", (*it)->_name);
|
|||
|
if (pData)
|
|||
|
{//<2F><>ͬ<EFBFBD><CDAC><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>
|
|||
|
DataAttribute* pNew = qobject_cast<DataAttribute*>(*it);
|
|||
|
importExcelData(pNew, qobject_cast<DataAttribute*>(pData));
|
|||
|
pNew->_id = pData->_id; //<2F><><EFBFBD><EFBFBD>id,<2C><>ϵ<EFBFBD><CFB5><EFBFBD>Բ<EFBFBD><D4B2>ҹ<EFBFBD>ϵ<EFBFBD><CFB5>ʱʹ<CAB1><CAB9>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
(*it)->_id = -1;
|
|||
|
DataAttribute* pNew = qobject_cast<DataAttribute*>(*it);
|
|||
|
pNew->checkImportAttributeName(pClass);
|
|||
|
if (pClass->addChild(*it))//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{
|
|||
|
_pDataManager_ref->insertDataMap(DataManager::DataType::dataAttribute, (*it)->_id, (*it));
|
|||
|
_importAttributeCount++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
it++;
|
|||
|
// /*<2A>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// int id = 0;
|
|||
|
// QString newName = pAtt->_strDisplayName;
|
|||
|
// while (pClass->hasSameNameChild("displayName", newName, true))
|
|||
|
// {
|
|||
|
// LOG(INFO) << CommonHelper::utf8ToStdString("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
// id += 1;
|
|||
|
// newName = pAtt->_strDisplayName + QString::number(id);
|
|||
|
// }
|
|||
|
// pAtt->_strDisplayName = newName;
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣʧ<CFA2>ܣ<EFBFBD><DCA3>轫<EFBFBD>ѵ<EFBFBD><D1B5><EFBFBD><EFBFBD><EFBFBD>Ϣɾ<CFA2><C9BE>
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Ϊ<><CEAA><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
DataPack* pPack = qobject_cast<DataPack*>(pData);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
int id = 0;
|
|||
|
while (_pDataManager_ref->findobjectByNameInDatamodel(pPack->_baseType, "displayName", pPack->_strDisplayName, _dataModelId) != nullptr)
|
|||
|
{
|
|||
|
id += 1;
|
|||
|
pPack->_strDisplayName = pPack->_strDisplayName + QString::number(id);
|
|||
|
}
|
|||
|
if (pPack->_bIsChildPack)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
int oldId = pPack->_id;
|
|||
|
pPack->_parent->_childrenMap.remove(oldId);
|
|||
|
pPack->_id = -1;
|
|||
|
//<2F><>ģ<EFBFBD><C4A3>
|
|||
|
if (pOldDst->addChild(pPack))
|
|||
|
{
|
|||
|
pPack->_parent = pOldDst;
|
|||
|
_pDataManager_ref->insertDataMap(DataManager::DataType::dataPack, pPack->_id, pPack);
|
|||
|
pOldDst = pPack;
|
|||
|
_importPackCount++;
|
|||
|
dataMark.insert(pPack->_name, PROCESSED);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F>ع<EFBFBD><D8B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><>ģ<EFBFBD>飬ֱ<E9A3AC>ӹҵ<D3B9>Ŀ<EFBFBD><C4BF>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
|
|||
|
DPData* pdatamodel = _pDataManager_ref->findObjectById(DataManager::DataType::dataModel, _dataModelId);
|
|||
|
pPack->_parent->_childrenMap.remove(pPack->_id);
|
|||
|
pPack->_parent = pdatamodel;
|
|||
|
pPack->_id = -1;
|
|||
|
if (pdatamodel->addChild(pPack))
|
|||
|
{
|
|||
|
_pDataManager_ref->insertDataMap(DataManager::DataType::dataPack, pPack->_id, pPack);
|
|||
|
pOldDst = pPack;
|
|||
|
_importPackCount++;
|
|||
|
dataMark.insert(pPack->_name, PROCESSED);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳɹ<D3B3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ɾ<EFBFBD><C9BE>
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ*/
|
|||
|
bool TransformExcel::addDataPackToTree(QList<QStringList>& result)
|
|||
|
{
|
|||
|
if (CommonHelper::compareQStringlist(result[0], packHead))
|
|||
|
{
|
|||
|
//<2F><>ͷ<EFBFBD><CDB7>Ԥ<EFBFBD><D4A4>һ<EFBFBD><D2BB>
|
|||
|
for (int i = 1; i < result.size(); i++)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
DataPack* pNewPack = new DataPack();
|
|||
|
if (!loadDataPack(result[i], pNewPack))
|
|||
|
{
|
|||
|
delete pNewPack;
|
|||
|
pNewPack = nullptr;
|
|||
|
return false;
|
|||
|
}
|
|||
|
if (result[i][0] == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
//ֱ<>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
|
|||
|
pNewPack->_bIsChildPack = false;
|
|||
|
pNewPack->_parent = &newTreeRoot;
|
|||
|
pNewPack->_id = index; //<2F><>ʱid
|
|||
|
newTreeRoot._childrenMap.insert(index, pNewPack);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
QString name = result[i][0];
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD>鲢<EFBFBD>¹<EFBFBD>
|
|||
|
if (mapDataPack.contains(name))
|
|||
|
{
|
|||
|
pNewPack->_bIsChildPack = true;
|
|||
|
pNewPack->_parent = mapDataPack[name];
|
|||
|
pNewPack->_id = index;//<2F><>ʱid
|
|||
|
mapDataPack[name]->_childrenMap.insert(index, pNewPack);
|
|||
|
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD>");
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD>", 2);
|
|||
|
delete pNewPack;
|
|||
|
pNewPack = nullptr;
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
dataMark.insert(pNewPack->_name, 0);
|
|||
|
mapDataPack.insert(pNewPack->_name, pNewPack);
|
|||
|
index++;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>excel<65><6C><EFBFBD>ı<EFBFBD>ͷ<EFBFBD><CDB7>Ԥ<EFBFBD>費һ<E8B2BB><D2BB>,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>");
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ*/
|
|||
|
bool TransformExcel::addDataClassToTree(QList<QStringList>& result)
|
|||
|
{
|
|||
|
if (CommonHelper::compareQStringlist(result[0], dataClassHead))
|
|||
|
{
|
|||
|
//<2F><>Ԥ<EFBFBD><D4A4>һ<EFBFBD><D2BB>
|
|||
|
for (int i = 1; i < result.size(); i++)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
DataClass* pNewClass = new DataClass();
|
|||
|
if (!loadDataClass(result[i], pNewClass))
|
|||
|
{
|
|||
|
delete pNewClass;
|
|||
|
pNewClass = nullptr;
|
|||
|
return false;
|
|||
|
}
|
|||
|
QString parentName = result[i][0];
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD>鲢<EFBFBD>¹<EFBFBD>
|
|||
|
if (mapDataPack.contains(parentName))
|
|||
|
{
|
|||
|
pNewClass->_parent = mapDataPack[parentName];
|
|||
|
pNewClass->_id = index; //<2F><>ʱ id
|
|||
|
mapDataPack[parentName]->_childrenMap.insert(index, pNewClass);
|
|||
|
mapDataClass.insert(pNewClass->_name, pNewClass);
|
|||
|
dataMark.insert(pNewClass->_name, 0);
|
|||
|
index++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
QString msg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> " + pNewClass->_name + "<EFBFBD>ϲ<EFBFBD>ģ<EFBFBD><EFBFBD> "+ parentName +"<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
//<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|||
|
LOG(INFO) << CommonHelper::qstringToStdString(msg);
|
|||
|
CommonHelper::message(msg, 2);
|
|||
|
delete pNewClass;
|
|||
|
pNewClass = nullptr;
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><>Ԥ<EFBFBD>費һ<E8B2BB><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>д<EFBFBD>", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ*/
|
|||
|
bool TransformExcel::addDataAttributetoTree(QList<QStringList>& result)
|
|||
|
{
|
|||
|
if (CommonHelper::compareQStringlist(result[0], attributeHead))
|
|||
|
{
|
|||
|
//<2F><>Ԥ<EFBFBD><D4A4>һ<EFBFBD><D2BB>
|
|||
|
for (int i = 1; i < result.size(); i++)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
DataAttribute* pNewAttribute = new DataAttribute();
|
|||
|
if (!loadDataAttribute(result[i], pNewAttribute))
|
|||
|
{
|
|||
|
delete pNewAttribute;
|
|||
|
pNewAttribute = nullptr;
|
|||
|
return false;
|
|||
|
}
|
|||
|
QString parentName = result[i][0];
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD>鲢<EFBFBD>¹<EFBFBD>
|
|||
|
if (mapDataClass.contains(parentName))
|
|||
|
{
|
|||
|
pNewAttribute->_parent = mapDataClass[parentName];
|
|||
|
pNewAttribute->_id = index; //<2F><>ʱid
|
|||
|
mapDataClass[parentName]->_childrenMap.insert(index, pNewAttribute);
|
|||
|
// dataMark.insert(pNewAttribute->_name, 0);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ϲ<EFBFBD>ģ<EFBFBD>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|||
|
delete pNewAttribute;
|
|||
|
pNewAttribute = nullptr;
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
QString msg = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + parentName;
|
|||
|
CommonHelper::message(msg, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
// loadDataAttribute(result[i], pNewAttribute);
|
|||
|
index++;
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//<2F><>Ԥ<EFBFBD>費һ<E8B2BB><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
//excel<65><6C><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool TransformExcel::loadDataPack(const QStringList& data, DataPack* pData)
|
|||
|
{
|
|||
|
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
pData->_name = data[1];
|
|||
|
if (pData->_name == " ")
|
|||
|
{
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶΪ<EFBFBD><EFBFBD>", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
QString msg;
|
|||
|
if (pData->checkNameillegal(msg))
|
|||
|
{
|
|||
|
CommonHelper::message(msg, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
pData->setDisplayName(data[2]);
|
|||
|
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
pData->setType((data[3]).toInt());
|
|||
|
if (data[3] == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->setType(1);
|
|||
|
}
|
|||
|
else if (data[3] == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->setType(0);
|
|||
|
}
|
|||
|
else if (data[3] == "Ĭ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->setType(2);
|
|||
|
// LOG(INFO) << CommonHelper::utf8ToStdString("Ĭ<><C4AC>ģ<EFBFBD><C4A3>");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>룺ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
pData->setDes(data[4]);
|
|||
|
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>1.0
|
|||
|
if (data[5] == "<EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->setIsGenerateTable(1);
|
|||
|
}
|
|||
|
else if (data[5] == "<EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->setIsGenerateTable(0);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>룺ģ<EFBFBD><EFBFBD> <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD> ", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bool TransformExcel::loadDataClass(const QStringList& data, DataClass* pData)
|
|||
|
{
|
|||
|
//<2F>ϲ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
pData->_name = data[1];
|
|||
|
if (pData->_name == " ")
|
|||
|
{
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶΪ<EFBFBD><EFBFBD>", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
QString msg;
|
|||
|
if ( !pData->checkNameillegal(msg) || !pData->checkLetter(msg, 0) )
|
|||
|
{
|
|||
|
CommonHelper::message(msg, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
pData->_strDisplayName = data[2];
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (data[3] == "<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->_type = 1;
|
|||
|
//<2F><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>࣬<EFBFBD><E0A3AC>rename
|
|||
|
pData->reName();
|
|||
|
if (!pData->checkNameSize(3,128,msg) || !pData->checkLetter(msg,2))
|
|||
|
{
|
|||
|
CommonHelper::message(msg, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
else if (data[3] == "<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->_type = 2;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>룺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD> ", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
pData->_strDescription = data[4];
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (data[5] == "n")
|
|||
|
{
|
|||
|
pData->_wCountType = 0;
|
|||
|
}
|
|||
|
else if (data[5] == "1")
|
|||
|
{
|
|||
|
pData->_wCountType = 1;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>룺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
//ÿ<><C3BF>excel<65><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>
|
|||
|
bool TransformExcel::loadDataAttribute(const QStringList& data, DataAttribute* pData)
|
|||
|
{
|
|||
|
QString errorhead = " <20><><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6>" + data[1] + "<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" ;
|
|||
|
QString error;
|
|||
|
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
pData->_name = data[1];
|
|||
|
QString msg;
|
|||
|
if (pData->_name == " ")
|
|||
|
{
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶΪ<EFBFBD><EFBFBD>", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
if ( !pData->checkNameillegal(msg) || !pData->checkLetter(msg, 0))
|
|||
|
{
|
|||
|
CommonHelper::message(msg, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
pData->reName();
|
|||
|
if (!pData->checkNameSize(2, 128, msg) || !pData->checkLetter(msg, 1))
|
|||
|
{
|
|||
|
CommonHelper::message(msg, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
pData->_strDisplayName = data[2];
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
pData->_strDescription = data[3];
|
|||
|
//Ĭ<><C4AC>ֵ
|
|||
|
pData->_strDefaultValue = data[4];
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<3A><><EFBFBD><EFBFBD>1 ʵ<><CAB5>2 <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>3 char* double *
|
|||
|
QString type = data[5].trimmed();
|
|||
|
if (type == "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->_wDataType = MNORMALCOL_TYPE_INT;
|
|||
|
}
|
|||
|
else if (type == "ʵ<EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->_wDataType = MNORMALCOL_TYPE_DOUBLE;
|
|||
|
}
|
|||
|
else if (type == "<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
pData->_wDataType = MNORMALCOL_TYPE_STRING;
|
|||
|
}
|
|||
|
else if (type == "char*")
|
|||
|
{
|
|||
|
pData->_wDataType = MNORMALCOL_TYPE_CHARPTR;
|
|||
|
}
|
|||
|
else if (type == "double*")
|
|||
|
{
|
|||
|
pData->_wDataType = MNORMALCOL_TYPE_DOUBLEPTR;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
error = errorhead + "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>";
|
|||
|
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel:"+error);
|
|||
|
CommonHelper::message(error, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (!CommonHelper::convertExcelboolValue(data[6].trimmed(), pData->_wIsIndex))
|
|||
|
{
|
|||
|
error = errorhead + " <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>";
|
|||
|
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel:"+ error);
|
|||
|
CommonHelper::message(error, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F>Ƿ<EFBFBD>Ψһ
|
|||
|
if (!CommonHelper::convertExcelboolValue(data[7].trimmed(), pData->_wIsOnly))
|
|||
|
{
|
|||
|
error = errorhead + " <20>Ƿ<EFBFBD>Ψһ ֵ<><D6B5><EFBFBD><EFBFBD>";
|
|||
|
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel:" + error);
|
|||
|
CommonHelper::message(error, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (!CommonHelper::convertExcelboolValue(data[8].trimmed(), pData->_wIsAutoincrement))
|
|||
|
{
|
|||
|
error = errorhead + " <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>";
|
|||
|
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel: " + error);
|
|||
|
CommonHelper::message(error, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
CommonHelper::convertExcelInt(data[9].trimmed(), pData->_wMaxLength);
|
|||
|
//<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|||
|
CommonHelper::convertExcelInt(data[10].trimmed(), pData->_wMinLength);
|
|||
|
//<2F><>ֵλ<D6B5><CEBB>
|
|||
|
CommonHelper::convertExcelInt(data[11].trimmed(), pData->_wNumLength);
|
|||
|
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|||
|
CommonHelper::convertExcelInt(data[12].trimmed(), pData->_wNumPresision);
|
|||
|
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
CommonHelper::convertExcelboolValue(data[13].trimmed(), pData->_wIsFindKey);
|
|||
|
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|||
|
if (!CommonHelper::convertExcelboolValue(data[14].trimmed(), pData->_isPrimaryKey))
|
|||
|
{
|
|||
|
error = errorhead + " <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>";
|
|||
|
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel: "+ error);
|
|||
|
CommonHelper::message(error, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD>Թ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD> <20><>0 <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>; 1Ϊ1<CEAA><31>1;2Ϊ1:n
|
|||
|
if (data[15] == "<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>")
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pData->illegalName(msg))
|
|||
|
{
|
|||
|
CommonHelper::message(msg, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
pData->_FKType = 0;
|
|||
|
if (data[16] != " ")
|
|||
|
{
|
|||
|
error = errorhead + " <20><>Ӧ<EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ͨ<EFBFBD><CDA8><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LOG(INFO) << CommonHelper:: qstringToStdString("importDatamodel: " + error);
|
|||
|
CommonHelper::message(error, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ȡ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
return true;
|
|||
|
}
|
|||
|
else if (data[15] == "1:1")
|
|||
|
{
|
|||
|
pData->_FKType = 1;
|
|||
|
if (data[16] == " ")
|
|||
|
{
|
|||
|
error = errorhead + " ȱ<>ٹ<EFBFBD><D9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
//<2F>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LOG(INFO) << CommonHelper::qstringToStdString("importDatamodel: " + error);
|
|||
|
CommonHelper::message(error, 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
checkImportRelateAttribute(pData, data[16]);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
else if (data[15] == "1:n")
|
|||
|
{
|
|||
|
pData->_FKType = 2;
|
|||
|
if (data[16] == " ")
|
|||
|
{
|
|||
|
//<2F>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20><><EFBFBD>Ա<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>룺<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD> ", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
checkImportRelateAttribute(pData, data[16]);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("importDatamodel: <20><><EFBFBD>Ա<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD>");
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>룺<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ֵ<><D6B5><EFBFBD><EFBFBD> ", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ģ<EFBFBD><C4A3><EFBFBD>в<EFBFBD><D0B2>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>id<69><64><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
|
|||
|
// QString name = data[16];
|
|||
|
// DPData* pClass = _pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATACLASS,"name", name, _dataModelId);
|
|||
|
// if (pClass)
|
|||
|
// {
|
|||
|
// pData->_wFkTableID = pClass->_id;
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// pData->_fkname = name;
|
|||
|
// }
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
void TransformExcel::checkImportRelateAttribute(DataAttribute* pData, const QString name)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
|
|||
|
//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>ģ<EFBFBD><C4A3><EFBFBD>в<EFBFBD><D0B2>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>id<69><64><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id
|
|||
|
DPData* pClass = _pDataManager_ref->findobjectByNameInDatamodel(g_TYPE_DATACLASS, "name", name, _dataModelId);
|
|||
|
if (pClass)
|
|||
|
{
|
|||
|
pData->_wFkTableID = pClass->_id;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
pData->_fkname = name;
|
|||
|
relAttList.append(pData);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void TransformExcel::importExcelData(DataPack* pNew, DataPack* pOld)
|
|||
|
{
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_strDisplayName != "")
|
|||
|
{
|
|||
|
pOld->setDisplayName(pNew->getDisplayName());
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>оͼ<D0BE><CDBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
checkCoverName(pOld, pOld->_strDisplayName);
|
|||
|
}
|
|||
|
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_folderType != -1)
|
|||
|
{
|
|||
|
pOld->_folderType = pNew->_folderType;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_strDescription != "")
|
|||
|
{
|
|||
|
pOld->setDes(pNew->getDes());
|
|||
|
}
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>
|
|||
|
if (pNew->_bIsGenerateTable != -1)
|
|||
|
{
|
|||
|
pOld->_bIsGenerateTable = pNew->_bIsGenerateTable;
|
|||
|
}
|
|||
|
pOld->saveSelf();
|
|||
|
}
|
|||
|
|
|||
|
void TransformExcel::importExcelData(DataClass* pNew, DataClass* pOld)
|
|||
|
{
|
|||
|
//<2F><>new<65><77><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>µ<EFBFBD>old,<2C><><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6>ͬ
|
|||
|
if (pNew->getdisplayName() != "")
|
|||
|
{
|
|||
|
pOld->setdisplayName(pNew->getdisplayName());
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>оͼ<D0BE><CDBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
checkCoverName(pOld, pOld->_strDisplayName);
|
|||
|
}
|
|||
|
if (pNew->getType() != 0)
|
|||
|
{
|
|||
|
pOld->setType(pNew->getType());
|
|||
|
}
|
|||
|
if (pNew->getDescription() != "")
|
|||
|
{
|
|||
|
pOld->setDescription(pNew->getDescription());
|
|||
|
}
|
|||
|
if (pNew->getCountType() != 0)
|
|||
|
{
|
|||
|
pOld->setCountType(pNew->getCountType());
|
|||
|
}
|
|||
|
|
|||
|
pOld->saveSelf();
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
|
|||
|
//pNew->_parent->_childrenMap.remove(pNew->_id);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//<2F><>new<65><77><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void TransformExcel::importExcelData(DataAttribute* pNew, DataAttribute* pOld)
|
|||
|
{
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
if (pNew->getDisplayName() != "")
|
|||
|
{
|
|||
|
pOld->setDisplayName(pNew->getDisplayName());
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>оͼ<D0BE><CDBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
DPData* sameData = nullptr;
|
|||
|
int id = 0;
|
|||
|
QString oldname = pOld->_strDisplayName;
|
|||
|
while (sameData = pOld->_parent->hasSameNameChild("displayName", pOld->_strDisplayName))
|
|||
|
{
|
|||
|
if (sameData != pOld)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD>
|
|||
|
id++;
|
|||
|
pOld->_strDisplayName = oldname + QString::number(id);
|
|||
|
sameData = nullptr;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
if (pNew->getDes() != "")
|
|||
|
{
|
|||
|
pOld->setDes(pNew->getDes());
|
|||
|
}
|
|||
|
//Ĭ<><C4AC>ֵ
|
|||
|
if (pNew->_strDefaultValue != "")
|
|||
|
{
|
|||
|
pOld->setDefaultValue(pNew->_strDefaultValue);
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_wDataType != 0)
|
|||
|
{
|
|||
|
pOld->setDataType(pNew->_wDataType);
|
|||
|
}
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_wIsIndex != -1)
|
|||
|
{
|
|||
|
pOld->_wIsIndex = pNew->_wIsIndex;
|
|||
|
}
|
|||
|
//<2F>Ƿ<EFBFBD>Ψһ
|
|||
|
if (pNew->_wIsOnly != -1)
|
|||
|
{
|
|||
|
pOld->_wIsOnly = pNew->_wIsOnly;
|
|||
|
}
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_wIsAutoincrement != -1)
|
|||
|
{
|
|||
|
pOld->_wIsAutoincrement = pNew->_wIsAutoincrement;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_wMaxLength != -1)
|
|||
|
{
|
|||
|
pOld->_wMaxLength = pNew->_wMaxLength;
|
|||
|
}
|
|||
|
//<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_wMinLength != -1)
|
|||
|
{
|
|||
|
pOld->_wMinLength = pNew->_wMinLength;
|
|||
|
}
|
|||
|
//<2F><>ֵλ<D6B5><CEBB>
|
|||
|
if (pNew->_wNumLength != -1)
|
|||
|
{
|
|||
|
pOld->_wNumLength = pNew->_wNumLength;
|
|||
|
}
|
|||
|
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_wNumPresision != -1)
|
|||
|
{
|
|||
|
pOld->_wNumPresision = pNew->_wNumPresision;
|
|||
|
}
|
|||
|
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_wIsFindKey != -1)
|
|||
|
{
|
|||
|
pOld->_wIsFindKey = pNew->_wIsFindKey;
|
|||
|
}
|
|||
|
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_isPrimaryKey != -1)
|
|||
|
{
|
|||
|
pOld->_isPrimaryKey = pNew->_isPrimaryKey;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_FKType != -1)
|
|||
|
{
|
|||
|
pOld->_FKType = pNew->_FKType;
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pNew->_wFkTableID != -1)
|
|||
|
{
|
|||
|
pOld->_wFkTableID = pNew->_wFkTableID;
|
|||
|
}
|
|||
|
pOld->saveSelf();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
void TransformExcel::checkCoverName(DPData* pOld,QString& name)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>оͼ<D0BE><CDBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
int id = 0;
|
|||
|
QString oldname = name;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
DPData* sameData = nullptr;
|
|||
|
while (sameData = _pDataManager_ref->findobjectByNameInDatamodel(pOld->_baseType, "displayName", name, _dataModelId))
|
|||
|
{
|
|||
|
if (sameData != pOld)
|
|||
|
{
|
|||
|
//ͬ<><CDAC><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>Լ<EFBFBD>
|
|||
|
id++;
|
|||
|
name = oldname + QString::number(id);
|
|||
|
sameData = nullptr;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
bool TransformExcel::proccessAttribute(DataClass* pNewClass, DataClass* pOldClass)
|
|||
|
{
|
|||
|
QMap<unsigned int, DPData*>::iterator it = pNewClass->_childrenMap.begin();
|
|||
|
while (it != pNewClass->_childrenMap.end())
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
DPData* pData = pOldClass->hasSameNameChild("name", (*it)->_name);
|
|||
|
DataAttribute* pNew = qobject_cast<DataAttribute*>(*it);
|
|||
|
if (pData)
|
|||
|
{
|
|||
|
DataAttribute* pOld = qobject_cast<DataAttribute*>(pData);
|
|||
|
importExcelData(pNew, pOld);
|
|||
|
pNew->_id = pOld->_id; //<2F><><EFBFBD><EFBFBD>id,<2C><>ϵ<EFBFBD><CFB5><EFBFBD>Բ<EFBFBD><D4B2>ҹ<EFBFBD>ϵ<EFBFBD><CFB5>ʱʹ<CAB1><CAB9>
|
|||
|
_importAttributeCount++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
/*<2A>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
pNew->checkImportAttributeName( pOldClass);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ԭid
|
|||
|
int oldId = (*it)->_id;
|
|||
|
//<2F><>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
(*it)->_parent = pOldClass;
|
|||
|
if (pOldClass->addChild(*it))
|
|||
|
{ //<2F>ɹ<EFBFBD>
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
|
|||
|
// pNewClass->_childrenMap.remove(oldId);
|
|||
|
_pDataManager_ref->insertDataMap(DataManager::DataType::dataAttribute, (*it)->_id, (*it)); //1008test
|
|||
|
_importAttributeCount++;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>룺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>",2);
|
|||
|
//ʧ<><CAA7>
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
it++;
|
|||
|
}
|
|||
|
pNewClass->_childrenMap.clear();
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
// void TransformExcel::accessJsonNode(json& para)
|
|||
|
// {
|
|||
|
// auto child = para["children"];
|
|||
|
// if (child.is_null())
|
|||
|
// {
|
|||
|
// return;
|
|||
|
// }
|
|||
|
// for (auto& subChild: child)
|
|||
|
// {
|
|||
|
// int id = subChild["id"];
|
|||
|
// int classType = subChild["classType"];
|
|||
|
// if (classType == g_TYPE_DATACLASS)
|
|||
|
// {
|
|||
|
// DPData* pdata = _pDataManager_ref->findObjectById(DataManager::DataType::dataClass, id);
|
|||
|
// classList.append(qobject_cast<DataClass*>(pdata));
|
|||
|
// //<2F>ٰ<EFBFBD><D9B0>¹<EFBFBD><C2B9><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD>
|
|||
|
// QMap<unsigned int, DPData*>::iterator it = pdata->_childrenMap.begin();
|
|||
|
// while (it!= pdata->_childrenMap.end())
|
|||
|
// {
|
|||
|
// attributeList.append(qobject_cast<DataAttribute*>(*it));
|
|||
|
// it++;
|
|||
|
// }
|
|||
|
// }
|
|||
|
// else if (classType == g_TYPE_DATAPACK)
|
|||
|
// {
|
|||
|
// DPData* pData = _pDataManager_ref->findObjectById(DataManager::DataType::dataPack, id);
|
|||
|
// DataPack* pPack = qobject_cast<DataPack*>(pData);
|
|||
|
// //<2F><><EFBFBD><EFBFBD>packlist <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȼӸ<C8BC>ģ<EFBFBD>飩
|
|||
|
// packList.append(pPack);
|
|||
|
// }
|
|||
|
//
|
|||
|
// accessJsonNode(subChild);
|
|||
|
// }
|
|||
|
// }
|
|||
|
|
|||
|
|
|||
|
bool TransformExcel::exportData(json& parameter)
|
|||
|
{
|
|||
|
//<2F><><EFBFBD><EFBFBD>sheet
|
|||
|
excel.clearAllSheet();
|
|||
|
//datamodelֻ<6C><D6BB><EFBFBD>ܻ<EFBFBD><DCBB><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
// auto data = parameter["data"];
|
|||
|
// _dataModelId = data["id"];
|
|||
|
// auto packarray = data["children"];
|
|||
|
// for (auto& pack : packarray)
|
|||
|
// { //<2F><>ģ<EFBFBD><C4A3>
|
|||
|
// int id = pack["id"];
|
|||
|
// DPData* pData = _pDataManager_ref->findObjectById(DataManager::DataType::dataPack, id);
|
|||
|
// if (pData)
|
|||
|
// {
|
|||
|
// DataPack* pPack = qobject_cast<DataPack*>(pData);
|
|||
|
// //<2F><><EFBFBD><EFBFBD>packlist <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȼӸ<C8BC>ģ<EFBFBD>飩
|
|||
|
// packList.append(pPack);
|
|||
|
// accessJsonNode(pack);
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// //<2F>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
// }
|
|||
|
//
|
|||
|
// }
|
|||
|
|
|||
|
auto data = parameter["data"];
|
|||
|
auto delRelAttr = data["delRelAttr"];//true Ϊɾ<CEAA><C9BE><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
|||
|
auto dataArray = data["data"];
|
|||
|
for (auto& datanode : dataArray)
|
|||
|
{
|
|||
|
int id = datanode["id"];
|
|||
|
int classtype = datanode["classType"];
|
|||
|
insertImportList(classtype, id);
|
|||
|
int parentId = datanode["parentId"];
|
|||
|
int parentType = datanode["parentClassType"];
|
|||
|
insertImportList(parentType, parentId);
|
|||
|
}
|
|||
|
insertImportAtt(delRelAttr);
|
|||
|
writeDataPack(packMapEx);
|
|||
|
writeDataClass(classMapEx);
|
|||
|
writeDataAttribute(attributeMapEx);
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
void TransformExcel::insertImportAtt(bool delRelAttr)
|
|||
|
{
|
|||
|
QList<int> keylist = classMapEx.keys();
|
|||
|
for (int i = 0; i < keylist.size(); i++)
|
|||
|
{
|
|||
|
int key = keylist[i];
|
|||
|
DataClass* pClass = classMapEx[key];
|
|||
|
if (pClass->_childrenMap.size() > 0)
|
|||
|
{
|
|||
|
QMap<unsigned int, DPData*>::iterator it = pClass->_childrenMap.begin();
|
|||
|
while (it != pClass->_childrenMap.end())
|
|||
|
{
|
|||
|
DataAttribute* pAtt = qobject_cast<DataAttribute*>(*it);
|
|||
|
if (pAtt->_FKType != 0)
|
|||
|
{
|
|||
|
//Ϊ<><CEAA>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>
|
|||
|
if (delRelAttr && !classMapEx.contains(pAtt->_wFkTableID))
|
|||
|
{
|
|||
|
//<2F><><EFBFBD>ù<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
attributeMapEx.insert(pAtt->_id, pAtt);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
attributeMapEx.insert(pAtt->_id, pAtt);
|
|||
|
}
|
|||
|
it++;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
void TransformExcel::insertImportList(int type, int id)
|
|||
|
{
|
|||
|
if (type == g_TYPE_DATAPACK)
|
|||
|
{
|
|||
|
if (!packMapEx.contains(id))
|
|||
|
{
|
|||
|
DataPack* pData = qobject_cast<DataPack*>(_pDataManager_ref->findObjectById(DataManager::DataType::dataPack, id));
|
|||
|
packMapEx.insert(id, pData);
|
|||
|
}
|
|||
|
}
|
|||
|
else if (type == g_TYPE_DATACLASS)
|
|||
|
{
|
|||
|
if (!classMapEx.contains(id))
|
|||
|
{
|
|||
|
DataClass* pData = qobject_cast<DataClass*>(_pDataManager_ref->findObjectById(DataManager::DataType::dataClass, id));
|
|||
|
classMapEx.insert(id, pData);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//д<><D0B4>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>
|
|||
|
void TransformExcel::writeDataPack(QMap<int, DataPack*>& mapdata)
|
|||
|
{
|
|||
|
QList<QStringList> input;
|
|||
|
input.append(packHead);
|
|||
|
QList<int> keylist = mapdata.keys();
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
for (int i = 0; i < keylist.size(); i++)
|
|||
|
{
|
|||
|
QStringList dataValue;
|
|||
|
int key = keylist[i];
|
|||
|
DataPack* pCurData = mapdata[key];
|
|||
|
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>ģ<EFBFBD><C4A3>
|
|||
|
if (pCurData->_bIsChildPack)
|
|||
|
{
|
|||
|
dataValue.append(pCurData->_parent->_name);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Ϊ<><CEAA><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|||
|
dataValue.append("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
dataValue.append(pCurData->_name);
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(pCurData->_strDisplayName);
|
|||
|
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pCurData->_folderType == 1)
|
|||
|
{
|
|||
|
dataValue.append("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
else if (pCurData->_folderType == 0)
|
|||
|
{
|
|||
|
dataValue.append("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
else if (pCurData->_folderType == 2)
|
|||
|
{
|
|||
|
dataValue.append("Ĭ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(pCurData->getDes());
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>
|
|||
|
if (pCurData->_bIsGenerateTable)
|
|||
|
{
|
|||
|
dataValue.append("<EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
dataValue.append("<EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
input.append(dataValue);
|
|||
|
}
|
|||
|
//д<><D0B4>excel
|
|||
|
excel.writeSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>", input);
|
|||
|
}
|
|||
|
|
|||
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
void TransformExcel::writeDataClass(QMap<int, DataClass*>& mapdata)
|
|||
|
{
|
|||
|
QList<QStringList> input;
|
|||
|
input.append(dataClassHead);
|
|||
|
QList<int> keylist = mapdata.keys();
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
for (int i = 0; i < keylist.size(); i++)
|
|||
|
{
|
|||
|
QStringList dataValue;
|
|||
|
int key = keylist[i];
|
|||
|
DataClass* pCurData = mapdata[key];
|
|||
|
//<2F>ϲ<EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
dataValue.append(pCurData->_parent->_name);
|
|||
|
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
dataValue.append(pCurData->_name);
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(pCurData->_strDisplayName);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pCurData->_type == 1)
|
|||
|
{
|
|||
|
dataValue.append("<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
dataValue.append("<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(pCurData->_strDescription);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pCurData->_wCountType == 0)
|
|||
|
{
|
|||
|
dataValue.append("n");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
dataValue.append("1");
|
|||
|
}
|
|||
|
input.append(dataValue);
|
|||
|
}
|
|||
|
//д<><D0B4>excel
|
|||
|
excel.writeSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", input);
|
|||
|
}
|
|||
|
|
|||
|
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>
|
|||
|
void TransformExcel::writeDataAttribute(QMap<int, DataAttribute*>& mapdata)
|
|||
|
{
|
|||
|
QList<QStringList> input;
|
|||
|
input.append(attributeHead);
|
|||
|
QList<int> keylist = mapdata.keys();
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
for (int i = 0; i < keylist.size(); i++)
|
|||
|
{
|
|||
|
QStringList dataValue;
|
|||
|
int key = keylist[i];
|
|||
|
DataAttribute* pCurData = mapdata[key];
|
|||
|
//<2F>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
dataValue.append(pCurData->_parent->_name);
|
|||
|
//<2F><><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
dataValue.append(pCurData->_name);
|
|||
|
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(pCurData->_strDisplayName);
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(pCurData->_strDescription);
|
|||
|
//Ĭ<><C4AC>ֵ
|
|||
|
dataValue.append(pCurData->_strDefaultValue);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pCurData->_wDataType == MNORMALCOL_TYPE_INT)
|
|||
|
{
|
|||
|
dataValue.append("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
else if (pCurData->_wDataType == MNORMALCOL_TYPE_STRING)
|
|||
|
{
|
|||
|
dataValue.append("<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
else if (pCurData->_wDataType == MNORMALCOL_TYPE_DOUBLE)
|
|||
|
{
|
|||
|
dataValue.append("ʵ<EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
else if (pCurData->_wDataType == MNORMALCOL_TYPE_CHARPTR)
|
|||
|
{
|
|||
|
dataValue.append("char*");
|
|||
|
}
|
|||
|
else if (pCurData->_wDataType == MNORMALCOL_TYPE_DOUBLEPTR)
|
|||
|
{
|
|||
|
dataValue.append("double*");
|
|||
|
}
|
|||
|
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_wIsIndex));
|
|||
|
//<2F>Ƿ<EFBFBD>Ψһ
|
|||
|
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_wIsOnly));
|
|||
|
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_wIsAutoincrement));
|
|||
|
//<2F><><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(QString::number(pCurData->_wMaxLength));
|
|||
|
//<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(QString::number(pCurData->_wMinLength));
|
|||
|
//<2F><>ֵλ<D6B5><CEBB>
|
|||
|
dataValue.append(QString::number(pCurData->_wNumLength));
|
|||
|
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(QString::number(pCurData->_wNumPresision));
|
|||
|
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_wIsFindKey));
|
|||
|
//<2F>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
|||
|
dataValue.append(CommonHelper::convertPropertyValue(pCurData->_isPrimaryKey));
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
if (pCurData->_FKType == 0)
|
|||
|
{
|
|||
|
dataValue.append("<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
}
|
|||
|
else if (pCurData->_FKType == 1)
|
|||
|
{
|
|||
|
dataValue.append("1:1");
|
|||
|
}
|
|||
|
else if (pCurData->_FKType == 2)
|
|||
|
{
|
|||
|
dataValue.append("1:n");
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD>ҹ<EFBFBD><D2B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶ
|
|||
|
DPData* pData = _pDataManager_ref->findObjectById(DataManager::DataType::dataClass, pCurData->_wFkTableID);
|
|||
|
if (pData)
|
|||
|
{
|
|||
|
dataValue.append(pData->_name);
|
|||
|
}
|
|||
|
|
|||
|
input.append(dataValue);
|
|||
|
}
|
|||
|
//д<><D0B4>excel
|
|||
|
excel.writeSheetData("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", input);
|
|||
|
}
|
|||
|
////////////////////////////////////////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>excel<65><6C><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
// <20><><EFBFBD><EFBFBD>excel<65>ļ<EFBFBD>
|
|||
|
bool TransformExcel::openFile(QString filePath)
|
|||
|
{
|
|||
|
return excel.OpenFile(filePath);
|
|||
|
}
|
|||
|
// <20><><EFBFBD><EFBFBD>excel<65>ļ<EFBFBD>
|
|||
|
void TransformExcel::closeFile(QString filePath)
|
|||
|
{
|
|||
|
excel.saveFile(filePath);
|
|||
|
}
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ļ<EFBFBD>
|
|||
|
void TransformExcel::backupDBFile()
|
|||
|
{
|
|||
|
SysManager& sysMgr = GetSysManager();
|
|||
|
_srcFile = sysMgr._sysDBPath;
|
|||
|
_midFile = sysMgr._sysDBPath.left(sysMgr._sysDBPath.lastIndexOf(".")+1) + "mid.dbp";
|
|||
|
_bakFile = sysMgr._sysDBPath + ".bak";
|
|||
|
QFileInfo dstfile(_bakFile);
|
|||
|
if (dstfile.isFile())
|
|||
|
{
|
|||
|
QFile::remove(_bakFile);
|
|||
|
}
|
|||
|
bool ret = QFile::copy(_srcFile, _bakFile);
|
|||
|
}
|
|||
|
//<2F>ָ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
bool TransformExcel::rollBackDBFile()
|
|||
|
{
|
|||
|
|
|||
|
// bool ret = QFile::remove(_srcFile);
|
|||
|
QFile srcfile(_srcFile);
|
|||
|
QFile dstfile(_bakFile);
|
|||
|
QFileInfo midfile(_midFile);
|
|||
|
|
|||
|
if (_pDataManager_ref->pTheDBPlatform)
|
|||
|
{
|
|||
|
delete _pDataManager_ref->pTheDBPlatform;
|
|||
|
_pDataManager_ref->pTheDBPlatform = nullptr;
|
|||
|
|
|||
|
if (!srcfile.remove())
|
|||
|
{
|
|||
|
QString msg = "DB remove " + _srcFile + " failed";
|
|||
|
LOG(ERROR) << CommonHelper::qstringToStdString(msg);
|
|||
|
LOG(ERROR) << CommonHelper::qstringToStdString(srcfile.errorString());
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (!dstfile.rename(_srcFile))
|
|||
|
{
|
|||
|
LOG(ERROR) << CommonHelper::utf8ToStdString("DB rollback failed ");
|
|||
|
LOG(ERROR) << CommonHelper::qstringToStdString(dstfile.errorString());
|
|||
|
CommonHelper::message("<EFBFBD><EFBFBD><EFBFBD>ݻع<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", 2);
|
|||
|
return false;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (_pDataManager_ref->pTheDBPlatform)
|
|||
|
{
|
|||
|
delete _pDataManager_ref->pTheDBPlatform;
|
|||
|
_pDataManager_ref->pTheDBPlatform = nullptr;
|
|||
|
}
|
|||
|
_pDataManager_ref->pTheDBPlatform = new DBPlatformSpace::DBPlatformNew(CommonHelper::qstringToStdString(_srcFile));
|
|||
|
if ("OK" == DBPlatformSpace::DBPlatformNew::getCurrPlatformStatus())
|
|||
|
{
|
|||
|
LOG(INFO) << CommonHelper::utf8ToStdString("link bakDB success");
|
|||
|
_pDataManager_ref->_dbConnected = true;
|
|||
|
}
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
// if (midfile.isFile())
|
|||
|
// {
|
|||
|
// QFile::remove(_midFile);
|
|||
|
// }
|
|||
|
// bool ret = QFile::copy(_bakFile, _midFile);
|
|||
|
// _pDataManager_ref->pTheDBPlatform = new DBPlatformSpace::DBPlatformNew(CommonHelper::qstringToStdString(_midFile));
|
|||
|
|
|||
|
// if ("OK" == DBPlatformSpace::DBPlatformNew::getCurrPlatformStatus())
|
|||
|
// {
|
|||
|
// LOG(INFO) << CommonHelper::utf8ToStdString("link midDB success");
|
|||
|
// if (!srcfile.remove())
|
|||
|
// {
|
|||
|
// QString msg = "DB remove " + _srcFile + " failed";
|
|||
|
// LOG(ERROR) << CommonHelper::qstringToStdString(msg);
|
|||
|
// LOG(ERROR) << CommonHelper::qstringToStdString(srcfile.errorString());
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// if( !dstfile.rename(_srcFile))
|
|||
|
// {
|
|||
|
// LOG(ERROR) << CommonHelper::utf8ToStdString("DB rollback failed ");
|
|||
|
// LOG(ERROR) << CommonHelper::qstringToStdString(dstfile.errorString());
|
|||
|
// return false;
|
|||
|
// }
|
|||
|
// else
|
|||
|
// {
|
|||
|
// if (_pDataManager_ref->pTheDBPlatform)
|
|||
|
// {
|
|||
|
// delete _pDataManager_ref->pTheDBPlatform;
|
|||
|
// _pDataManager_ref->pTheDBPlatform = nullptr;
|
|||
|
// }
|
|||
|
// _pDataManager_ref->pTheDBPlatform = new DBPlatformSpace::DBPlatformNew(CommonHelper::qstringToStdString(_srcFile));
|
|||
|
// if ("OK" == DBPlatformSpace::DBPlatformNew::getCurrPlatformStatus())
|
|||
|
// {
|
|||
|
// LOG(INFO) << CommonHelper::utf8ToStdString("link bakDB success");
|
|||
|
// _pDataManager_ref->_dbConnected = true;
|
|||
|
// //ɾ<><C9BE><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
// if (midfile.isFile())
|
|||
|
// {
|
|||
|
// QFile::remove(_midFile);
|
|||
|
// }
|
|||
|
// }
|
|||
|
// return true;
|
|||
|
// }
|
|||
|
// }
|
|||
|
//
|
|||
|
// }
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|