new aproach to transfering data

This commit is contained in:
Ondřej Fischer 2019-11-28 10:47:48 +01:00
parent 5cc57ac9e7
commit ef0eefa741
3 changed files with 40 additions and 47 deletions

@ -1 +1 @@
Subproject commit 61feac4632372fcf781449da0bf0de14f1793af8 Subproject commit 2041fed9fab14658ceb574edaf5e4d31ed81e23a

View File

@ -39,8 +39,6 @@ void ColnodAPI::downloadData()
qWarning(colnod) << "Data from" << request->url() << "are invalid"; qWarning(colnod) << "Data from" << request->url() << "are invalid";
mValid = false; mValid = false;
} }
saveUpdatedTokens(request->responseData());
emit partOfDataReady(data);
}; };
// if I have all data emit downloadDataFinished // if I have all data emit downloadDataFinished
@ -48,15 +46,31 @@ void ColnodAPI::downloadData()
auto tokensRequest = getTokensUpdated(mLastSync); auto tokensRequest = getTokensUpdated(mLastSync);
connect(tokensRequest.get(), &serversdk::Request::finished, errorHandler); connect(tokensRequest.get(), &serversdk::Request::finished, errorHandler);
connect(tokensRequest.get(), &serversdk::Request::finished, [=](){
saveUpdatedTokens(data, tokensRequest->responseData());
emit partOfDataReady(data);
});
auto deletedTokensRequest = getTokensDeleted(mLastSync); auto deletedTokensRequest = getTokensDeleted(mLastSync);
connect(deletedTokensRequest.get(), &serversdk::Request::finished, errorHandler); connect(deletedTokensRequest.get(), &serversdk::Request::finished, errorHandler);
connect(deletedTokensRequest.get(), &serversdk::Request::finished, [=](){
saveDeletedTokens(data, deletedTokensRequest->responseData());
emit partOfDataReady(data);
});
auto subjectsRequest = getSubjectsUpdated(mLastSync); auto subjectsRequest = getSubjectsUpdated(mLastSync);
connect(subjectsRequest.get(), &serversdk::Request::finished, errorHandler); connect(subjectsRequest.get(), &serversdk::Request::finished, errorHandler);
connect(subjectsRequest.get(), &serversdk::Request::finished, [=](){
saveUpdatedSubjects(data, subjectsRequest->responseData());
emit partOfDataReady(data);
});
auto deletedSubjectsRequest = getSubjectsDeleted(mLastSync); auto deletedSubjectsRequest = getSubjectsDeleted(mLastSync);
connect(deletedSubjectsRequest.get(), &serversdk::Request::finished, errorHandler); connect(deletedSubjectsRequest.get(), &serversdk::Request::finished, errorHandler);
connect(deletedSubjectsRequest.get(), &serversdk::Request::finished, [=](){
saveDeletedSubjects(data, deletedSubjectsRequest->responseData());
emit partOfDataReady(data);
});
}); });
} }
@ -132,18 +146,7 @@ std::shared_ptr<serversdk::Request> ColnodAPI::getSubjectsUpdated(const Timestam
auto request = composeRequest("/SubjectManager/getSubjectsUpdated", time.jsonData()); auto request = composeRequest("/SubjectManager/getSubjectsUpdated", time.jsonData());
request->setUserName(authToken); request->setUserName(authToken);
mReqMan->processRequest(request); mReqMan->processRequest(request);
connect(request.get(), &serversdk::Request::finished, [=](){ return request;
if (!checkRequest(request)) {
qWarning(colnod) << "ERROR during calling /SubjectManager/getSubjectsUpdated, request unsuccessful";
mValid = false;
}
else if (!checkResponse(request->responseData())) {
qWarning(colnod) << "Data from /SubjectManager/getSubjectsUpdated are invalid";
mValid = false;
}
saveUpdatedSubjects(request->responseData());
emit partOfDataReady();
});
} }
std::shared_ptr<serversdk::Request> ColnodAPI::getSubjectsDeleted(const Timestamp &time) std::shared_ptr<serversdk::Request> ColnodAPI::getSubjectsDeleted(const Timestamp &time)
@ -151,18 +154,7 @@ std::shared_ptr<serversdk::Request> ColnodAPI::getSubjectsDeleted(const Timestam
auto request = composeRequest("/SubjectManager/getSubjectsDeleted", time.jsonData()); auto request = composeRequest("/SubjectManager/getSubjectsDeleted", time.jsonData());
request->setUserName(authToken); request->setUserName(authToken);
mReqMan->processRequest(request); mReqMan->processRequest(request);
connect(request.get(), &serversdk::Request::finished, [=](){ return request;
if (!checkRequest(request)) {
qWarning(colnod) << "ERROR during calling /SubjectManager/getSubjectsDeleted, request unsuccessful";
mValid = false;
}
else if (!checkResponse(request->responseData())) {
qWarning(colnod) << "Data from /SubjectManager/getSubjectsDeleted are invalid";
mValid = false;
}
saveDeletedSubjects(request->responseData());
emit partOfDataReady();
});
} }
std::shared_ptr<serversdk::Request> ColnodAPI::setTokens(const QHash<QString, std::shared_ptr<Token>> &tokens) std::shared_ptr<serversdk::Request> ColnodAPI::setTokens(const QHash<QString, std::shared_ptr<Token>> &tokens)
@ -184,6 +176,7 @@ std::shared_ptr<serversdk::Request> ColnodAPI::setTokens(const QHash<QString, st
emit partOfDataProcessFinished(); emit partOfDataProcessFinished();
} }
}); });
return request;
} }
std::shared_ptr<serversdk::Request> ColnodAPI::deleteTokens(const QList<QString> &ids) std::shared_ptr<serversdk::Request> ColnodAPI::deleteTokens(const QList<QString> &ids)
@ -205,7 +198,7 @@ std::shared_ptr<serversdk::Request> ColnodAPI::deleteTokens(const QList<QString>
emit partOfDataProcessFinished(); emit partOfDataProcessFinished();
} }
}); });
return request;
} }
std::shared_ptr<serversdk::Request> ColnodAPI::composeRequest(const QString &endpoint, const QByteArray &data) std::shared_ptr<serversdk::Request> ColnodAPI::composeRequest(const QString &endpoint, const QByteArray &data)
@ -258,18 +251,18 @@ void ColnodAPI::setUserName(const QString &userName)
mUserName = userName; mUserName = userName;
} }
void ColnodAPI::areDataReady() void ColnodAPI::areDataReady(std::shared_ptr<Data> data)
{ {
if (++amountData == 4) { if (++amountData == 4) {
qInfo(colnod) << tab << "-> COLNOD DATA:"; qInfo(colnod) << tab << "-> COLNOD DATA:";
qInfo(colnod) << tab << tab << mData->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED"; qInfo(colnod) << tab << tab << data->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED";
qInfo(colnod) << tab << tab << mData->deletedTokens.size() << "TOKENS DELETED"; qInfo(colnod) << tab << tab << data->deletedTokens.size() << "TOKENS DELETED";
qInfo(colnod) << tab << tab << mData->updatedSubjects.size() << "SUBJECTS WERE ADDED/UPDATED"; qInfo(colnod) << tab << tab << data->updatedSubjects.size() << "SUBJECTS WERE ADDED/UPDATED";
qInfo(colnod) << tab << tab << mData->deletedSubjects.size() << "SUBJECTS DELETED"; qInfo(colnod) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED";
qInfo(colnod) << dash; qInfo(colnod) << dash;
emit downloadDataFinished(mData); emit downloadDataFinished(data);
newData(); newData();
} }
} }
@ -281,31 +274,31 @@ void ColnodAPI::isDataProcessFinished()
} }
} }
void ColnodAPI::saveUpdatedTokens(const QByteArray &responseData) void ColnodAPI::saveUpdatedTokens(std::shared_ptr<Data> data, const QByteArray &responseData)
{ {
mData->loadTokensFromJson(responseData); data->loadTokensFromJson(responseData);
} }
void ColnodAPI::saveDeletedTokens(const QByteArray &responseData) void ColnodAPI::saveDeletedTokens(std::shared_ptr<Data> data, const QByteArray &responseData)
{ {
QJsonDocument doc = QJsonDocument::fromJson(responseData); QJsonDocument doc = QJsonDocument::fromJson(responseData);
QJsonArray items = doc.object()["items"].toArray(); QJsonArray items = doc.object()["items"].toArray();
for (QJsonValueRef item : items) { for (QJsonValueRef item : items) {
mData->deletedTokens.append(item.toString()); data->deletedTokens.append(item.toString());
} }
} }
void ColnodAPI::saveUpdatedSubjects(const QByteArray &responseData) void ColnodAPI::saveUpdatedSubjects(std::shared_ptr<Data> data, const QByteArray &responseData)
{ {
mData->loadSubjectsFormJson(responseData); data->loadSubjectsFormJson(responseData);
} }
void ColnodAPI::saveDeletedSubjects(const QByteArray &responseData) void ColnodAPI::saveDeletedSubjects(std::shared_ptr<Data> data, const QByteArray &responseData)
{ {
QJsonDocument doc = QJsonDocument::fromJson(responseData); QJsonDocument doc = QJsonDocument::fromJson(responseData);
QJsonArray items = doc.object()["items"].toArray(); QJsonArray items = doc.object()["items"].toArray();
for (QJsonValueRef item : items) { for (QJsonValueRef item : items) {
mData->deletedSubjects.append(item.toString()); data->deletedSubjects.append(item.toString());
} }
} }

View File

@ -72,14 +72,14 @@ public:
bool isValid(); bool isValid();
private: private:
Q_SLOT void areDataReady(); Q_SLOT void areDataReady(std::shared_ptr<Data> data);
Q_SLOT void isDataProcessFinished(); Q_SLOT void isDataProcessFinished();
private: private:
void saveUpdatedTokens(const QByteArray &responseData); void saveUpdatedTokens(std::shared_ptr<Data> data, const QByteArray &responseData);
void saveUpdatedSubjects(const QByteArray &responseData); void saveUpdatedSubjects(std::shared_ptr<Data> data, const QByteArray &responseData);
void saveDeletedTokens(const QByteArray &responseData); void saveDeletedTokens(std::shared_ptr<Data> data, const QByteArray &responseData);
void saveDeletedSubjects(const QByteArray &responseData); void saveDeletedSubjects(std::shared_ptr<Data> data, const QByteArray &responseData);
void newData(); void newData();