cfiController поштучное изменение

This commit is contained in:
2026-01-30 11:33:47 +03:00
parent 8ff5072d5b
commit 466b2cd7fc
5 changed files with 90 additions and 5 deletions

View File

@@ -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->unLockAccessToCfiXML(); cfiController->lockAccessToCfiXML();
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);
} }

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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;