edit output, fix prepare tokens

This commit is contained in:
Ondřej Fischer 2019-12-06 15:33:28 +01:00
parent 30735dc953
commit 21da53fc33
3 changed files with 133 additions and 72 deletions

View File

@ -100,13 +100,20 @@ void ColnodAPI::downloadData(const qint64 &time)
void ColnodAPI::processData(const std::shared_ptr<Data> &data) void ColnodAPI::processData(const std::shared_ptr<Data> &data)
{ {
if (!data->updatedTokens.isEmpty() || !data->deletedTokens.isEmpty()) { // OLD
qInfo(colnod) << dash; // 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"; // NEW
qInfo(colnod) << dash; 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); connect(this, &ColnodAPI::partOfDataProcessFinished, this, &ColnodAPI::isDataProcessFinished);
@ -264,12 +271,16 @@ void ColnodAPI::areDataReady(const std::shared_ptr<Data> &data)
{ {
if (++amountData == 4) { if (++amountData == 4) {
qInfo(colnod) << tab << "-> COLNOD DATA:"; // new
qInfo(colnod) << tab << tab << data->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED"; qInfo(colnod) << "- src colnod: tokens [" << data->updatedTokens.size() << ":" << data->deletedTokens.size() <<
qInfo(colnod) << tab << tab << data->deletedTokens.size() << "TOKENS DELETED"; "] subjects [" << data->updatedSubjects.size() << ":" << data->deletedSubjects.size() << "] [ added/updated : deleted ]";
qInfo(colnod) << tab << tab << data->updatedSubjects.size() << "SUBJECTS WERE ADDED/UPDATED"; //OLD
qInfo(colnod) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED"; // qInfo(colnod) << tab << "-> COLNOD DATA:";
qInfo(colnod) << dash; // 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; amountData = 0;
emit downloadDataFinished(data); emit downloadDataFinished(data);

View File

@ -54,27 +54,34 @@ bool DatabaseAPI::processData(const std::shared_ptr<Data> &data)
if (!uploadTokens(data->updatedTokens)) { if (!uploadTokens(data->updatedTokens)) {
res = false; res = false;
} }
if (uploadSubjects(data->updatedSubjects)) { if (!uploadSubjects(data->updatedSubjects)) {
res = false; res = false;
} }
if (deleteItems(data->deletedTokens, "colnod_token")) { if (!deleteItems(data->deletedTokens, "colnod_token")) {
res = false; res = false;
} }
if (deleteItems(data->deletedSubjects, "colnod_subject")) { if (!deleteItems(data->deletedSubjects, "colnod_subject")) {
res = false; res = false;
} }
if ( !data->updatedTokens.isEmpty() || // OLD
!data->updatedSubjects.isEmpty() || // if ( !data->updatedTokens.isEmpty() ||
!data->deletedTokens.isEmpty() || // !data->updatedSubjects.isEmpty() ||
!data->deletedSubjects.isEmpty()) { // !data->deletedTokens.isEmpty() ||
qInfo(database) << dash; // !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"; // NEW
qInfo(database) << tab << tab << data->updatedSubjects.size() << "SUBJECTS ADDED/UPDATED"; qInfo(database) << "- push db: tokens [" << data->updatedTokens.size() << ":" << data->deletedTokens.size() <<
qInfo(database) << tab << tab << data->deletedSubjects.size() << "SUBJECTS DELETED"; "] subjects [" << data->updatedSubjects.size() << ":" << data->deletedSubjects.size() << "] [ added/updated : deleted ]";
qInfo(database) << dash;
// 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; return res;
} }
@ -91,10 +98,15 @@ std::shared_ptr<Data> DatabaseAPI::composeData(const QSqlQuery &updatedQuery, QS
data->deletedTokens.append(deletedQuery.value(0).toString()); data->deletedTokens.append(deletedQuery.value(0).toString());
} }
qInfo(database) << tab << "-> DATABASE DATA:"; // NEW
qInfo(database) << tab << tab << data->updatedTokens.size() << "TOKENS WERE ADDED/UPDATED"; qInfo(database) << "- src db: tokens [" << data->updatedTokens.size() << ":" << data->deletedTokens.size() <<
qInfo(database) << tab << tab << data->deletedTokens.size() << "TOKENS MARKED FOR DELETION"; "] [ added/updated : deleted ]";
qInfo(database) << dash;
// 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; return data;
} }
@ -146,8 +158,8 @@ qint64 DatabaseAPI::getNow()
return -1; return -1;
} }
query.next(); query.next();
qDebug() << "Database time:" << QDateTime::fromMSecsSinceEpoch(query.value(0).toLongLong()).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"); // qDebug() << "Current time:" << QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz");
return query.value(0).toLongLong(); return query.value(0).toLongLong();
} }
@ -219,6 +231,19 @@ bool DatabaseAPI::deleteItems(const QList<QString> &ids, const QString &tableNam
{ {
auto query = mDbMan->createQuery(); auto query = mDbMan->createQuery();
QString nowString = QDateTime::fromMSecsSinceEpoch(getLastSync()).toString("yyyy-MM-dd hh:mm:ss.zzz"); 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) { for (const auto &id : ids) {
qInfo(database).noquote() << Message::massageTemplate("Deleting", tableName.mid(tableName.indexOf("_") + 1, tableName.length() - 1), "database", id); 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<QString> &ids, const QString &tableNam
query.bindValue(":id", id); query.bindValue(":id", id);
query.bindValue(":now", nowString); query.bindValue(":now", nowString);
if (!executeQuery(query)) { if (!executeQuery(query)) {
qWarning(database) << "ERROR during marking token as deleted:" << id; qWarning(database) << "ERROR during marking as deleted:" << id;
mValid = false; mValid = false;
return false; return false;
} }

View File

@ -43,13 +43,17 @@ bool SyncManager::startSynchronization()
return false; return false;
} }
qInfo(syncmanager) << equals; // NEW
qInfo(syncmanager) << "SYNCHRONIZATION BEGIN"; qInfo(syncmanager) << "- begin sync ( previous sync" << mlastSync.toDateString() << ")";
qInfo(syncmanager) << equals;
qInfo(syncmanager) << "DOWNLOADING DATA -> BEGIN"; // OLD
qInfo(syncmanager) << dash; // qInfo(syncmanager) << equals;
qInfo(syncmanager).noquote() << "Modified data since last synchronization (" << mlastSync.toDateString() << "):"; // qInfo(syncmanager) << "SYNCHRONIZATION BEGIN";
qInfo(syncmanager) << dash; // 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 // GETTING DATA FROM DATABASE
auto databaseData = database->downloadData(); auto databaseData = database->downloadData();
@ -67,8 +71,9 @@ bool SyncManager::startSynchronization()
return; return;
} }
qInfo(syncmanager) << "DOWNLOADING DATA -> FINISHED"; // OLD
qInfo(syncmanager) << equals; // qInfo(syncmanager) << "DOWNLOADING DATA -> FINISHED";
// qInfo(syncmanager) << equals;
// NOW I SHOULD HAVE VALID DATA FROM COLNOD // NOW I SHOULD HAVE VALID DATA FROM COLNOD
@ -79,11 +84,12 @@ bool SyncManager::startSynchronization()
return; return;
} }
qInfo(syncmanager) << equals; // OLD
qInfo(syncmanager) << "PROCESSING DATA -> BEGIN"; // qInfo(syncmanager) << equals;
qInfo(syncmanager) << dash; // qInfo(syncmanager) << "PROCESSING DATA -> BEGIN";
qInfo(syncmanager) << "Push changes to both Colnod and Database:"; // qInfo(syncmanager) << dash;
qInfo(syncmanager) << dash; // qInfo(syncmanager) << "Push changes to both Colnod and Database:";
// qInfo(syncmanager) << dash;
if (!database->processData(preparedData->colnodData)) { if (!database->processData(preparedData->colnodData)) {
qCritical(syncmanager) << "Not possible to upload data to database"; 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"; qCritical(syncmanager) << "Not possible to upload data to colnod";
} }
qInfo(syncmanager) << "PROCESSING DATA -> FINISHED"; // OLD
qInfo(syncmanager) << equals; // qInfo(syncmanager) << "PROCESSING DATA -> FINISHED";
// qInfo(syncmanager) << equals;
// REUPDATE tokens pushed from database to colnod (cause of lastUpdate time) // REUPDATE tokens pushed from database to colnod (cause of lastUpdate time)
Timestamp time; Timestamp time;
@ -128,14 +135,15 @@ bool SyncManager::startSynchronization()
} }
else { else {
database->setLastSync(syncBegin); database->setLastSync(syncBegin);
qInfo(syncmanager).noquote() << "Update last synchronization time to time of this sync (" // qInfo(syncmanager).noquote() << "Update last synchronization time to time of this sync ("
<< QDateTime::fromMSecsSinceEpoch(syncBegin).toString("yyyy-MM-dd hh:mm:ss.zzz") // << QDateTime::fromMSecsSinceEpoch(syncBegin).toString("yyyy-MM-dd hh:mm:ss.zzz")
<< ")"; // << ")";
} }
qInfo(syncmanager) << equals; // OLD
qInfo(syncmanager) << "SYNCHRONIZATION FINISHED"; // qInfo(syncmanager) << equals;
qInfo(syncmanager) << equals; // qInfo(syncmanager) << "SYNCHRONIZATION FINISHED";
// qInfo(syncmanager) << equals;
QCoreApplication::exit(); QCoreApplication::exit();
}); });
@ -157,11 +165,12 @@ std::unique_ptr<PreparedData> SyncManager::prepareDataNew(const std::shared_ptr<
QList<QString> conflicts; QList<QString> conflicts;
QList<QString> alreadySynced; QList<QString> alreadySynced;
qInfo(syncmanager) << equals; // OLD
qInfo(syncmanager) << "PREPARING DATA -> BEGIN"; // qInfo(syncmanager) << equals;
qInfo(syncmanager) << dash; // qInfo(syncmanager) << "PREPARING DATA -> BEGIN";
qInfo(syncmanager) << "Resolve conflicts ( changes on same item on both Colnod and DB ):"; // qInfo(syncmanager) << dash;
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 // add all data which should be pushed to database
for (const auto &colnodToken : colnodData->updatedTokens) { for (const auto &colnodToken : colnodData->updatedTokens) {
@ -199,11 +208,19 @@ std::unique_ptr<PreparedData> SyncManager::prepareDataNew(const std::shared_ptr<
} }
} }
qInfo(syncmanager) << tab << "-> COLNOD DATA - CHANGES:"; preparedColnodData->updatedSubjects = colnodData->updatedSubjects;
qInfo(syncmanager) << tab << tab << conflicts.size() << "TOKENS WERE ADDED/UPDATED IN DATABASE AFTER"; preparedColnodData->deletedSubjects = colnodData->deletedSubjects;
qInfo(syncmanager) << tab << tab << alreadySynced.size() << "TOKENS WERE ALREADY SYNCED";
qInfo(syncmanager) << tab << tab << colnodData->deletedTokens.size() - preparedColnodData->deletedTokens.size() << "TOKENS WERE ALREADY DELETED"; // NEW
qInfo(syncmanager) << dash; 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) { for (const auto &databaseToken : databaseData->updatedTokens) {
if (databaseToken->name().isEmpty()) { if (databaseToken->name().isEmpty()) {
@ -228,12 +245,20 @@ std::unique_ptr<PreparedData> SyncManager::prepareDataNew(const std::shared_ptr<
} }
} }
qInfo(syncmanager) << tab << "-> DATABASE DATA - CHANGES:"; preparedDatabaseData->deletedTokens = databaseData->deletedTokens;
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; // 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<PreparedData>(preparedDatabaseData, preparedColnodData); auto preparedData = std::make_unique<PreparedData>(preparedDatabaseData, preparedColnodData);