mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
cfiController поштучное изменение
This commit is contained in:
@@ -231,12 +231,15 @@ void ProcessingSystem::processingClientDeAutorization(QString login)
|
|||||||
void ProcessingSystem::processingCFIUpdate(QByteArray array)
|
void ProcessingSystem::processingCFIUpdate(QByteArray array)
|
||||||
{
|
{
|
||||||
cfiController->updateCfiXML(array);
|
cfiController->updateCfiXML(array);
|
||||||
|
|
||||||
cfiController->lockAccessToCfiXML();
|
cfiController->lockAccessToCfiXML();
|
||||||
cfiController->unLockAccessToCfiXML();
|
|
||||||
|
|
||||||
QByteArray result;
|
QByteArray result;
|
||||||
QString path = updateController->getPathAdditionalFile(cfiListFileName);
|
QString path = updateController->getPathAdditionalFile(cfiListFileName);
|
||||||
Tools::loadFileXMLtoByteArray(path,result);
|
Tools::loadFileXMLtoByteArray(path,result);
|
||||||
|
|
||||||
|
cfiController->unLockAccessToCfiXML();
|
||||||
|
|
||||||
commonClientServer->sendXmlAnswer(result);
|
commonClientServer->sendXmlAnswer(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ bool CfiController::updateCfiXML(const QByteArray &array)
|
|||||||
if(!parsingCfiXML_DOM(docCfiListDOM_New, mapCfiObjects_New))
|
if(!parsingCfiXML_DOM(docCfiListDOM_New, mapCfiObjects_New))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(!merge2map(mapCfiObjects_Orig, mapCfiObjects_New))
|
if(!merge2map_single(mapCfiObjects_Orig, mapCfiObjects_New))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return saveNewCfiListFile(mapCfiObjects_Orig);
|
return saveNewCfiListFile(mapCfiObjects_Orig);
|
||||||
@@ -140,6 +140,7 @@ bool CfiController::parsingCfiXML_DOM(QDomDocument &domDoc, QMap<QString, CfiObj
|
|||||||
QDomNamedNodeMap nodeMapOneCFIObject = oneCFIObjectElement.attributes();
|
QDomNamedNodeMap nodeMapOneCFIObject = oneCFIObjectElement.attributes();
|
||||||
cfiObj.setGuid(nodeMapOneCFIObject.namedItem("guid").nodeValue());
|
cfiObj.setGuid(nodeMapOneCFIObject.namedItem("guid").nodeValue());
|
||||||
cfiObj.setIsChanged(nodeMapOneCFIObject.namedItem("isChanged").nodeValue() == "True" ? true : false);
|
cfiObj.setIsChanged(nodeMapOneCFIObject.namedItem("isChanged").nodeValue() == "True" ? true : false);
|
||||||
|
cfiObj.setStatus(nodeMapOneCFIObject.namedItem("status").nodeValue());
|
||||||
|
|
||||||
//childs CFIObject
|
//childs CFIObject
|
||||||
QDomElement cfiName_Element = oneCFIObjectElement.elementsByTagName("cfiName").at(0).toElement();
|
QDomElement cfiName_Element = oneCFIObjectElement.elementsByTagName("cfiName").at(0).toElement();
|
||||||
@@ -208,7 +209,7 @@ bool CfiController::parsingCfiXML_DOM(QDomDocument &domDoc, QMap<QString, CfiObj
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CfiController::merge2map(QMap<QString, CfiObject> &mapCfiObjects_orig, QMap<QString, CfiObject> &mapCfiObjects_new)
|
bool CfiController::merge2map_commonList(QMap<QString, CfiObject> &mapCfiObjects_orig, QMap<QString, CfiObject> &mapCfiObjects_new)
|
||||||
{
|
{
|
||||||
//Проверка на удаление
|
//Проверка на удаление
|
||||||
for(CfiObject cfiObj : mapCfiObjects_orig)
|
for(CfiObject cfiObj : mapCfiObjects_orig)
|
||||||
@@ -248,6 +249,64 @@ bool CfiController::merge2map(QMap<QString, CfiObject> &mapCfiObjects_orig, QMap
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CfiController::merge2map_single(QMap<QString, CfiObject> &mapCfiObjects_orig, QMap<QString, CfiObject> &mapCfiObjects_new)
|
||||||
|
{
|
||||||
|
//Замена, Добавление, Удаление
|
||||||
|
for(CfiObject cfiObj : mapCfiObjects_new)
|
||||||
|
{
|
||||||
|
QString status = cfiObj.getStatus();
|
||||||
|
QString guid = cfiObj.getGuid();
|
||||||
|
|
||||||
|
if(status == "new")
|
||||||
|
{
|
||||||
|
if(mapCfiObjects_orig.contains(guid))
|
||||||
|
{//Такой есть!
|
||||||
|
QString msg = "CfiController: [status - new] guid cfiObj already exists!";
|
||||||
|
qDebug() << msg;
|
||||||
|
Logger::instance().log(msg, LogLevel::DEBUG);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cfiObj.setStatus("accepted");
|
||||||
|
cfiObj.resetStatusInDomElement();
|
||||||
|
mapCfiObjects_orig.insert(guid, cfiObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(status == "deleted")
|
||||||
|
{
|
||||||
|
if(mapCfiObjects_orig.contains(guid))
|
||||||
|
{
|
||||||
|
mapCfiObjects_orig.take(guid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QString msg = "CfiController: [status - deleted] guid cfiObj does not exist!";
|
||||||
|
qDebug() << msg;
|
||||||
|
Logger::instance().log(msg, LogLevel::DEBUG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(status == "edited")
|
||||||
|
{
|
||||||
|
if(mapCfiObjects_orig.contains(guid))
|
||||||
|
{
|
||||||
|
mapCfiObjects_orig.take(guid);
|
||||||
|
|
||||||
|
cfiObj.setStatus("accepted");
|
||||||
|
cfiObj.resetStatusInDomElement();
|
||||||
|
mapCfiObjects_orig.insert(guid, cfiObj);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QString msg = "CfiController: [status - edited] guid cfiObj does not exist!";
|
||||||
|
qDebug() << msg;
|
||||||
|
Logger::instance().log(msg, LogLevel::DEBUG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool CfiController::saveNewCfiListFile(QMap<QString, CfiObject> &mapCfiObjects)
|
bool CfiController::saveNewCfiListFile(QMap<QString, CfiObject> &mapCfiObjects)
|
||||||
{
|
{
|
||||||
QDomDocument commonDOM;
|
QDomDocument commonDOM;
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ class CfiController : public QObject
|
|||||||
public:
|
public:
|
||||||
explicit CfiController(UpdateController* updateController, QObject *parent = nullptr);
|
explicit CfiController(UpdateController* updateController, QObject *parent = nullptr);
|
||||||
~CfiController();
|
~CfiController();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void lockAccessToCfiXML();
|
void lockAccessToCfiXML();
|
||||||
void unLockAccessToCfiXML();
|
void unLockAccessToCfiXML();
|
||||||
@@ -36,7 +37,9 @@ private:
|
|||||||
|
|
||||||
bool parsingCfiXML_DOM(QDomDocument& domDoc, QMap<QString, CfiObject>& mapCfiObjects);
|
bool parsingCfiXML_DOM(QDomDocument& domDoc, QMap<QString, CfiObject>& mapCfiObjects);
|
||||||
|
|
||||||
bool merge2map(QMap<QString, CfiObject>& mapCfiObjects_orig, QMap<QString, CfiObject>& mapCfiObjects_new);
|
bool merge2map_commonList(QMap<QString, CfiObject>& mapCfiObjects_orig, QMap<QString, CfiObject>& mapCfiObjects_new);
|
||||||
|
|
||||||
|
bool merge2map_single(QMap<QString, CfiObject>& mapCfiObjects_orig, QMap<QString, CfiObject>& mapCfiObjects_new);
|
||||||
|
|
||||||
bool saveNewCfiListFile(QMap<QString, CfiObject>& mapCfiObjects);
|
bool saveNewCfiListFile(QMap<QString, CfiObject>& mapCfiObjects);
|
||||||
|
|
||||||
|
|||||||
@@ -89,3 +89,18 @@ void CfiObject::resetIsChangedInDomElement()
|
|||||||
{
|
{
|
||||||
domElement.setAttribute("isChanged", "False");
|
domElement.setAttribute("isChanged", "False");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CfiObject::resetStatusInDomElement()
|
||||||
|
{
|
||||||
|
domElement.setAttribute("status", "accepted");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CfiObject::getStatus() const
|
||||||
|
{
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CfiObject::setStatus(const QString &value)
|
||||||
|
{
|
||||||
|
status = value;
|
||||||
|
}
|
||||||
|
|||||||
@@ -67,9 +67,14 @@ public:
|
|||||||
void setDomElement(const QDomElement &value);
|
void setDomElement(const QDomElement &value);
|
||||||
|
|
||||||
void resetIsChangedInDomElement();
|
void resetIsChangedInDomElement();
|
||||||
|
void resetStatusInDomElement();
|
||||||
|
|
||||||
|
QString getStatus() const;
|
||||||
|
void setStatus(const QString &value);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString guid;
|
QString guid;
|
||||||
|
QString status;
|
||||||
bool isChanged;
|
bool isChanged;
|
||||||
QString cfiName;
|
QString cfiName;
|
||||||
QString cfi;
|
QString cfi;
|
||||||
|
|||||||
Reference in New Issue
Block a user