diff --git a/src/colnod/colnodapi.cpp b/src/colnod/colnodapi.cpp index dfeab3c..77d3ebc 100644 --- a/src/colnod/colnodapi.cpp +++ b/src/colnod/colnodapi.cpp @@ -100,13 +100,20 @@ void ColnodAPI::downloadData(const qint64 &time) void ColnodAPI::processData(const std::shared_ptr &data) { - if (!data->updatedTokens.isEmpty() || !data->deletedTokens.isEmpty()) { - 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; + // OLD +// if (!data->updatedTokens.isEmpty() || !data->deletedTokens.isEmpty()) { +// qInfo(colnod) << dash; +// } + + // NEW + qInfo(colnod) << "- push colnod: tokens [" << data->updatedTokens.size() << ":" << data->deletedTokens.size() << + "] [ added/updated : deleted ]"; + + // OLD +// 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; connect(this, &ColnodAPI::partOfDataProcessFinished, this, &ColnodAPI::isDataProcessFinished); @@ -264,12 +271,16 @@ void ColnodAPI::areDataReady(const std::shared_ptr &data) { if (++amountData == 4) { - qInfo(colnod) << tab << "-> COLNOD DATA:"; - qInfo(colnod) << tab << tab << data->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED"; - qInfo(colnod) << tab << tab << data->deletedTokens.size() << "TOKENS DELETED"; - qInfo(colnod) << tab << tab << data->updatedSubjects.size() << "SUBJECTS WERE ADDED/UPDATED"; - qInfo(colnod) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED"; - qInfo(colnod) << dash; + // new + qInfo(colnod) << "- src colnod: tokens [" << data->updatedTokens.size() << ":" << data->deletedTokens.size() << + "] subjects [" << data->updatedSubjects.size() << ":" << data->deletedSubjects.size() << "] [ added/updated : deleted ]"; + //OLD +// qInfo(colnod) << tab << "-> COLNOD DATA:"; +// qInfo(colnod) << tab << tab << data->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED"; +// qInfo(colnod) << tab << tab << data->deletedTokens.size() << "TOKENS DELETED"; +// qInfo(colnod) << tab << tab << data->updatedSubjects.size() << "SUBJECTS WERE ADDED/UPDATED"; +// qInfo(colnod) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED"; +// qInfo(colnod) << dash; amountData = 0; emit downloadDataFinished(data); diff --git a/src/colnod/databaseapi.cpp b/src/colnod/databaseapi.cpp index a78e280..a5ffb0d 100644 --- a/src/colnod/databaseapi.cpp +++ b/src/colnod/databaseapi.cpp @@ -54,27 +54,34 @@ bool DatabaseAPI::processData(const std::shared_ptr &data) if (!uploadTokens(data->updatedTokens)) { res = false; } - if (uploadSubjects(data->updatedSubjects)) { + if (!uploadSubjects(data->updatedSubjects)) { res = false; } - if (deleteItems(data->deletedTokens, "colnod_token")) { + if (!deleteItems(data->deletedTokens, "colnod_token")) { res = false; } - if (deleteItems(data->deletedSubjects, "colnod_subject")) { + if (!deleteItems(data->deletedSubjects, "colnod_subject")) { res = false; } - if ( !data->updatedTokens.isEmpty() || - !data->updatedSubjects.isEmpty() || - !data->deletedTokens.isEmpty() || - !data->deletedSubjects.isEmpty()) { - qInfo(database) << dash; - } - qInfo(database) << tab << "-> DATA PROCESSED TO DATABASE:"; - qInfo(database) << tab << tab << data->updatedTokens.size() << "TOKENS ADDED/UPDATED"; - qInfo(database) << tab << tab << data->deletedTokens.size() << "TOKENS DELETED"; - qInfo(database) << tab << tab << data->updatedSubjects.size() << "SUBJECTS ADDED/UPDATED"; - qInfo(database) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED"; - qInfo(database) << dash; + // OLD +// if ( !data->updatedTokens.isEmpty() || +// !data->updatedSubjects.isEmpty() || +// !data->deletedTokens.isEmpty() || +// !data->deletedSubjects.isEmpty()) { +// //qInfo(database) << dash; +// } + + // NEW + qInfo(database) << "- push db: tokens [" << data->updatedTokens.size() << ":" << data->deletedTokens.size() << + "] subjects [" << data->updatedSubjects.size() << ":" << data->deletedSubjects.size() << "] [ added/updated : deleted ]"; + + // OLD +// qInfo(database) << tab << "-> DATA PROCESSED TO DATABASE:"; +// qInfo(database) << tab << tab << data->updatedTokens.size() << "TOKENS ADDED/UPDATED"; +// qInfo(database) << tab << tab << data->deletedTokens.size() << "TOKENS DELETED"; +// qInfo(database) << tab << tab << data->updatedSubjects.size() << "SUBJECTS ADDED/UPDATED"; +// qInfo(database) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED"; +// qInfo(database) << dash; return res; } @@ -91,10 +98,15 @@ std::shared_ptr DatabaseAPI::composeData(const QSqlQuery &updatedQuery, QS data->deletedTokens.append(deletedQuery.value(0).toString()); } - qInfo(database) << tab << "-> DATABASE DATA:"; - qInfo(database) << tab << tab << data->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED"; - qInfo(database) << tab << tab << data->deletedTokens.size() << "TOKENS MARKED FOR DELETION"; - qInfo(database) << dash; + // NEW + qInfo(database) << "- src db: tokens [" << data->updatedTokens.size() << ":" << data->deletedTokens.size() << + "] [ added/updated : deleted ]"; + + // OLD +// qInfo(database) << tab << "-> DATABASE DATA:"; +// qInfo(database) << tab << tab << data->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED"; +// qInfo(database) << tab << tab << data->deletedTokens.size() << "TOKENS MARKED FOR DELETION"; +// qInfo(database) << dash; return data; } @@ -146,8 +158,8 @@ qint64 DatabaseAPI::getNow() return -1; } query.next(); - qDebug() << "Database time:" << QDateTime::fromMSecsSinceEpoch(query.value(0).toLongLong()).toString("yyyy-MM-dd hh:mm:ss.zzz"); - qDebug() << "Current time:" << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz"); +// qDebug() << "Database time:" << QDateTime::fromMSecsSinceEpoch(query.value(0).toLongLong()).toString("yyyy-MM-dd hh:mm:ss.zzz"); +// qDebug() << "Current time:" << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz"); return query.value(0).toLongLong(); } @@ -219,6 +231,19 @@ bool DatabaseAPI::deleteItems(const QList &ids, const QString &tableNam { auto query = mDbMan->createQuery(); QString nowString = QDateTime::fromMSecsSinceEpoch(getLastSync()).toString("yyyy-MM-dd hh:mm:ss.zzz"); + + if (tableName == "colnod_subject") { + for (const auto &id : ids) { + query.prepare("DELETE FROM colnod_subject_attribute WHERE subject_id = :id"); + query.bindValue(":id", id); + if (!executeQuery(query)) { + qWarning(database) << "ERROR during marking as deleted:" << id; + mValid = false; + return false; + } + } + } + for (const auto &id : ids) { qInfo(database).noquote() << Message::massageTemplate("Deleting", tableName.mid(tableName.indexOf("_") + 1, tableName.length() - 1), "database", id); @@ -226,7 +251,7 @@ bool DatabaseAPI::deleteItems(const QList &ids, const QString &tableNam query.bindValue(":id", id); query.bindValue(":now", nowString); if (!executeQuery(query)) { - qWarning(database) << "ERROR during marking token as deleted:" << id; + qWarning(database) << "ERROR during marking as deleted:" << id; mValid = false; return false; } diff --git a/src/colnod/syncmanager.cpp b/src/colnod/syncmanager.cpp index 4cd37c8..3baaf08 100644 --- a/src/colnod/syncmanager.cpp +++ b/src/colnod/syncmanager.cpp @@ -43,13 +43,17 @@ bool SyncManager::startSynchronization() return false; } - qInfo(syncmanager) << equals; - qInfo(syncmanager) << "SYNCHRONIZATION BEGIN"; - qInfo(syncmanager) << equals; - qInfo(syncmanager) << "DOWNLOADING DATA -> BEGIN"; - qInfo(syncmanager) << dash; - qInfo(syncmanager).noquote() << "Modified data since last synchronization (" << mlastSync.toDateString() << "):"; - qInfo(syncmanager) << dash; + // NEW + qInfo(syncmanager) << "- begin sync ( previous sync" << mlastSync.toDateString() << ")"; + + // OLD +// qInfo(syncmanager) << equals; +// qInfo(syncmanager) << "SYNCHRONIZATION BEGIN"; +// qInfo(syncmanager) << equals; +// qInfo(syncmanager) << "DOWNLOADING DATA -> BEGIN"; +// qInfo(syncmanager) << dash; +// qInfo(syncmanager).noquote() << "Modified data since last synchronization (" << mlastSync.toDateString() << "):"; +// qInfo(syncmanager) << dash; // GETTING DATA FROM DATABASE auto databaseData = database->downloadData(); @@ -67,8 +71,9 @@ bool SyncManager::startSynchronization() return; } - qInfo(syncmanager) << "DOWNLOADING DATA -> FINISHED"; - qInfo(syncmanager) << equals; + // OLD +// qInfo(syncmanager) << "DOWNLOADING DATA -> FINISHED"; +// qInfo(syncmanager) << equals; // NOW I SHOULD HAVE VALID DATA FROM COLNOD @@ -79,11 +84,12 @@ bool SyncManager::startSynchronization() return; } - qInfo(syncmanager) << equals; - qInfo(syncmanager) << "PROCESSING DATA -> BEGIN"; - qInfo(syncmanager) << dash; - qInfo(syncmanager) << "Push changes to both Colnod and Database:"; - qInfo(syncmanager) << dash; + // OLD +// qInfo(syncmanager) << equals; +// qInfo(syncmanager) << "PROCESSING DATA -> BEGIN"; +// qInfo(syncmanager) << dash; +// qInfo(syncmanager) << "Push changes to both Colnod and Database:"; +// qInfo(syncmanager) << dash; if (!database->processData(preparedData->colnodData)) { qCritical(syncmanager) << "Not possible to upload data to database"; @@ -95,8 +101,9 @@ bool SyncManager::startSynchronization() qCritical(syncmanager) << "Not possible to upload data to colnod"; } - qInfo(syncmanager) << "PROCESSING DATA -> FINISHED"; - qInfo(syncmanager) << equals; + // OLD +// qInfo(syncmanager) << "PROCESSING DATA -> FINISHED"; +// qInfo(syncmanager) << equals; // REUPDATE tokens pushed from database to colnod (cause of lastUpdate time) Timestamp time; @@ -128,14 +135,15 @@ bool SyncManager::startSynchronization() } else { database->setLastSync(syncBegin); - qInfo(syncmanager).noquote() << "Update last synchronization time to time of this sync (" - << QDateTime::fromMSecsSinceEpoch(syncBegin).toString("yyyy-MM-dd hh:mm:ss.zzz") - << ")"; +// qInfo(syncmanager).noquote() << "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) << "SYNCHRONIZATION FINISHED"; - qInfo(syncmanager) << equals; + // OLD +// qInfo(syncmanager) << equals; +// qInfo(syncmanager) << "SYNCHRONIZATION FINISHED"; +// qInfo(syncmanager) << equals; QCoreApplication::exit(); }); @@ -157,11 +165,12 @@ std::unique_ptr SyncManager::prepareDataNew(const std::shared_ptr< QList conflicts; QList alreadySynced; - qInfo(syncmanager) << equals; - qInfo(syncmanager) << "PREPARING DATA -> BEGIN"; - qInfo(syncmanager) << dash; - qInfo(syncmanager) << "Resolve conflicts ( changes on same item on both Colnod and DB ):"; - qInfo(syncmanager) << dash; + // OLD +// qInfo(syncmanager) << equals; +// qInfo(syncmanager) << "PREPARING DATA -> BEGIN"; +// qInfo(syncmanager) << dash; +// qInfo(syncmanager) << "Resolve conflicts ( changes on same item on both Colnod and DB ):"; +// qInfo(syncmanager) << dash; // add all data which should be pushed to database for (const auto &colnodToken : colnodData->updatedTokens) { @@ -199,11 +208,19 @@ std::unique_ptr SyncManager::prepareDataNew(const std::shared_ptr< } } - qInfo(syncmanager) << tab << "-> COLNOD DATA - CHANGES:"; - qInfo(syncmanager) << tab << tab << conflicts.size() << "TOKENS WERE ADDED/UPDATED IN DATABASE AFTER"; - qInfo(syncmanager) << tab << tab << alreadySynced.size() << "TOKENS WERE ALREADY SYNCED"; - qInfo(syncmanager) << tab << tab << colnodData->deletedTokens.size() - preparedColnodData->deletedTokens.size() << "TOKENS WERE ALREADY DELETED"; - qInfo(syncmanager) << dash; + preparedColnodData->updatedSubjects = colnodData->updatedSubjects; + preparedColnodData->deletedSubjects = colnodData->deletedSubjects; + + // NEW + qInfo(syncmanager) << "- prep colnod: tokens [" << preparedColnodData->updatedTokens.size() << ":" << preparedColnodData->deletedTokens.size() << + "] subjects [" << preparedColnodData->updatedSubjects.size() << ":" << preparedColnodData->deletedSubjects.size() << "] [ added/updated : deleted ]"; + + // OLD +// qInfo(syncmanager) << tab << "-> COLNOD DATA - CHANGES:"; +// qInfo(syncmanager) << tab << tab << conflicts.size() << "TOKENS WERE ADDED/UPDATED IN DATABASE AFTER"; +// qInfo(syncmanager) << tab << tab << alreadySynced.size() << "TOKENS WERE ALREADY SYNCED"; +// qInfo(syncmanager) << tab << tab << colnodData->deletedTokens.size() - preparedColnodData->deletedTokens.size() << "TOKENS WERE ALREADY DELETED"; +// qInfo(syncmanager) << dash; for (const auto &databaseToken : databaseData->updatedTokens) { if (databaseToken->name().isEmpty()) { @@ -228,12 +245,20 @@ std::unique_ptr SyncManager::prepareDataNew(const std::shared_ptr< } } - qInfo(syncmanager) << tab << "-> DATABASE DATA - CHANGES:"; - qInfo(syncmanager) << tab << tab << databaseData->updatedTokens.size() - preparedDatabaseData->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED IN COLNOD AFTER"; - qInfo(syncmanager) << dash; + preparedDatabaseData->deletedTokens = databaseData->deletedTokens; - qInfo(syncmanager) << "PREPARING DATA -> FINISHED"; - qInfo(syncmanager) << equals; + + // NEW + qInfo(syncmanager) << "- prep db: tokens [" << preparedDatabaseData->updatedTokens.size() << ":" << preparedDatabaseData->deletedTokens.size() << + "] [ added/updated : deleted ]"; + + // OLD +// qInfo(syncmanager) << tab << "-> DATABASE DATA - CHANGES:"; +// qInfo(syncmanager) << tab << tab << databaseData->updatedTokens.size() - preparedDatabaseData->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED IN COLNOD AFTER"; +// qInfo(syncmanager) << dash; + +// qInfo(syncmanager) << "PREPARING DATA -> FINISHED"; +// qInfo(syncmanager) << equals; auto preparedData = std::make_unique(preparedDatabaseData, preparedColnodData);