Clanz and clanzy

This commit is contained in:
Ondřej Fischer 2019-11-21 11:50:12 +01:00
parent 97a00c098d
commit e5fa284f03
10 changed files with 72 additions and 91 deletions

View File

@ -10,10 +10,6 @@
#include "colnodapi.h"
constexpr auto equels = R"(==================================================================)";
constexpr auto underScore = R"(__________________________________________________________________)";
constexpr auto dash = R"(------------------------------------------------------------------)";
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);

View File

@ -2,11 +2,8 @@
Q_LOGGING_CATEGORY(colnod, "colnod.api");
ColnodAPI::ColnodAPI()
{
}
ColnodAPI::ColnodAPI(serversdk::RequestManager* reqMan, qint64 lastSync, bool dryMode, QString userName, QString password)
ColnodAPI::ColnodAPI(serversdk::RequestManager* reqMan, const qint64 &lastSync, const bool &dryMode, const QString &userName, const QString &password)
:mReqMan(reqMan), mUserName(userName), mPassword(password), mDryMode(dryMode)
{
mLastSync.set_timestamp(lastSync);
@ -36,7 +33,7 @@ void ColnodAPI::downloadData()
});
}
void ColnodAPI::processData(std::shared_ptr<Data> data)
void ColnodAPI::processData(const std::shared_ptr<Data> &data)
{
connect(this, &ColnodAPI::partOfDataProcessFinished, this, &ColnodAPI::isDataProcessFinished);
if ( !data->updatedTokens.isEmpty() && !mDryMode) {
@ -190,12 +187,12 @@ void ColnodAPI::areDataReady()
{
if (++amountData == 4) {
qInfo(colnod) << TAB << "-> COLNOD DATA:";
qInfo(colnod) << TAB << TAB << data->updatedTokens.size() << "TOKENS WERE MODIFIED";
qInfo(colnod) << TAB << TAB << data->deletedTokens.size() << "TOKENS MARKED FOR DELETION";
qInfo(colnod) << TAB << TAB << data->updatedSubjects.size() << "SUBJECTS WERE MODIFIED";
qInfo(colnod) << TAB << TAB << data->deletedSubjects.size() << "SUBJECTS MARKED FOR DELETION";
qInfo(colnod) << DASH;
qInfo(colnod) << tab << "-> COLNOD DATA:";
qInfo(colnod) << tab << tab << data->updatedTokens.size() << "TOKENS WERE MODIFIED";
qInfo(colnod) << tab << tab << data->deletedTokens.size() << "TOKENS MARKED FOR DELETION";
qInfo(colnod) << tab << tab << data->updatedSubjects.size() << "SUBJECTS WERE MODIFIED";
qInfo(colnod) << tab << tab << data->deletedSubjects.size() << "SUBJECTS MARKED FOR DELETION";
qInfo(colnod) << dash;
emit downloadDataFinished(data);
newData();
@ -205,10 +202,10 @@ void ColnodAPI::areDataReady()
void ColnodAPI::isDataProcessFinished()
{
if (++amountProccessesFinished == 2) {
qInfo(colnod) << TAB << "-> DATA PROCESSED TO COLNOD:";
qInfo(colnod) << TAB << TAB << data->updatedTokens.size() << "TOKENS UPDATED";
qInfo(colnod) << TAB << TAB << data->deletedTokens.size() << "TOKENS DELETED";
qInfo(colnod) << DASH;
qInfo(colnod) << tab << "-> DATA PROCESSED TO COLNOD:";
qInfo(colnod) << tab << tab << data->updatedTokens.size() << "TOKENS UPDATED";
qInfo(colnod) << tab << tab << data->deletedTokens.size() << "TOKENS DELETED";
qInfo(colnod) << dash;
emit dataProcessFinished();
}

View File

@ -33,11 +33,11 @@ class ColnodAPI: public QObject
{
Q_OBJECT
public:
ColnodAPI();
ColnodAPI(serversdk::RequestManager* reqMan, qint64 lastSync = 0, bool dryMode = false, QString userName = "spaceti", QString password = "spaceti1");
ColnodAPI() = default;
ColnodAPI(serversdk::RequestManager* reqMan, const qint64 &lastSync = 0, const bool &dryMode = false, const QString &userName = "spaceti", const QString &password = "spaceti1");
void downloadData();
void processData(std::shared_ptr<Data> data);
void processData(const std::shared_ptr<Data> &data);
// New approach
std::shared_ptr<serversdk::Request> requestLogin();
@ -89,7 +89,7 @@ private:
QString mUserName;
QString mPassword;
Timestamp mLastSync;
bool mDryMode;
bool mDryMode = false;
std::shared_ptr<Data> data;

View File

@ -1,9 +1,5 @@
#include "data.h"
Data::Data()
{
}
void Data::clear()
{

View File

@ -4,15 +4,15 @@
#include "subject.h"
// constants for output design
#define EQUALS "=================================================================="
#define UNDERSCORE "__________________________________________________________________"
#define DASH "------------------------------------------------------------------"
#define TAB "\t"
constexpr auto equals = "==================================================================";
constexpr auto underscore = "__________________________________________________________________";
constexpr auto dash = "------------------------------------------------------------------";
constexpr auto tab = "\t";
class Data
{
public:
Data();
Data() = default;
void clear();

View File

@ -2,8 +2,6 @@
Q_LOGGING_CATEGORY(database, "db.api");
#define STH 803
DatabaseAPI::DatabaseAPI(serversdk::DatabaseManager *dbMan, bool dryMode)
: mDryMode(dryMode),
mDbMan(dbMan),
@ -30,23 +28,23 @@ void DatabaseAPI::downloadData()
emit downloadDataFinished(composeData(updatedQuery, deletedQuery));
}
void DatabaseAPI::processData(std::shared_ptr<Data> data)
void DatabaseAPI::processData(const std::shared_ptr<Data> &data)
{
uploadTokens(data->updatedTokens);
uploadSubjects(data->updatedSubjects);
deleteItems(data->deletedTokens, "colnod_token");
deleteItems(data->deletedSubjects, "colnod_subject");
qInfo(database) << TAB << "-> DATA PROCESSED TO DATABASE:";
qInfo(database) << TAB << TAB << data->updatedTokens.size() << "TOKENS UPDATED";
qInfo(database) << TAB << TAB << data->deletedTokens.size() << "TOKENS DELETED";
qInfo(database) << TAB << TAB << data->updatedSubjects.size() << "SUBJECTS UPDATED";
qInfo(database) << TAB << TAB << data->deletedSubjects.size() << "SUBJECTS DELETED";
qInfo(database) << DASH;
qInfo(database) << tab << "-> DATA PROCESSED TO DATABASE:";
qInfo(database) << tab << tab << data->updatedTokens.size() << "TOKENS UPDATED";
qInfo(database) << tab << tab << data->deletedTokens.size() << "TOKENS DELETED";
qInfo(database) << tab << tab << data->updatedSubjects.size() << "SUBJECTS UPDATED";
qInfo(database) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED";
qInfo(database) << dash;
}
std::shared_ptr<Data> DatabaseAPI::composeData(QSqlQuery updatedQuery, QSqlQuery deletedQuery)
std::shared_ptr<Data> DatabaseAPI::composeData(const QSqlQuery &updatedQuery, QSqlQuery &deletedQuery)
{
auto data = std::make_shared<Data>();
auto list = utils->tableFromQuery<Token>(updatedQuery);
@ -57,10 +55,10 @@ std::shared_ptr<Data> DatabaseAPI::composeData(QSqlQuery updatedQuery, QSqlQuery
data->deletedTokens.append(deletedQuery.value(0).toString());
}
qInfo(database) << TAB << "-> DATABASE DATA:";
qInfo(database) << TAB << TAB << data->updatedTokens.size() << "TOKENS WERE MODIFIED";
qInfo(database) << TAB << TAB << data->deletedTokens.size() << "TOKENS MARKED FOR DELETION";
qInfo(database) << DASH ;
qInfo(database) << tab << "-> DATABASE DATA:";
qInfo(database) << tab << tab << data->updatedTokens.size() << "TOKENS WERE MODIFIED";
qInfo(database) << tab << tab << data->deletedTokens.size() << "TOKENS MARKED FOR DELETION";
qInfo(database) << dash ;
return data;
@ -72,9 +70,7 @@ qint64 DatabaseAPI::getLastSync()
if (query.next()){
return query.value(0).toLongLong();
}
else {
return -1;
}
}
void DatabaseAPI::setLastSync(qint64 timestamp)
@ -85,7 +81,7 @@ void DatabaseAPI::setLastSync(qint64 timestamp)
mDbMan->executeQuery(query);
}
void DatabaseAPI::setLastUpdate(QHash<QString, std::shared_ptr<Token>> tokens)
void DatabaseAPI::setLastUpdate(const QHash<QString, std::shared_ptr<Token>> &tokens)
{
auto query = mDbMan->createQuery();
for (const auto &token : tokens){
@ -95,9 +91,9 @@ void DatabaseAPI::setLastUpdate(QHash<QString, std::shared_ptr<Token>> tokens)
mDbMan->executeQuery(query);
}
qInfo(database) << EQUALS;
qInfo(database) << equals;
qInfo(database) << "Synchronize last update in database with colnod";
qInfo(database) << EQUALS;
qInfo(database) << equals;
}
qint64 DatabaseAPI::getNow()
@ -123,7 +119,7 @@ void DatabaseAPI::initNewTokens()
uploadTokens(tokensToInit);
}
void DatabaseAPI::uploadTokens(QHash<QString, std::shared_ptr<Token>> tokens)
void DatabaseAPI::uploadTokens(const QHash<QString, std::shared_ptr<Token>> &tokens)
{
auto query = mDbMan->createQuery();
for (const auto &token : tokens) {
@ -137,7 +133,7 @@ void DatabaseAPI::uploadTokens(QHash<QString, std::shared_ptr<Token>> tokens)
}
}
void DatabaseAPI::uploadSubjects(QHash<QString, std::shared_ptr<Subject>> subjects)
void DatabaseAPI::uploadSubjects(const QHash<QString, std::shared_ptr<Subject>> &subjects)
{
auto query = mDbMan->createQuery();
for (const auto &subject : subjects) {
@ -161,7 +157,7 @@ void DatabaseAPI::uploadSubjects(QHash<QString, std::shared_ptr<Subject>> subjec
}
}
void DatabaseAPI::deleteItems(QList<QString> ids, const QString &tableName)
void DatabaseAPI::deleteItems(const QList<QString> &ids, const QString &tableName)
{
auto query = mDbMan->createQuery();
QString nowString = QDateTime::fromMSecsSinceEpoch(getLastSync()).toString("yyyy-MM-dd hh:mm:ss.zzz");
@ -182,9 +178,7 @@ std::shared_ptr<Token> DatabaseAPI::getLastUpdate(const QString &id)
if (query.next()) {
return utils->tableFromQuery<Token>(query).at(0);
}
else {
return nullptr;
}
}
bool DatabaseAPI::exists(const QString &id, const QString &tableName)

View File

@ -20,18 +20,18 @@ public:
bool open();
void downloadData();
void processData(std::shared_ptr<Data> data);
void processData(const std::shared_ptr<Data> &data);
qint64 getLastSync();
void setLastSync(qint64 timestamp);
void setLastUpdate(QHash<QString, std::shared_ptr<Token> > tokens);
void setLastUpdate(const QHash<QString, std::shared_ptr<Token> > &tokens);
qint64 getNow();
void initNewTokens();
// process data
void uploadTokens(QHash<QString, std::shared_ptr<Token> > tokens);
void uploadSubjects(QHash<QString, std::shared_ptr<Subject> > subjects);
void deleteItems(QList<QString> ids, const QString &tableName);
void uploadTokens(const QHash<QString, std::shared_ptr<Token> > &tokens);
void uploadSubjects(const QHash<QString, std::shared_ptr<Subject> > &subjects);
void deleteItems(const QList<QString> &ids, const QString &tableName);
std::shared_ptr<Token> getLastUpdate(const QString &id);
@ -39,7 +39,7 @@ private:
bool exists(const QString &id, const QString &tableName);
QSqlQuery getUpdatedTokens();
std::shared_ptr<Data> composeData(QSqlQuery updatedQuery, QSqlQuery deletedQuery);
std::shared_ptr<Data> composeData(const QSqlQuery &updatedQuery, QSqlQuery &deletedQuery);
qint16 getNumOfTokensOfSubject(const QString &id);
QString getSubjectNameByTokenId(const QString &tokenId);

View File

@ -12,7 +12,7 @@ bool Subject::fromJson(const QByteArray &data)
QJsonObject attr = doc.object()["attributes"].toObject()["items"].toObject();
auto id = doc.object()["id"].toString();
for (auto key : attr.keys()) {
for (const auto &key : attr.keys()) {
auto newAtr = std::make_shared<SubjectAttribute>();
newAtr->setId(id + " " + key);
newAtr->setSubjectId(id);

View File

@ -32,7 +32,7 @@ void SyncManager::run()
{
qint64 syncBegin = database->getNow();
qInfo(syncmanager) << EQUALS;
qInfo(syncmanager) << equals;
qInfo(syncmanager) << "SYNCHRONIZATION BEGIN";
database->initNewTokens();
@ -49,9 +49,9 @@ void SyncManager::run()
qInfo(syncmanager) << "Update last synchronization time to time of this sync ("
<< QDateTime::fromMSecsSinceEpoch(syncBegin).toString("yyyy-MM-dd hh:mm:ss.zzz")
<< ")";
qInfo(syncmanager) << EQUALS;
qInfo(syncmanager) << equals;
qInfo(syncmanager) << "SYNCHRONIZATION FINISHED";
qInfo(syncmanager) << EQUALS;
qInfo(syncmanager) << equals;
QCoreApplication::exit();
});
@ -63,11 +63,11 @@ void SyncManager::run()
void SyncManager::downloadData()
{
qInfo(syncmanager) << EQUALS;
qInfo(syncmanager) << equals;
qInfo(syncmanager) << "DOWNLOADING DATA -> BEGIN";
qInfo(syncmanager) << DASH;
qInfo(syncmanager) << dash;
qInfo(syncmanager) << "Modified data since last synchronization (" << mlastSync.toDateString() << "):";
qInfo(syncmanager) << DASH;
qInfo(syncmanager) << dash;
connect(colnod.get(), &ColnodAPI::downloadDataFinished, this, &SyncManager::saveColnodData);
connect(database.get(), &DatabaseAPI::downloadDataFinished, this, &SyncManager::saveDatabaseData);
@ -78,11 +78,11 @@ void SyncManager::downloadData()
// finds conflicts -> changes on both sides (colnod and DB), apply newer change
void SyncManager::prepareData()
{
qInfo(syncmanager) << EQUALS;
qInfo(syncmanager) << equals;
qInfo(syncmanager) << "PREPARING DATA -> BEGIN";
qInfo(syncmanager) << DASH;
qInfo(syncmanager) << dash;
qInfo(syncmanager) << "Resolve conflicts ( changes on same item on both Colnod and DB ):";
qInfo(syncmanager) << DASH;
qInfo(syncmanager) << dash;
colnodDataToProcess = std::make_shared<Data>(*colnodData);
@ -108,10 +108,10 @@ void SyncManager::prepareData()
for (const auto &id : alreadySynced)
colnodDataToProcess->updatedTokens.remove(id);
qInfo(syncmanager) << TAB << "-> COLNOD DATA - CHANGES:";
qInfo(syncmanager) << TAB << TAB << conflicts.size() << "TOKENS WERE MODIFIED IN DATABASE";
qInfo(syncmanager) << TAB << TAB << alreadySynced.size() << "TOKENS WERE ALREADY SYNCED";
qInfo(syncmanager) << DASH;
qInfo(syncmanager) << tab << "-> COLNOD DATA - CHANGES:";
qInfo(syncmanager) << tab << tab << conflicts.size() << "TOKENS WERE MODIFIED IN DATABASE";
qInfo(syncmanager) << tab << tab << alreadySynced.size() << "TOKENS WERE ALREADY SYNCED";
qInfo(syncmanager) << dash;
conflicts.clear();
@ -124,28 +124,28 @@ void SyncManager::prepareData()
for (const auto &id : conflicts)
colnodDataToProcess->updatedTokens.remove(id);
qInfo(syncmanager) << TAB << "-> DATABASE DATA - CHANGES:";
qInfo(syncmanager) << TAB << TAB << conflicts.size() << "TOKENS WERE MODIFIED IN COLNOD";
qInfo(syncmanager) << DASH;
qInfo(syncmanager) << tab << "-> DATABASE DATA - CHANGES:";
qInfo(syncmanager) << tab << tab << conflicts.size() << "TOKENS WERE MODIFIED IN COLNOD";
qInfo(syncmanager) << dash;
qInfo(syncmanager) << "PREPARING DATA -> FINISHED";
qInfo(syncmanager) << EQUALS;
qInfo(syncmanager) << equals;
}
void SyncManager::processData()
{
qInfo(syncmanager) << EQUALS;
qInfo(syncmanager) << equals;
qInfo(syncmanager) << "PROCESSING DATA -> BEGIN";
qInfo(syncmanager) << DASH;
qInfo(syncmanager) << dash;
qInfo(syncmanager) << "Push changes to both Colnod ad Database:";
qInfo(syncmanager) << DASH;
qInfo(syncmanager) << dash;
database->processData(colnodDataToProcess);
connect(colnod.get(), &ColnodAPI::dataProcessFinished, this, &SyncManager::dataProcessFinished);
colnod->processData(databaseDataToProcess);
qInfo(syncmanager) << "PROCESSING DATA -> FINISHED";
qInfo(syncmanager) << EQUALS;
qInfo(syncmanager) << equals;
}
void SyncManager::updateLastUpdate(qint64 syncBegin)
@ -153,7 +153,7 @@ void SyncManager::updateLastUpdate(qint64 syncBegin)
Timestamp time;
time.set_timestamp(syncBegin);
colnod->getTokensUpdated(time);
connect(colnod.get(), &ColnodAPI::partOfDataReady, [=](std::shared_ptr<Data> data){
connect(colnod.get(), &ColnodAPI::partOfDataReady, [=](const std::shared_ptr<Data> &data){
database->setLastUpdate(data->updatedTokens);
emit syncFinished();
});
@ -164,7 +164,7 @@ void SyncManager::areDataReady()
if (++dataAmount == 2) {
qInfo(syncmanager) << "DOWNLOADING DATA -> FINISHED";
qInfo(syncmanager) << EQUALS;
qInfo(syncmanager) << equals;
emit dataReady();
}

View File

@ -51,7 +51,7 @@ bool Token::fromJson(const QByteArray &data)
QVariantMap variant = qvariant_cast<QVariantMap>(doc.toVariant());
QVariantList flags = variant["flags"].toList();
for (auto value : flags) {
for (const auto &value : flags) {
if ( value.toString() == "Enabled") {
variant.insert("enabled", true);
}
@ -82,11 +82,9 @@ QByteArray Token::idsToJSON(const QList<QString> &ids)
return doc.toJson();
}
#include <qsqlrecord.h>
void Token::fromSQLRecord(const QSqlQuery& query)
{
auto rec = query.record();
setId(query.value(0).toString());
a_authErrors = query.value(1).toInt();
setDescription(query.value(2).toString());