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

@@ -71,7 +71,7 @@ bool CfiController::updateCfiXML(const QByteArray &array)
if(!parsingCfiXML_DOM(docCfiListDOM_New, mapCfiObjects_New))
return false;
if(!merge2map(mapCfiObjects_Orig, mapCfiObjects_New))
if(!merge2map_single(mapCfiObjects_Orig, mapCfiObjects_New))
return false;
return saveNewCfiListFile(mapCfiObjects_Orig);
@@ -140,6 +140,7 @@ bool CfiController::parsingCfiXML_DOM(QDomDocument &domDoc, QMap<QString, CfiObj
QDomNamedNodeMap nodeMapOneCFIObject = oneCFIObjectElement.attributes();
cfiObj.setGuid(nodeMapOneCFIObject.namedItem("guid").nodeValue());
cfiObj.setIsChanged(nodeMapOneCFIObject.namedItem("isChanged").nodeValue() == "True" ? true : false);
cfiObj.setStatus(nodeMapOneCFIObject.namedItem("status").nodeValue());
//childs CFIObject
QDomElement cfiName_Element = oneCFIObjectElement.elementsByTagName("cfiName").at(0).toElement();
@@ -208,7 +209,7 @@ bool CfiController::parsingCfiXML_DOM(QDomDocument &domDoc, QMap<QString, CfiObj
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)
@@ -248,6 +249,64 @@ bool CfiController::merge2map(QMap<QString, CfiObject> &mapCfiObjects_orig, QMap
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)
{
QDomDocument commonDOM;