mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
cfiController поштучное изменение
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -13,6 +13,7 @@ class CfiController : public QObject
|
||||
public:
|
||||
explicit CfiController(UpdateController* updateController, QObject *parent = nullptr);
|
||||
~CfiController();
|
||||
|
||||
public:
|
||||
void lockAccessToCfiXML();
|
||||
void unLockAccessToCfiXML();
|
||||
@@ -36,7 +37,9 @@ private:
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@@ -89,3 +89,18 @@ void CfiObject::resetIsChangedInDomElement()
|
||||
{
|
||||
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 resetIsChangedInDomElement();
|
||||
void resetStatusInDomElement();
|
||||
|
||||
QString getStatus() const;
|
||||
void setStatus(const QString &value);
|
||||
|
||||
private:
|
||||
QString guid;
|
||||
QString status;
|
||||
bool isChanged;
|
||||
QString cfiName;
|
||||
QString cfi;
|
||||
|
||||
Reference in New Issue
Block a user