Переделано под один мега-проект LMS с общим CMakeLists.txt

This commit is contained in:
krivoshein
2025-01-15 12:34:56 +03:00
parent 3064818931
commit 1c93b1f94d
219 changed files with 68 additions and 51 deletions

View File

@@ -0,0 +1,163 @@
#include "dataparser.h"
#include <QFile>
#include <QDomDocument>
DataParser::DataParser(AssetsManager *assetManager,ProcessingSystem *processingSystem,QObject *parent) :
QObject(parent)
{
this->processingSystem = processingSystem;
this->assetsManager = assetManager;
clientAnswer = new ClientAnswerParser;
clientAnswer->initialize(this);
dbAnswer = new DBAnswerParser;
dbAnswer->initialize(this);
processParser = new ProcessParser;
processParser->initialize(processingSystem);
mutex = new QMutex;
if (!QDir(staticDataFolderName).exists()){
QDir().mkdir(staticDataFolderName);
}
qDebug() << "ParserThread: " << QThread::currentThreadId();
}
QByteArray DataParser::xmlAnswer(QList<SXmlAnswerTag> listTag, QString elemUp1, QString elemUp2)
{
try {
mutex->lock();
/* Открываем файл для Записи*/
QFile file(tempFile);
file.open(QIODevice::WriteOnly);
/* Создаем объект, с помощью которого осуществляется запись в файл */
QXmlStreamWriter xmlWriter(&file);
xmlWriter.setAutoFormatting(true); // Устанавливаем автоформатирование текста
xmlWriter.writeStartDocument(); // Запускаем запись в документ
if(elemUp1 != "")
xmlWriter.writeStartElement(elemUp1); // Записываем тег
if(elemUp2 != "")
xmlWriter.writeStartElement(elemUp2); // Записываем тег
//Записываем все элементы
foreach(SXmlAnswerTag tag, listTag)
{
xmlWriter.writeStartElement(tag.elementName); // Записываем тег
// Записываем атрибуты
foreach(SAttribute attr, tag.attr)
xmlWriter.writeAttribute(attr.name, attr.value);
xmlWriter.writeEndElement(); // Закрываем тег
}
if(elemUp1 != "")
xmlWriter.writeEndElement(); // Закрываем тег
if(elemUp1 != "")
xmlWriter.writeEndElement(); // Закрываем тег
/* Завершаем запись в документ*/
xmlWriter.writeEndDocument();
file.close(); // Закрываем файл
QByteArray array;
array = readTempFile();
mutex->unlock();
return array;
}
catch(const std::exception& e)
{
qDebug() << e.what();
return nullptr;
}
}
bool DataParser::loadBlankXML(QString nameFile, QDomDocument *commonDOM)
{
QFile blankFile(nameFile);
if (! blankFile.open(QFile::ReadOnly | QFile::Text)) {
qDebug() << "loadBlankXML: Couldn't read the file: " + nameFile;
return false;
}
commonDOM->setContent(blankFile.readAll());
blankFile.close();
return true;
}
bool DataParser::saveDOMtoXML(QString nameFile, QDomDocument *commonDOM)
{
QFile xmlOutFile(nameFile);
if (!xmlOutFile.open(QFile::WriteOnly | QFile::Text))
{
qDebug() << "saveDOMtoXML: Failed to write a file: " + nameFile;
return false;
}
else
{
QTextStream outFile(&xmlOutFile);
commonDOM->save(outFile, 4);
xmlOutFile.close();
}
return true;
}
QByteArray DataParser::readTempFile()
{
QByteArray array;
QFile fileR(tempFile);
if (!fileR.open(QFile::ReadOnly | QFile::Text))
{
QString str = "Не удалось открыть файл";
qDebug() << "xmlAnswer: " << str;
}
else
{
array = fileR.readAll();
fileR.close();
}
return array;
}
ClientAnswerParser *DataParser::ClientAnswer() const
{
return clientAnswer;
}
DBAnswerParser *DataParser::DbAnswer() const
{
return dbAnswer;
}
ProcessParser *DataParser::getProcessParser() const
{
return processParser;
}
DataParser::~DataParser()
{
}