diff --git a/DOCS/.obsidian/workspace.json b/DOCS/.obsidian/workspace.json index dbd38c5..0e9c7f9 100644 --- a/DOCS/.obsidian/workspace.json +++ b/DOCS/.obsidian/workspace.json @@ -220,19 +220,19 @@ "active": "9608f84166966ca9", "lastOpenFiles": [ "AssetManagerScheme.md", + "Алексей/DataParser scheme.md", + "Алексей/AssetManagerScheme.md", + "MainScheme.md", "Как умеем принимать, как умеем отправлять!.md", "Порядок сборки Unity билда под сервер.md", "Образец отправки сообщения с маркером.md", "Алексей/Board.md", - "Алексей/DataParser scheme.md", "Алексей/ProcessingSystem scheme.md", - "MainScheme.md", "Что умеем отправлять Server - Client QT.md", "CLIENT SERVER.canvas", "Алексей/Рефакторинг.md", "Алексей/ТЕСТ-КЕЙСЫ.md", "Алексей/Чек лист по переносу.md", - "Алексей/AssetManagerScheme.md", "Без названия.md", "Андрей/Безымянная Kanban-доска.md", "Андрей/ВАЖНАЯ ЗАМЕТКА.md", diff --git a/DOCS/MainScheme.md b/DOCS/MainScheme.md index fba2e6e..22549fa 100644 --- a/DOCS/MainScheme.md +++ b/DOCS/MainScheme.md @@ -447,14 +447,12 @@ kpddpbuNBDWvhp0AUCNuPircyTjgCafrN9oHIzRhPnk1GfuldxPtQccBugBlwNbhrcBwIBnBkCsgRbsG q08fRlDsOdG7p6vs8YGTDFso1vj8QriYciMOhgwgXUdxng0dG/h2dogdg4WgWtBCAQOc2tge9WmEe84vJfcG5m0sm5rP8L3kZwF/re83KOVhqTFcC6vvSY0YPcCptv3Nv3jh4mBFABS1tbhSADwA3gBwB9AL8At0PQAZgH0Ut0C8AnDnABFDi9FrClEANxLoJ49iVY2bs54YqBYwGFIBxllPhxTEP94Qqk8pJGJyUaYOKU8NL3VLGk8Ja8GdhbYO -wpjlq4DGnu4D0fkWdpbHF97znMDEPsYCc3lv0Qfuy4y9qANZWOpsyylCUGjgtgChDEt2oAPV6CBIspfLKtV1u9FfjPjowGGC8uis0ciDurcI/Kdw8NPlVBXokC9/tc4mBBwBlwFUAR6Jhk26Ld9kCgnAEgP/5kbKcVfQqENvIEtAiII70cML8MBQRhhduDsJ+3D5NuHtIo06HKCGnk6YAql5dIAQZlMngYD1QYl9NQch8lgTjJeuuXsl5OptmdqE +wpjlq4DGnu4D0fkWdpbHF97znMDEPsYCc3lv0Qfuy4y9qANZWOpsyylCUGjgtgChDEt2oAPV6CBIspfFuo5VjBgpIOTBuYnb9dyIMNmjkQd1bj4gUsJ1gAQecdwANVBi8HAA92FEATgLnloAOmAMgNGw1ePUAGAN2ZTJC3dKKBUBEwUmDoQGPIRAPxhjIukAHRGV8TgQUBUwR0xj0r9lyiPGDyXp8w8wemDfsi8AWWlTcywQWDMwYYCawf/Vfslm -0aMrPpTQDDgNeh5YJhsP0B6txZ2xM6DBhsnNROJVl8+MwU61jSc4VhK5xXgM5r0PrdRXhqkGymjlLbhL9igR35pfoSN5qgJcJAVSNTTl69VgkwJJACMBMAL8BLyAHhlANfsW/gpUHKi0hIljNgTEA8dsCpxBxoC85yZPAhe+GmD/1tsIohFmCEAUx983m5cTgSDszgSqCWWtm8QjvZsqwYsCGboaU6wfqCjOOpsXCs2CiSrPow5m940bLi0tgmYd +CcHoqMGwVAAMwXVFFgW2COwaeQ83lxI0wbWD9ANrMsNs7ZuwRWD9brmCTYvmDGwekAg2DJ1SwVODywXWCtvlbQxwekBDFmSUCTOxM1wcyldeM0RcBMPgUwcwAOmvB0CDFFxoAbRYbPC0V76tGDjwX1UrJPPgJGJRo4zlsZuENGCjAGwADANd0GAAQAC0GbFboCZ53kNyodwdbhEHJwUUwcGASACX5cwNGDIIXkUTgK+kEEOlsSAACAgdAgBDFrgB -bjLDA28H681AZ0UBwRSEhwT1EjQLSg5GACCuilOC5PjODSdgbcCgW0NqVlB52AZVc7HhAAtwVJsdwdIDwANVBi8HAA92FEATgLnloAOmAMgNGw1ePUAGAN2ZTJC3dKKBUBZIXJDoQGPIRAPxhjIukAHRGV8AIVxIlIcelfsuURpIeS9PmIpCOmNpD0gC8AQIYD9DIcpDfsmpDZpuy0LIcZD9ANZDcnoqM7If/VfstbhFgS5CoACpCo3nm9NIUZDX +NAMEAsAshDCzs/QEnvgB8iKQBlAMxgAABR74fQIUQuxhXgK+ojAAACU/oFPoygHTQY+GIhZEItilELSix4wFAtEIYhfnDbBzYMHEsKWaAmAMy2p9B1wQvFD6IIMwh2EPqug6iIAr6UGGIvAjBBvxzYx9AaBUBn4hdgC3QDE2YARIIdiqENWAGEKwhhDmLwiEz0WCAGaIn4KXsteVaiYQGCA5kLde8YhqiU9H0A+4J2YVQx3qj/AvQ5kMYAVkJdAE -ISZCsFtWpPId5DtZjRCCgCFDfskGwZOgZCTYv5CvIVZCpzsscn8JFD0gIYsySgSZ2JqlDmUrrxmiLgJh8ApDmAB014OgQZuRObxbIBbFdgmn86qA+hiofCArJL/QoUE71mIGftT4pAAjAGwADANd0GAAQAC0Bt0nRnMA/ONlD3ITy5OCgpDgwCQAS/LmBxIRNC8iicBX0ggh0tiQAAQEDoEAIYtcAJoBggFgEloYWdn6Ak98APkRSAMoBmMAAAKP - -fD6Bc6F2MK8BX1EYAAASn9Ap9GUA6aDHwR0NOhFsQuhaUWPGAoBuh90KGhcUP4wjkNPIsKWaAmAMy2p9B1wQvFD6III2hW0Pqug6iIAr6UGGIvBEhBvxzYx9AaBUBiGhdgC3QDE2YARIIdiK0NWA60M2hhDmLwiEz0WCAGaInUKXsteVaiYQGCA5MLde8YhqiU9H0AeUJ2YVQx3qj/AvQ5MMYAVMJdAEPXX44AEfoFN0uozHE6ilaCAAA=== +PXX44AEfoFN0uozHE6ilaCAAA=== ``` %% \ No newline at end of file diff --git a/ServerLMS/ServerLMS/Systems/assetsmanager.cpp b/ServerLMS/ServerLMS/Systems/assetsmanager.cpp index d81e9ce..ee883e2 100644 --- a/ServerLMS/ServerLMS/Systems/assetsmanager.cpp +++ b/ServerLMS/ServerLMS/Systems/assetsmanager.cpp @@ -8,7 +8,7 @@ AssetsManager::AssetsManager(QObject *parent) : QObject(parent) void AssetsManager::initialize(UpdateController* updateContoller,DataParser *dataParser) { this->updateController = updateContoller; - connect(this,&AssetsManager::sigSaveVersion,dataParser,&DataParser::saveVersionToFile); + connect(this,&AssetsManager::sigSaveVersion,updateContoller,&UpdateController::saveVersionToFile); datas = new QList; } diff --git a/ServerLMS/ServerLMS/Systems/dataparser.cpp b/ServerLMS/ServerLMS/Systems/dataparser.cpp index fa284ba..291834a 100644 --- a/ServerLMS/ServerLMS/Systems/dataparser.cpp +++ b/ServerLMS/ServerLMS/Systems/dataparser.cpp @@ -234,41 +234,6 @@ void DataParser::xmlParser(ClientHandler *client, QByteArray array) }//while(!xmlReader.atEnd()) } -void DataParser::xmlFileDataParse(QByteArray array) -{ - QXmlStreamReader xmlReader(array); - datas = new QList; - xmlReader.readNext(); - - //Крутимся в цикле до тех пор, пока не достигнем конца документа - while(!xmlReader.atEnd()) - { - //Проверяем, является ли элемент началом тега - if(xmlReader.isStartElement()) - { - if(xmlReader.name() == "FileData") - { - FileData data; - - foreach(const QXmlStreamAttribute &attr,xmlReader.attributes()) - { - QString name = attr.name().toString(); - QString value = attr.value().toString(); - - if(name == "Path") - data.path = value; - else if(name == "Hash") - data.hash = value; - } - - datas->append(data); - } - } - - xmlReader.readNext(); - } -} - QByteArray DataParser::xmlAnswer(QList listTag, QString elemUp1, QString elemUp2) { try { @@ -574,48 +539,7 @@ QByteArray DataParser::xmlAnswer_currentVersion() return array; } -void DataParser::createVersionListXmlAnswer(QList version) //TODO: переименовать и перебросить в AssetManager -{ - QList listTag; - - foreach(StreamingVersionData* ver,version) - { - SAttribute attribute1 = {"Version", ver->getViewName()}; - SAttribute attribute2 = {"Created", ver->getCreateData().toString()}; - - QList listAttr = {attribute1, attribute2}; - SXmlAnswerTag tag = {"VersionData", listAttr}; - - listTag.append(tag); - } - - - QFile file(versionListFile); - file.open(QIODevice::WriteOnly); - - QXmlStreamWriter xmlWriter(&file); - xmlWriter.setAutoFormatting(true); - xmlWriter.writeStartDocument(); - xmlWriter.writeStartElement("VersionList"); - - foreach(SXmlAnswerTag tag,listTag) - { - xmlWriter.writeStartElement(tag.elementName); - - foreach(SAttribute attribute,tag.attr) - { - xmlWriter.writeAttribute(attribute.name,attribute.value); - } - - xmlWriter.writeEndElement(); - } - - xmlWriter.writeEndElement(); - xmlWriter.writeEndDocument(); - file.close(); -} - -QByteArray DataParser::readTempFile() //TODO: переименовать и перебросить в AssetManager +QByteArray DataParser::readTempFile() { QByteArray array; QFile fileR(tempFile); @@ -633,40 +557,6 @@ QByteArray DataParser::readTempFile() //TODO: переименовать и п return array; } -void DataParser::saveVersionToFile(StreamingVersionData *streamingVersion) //TODO: переименовать и перебросить в AssetManager -{ - QFile file(version); - file.open(QFile::WriteOnly); - - QXmlStreamWriter xmlWriter(&file); - xmlWriter.setAutoFormatting(true); - xmlWriter.writeStartDocument(); - - xmlWriter.writeStartElement("VersionData"); - xmlWriter.writeAttribute("Version",streamingVersion->getViewName()); - xmlWriter.writeAttribute("Created",streamingVersion->getCreateData().toString()); - - xmlWriter.writeEndElement(); - xmlWriter.writeEndDocument(); - - file.close(); -} - -DataInfo *DataParser::getCurrentDataInfo() //TODO: переименовать и перебросить в AssetManager -{ - return dataInfo; -} - -void DataParser::clearCurrentDataInfo() //TODO: переименовать и перебросить в AssetManager -{ - delete dataInfo; -} - -QList *DataParser::getDatas() const //TODO: переименовать и перебросить в AssetManager -{ - return datas; -} - DataParser::~DataParser() { diff --git a/ServerLMS/ServerLMS/Systems/dataparser.h b/ServerLMS/ServerLMS/Systems/dataparser.h index 1294594..5cc1eea 100644 --- a/ServerLMS/ServerLMS/Systems/dataparser.h +++ b/ServerLMS/ServerLMS/Systems/dataparser.h @@ -47,27 +47,17 @@ public: QByteArray xmlAnswer_tasks(QStringList listTasks); QByteArray xmlAnswer_currentVersion(); - void createVersionListXmlAnswer(QList version); - DataInfo *getCurrentDataInfo(); - void clearCurrentDataInfo(); ~DataParser(); - QList *getDatas() const; - - signals: void sigLogMessage(QString log); -public slots: - void saveVersionToFile(StreamingVersionData *streamingVersion); private: QMutex *mutex; - QList *datas; + ProcessingSystem *processingSystem; AssetsManager *assetsManager; - DataInfo *dataInfo; - QByteArray readTempFile(); }; diff --git a/ServerLMS/ServerLMS/Systems/recognizesystem.cpp b/ServerLMS/ServerLMS/Systems/recognizesystem.cpp index 21b9131..b610fe8 100644 --- a/ServerLMS/ServerLMS/Systems/recognizesystem.cpp +++ b/ServerLMS/ServerLMS/Systems/recognizesystem.cpp @@ -154,7 +154,7 @@ void RecognizeSystem::recognize() if(client->getIsUnity()) { - DataInfo *currentFileData = dataParser->getCurrentDataInfo(); + DataInfo *currentFileData = updateController->getCurrentDataInfo(); filePath = currentFileData->path; filePath = Tools::createSharedPath(filePath); @@ -209,7 +209,7 @@ void RecognizeSystem::recognize() file.close(); filePath.clear(); - dataParser->clearCurrentDataInfo(); + updateController->clearCurrentDataInfo(); socket->waitForReadyRead(100); diff --git a/ServerLMS/ServerLMS/Systems/updatecontroller.cpp b/ServerLMS/ServerLMS/Systems/updatecontroller.cpp index 98f5965..59029ca 100644 --- a/ServerLMS/ServerLMS/Systems/updatecontroller.cpp +++ b/ServerLMS/ServerLMS/Systems/updatecontroller.cpp @@ -56,8 +56,8 @@ void UpdateController::compareFiles(ClientHandler* handler, QByteArray array) mutex->lock(); loadHash(); clientDataList.clear(); - dataParser->xmlFileDataParse(array); - clientDataList.append(*dataParser->getDatas()); + xmlFileDataParse(array); + clientDataList.append(*datas); checkNeedUpdate(handler); mutex->unlock(); } @@ -420,10 +420,70 @@ void UpdateController::calculateSharedHash() } - dataParser->createVersionListXmlAnswer(*versionList); + createVersionListXmlAnswer(*versionList); assetManager->setVersionList(versionList); } +void UpdateController::createVersionListXmlAnswer(QList version) //TODO: переименовать и перебросить в AssetManager +{ + QList listTag; + + foreach(StreamingVersionData* ver,version) + { + SAttribute attribute1 = {"Version", ver->getViewName()}; + SAttribute attribute2 = {"Created", ver->getCreateData().toString()}; + + QList listAttr = {attribute1, attribute2}; + SXmlAnswerTag tag = {"VersionData", listAttr}; + + listTag.append(tag); + } + + + QFile file(versionListFile); + file.open(QIODevice::WriteOnly); + + QXmlStreamWriter xmlWriter(&file); + xmlWriter.setAutoFormatting(true); + xmlWriter.writeStartDocument(); + xmlWriter.writeStartElement("VersionList"); + + foreach(SXmlAnswerTag tag,listTag) + { + xmlWriter.writeStartElement(tag.elementName); + + foreach(SAttribute attribute,tag.attr) + { + xmlWriter.writeAttribute(attribute.name,attribute.value); + } + + xmlWriter.writeEndElement(); + } + + xmlWriter.writeEndElement(); + xmlWriter.writeEndDocument(); + file.close(); +} +void UpdateController::saveVersionToFile(StreamingVersionData *streamingVersion) //TODO: переименовать и перебросить в AssetManager +{ + QFile file(version); + file.open(QFile::WriteOnly); + + QXmlStreamWriter xmlWriter(&file); + xmlWriter.setAutoFormatting(true); + xmlWriter.writeStartDocument(); + + xmlWriter.writeStartElement("VersionData"); + xmlWriter.writeAttribute("Version",streamingVersion->getViewName()); + xmlWriter.writeAttribute("Created",streamingVersion->getCreateData().toString()); + + xmlWriter.writeEndElement(); + xmlWriter.writeEndDocument(); + + file.close(); +} + + void UpdateController::sendNewVersionList() { commonClientHandler->sendNewVersionListToAllClient(); @@ -434,6 +494,41 @@ bool UpdateController::checkDuplicate(QString versionName) return assetManager->findDuplicate(versionName); } +void UpdateController::xmlFileDataParse(QByteArray array) +{ + QXmlStreamReader xmlReader(array); + datas = new QList; + xmlReader.readNext(); + + //Крутимся в цикле до тех пор, пока не достигнем конца документа + while(!xmlReader.atEnd()) + { + //Проверяем, является ли элемент началом тега + if(xmlReader.isStartElement()) + { + if(xmlReader.name() == "FileData") + { + FileData data; + + foreach(const QXmlStreamAttribute &attr,xmlReader.attributes()) + { + QString name = attr.name().toString(); + QString value = attr.value().toString(); + + if(name == "Path") + data.path = value; + else if(name == "Hash") + data.hash = value; + } + + datas->append(data); + } + } + + xmlReader.readNext(); + } +} + void UpdateController::printFileList(QList fileData) { QListIterator iterator(fileData); @@ -463,6 +558,21 @@ QList UpdateController::getClientDataList() const return clientDataList; } +DataInfo *UpdateController::getCurrentDataInfo() //TODO: переименовать и перебросить в AssetManager +{ + return dataInfo; +} + +QList *UpdateController::getDatas() const //TODO: переименовать и перебросить в AssetManager +{ + return datas; +} + +void UpdateController::clearCurrentDataInfo() //TODO: переименовать и перебросить в AssetManager +{ + delete dataInfo; +} + UpdateController::~UpdateController() { diff --git a/ServerLMS/ServerLMS/Systems/updatecontroller.h b/ServerLMS/ServerLMS/Systems/updatecontroller.h index ab7c0f1..ddb4cf7 100644 --- a/ServerLMS/ServerLMS/Systems/updatecontroller.h +++ b/ServerLMS/ServerLMS/Systems/updatecontroller.h @@ -12,6 +12,7 @@ #include #include +#include class TCPServer; class SendSystem; @@ -47,14 +48,20 @@ public: ~UpdateController(); + DataInfo *getCurrentDataInfo(); + void clearCurrentDataInfo(); + QList *getDatas() const; + void createVersionListXmlAnswer(QList version); + void saveVersionToFile(StreamingVersionData *streamingVersion); + void xmlFileDataParse(QByteArray array); public slots: void changeAssetVersion(QString versionName); void createCopyVersion(QString versionName,QString newVersionName); void deleteAssetVersion(QString versionName); void setUpCurrentServerHash(); + signals: void sigLogMessage(QString message); - //void sigSendPackege(PacketType packetType); private: QList clientDataList; @@ -63,6 +70,9 @@ private: QList fileSendList; QList fileDeleteList; + QList *datas; + DataInfo *dataInfo; + QString buildPath; QString currentStreamingPath; QString sharedDataPath;