ref: segregate dbAnswer

This commit is contained in:
semenov
2025-01-14 17:05:54 +03:00
parent 0e3f4852fe
commit b2b445e1f1
8 changed files with 160 additions and 109 deletions

View File

@@ -55,6 +55,8 @@ add_library(ServerLMS SHARED
Systems/Parsers/dataparser.h
Systems/Parsers/clientanswerparser.cpp
Systems/Parsers/clientanswerparser.h
Systems/Parsers/dbanswerparser.cpp
Systems/Parsers/dbanswerparser.h
Systems/processingsystem.cpp
Systems/processingsystem.h
Systems/sendsystem.cpp

View File

@@ -8,8 +8,12 @@ QObject(parent)
{
this->processingSystem = processingSystem;
this->assetsManager = assetManager;
clientAnswer = new ClientAnswerParser;
clientAnswer->initialize(this);
dbAnswer = new DBAnswerParser;
dbAnswer->initialize(this);
mutex = new QMutex;
if (!QDir(staticDataFolderName).exists()){
@@ -330,101 +334,7 @@ bool DataParser::saveDOMtoXML(QString nameFile, QDomDocument *commonDOM)
return true;
}
QByteArray DataParser::xmlAnswer_ClientQueryToDB_ListInstructors(bool result, QList<Instructor> *listInstructors)
{
QDomDocument commonDOM;
if(! loadBlankXML(":/resources/blankXML/ListInstructors.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListInstructors");
for(Instructor instructor : *listInstructors)
{
//Инструктор
QDomNode instructorNode = commonDOM.createElement("Instructor");
listNode.appendChild(instructorNode);
instructorNode.toElement().setAttribute("instructor_id", QString::number(instructor.getID()));
instructorNode.toElement().setAttribute("name", instructor.getName());
instructorNode.toElement().setAttribute("login", instructor.getLogin());
instructorNode.toElement().setAttribute("password", instructor.getPassword());
instructorNode.toElement().setAttribute("is_admin", instructor.getIsAdmin());
instructorNode.toElement().setAttribute("archived", instructor.getArchived());
instructorNode.toElement().setAttribute("logged_in", instructor.getLoggedIn());
}
saveDOMtoXML("ListInstructors.xml", &commonDOM);
return commonDOM.toByteArray();
}
QByteArray DataParser::xmlAnswer_ClientQueryToDB_ListGroups(bool result, QList<Group> *listGroups)
{
QDomDocument commonDOM;
if(! loadBlankXML(":/resources/blankXML/ListGroups.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListGroups");
for(Group group : *listGroups)
{
//Группа
QDomNode groupNode = commonDOM.createElement("Group");
listNode.appendChild(groupNode);
groupNode.toElement().setAttribute("group_id", QString::number(group.getID()));
groupNode.toElement().setAttribute("name", group.getName());
}
saveDOMtoXML("ListGroups.xml", &commonDOM);
return commonDOM.toByteArray();
}
QByteArray DataParser::xmlAnswer_ClientQueryToDB_ListTrainees(bool result, QList<Trainee> *listTrainees)
{
QDomDocument commonDOM;
if(! loadBlankXML(":/resources/blankXML/ListTrainees.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListTrainees");
for(Trainee trainee : *listTrainees)
{
//Обучаемый
QDomNode traineeNode = commonDOM.createElement("Trainee");
listNode.appendChild(traineeNode);
traineeNode.toElement().setAttribute("trainee_id", trainee.getID());
traineeNode.toElement().setAttribute("name", trainee.getName());
traineeNode.toElement().setAttribute("login", trainee.getLogin());
traineeNode.toElement().setAttribute("password", trainee.getPassword());
traineeNode.toElement().setAttribute("archived", trainee.getArchived());
traineeNode.toElement().setAttribute("logged_in", trainee.getLoggedIn());
traineeNode.toElement().setAttribute("group_trainee", trainee.getGroup().getID());
traineeNode.toElement().setAttribute("computer_trainee", trainee.getComputer().getID());
//trainee.setTasks()
}
saveDOMtoXML("ListTrainees.xml", &commonDOM);
return commonDOM.toByteArray();
}
QByteArray DataParser::xmlAnswer_ClientQueryToDB_ListComputers(bool result, QList<Computer> *listComputers)
{
//TODO
return QByteArray();
}
QByteArray DataParser::xmlAnswer_ClientQueryToDB_ListClassrooms(bool result, QList<Classroom> *listClassrooms)
{
//TODO
return QByteArray();
}
QByteArray DataParser::xmlAnswer_ClientQueryToDB_ListTasks(bool result, QList<Task> *listTasks)
{
//TODO
return QByteArray();
}
QByteArray DataParser::readTempFile()
{
@@ -453,3 +363,8 @@ ClientAnswerParser *DataParser::ClientAnswer() const
{
return clientAnswer;
}
DBAnswerParser *DataParser::DbAnswer() const
{
return dbAnswer;
}

View File

@@ -6,6 +6,7 @@
#include "Systems/assetsmanager.h"
#include "Systems/logger.h"
#include "Systems/Parsers/clientanswerparser.h"
#include "dbanswerparser.h"
#include "serverlmswidget.h"
#include <QByteArray>
@@ -20,6 +21,7 @@ class ProcessingSystem;
class ClientHandler;
class AssetsManager;
class ClientAnswerParser;
class DBAnswerParser;
class DataParser : public QObject
{
@@ -34,17 +36,10 @@ public:
bool loadBlankXML(QString nameFile, QDomDocument* commonDOM);
bool saveDOMtoXML(QString nameFile, QDomDocument* commonDOM);
QByteArray xmlAnswer_ClientQueryToDB_ListInstructors(bool result, QList<Instructor>* listInstructors);
QByteArray xmlAnswer_ClientQueryToDB_ListGroups(bool result, QList<Group> *listGroups);
QByteArray xmlAnswer_ClientQueryToDB_ListTrainees(bool result, QList<Trainee> *listTrainees);
QByteArray xmlAnswer_ClientQueryToDB_ListComputers(bool result, QList<Computer> *listComputers);
QByteArray xmlAnswer_ClientQueryToDB_ListClassrooms(bool result, QList<Classroom> *listClassrooms);
QByteArray xmlAnswer_ClientQueryToDB_ListTasks(bool result, QList<Task> *listTasks);
QByteArray xmlAnswer_currentVersion();
~DataParser();
ClientAnswerParser *ClientAnswer() const;
DBAnswerParser *DbAnswer() const;
signals:
void sigLogMessage(QString log);
@@ -56,6 +51,7 @@ private:
ProcessingSystem *processingSystem;
AssetsManager *assetsManager;
ClientAnswerParser *clientAnswer;
DBAnswerParser *dbAnswer;
QByteArray readTempFile();
};

View File

@@ -0,0 +1,109 @@
#include "dbanswerparser.h"
DBAnswerParser::DBAnswerParser(QObject *parent) : QObject(parent)
{
}
void DBAnswerParser::initialize(DataParser *dataParser)
{
this->dataParser = dataParser;
}
QByteArray DBAnswerParser::listInstructors(bool result, QList<Instructor> *listInstructors)
{
QDomDocument commonDOM;
if(! dataParser->loadBlankXML(":/resources/blankXML/ListInstructors.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListInstructors");
for(Instructor instructor : *listInstructors)
{
//Инструктор
QDomNode instructorNode = commonDOM.createElement("Instructor");
listNode.appendChild(instructorNode);
instructorNode.toElement().setAttribute("instructor_id", QString::number(instructor.getID()));
instructorNode.toElement().setAttribute("name", instructor.getName());
instructorNode.toElement().setAttribute("login", instructor.getLogin());
instructorNode.toElement().setAttribute("password", instructor.getPassword());
instructorNode.toElement().setAttribute("is_admin", instructor.getIsAdmin());
instructorNode.toElement().setAttribute("archived", instructor.getArchived());
instructorNode.toElement().setAttribute("logged_in", instructor.getLoggedIn());
}
dataParser->saveDOMtoXML("ListInstructors.xml", &commonDOM);
return commonDOM.toByteArray();
}
QByteArray DBAnswerParser::listGroups(bool result, QList<Group> *listGroups)
{
QDomDocument commonDOM;
if(! dataParser->loadBlankXML(":/resources/blankXML/ListGroups.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListGroups");
for(Group group : *listGroups)
{
//Группа
QDomNode groupNode = commonDOM.createElement("Group");
listNode.appendChild(groupNode);
groupNode.toElement().setAttribute("group_id", QString::number(group.getID()));
groupNode.toElement().setAttribute("name", group.getName());
}
dataParser->saveDOMtoXML("ListGroups.xml", &commonDOM);
return commonDOM.toByteArray();
}
QByteArray DBAnswerParser::listTrainees(bool result, QList<Trainee> *listTrainees)
{
QDomDocument commonDOM;
if(! dataParser->loadBlankXML(":/resources/blankXML/ListTrainees.xml", &commonDOM))
return QByteArray();
QDomNode listNode = commonDOM.namedItem("ListTrainees");
for(Trainee trainee : *listTrainees)
{
//Обучаемый
QDomNode traineeNode = commonDOM.createElement("Trainee");
listNode.appendChild(traineeNode);
traineeNode.toElement().setAttribute("trainee_id", trainee.getID());
traineeNode.toElement().setAttribute("name", trainee.getName());
traineeNode.toElement().setAttribute("login", trainee.getLogin());
traineeNode.toElement().setAttribute("password", trainee.getPassword());
traineeNode.toElement().setAttribute("archived", trainee.getArchived());
traineeNode.toElement().setAttribute("logged_in", trainee.getLoggedIn());
traineeNode.toElement().setAttribute("group_trainee", trainee.getGroup().getID());
traineeNode.toElement().setAttribute("computer_trainee", trainee.getComputer().getID());
//trainee.setTasks()
}
dataParser->saveDOMtoXML("ListTrainees.xml", &commonDOM);
return commonDOM.toByteArray();
}
QByteArray DBAnswerParser::listComputers(bool result, QList<Computer> *listComputers)
{
//TODO
return QByteArray();
}
QByteArray DBAnswerParser::listClassrooms(bool result, QList<Classroom> *listClassrooms)
{
//TODO
return QByteArray();
}
QByteArray DBAnswerParser::listTasks(bool result, QList<Task> *listTasks)
{
//TODO
return QByteArray();
}

View File

@@ -0,0 +1,29 @@
#ifndef DBANSWERPARSER_H
#define DBANSWERPARSER_H
#include "dataparser.h"
#include "serverlmswidget.h"
#include <QObject>
#include <QDomDocument>
class DBAnswerParser : public QObject
{
Q_OBJECT
public:
explicit DBAnswerParser(QObject *parent = nullptr);
void initialize(DataParser *dataParser);
QByteArray listInstructors(bool result, QList<Instructor> *listInstructors);
QByteArray listGroups(bool result, QList<Group> *listGroups);
QByteArray listTrainees(bool result, QList<Trainee> *listTrainees);
QByteArray listComputers(bool result, QList<Computer> *listComputers);
QByteArray listClassrooms(bool result, QList<Classroom> *listClassrooms);
QByteArray listTasks(bool result, QList<Task> *listTasks);
signals:
private:
DataParser *dataParser;
};
#endif // DBANSWERPARSER_H

View File

@@ -2,7 +2,7 @@
#define COMMONCLIENTHANDLER_H
#include <QObject>
#include <clienthandler.h>
#include "clienthandler.h"
class ProcessingSystem;
class DataParser;

View File

@@ -134,13 +134,13 @@ void ProcessingSystem::processingClientQueryToDB(ClientHandler *client, ClientQu
QList<Trainee> listTrainees = providerDBLMS->GetListAllTrainees();
QList<Group> listGroups = providerDBLMS->GetListAllGroups();
arrayAnswer = dataParser->xmlAnswer_ClientQueryToDB_ListInstructors(true, &listInstructors);
arrayAnswer = dataParser->DbAnswer()->listInstructors(true, &listInstructors);
client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_INSTRUCTORS);
arrayAnswer = dataParser->xmlAnswer_ClientQueryToDB_ListGroups(true, &listGroups);
arrayAnswer = dataParser->DbAnswer()->listGroups(true, &listGroups);
client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_GROUPS);
arrayAnswer = dataParser->xmlAnswer_ClientQueryToDB_ListTrainees(true, &listTrainees);
arrayAnswer = dataParser->DbAnswer()->listTrainees(true, &listTrainees);
client->sendXmlAnswer(arrayAnswer, PacketType::TYPE_XMLANSWER_QUERY_DB__LIST_TRAINEES);
break;
}