#include "datamanager.h" DataManager::DataManager() { db = new DatabaseManager("192.168.1.94", "deloitte", "postgres", "34rjkciea12"); //db = new DatabaseManager("localhost", "deloitte", "postgres", "34rjkciea12"); } void DataManager::localSaveSubjects(QString response) { QJsonDocument doc = QJsonDocument::fromJson(response.toUtf8()); QJsonArray items = doc.object()["items"].toArray(); if (items.size() > 0) { for (QJsonValueRef item : items) { auto subject = new Subject(); subject->fromJSON(item.toObject()); subjects.append(subject); } } else { Subject* subject = new Subject; subject->setName("empty"); subjects.append(subject); } } void DataManager::localSaveTokens(QString response) { QJsonDocument doc = QJsonDocument::fromJson(response.toUtf8()); QJsonArray items = doc.object()["items"].toArray(); if (items.size() > 0) { for (QJsonValueRef item : items) { auto token = new Token(); token->fromJSON(item.toObject()); tokens.append(token); } } else { Token* token = new Token; token->setName("empty"); tokens.append(token); } } void DataManager::localSaveSubjectsToDelete(QString json) { QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); QJsonArray items = doc.object()["items"].toArray(); if (items.size() > 0) { for (QJsonValueRef item : items) { subjectsToDelete.append(item.toString()); } } else { subjectsToDelete.append("empty"); } } void DataManager::localSaveTokensToDelete(QString json) { QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); QJsonArray items = doc.object()["items"].toArray(); if (items.size() > 0) { for (QJsonValueRef item : items) { tokensToDelete.append(item.toString()); } } else { tokensToDelete.append("empty"); } } void DataManager::pushSubjectsToDB() { if (subjects.size() == 1 && subjects[0]->getName() == "empty") { qDebug() << "All subjects are up to date"; return; } //QSqlDatabase::database().transaction(); qDebug() << "Subjects in progress..."; for (auto subject : subjects) { db->saveSubject(subject, "colnod_subject"); db->saveSubjectAttribute(subject, "colnod_subject_attribute"); } //QSqlDatabase::database().commit(); qDebug() << subjects.size() << " subjects has been updated"; } void DataManager::pushTokensToDB() { if (tokens.size() == 1 && tokens[0]->getName() == "empty") { qDebug() << "All tokens are up to date"; return; } //QSqlDatabase::database().transaction(); qDebug() << "Tokens in progress..."; for (auto token : tokens) { db->saveToken(token, "colnod_token"); } //QSqlDatabase::database().commit(); qDebug() << tokens.size() << " tokens has been updated"; } void DataManager::deleteSubjectsFromDB() { if (subjectsToDelete.size() == 1 && subjectsToDelete[0] == "empty") { qDebug() << "No subjects to be deleted"; return; } qDebug() << "Deleted subjects in progress..."; //QSqlDatabase::database().transaction(); for (auto subjectId : subjectsToDelete) { db->deleteItem(subjectId, "colnod_subject"); } //QSqlDatabase::database().commit(); qDebug() << subjectsToDelete.size() << "subject has beed deleted"; } void DataManager::deleteTokensFromDB() { if (tokensToDelete.size() == 1 && tokensToDelete[0] == "empty") { qDebug() << "No tokens to be deleted"; return; } // QSqlDatabase::database().transaction(); qDebug() << "Deleted tokens in progress..."; for (auto tokenId : tokensToDelete) { db->deleteItem(tokenId, "colnod_token"); } //QSqlDatabase::database().commit(); qDebug() << tokensToDelete.size() << "tokens has beed deleted"; } bool DataManager::haveData() { if ( !subjects.isEmpty() && !tokens.isEmpty() ) return true; return false; } bool DataManager::haveChangedData() { if ( !subjects.isEmpty() && !tokens.isEmpty() && !subjectsToDelete.isEmpty() && !tokensToDelete.isEmpty() ) return true; return false; } bool DataManager::haveProcessData() { if ( !tokens.isEmpty() && !tokensToDelete.isEmpty()) return true; return false; } uint64_t DataManager::getLastUpdate() { return db->getLastUpdate(); } void DataManager::emptyDatabase() { db->dropTables(); db->createTables(); } void DataManager::clear() { subjects.clear(); subjectsToDelete.clear(); tokens.clear(); tokensToDelete.clear(); } void DataManager::updateLastSync() { db->updateLastSync(); } void DataManager::loadTokensToAdd() { QSqlQuery* query = db->getTokensToAdd(); while (query->next()) { Token* token = new Token(query->value(0).toString(), query->value(1).toString()); token->setSubjectId(db->getId(token->getName())); tokens.append(token); } if (tokens.isEmpty()) tokens.append(new Token("empty")); } void DataManager::loadTokensToDelete() { QSqlQuery* query = db->getTokensToDelete(); while (query->next()) { tokensToDelete.append(query->value(0).toString()); } if (tokensToDelete.isEmpty()) tokensToDelete.append("empty"); }