From f530d1b0f42c762c4f3fa765d0de3487b44df9a3 Mon Sep 17 00:00:00 2001 From: semenov Date: Wed, 15 Jan 2025 09:48:09 +0300 Subject: [PATCH] hotfix: updateVersion --- DOCS/.obsidian/workspace.json | 4 +- DOCS/Алексей/DataParser scheme.md | 364 +++++++++--------- ServerLMS/ServerLMS/CMakeLists.txt | 2 + ServerLMS/ServerLMS/Data/Client.h | 1 + .../ServerLMS/Systems/Parsers/dataparser.cpp | 239 +----------- .../ServerLMS/Systems/Parsers/dataparser.h | 4 + .../Systems/Parsers/processparser.cpp | 261 +++++++++++++ .../ServerLMS/Systems/Parsers/processparser.h | 30 ++ .../ServerLMS/Systems/recognizesystem.cpp | 2 +- ServerLMS/ServerLMS/Systems/tools.h | 42 +- .../ServerLMS/Systems/updatecontroller.cpp | 14 +- .../ServerLMS/Systems/updatecontroller.h | 3 +- ServerLMS/ServerLMS/serverlmswidget.cpp | 4 +- ServerLMS/ServerLMS/serverlmswidget.h | 2 +- 14 files changed, 533 insertions(+), 439 deletions(-) create mode 100644 ServerLMS/ServerLMS/Systems/Parsers/processparser.cpp create mode 100644 ServerLMS/ServerLMS/Systems/Parsers/processparser.h diff --git a/DOCS/.obsidian/workspace.json b/DOCS/.obsidian/workspace.json index e1402e2..cc288df 100644 --- a/DOCS/.obsidian/workspace.json +++ b/DOCS/.obsidian/workspace.json @@ -219,9 +219,9 @@ }, "active": "9608f84166966ca9", "lastOpenFiles": [ - "MainScheme.md", - "Алексей/DataParser scheme.md", "Алексей/ProcessingSystem scheme.md", + "Алексей/DataParser scheme.md", + "MainScheme.md", "AssetManagerScheme.md", "Алексей/AssetManagerScheme.md", "Как умеем принимать, как умеем отправлять!.md", diff --git a/DOCS/Алексей/DataParser scheme.md b/DOCS/Алексей/DataParser scheme.md index 7305a3d..515fe1a 100644 --- a/DOCS/Алексей/DataParser scheme.md +++ b/DOCS/Алексей/DataParser scheme.md @@ -231,368 +231,368 @@ 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= ``` %% \ No newline at end of file diff --git a/ServerLMS/ServerLMS/CMakeLists.txt b/ServerLMS/ServerLMS/CMakeLists.txt index 94990ea..7a79015 100644 --- a/ServerLMS/ServerLMS/CMakeLists.txt +++ b/ServerLMS/ServerLMS/CMakeLists.txt @@ -57,6 +57,8 @@ add_library(ServerLMS SHARED Systems/Parsers/clientanswerparser.h Systems/Parsers/dbanswerparser.cpp Systems/Parsers/dbanswerparser.h + Systems/Parsers/processparser.cpp + Systems/Parsers/processparser.h Systems/processingsystem.cpp Systems/processingsystem.h Systems/sendsystem.cpp diff --git a/ServerLMS/ServerLMS/Data/Client.h b/ServerLMS/ServerLMS/Data/Client.h index 32246cb..1dfebb1 100644 --- a/ServerLMS/ServerLMS/Data/Client.h +++ b/ServerLMS/ServerLMS/Data/Client.h @@ -30,6 +30,7 @@ public: void setLogin(QString login) { this->login = login; + isLoggedIn = true; fullName = "Name: " + name + " IP: " + address + " port : " + port + " login: " + login; } QString getLogin() diff --git a/ServerLMS/ServerLMS/Systems/Parsers/dataparser.cpp b/ServerLMS/ServerLMS/Systems/Parsers/dataparser.cpp index 3a66a04..e8dbbfb 100644 --- a/ServerLMS/ServerLMS/Systems/Parsers/dataparser.cpp +++ b/ServerLMS/ServerLMS/Systems/Parsers/dataparser.cpp @@ -11,9 +11,13 @@ QObject(parent) 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()){ @@ -22,223 +26,7 @@ QObject(parent) qDebug() << "ParserThread: " << QThread::currentThreadId(); } -void DataParser::xmlParser(ClientHandler *client, QByteArray array) -{ - QXmlStreamReader xmlReader(array); - xmlReader.readNext(); // Переходим к первому элементу в файле - - //Крутимся в цикле до тех пор, пока не достигнем конца документа - while(!xmlReader.atEnd()) - { - //Проверяем, является ли элемент началом тега - if(xmlReader.isStartElement()) - { - //Анализируем теги - if(xmlReader.name() == "ClientAutorization") - {//Запрос авторизации от клиента - - ClientAutorization clientAutorization; - - /*Перебираем все атрибуты тега*/ - foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) - { - QString name = attr.name().toString(); - QString value = attr.value().toString(); - //addTextToLogger(name + ": " + value); - - if(name == "Login") - clientAutorization.Login = value; - else if(name == "Password") - clientAutorization.Password = value; - else if(name == "NumberOfScreen") - clientAutorization.NumberOfScreen = value.toInt(); - else if(name == "TypeClient") - clientAutorization.TypeClient = (TypeClientAutorization)value.toInt(); - } - - processingSystem->processingClientAutorization(client, clientAutorization); - } - else if(xmlReader.name() == "ClientDeAutorization") - {//Запрос ДеАвторизации от клиента - - ClientDeAutorization clientDeAutorization; - - /*Перебираем все атрибуты тега*/ - foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) - { - QString name = attr.name().toString(); - QString value = attr.value().toString(); - //addTextToLogger(name + ": " + value); - - if(name == "Login") - clientDeAutorization.Login = value; - } - - processingSystem->processingClientDeAutorization(client, clientDeAutorization); - } - else if(xmlReader.name() == "ToClientMessage") - {//Отправка сообщения Клиенту - - ToClientMessage toClientMessage; - - /*Перебираем все атрибуты тега*/ - foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) - { - QString name = attr.name().toString(); - QString value = attr.value().toString(); - //addTextToLogger(name + ": " + value); - - if(name == "id") - toClientMessage.id = value.toInt(); - else if(name == "Text") - toClientMessage.Text = value; - else if(name == "Login") - toClientMessage.Login = value; - } - - processingSystem->processingToClientMessage(client, toClientMessage); - } - else if(xmlReader.name() == "QueryToDB") - {//Запрос к базе данных от клиента - - ClientQueryToDB queryToDB; - int id = 0; - Instructor instructor; - Trainee trainee; - Group group; - void* data = nullptr; - - /*Перебираем все атрибуты тега*/ - foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) - { - QString name = attr.name().toString(); - QString value = attr.value().toString(); - //addTextToLogger(name + ": " + value); - - if(name == "TypeQuery") - queryToDB.typeQuery = (TypeQueryToDB)value.toInt(); - else if(name == "id") - id = value.toInt(); - else - { - switch (queryToDB.typeQuery) - { - case TypeQueryToDB::TYPE_QUERY_NEW_INSTRUCTOR: - case TypeQueryToDB::TYPE_QUERY_EDIT_INSTRUCTOR: - if(name == "instructor_id") - instructor.setID(value.toInt()); - else if(name == "name") - instructor.setName(value); - else if(name == "login") - instructor.setLogin(value); - else if(name == "password") - instructor.setPassword(value); - else if(name == "is_admin") - instructor.setIsAdmin(value.toInt()); - else if(name == "archived") - instructor.setArchived(value.toInt()); - else if(name == "logged_in") - instructor.setLoggedIn(value.toInt()); - break; - case TypeQueryToDB::TYPE_QUERY_NEW_TRAINEE: - case TypeQueryToDB::TYPE_QUERY_EDIT_TRAINEE: - if(name == "trainee_id") - trainee.setID(value.toInt()); - else if(name == "name") - trainee.setName(value); - else if(name == "login") - trainee.setLogin(value); - else if(name == "password") - trainee.setPassword(value); - else if(name == "archived") - trainee.setArchived(value.toInt()); - else if(name == "logged_in") - trainee.setLoggedIn(value.toInt()); - else if(name == "group_trainee") - { - Group group(value.toInt(), ""); - trainee.setGroup(group); - } - else if(name == "computer_trainee") - { - Computer computer(value.toInt(), "", "", Classroom()); - trainee.setComputer(computer); - } - break; - case TypeQueryToDB::TYPE_QUERY_NEW_GROUP: - case TypeQueryToDB::TYPE_QUERY_EDIT_GROUP: - if(name == "group_id") - group.setID(value.toInt()); - else if(name == "name") - group.setName(value); - break; - }; - } - } - - switch (queryToDB.typeQuery) - { - case TypeQueryToDB::TYPE_QUERY_NEW_INSTRUCTOR: - case TypeQueryToDB::TYPE_QUERY_EDIT_INSTRUCTOR: - data = &instructor; - break; - case TypeQueryToDB::TYPE_QUERY_NEW_TRAINEE: - case TypeQueryToDB::TYPE_QUERY_EDIT_TRAINEE: - data = &trainee; - break; - case TypeQueryToDB::TYPE_QUERY_NEW_GROUP: - case TypeQueryToDB::TYPE_QUERY_EDIT_GROUP: - data = &group; - break; - }; - - processingSystem->processingClientQueryToDB(client, queryToDB, id, data); - } - else if(xmlReader.name() == "ClientMessage") - {//Сообщение от клиента - - ClientMessage clientMessage; - - /*Перебираем все атрибуты тега*/ - foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) - { - QString name = attr.name().toString(); - QString value = attr.value().toString(); - //addTextToLogger(name + ": " + value); - - if(name == "Text") - clientMessage.Text = value; - } - - processingSystem->processingFromClientMessage(client, clientMessage); - } - else if(xmlReader.name() == "ClientNotify") - {//Уведомление от клиента - - ClientNotify clientNotify; - - /*Перебираем все атрибуты тега*/ - foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) - { - QString name = attr.name().toString(); - QString value = attr.value().toString(); - - if(name == "Code") - clientNotify.Code = value; - } - - processingSystem->processingClientNotify(client, clientNotify); - } - else - { - emit sigLogMessage("XmlParser: unrecognized tag"); - } - - } - xmlReader.readNext(); // Переходим к следующему элементу файла - }//while(!xmlReader.atEnd()) -} QByteArray DataParser::xmlAnswer(QList listTag, QString elemUp1, QString elemUp2) { @@ -334,8 +122,6 @@ bool DataParser::saveDOMtoXML(QString nameFile, QDomDocument *commonDOM) return true; } - - QByteArray DataParser::readTempFile() { QByteArray array; @@ -354,11 +140,6 @@ QByteArray DataParser::readTempFile() return array; } -DataParser::~DataParser() -{ - -} - ClientAnswerParser *DataParser::ClientAnswer() const { return clientAnswer; @@ -368,3 +149,15 @@ DBAnswerParser *DataParser::DbAnswer() const { return dbAnswer; } + +ProcessParser *DataParser::getProcessParser() const +{ + return processParser; +} + +DataParser::~DataParser() +{ + +} + + diff --git a/ServerLMS/ServerLMS/Systems/Parsers/dataparser.h b/ServerLMS/ServerLMS/Systems/Parsers/dataparser.h index ed5da78..f933dd8 100644 --- a/ServerLMS/ServerLMS/Systems/Parsers/dataparser.h +++ b/ServerLMS/ServerLMS/Systems/Parsers/dataparser.h @@ -7,6 +7,7 @@ #include "Systems/logger.h" #include "Systems/Parsers/clientanswerparser.h" #include "dbanswerparser.h" +#include "processparser.h" #include "serverlmswidget.h" #include @@ -22,6 +23,7 @@ class ClientHandler; class AssetsManager; class ClientAnswerParser; class DBAnswerParser; +class ProcessParser; class DataParser : public QObject { @@ -40,6 +42,7 @@ public: ClientAnswerParser *ClientAnswer() const; DBAnswerParser *DbAnswer() const; + ProcessParser *getProcessParser() const; signals: void sigLogMessage(QString log); @@ -52,6 +55,7 @@ private: AssetsManager *assetsManager; ClientAnswerParser *clientAnswer; DBAnswerParser *dbAnswer; + ProcessParser *processParser; QByteArray readTempFile(); }; diff --git a/ServerLMS/ServerLMS/Systems/Parsers/processparser.cpp b/ServerLMS/ServerLMS/Systems/Parsers/processparser.cpp new file mode 100644 index 0000000..7a94451 --- /dev/null +++ b/ServerLMS/ServerLMS/Systems/Parsers/processparser.cpp @@ -0,0 +1,261 @@ +#include "processparser.h" + +ProcessParser::ProcessParser(QObject *parent) : QObject(parent) +{ + +} + +void ProcessParser::initialize(ProcessingSystem *processingSystem) +{ + this->processingSystem = processingSystem; +} + +void ProcessParser::read(ClientHandler *client, QByteArray array) +{ + QXmlStreamReader xmlReader(array); + + xmlReader.readNext(); // Переходим к первому элементу в файле + + //Крутимся в цикле до тех пор, пока не достигнем конца документа + while(!xmlReader.atEnd()) + { + //Проверяем, является ли элемент началом тега + if(xmlReader.isStartElement()) + { + //Анализируем теги + if(xmlReader.name() == "ClientAutorization") + {//Запрос авторизации от клиента + + clientAuth(xmlReader,client); + } + else if(xmlReader.name() == "ClientDeAutorization") + {//Запрос ДеАвторизации от клиента + + clientDeAuth(xmlReader,client); + } + else if(xmlReader.name() == "ToClientMessage") + {//Отправка сообщения Клиенту + + toClientMessage(xmlReader,client); + } + else if(xmlReader.name() == "QueryToDB") + {//Запрос к базе данных от клиента + + queryToDb(xmlReader,client); + } + else if(xmlReader.name() == "ClientMessage") + {//Сообщение от клиента + + clientMessage(xmlReader,client); + } + else if(xmlReader.name() == "ClientNotify") + {//Уведомление от клиента + + clientNotify(xmlReader,client); + } + else + { + emit sigLogMessage("XmlParser: unrecognized tag"); + } + + } + xmlReader.readNext(); // Переходим к следующему элементу файла + }//while(!xmlReader.atEnd()) +} + +void ProcessParser::clientAuth(QXmlStreamReader &xmlReader,ClientHandler *client) +{ + ClientAutorization clientAutorization; + + /*Перебираем все атрибуты тега*/ + foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) + { + QString name = attr.name().toString(); + QString value = attr.value().toString(); + //addTextToLogger(name + ": " + value); + + if(name == "Login") + clientAutorization.Login = value; + else if(name == "Password") + clientAutorization.Password = value; + else if(name == "NumberOfScreen") + clientAutorization.NumberOfScreen = value.toInt(); + else if(name == "TypeClient") + clientAutorization.TypeClient = (TypeClientAutorization)value.toInt(); + } + + processingSystem->processingClientAutorization(client, clientAutorization); +} + +void ProcessParser::clientDeAuth(QXmlStreamReader &xmlReader,ClientHandler *client) +{ + ClientDeAutorization clientDeAutorization; + + /*Перебираем все атрибуты тега*/ + foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) + { + QString name = attr.name().toString(); + QString value = attr.value().toString(); + //addTextToLogger(name + ": " + value); + + if(name == "Login") + clientDeAutorization.Login = value; + } + + processingSystem->processingClientDeAutorization(client, clientDeAutorization); +} + +void ProcessParser::toClientMessage(QXmlStreamReader &xmlReader,ClientHandler *client) +{ + ToClientMessage toClientMessage; + + /*Перебираем все атрибуты тега*/ + foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) + { + QString name = attr.name().toString(); + QString value = attr.value().toString(); + //addTextToLogger(name + ": " + value); + + if(name == "id") + toClientMessage.id = value.toInt(); + else if(name == "Text") + toClientMessage.Text = value; + else if(name == "Login") + toClientMessage.Login = value; + } + + processingSystem->processingToClientMessage(client, toClientMessage); +} + +void ProcessParser::queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client) +{ + ClientQueryToDB queryToDB; + int id = 0; + Instructor instructor; + Trainee trainee; + Group group; + void* data = nullptr; + + /*Перебираем все атрибуты тега*/ + foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) + { + QString name = attr.name().toString(); + QString value = attr.value().toString(); + //addTextToLogger(name + ": " + value); + + if(name == "TypeQuery") + queryToDB.typeQuery = (TypeQueryToDB)value.toInt(); + else if(name == "id") + id = value.toInt(); + else + { + switch (queryToDB.typeQuery) + { + case TypeQueryToDB::TYPE_QUERY_NEW_INSTRUCTOR: + case TypeQueryToDB::TYPE_QUERY_EDIT_INSTRUCTOR: + if(name == "instructor_id") + instructor.setID(value.toInt()); + else if(name == "name") + instructor.setName(value); + else if(name == "login") + instructor.setLogin(value); + else if(name == "password") + instructor.setPassword(value); + else if(name == "is_admin") + instructor.setIsAdmin(value.toInt()); + else if(name == "archived") + instructor.setArchived(value.toInt()); + else if(name == "logged_in") + instructor.setLoggedIn(value.toInt()); + break; + case TypeQueryToDB::TYPE_QUERY_NEW_TRAINEE: + case TypeQueryToDB::TYPE_QUERY_EDIT_TRAINEE: + if(name == "trainee_id") + trainee.setID(value.toInt()); + else if(name == "name") + trainee.setName(value); + else if(name == "login") + trainee.setLogin(value); + else if(name == "password") + trainee.setPassword(value); + else if(name == "archived") + trainee.setArchived(value.toInt()); + else if(name == "logged_in") + trainee.setLoggedIn(value.toInt()); + else if(name == "group_trainee") + { + Group group(value.toInt(), ""); + trainee.setGroup(group); + } + else if(name == "computer_trainee") + { + Computer computer(value.toInt(), "", "", Classroom()); + trainee.setComputer(computer); + } + break; + case TypeQueryToDB::TYPE_QUERY_NEW_GROUP: + case TypeQueryToDB::TYPE_QUERY_EDIT_GROUP: + if(name == "group_id") + group.setID(value.toInt()); + else if(name == "name") + group.setName(value); + break; + }; + } + } + + switch (queryToDB.typeQuery) + { + case TypeQueryToDB::TYPE_QUERY_NEW_INSTRUCTOR: + case TypeQueryToDB::TYPE_QUERY_EDIT_INSTRUCTOR: + data = &instructor; + break; + case TypeQueryToDB::TYPE_QUERY_NEW_TRAINEE: + case TypeQueryToDB::TYPE_QUERY_EDIT_TRAINEE: + data = &trainee; + break; + case TypeQueryToDB::TYPE_QUERY_NEW_GROUP: + case TypeQueryToDB::TYPE_QUERY_EDIT_GROUP: + data = &group; + break; + }; + + processingSystem->processingClientQueryToDB(client, queryToDB, id, data); +} + +void ProcessParser::clientMessage(QXmlStreamReader &xmlReader,ClientHandler *client) +{ + ClientMessage clientMessage; + + /*Перебираем все атрибуты тега*/ + foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) + { + QString name = attr.name().toString(); + QString value = attr.value().toString(); + //addTextToLogger(name + ": " + value); + + if(name == "Text") + clientMessage.Text = value; + } + + processingSystem->processingFromClientMessage(client, clientMessage); +} + +void ProcessParser::clientNotify(QXmlStreamReader &xmlReader,ClientHandler *client) +{ + ClientNotify clientNotify; + + /*Перебираем все атрибуты тега*/ + foreach(const QXmlStreamAttribute &attr, xmlReader.attributes()) + { + QString name = attr.name().toString(); + QString value = attr.value().toString(); + + if(name == "Code") + clientNotify.Code = value; + } + + processingSystem->processingClientNotify(client, clientNotify); +} + + diff --git a/ServerLMS/ServerLMS/Systems/Parsers/processparser.h b/ServerLMS/ServerLMS/Systems/Parsers/processparser.h new file mode 100644 index 0000000..41046a1 --- /dev/null +++ b/ServerLMS/ServerLMS/Systems/Parsers/processparser.h @@ -0,0 +1,30 @@ +#ifndef PROCESSPARSER_H +#define PROCESSPARSER_H + +#include +#include +#include +#include + +class ProcessParser : public QObject +{ + Q_OBJECT +public: + explicit ProcessParser(QObject *parent = nullptr); + void initialize(ProcessingSystem *processingSystem); + void read(ClientHandler *client, QByteArray array); + + +signals: + void sigLogMessage(QString text); +private: + ProcessingSystem *processingSystem; + void clientAuth(QXmlStreamReader &xmlReader,ClientHandler *client); + void clientDeAuth(QXmlStreamReader &xmlReader,ClientHandler *client); + void toClientMessage(QXmlStreamReader &xmlReader,ClientHandler *client); + void queryToDb(QXmlStreamReader &xmlReader,ClientHandler *client); + void clientMessage(QXmlStreamReader &xmlReader,ClientHandler *client); + void clientNotify(QXmlStreamReader &xmlReader,ClientHandler *client); +}; + +#endif // PROCESSPARSER_H diff --git a/ServerLMS/ServerLMS/Systems/recognizesystem.cpp b/ServerLMS/ServerLMS/Systems/recognizesystem.cpp index b610fe8..8e30805 100644 --- a/ServerLMS/ServerLMS/Systems/recognizesystem.cpp +++ b/ServerLMS/ServerLMS/Systems/recognizesystem.cpp @@ -28,7 +28,7 @@ void RecognizeSystem::initialize(UpdateController *updateController,DataParser* connect(this,&RecognizeSystem::sigChangeVersion,updateController,&UpdateController::changeAssetVersion,Qt::AutoConnection); connect(this,&RecognizeSystem::sigDeleteVersion,updateController,&UpdateController::deleteAssetVersion,Qt::AutoConnection); connect(this,&RecognizeSystem::sigCopyVersion,updateController,&UpdateController::createCopyVersion,Qt::AutoConnection); - connect(this,&RecognizeSystem::sigXmlParser,dataParser,&DataParser::xmlParser,Qt::DirectConnection); + connect(this,&RecognizeSystem::sigXmlParser,dataParser->getProcessParser(),&ProcessParser::read,Qt::DirectConnection); qDebug() << "Recognize init thread ID " << QThread::currentThreadId(); } diff --git a/ServerLMS/ServerLMS/Systems/tools.h b/ServerLMS/ServerLMS/Systems/tools.h index 4a8eb54..f78fff9 100644 --- a/ServerLMS/ServerLMS/Systems/tools.h +++ b/ServerLMS/ServerLMS/Systems/tools.h @@ -12,29 +12,29 @@ #define TCP_READ_TIMEOUT 5000 -static QString staticDataFolderName = "StaticData"; -static QString applicationFolderName = "Application"; -static QString sharedDataFolderName = "SharedData"; -static QString streamingAssetsFolderName = "StreamingAssets"; -static QString tempFile = staticDataFolderName + "/save.xml"; -static QString version = staticDataFolderName + "/version.xml"; -static QString versionListFile = staticDataFolderName + "/versionList.xml"; -static QString hashFileName = staticDataFolderName + "/serverHash.xml"; -static QString buildHashName = staticDataFolderName + "/buildHash.xml"; -static QString buildDataPath = "/Application/RRJLoader/RRJ_Data/"; +static const QString staticDataFolderName = "StaticData"; +static const QString applicationFolderName = "Application"; +static const QString sharedDataFolderName = "SharedData"; +static const QString streamingAssetsFolderName = "StreamingAssets"; +static const QString tempFile = staticDataFolderName + "/save.xml"; +static const QString version = staticDataFolderName + "/version.xml"; +static const QString versionListFile = staticDataFolderName + "/versionList.xml"; +static const QString hashFileName = staticDataFolderName + "/serverHash.xml"; +static const QString buildHashName = staticDataFolderName + "/buildHash.xml"; +static const QString buildDataPath = "/Application/RRJLoader/RRJ_Data/"; -static QString baseNameVersion = "base";//может вынести комманды куда нибудь? +static const QString baseNameVersion = "base";//может вынести комманды куда нибудь? -static QString commandTryBaseDelete = "BASEDELETETRY"; -static QString commandTryActiveDelete = "TRYACTIVEDELETE"; -static QString commandTryCopyWithSameNames = "SAMENAMES"; -static QString commandGetServerDataList = "GETSERVERDATALIST"; -static QString commandCheckVersionList = "CHECKVERSIONLIST"; -static QString commandReadyClient = "READY"; -static QString commandDisableClient = "DISABLE"; -static QString commandDuplicateVerName = "DUPLICATEVERNAME"; -static QString commandHashCompleteClient = "HASHSENDCOMPLETE"; -static QString commandUpdateFilesClient = "update"; +static const QString commandTryBaseDelete = "BASEDELETETRY"; +static const QString commandTryActiveDelete = "TRYACTIVEDELETE"; +static const QString commandTryCopyWithSameNames = "SAMENAMES"; +static const QString commandGetServerDataList = "GETSERVERDATALIST"; +static const QString commandCheckVersionList = "CHECKVERSIONLIST"; +static const QString commandReadyClient = "READY"; +static const QString commandDisableClient = "DISABLE"; +static const QString commandDuplicateVerName = "DUPLICATEVERNAME"; +static const QString commandHashCompleteClient = "HASHSENDCOMPLETE"; +static const QString commandUpdateFilesClient = "update"; class Tools { public: diff --git a/ServerLMS/ServerLMS/Systems/updatecontroller.cpp b/ServerLMS/ServerLMS/Systems/updatecontroller.cpp index 59029ca..7a548c1 100644 --- a/ServerLMS/ServerLMS/Systems/updatecontroller.cpp +++ b/ServerLMS/ServerLMS/Systems/updatecontroller.cpp @@ -10,7 +10,7 @@ UpdateController::UpdateController(QObject *parent) : qDebug() << hashFileName; } -void UpdateController::initialize(CommonClientHandler *commonClientHandler,DataParser *dataParser,AssetsManager *assetManager) +void UpdateController::initialize(CommonClientHandler *commonClientHandler,DataParser *dataParser,AssetsManager *assetManager,Logger *logger) { this->commonClientHandler = commonClientHandler; this->dataParser = dataParser; @@ -19,6 +19,8 @@ void UpdateController::initialize(CommonClientHandler *commonClientHandler,DataP sizeToSend = 0; assetManager->initialize(this,dataParser); + connect(this,&UpdateController::sigLogMessage,logger,&Logger::addTextToLogger,Qt::AutoConnection); + calculateFullHash(); currentStreamingPath = assetManager->setVersion("base"); setUpCurrentServerHash(); @@ -244,7 +246,7 @@ bool UpdateController::checkNeedUpdate(ClientHandler *handler) fileSendList = *forSend; emit sigLogMessage(log); - printFileList(*forSend); + //printFileList(*forSend); handler->sendMessageBlock(log); needUpdate = true; @@ -270,7 +272,7 @@ bool UpdateController::checkNeedUpdate(ClientHandler *handler) fileDeleteList = *forDelete; emit sigLogMessage(log); - printFileList(*forDelete); + //printFileList(*forDelete); handler->sendMessageBlock(log); needUpdate = true; } @@ -558,17 +560,17 @@ QList UpdateController::getClientDataList() const return clientDataList; } -DataInfo *UpdateController::getCurrentDataInfo() //TODO: переименовать и перебросить в AssetManager +DataInfo *UpdateController::getCurrentDataInfo() { return dataInfo; } -QList *UpdateController::getDatas() const //TODO: переименовать и перебросить в AssetManager +QList *UpdateController::getDatas() const { return datas; } -void UpdateController::clearCurrentDataInfo() //TODO: переименовать и перебросить в AssetManager +void UpdateController::clearCurrentDataInfo() { delete dataInfo; } diff --git a/ServerLMS/ServerLMS/Systems/updatecontroller.h b/ServerLMS/ServerLMS/Systems/updatecontroller.h index d8037a9..611ef2f 100644 --- a/ServerLMS/ServerLMS/Systems/updatecontroller.h +++ b/ServerLMS/ServerLMS/Systems/updatecontroller.h @@ -21,6 +21,7 @@ class ClientHandler; class AssetsManager; class ServerLMSWidget; class CommonClientHandler; +class Logger; class UpdateController : public QObject { @@ -29,7 +30,7 @@ class UpdateController : public QObject public: explicit UpdateController(QObject *parent = 0); - void initialize(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager); + void initialize(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager,Logger *logger); void compareFiles(ClientHandler* handler, QByteArray array); void showHash(); void calculateFullHash(); diff --git a/ServerLMS/ServerLMS/serverlmswidget.cpp b/ServerLMS/ServerLMS/serverlmswidget.cpp index c943ec0..f52eb00 100644 --- a/ServerLMS/ServerLMS/serverlmswidget.cpp +++ b/ServerLMS/ServerLMS/serverlmswidget.cpp @@ -72,14 +72,14 @@ ServerLMSWidget::ServerLMSWidget(QWidget *parent) : logger->setTypeLog("widget"); - connect(updateController,&UpdateController::sigLogMessage,logger,&Logger::addTextToLogger); + connect(dataParser,&DataParser::sigLogMessage,logger,&Logger::addTextToLogger); connect(this,&ServerLMSWidget::sigUpdateController,updateController,&UpdateController::initialize,Qt::DirectConnection); connect(this,&ServerLMSWidget::sigLog,logger,&Logger::addTextToLogger,Qt::AutoConnection); connect(this,&ServerLMSWidget::sigCalculateFullHash,updateController,&UpdateController::calculateFullHash,Qt::AutoConnection); - emit sigUpdateController(commonClientHandler,dataParser,assetsManager); + emit sigUpdateController(commonClientHandler,dataParser,assetsManager,logger); on_btnStartServer_clicked(); first = true; diff --git a/ServerLMS/ServerLMS/serverlmswidget.h b/ServerLMS/ServerLMS/serverlmswidget.h index d5e697e..545d822 100644 --- a/ServerLMS/ServerLMS/serverlmswidget.h +++ b/ServerLMS/ServerLMS/serverlmswidget.h @@ -59,7 +59,7 @@ signals: void sigRecognize(); void sigLog(QString log); void sigCalculateFullHash(); - void sigUpdateController(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager); + void sigUpdateController(CommonClientHandler* commonClientHandler,DataParser *dataParser,AssetsManager *assetManager,Logger *logger); QTcpSocket* sigGetSocket();