mirror of
https://gitlab.com/spaceti-app/integrations/acs/colnod-connector.git
synced 2026-07-12 18:40:48 +02:00
303 lines
8.1 KiB
C++
303 lines
8.1 KiB
C++
#include "datamanager.h"
|
|
|
|
DataManager::DataManager()
|
|
{
|
|
db = new DatabaseManager("192.168.1.94", "deloitte", "postgres", "34rjkciea12");
|
|
nextLastSync = db->getNow();
|
|
lastSync = db->getLastSync();
|
|
qDebug() << lastSync;
|
|
//db = new DatabaseManager("localhost", "deloitte", "postgres", "34rjkciea12");
|
|
}
|
|
|
|
void DataManager::fillFullTokensColnod(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());
|
|
fullTokensColnod.insert(token->idToStringWithoutBraces(), token);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
auto token = new Token("empty");
|
|
fullTokensColnod.insert(token->idToStringWithoutBraces(), token);
|
|
}
|
|
}
|
|
|
|
void DataManager::fillTokensColnod(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());
|
|
token->setDeleted(false);
|
|
tokensToUpdateColnod.insert(token->idToStringWithoutBraces(), token);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
auto token = new Token("empty");
|
|
tokensToUpdateColnod.insert(token->idToStringWithoutBraces(), token);
|
|
}
|
|
}
|
|
|
|
void DataManager::fillSubjectsColnod(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());
|
|
subjectsColnod.insert(subject->idToStringWithoutBraces(), subject);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Subject* subject = new Subject("empty");
|
|
subjectsColnod.insert(subject->idToStringWithoutBraces(), subject);
|
|
}
|
|
}
|
|
|
|
// fills tokensDB and tokensToDeleteDB
|
|
void DataManager::fillTokensDB()
|
|
{
|
|
QSqlQuery* query = db->getUpdatedTokens();
|
|
while (query->next())
|
|
{
|
|
auto token = new Token;
|
|
token->fromSQLRecord(query);
|
|
tokensToUpdateDB.insert(token->idToStringWithoutBraces(), token);
|
|
}
|
|
qDebug() << "Number of tokens to update from DB: "<< tokensToUpdateDB.size();
|
|
qDebug() << "Number of tokens to delete from DB: "<< tokensToDeleteDB.size();
|
|
}
|
|
|
|
void DataManager::fillSubjectsDB()
|
|
{
|
|
// Not needed yet
|
|
}
|
|
|
|
void DataManager::fillSubjectsToDeleteColnod(QString json)
|
|
{
|
|
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
|
|
QJsonArray items = doc.object()["items"].toArray();
|
|
if (items.size() > 0)
|
|
{
|
|
for (QJsonValueRef item : items) {
|
|
subjectsToDeleteColnod.append(item.toString());
|
|
}
|
|
}
|
|
else {
|
|
subjectsToDeleteColnod.append("empty");
|
|
}
|
|
}
|
|
|
|
void DataManager::fillTokensToDeleteColnod(QString json)
|
|
{
|
|
QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8());
|
|
QJsonArray items = doc.object()["items"].toArray();
|
|
if (items.size() > 0)
|
|
{
|
|
for (QJsonValueRef item : items) {
|
|
tokensToDeleteColnod.append(item.toString());
|
|
}
|
|
}
|
|
else {
|
|
tokensToDeleteColnod.append("empty");
|
|
}
|
|
}
|
|
|
|
void DataManager::fillSubjectsToDeleteDB()
|
|
{
|
|
// Not needed yet
|
|
}
|
|
|
|
void DataManager::pushSubjectsToDB()
|
|
{
|
|
if (subjectsColnod.contains("empty")) {
|
|
qDebug() << "All subjects are up to date";
|
|
return;
|
|
}
|
|
//QSqlDatabase::database().transaction();
|
|
qDebug() << "Subjects in progress...";
|
|
for (auto subject : subjectsColnod)
|
|
{
|
|
db->saveSubject(subject, "colnod_subject");
|
|
db->saveSubjectAttribute(subject, "colnod_subject_attribute");
|
|
}
|
|
//QSqlDatabase::database().commit();
|
|
qDebug() << subjectsColnod.size() << " subjects has been updated";
|
|
|
|
}
|
|
|
|
void DataManager::pushTokensToDB()
|
|
{
|
|
if (tokensToUpdateColnod.contains("empty"))
|
|
{
|
|
qDebug() << "All tokens are up to date";
|
|
return;
|
|
}
|
|
//QSqlDatabase::database().transaction();
|
|
qDebug() << "Tokens in progress...";
|
|
for (auto token : tokensToUpdateColnod)
|
|
{
|
|
db->saveToken(token, "colnod_token");
|
|
}
|
|
//QSqlDatabase::database().commit();
|
|
qDebug() << tokensToUpdateColnod.size() << " tokens has been updated";
|
|
}
|
|
|
|
void DataManager::deleteSubjectsFromDB()
|
|
{
|
|
if (subjectsToDeleteColnod[0] == "empty")
|
|
{
|
|
qDebug() << "No subjects to be deleted";
|
|
return;
|
|
}
|
|
qDebug() << "Deleted subjects in progress...";
|
|
for (auto subjectId : subjectsToDeleteColnod)
|
|
{
|
|
db->setDeleted(subjectId, "colnod_subject");
|
|
}
|
|
qDebug() << subjectsToDeleteColnod.size() << "subject has beed deleted";
|
|
}
|
|
|
|
void DataManager::deleteTokensFromDB()
|
|
{
|
|
if (tokensToDeleteColnod[0] == "empty")
|
|
{
|
|
qDebug() << "No tokens to be deleted";
|
|
return;
|
|
}
|
|
qDebug() << "Deleted tokens in progress...";
|
|
for (auto tokenId : tokensToDeleteColnod)
|
|
{
|
|
db->setDeleted(tokenId, "colnod_token");
|
|
}
|
|
qDebug() << tokensToDeleteColnod.size() << "tokens has beed deleted";
|
|
}
|
|
|
|
bool DataManager::haveData()
|
|
{
|
|
if ( !subjectsColnod.isEmpty() && !tokensToUpdateColnod.isEmpty() )
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
bool DataManager::haveChangedData()
|
|
{
|
|
if ( !subjectsColnod.isEmpty() &&
|
|
!tokensToUpdateColnod.isEmpty() &&
|
|
!subjectsToDeleteColnod.isEmpty() &&
|
|
!tokensToDeleteColnod.isEmpty() &&
|
|
!fullTokensColnod.isEmpty() )
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
bool DataManager::haveProcessData()
|
|
{
|
|
if ( !tokensToUpdateColnod.isEmpty() && !tokensToDeleteColnod.isEmpty())
|
|
return true;
|
|
return false;
|
|
}
|
|
|
|
void DataManager::emptyDatabase()
|
|
{
|
|
db->dropTables();
|
|
db->createTables();
|
|
}
|
|
|
|
void DataManager::clear()
|
|
{
|
|
subjectsColnod.clear();
|
|
subjectsToDeleteColnod.clear();
|
|
tokensToUpdateColnod.clear();
|
|
tokensToDeleteColnod.clear();
|
|
subjectsDB.clear();
|
|
subjectsToDeleteDB.clear();
|
|
tokensToUpdateDB.clear();
|
|
tokensToDeleteDB.clear();
|
|
fullTokensColnod.clear();
|
|
}
|
|
|
|
void DataManager::updateLastSync()
|
|
{
|
|
db->updateLastSync(nextLastSync);
|
|
}
|
|
|
|
void DataManager::filterTokensDB()
|
|
{
|
|
for (auto token : tokensToUpdateDB)
|
|
{
|
|
QString id = token->idToStringWithoutBraces();
|
|
Q_ASSERT(token = fullTokensColnod.value(id));
|
|
if (fullTokensColnod.contains(id) && token < fullTokensColnod.value(id))
|
|
tokensToUpdateDB.remove(id);
|
|
}
|
|
}
|
|
|
|
void DataManager::filterTokensColnod()
|
|
{
|
|
for (auto token : tokensToUpdateColnod)
|
|
{
|
|
QString id = token->idToStringWithoutBraces();
|
|
auto record = db->getToken(id);
|
|
if (!record)
|
|
continue;
|
|
auto tokenDB = new Token;
|
|
tokenDB->fromSQLRecord(record);
|
|
Q_ASSERT(tokenDB != token);
|
|
if (tokenDB > token)
|
|
tokensToUpdateColnod.remove(id);
|
|
}
|
|
}
|
|
|
|
// old version
|
|
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()));
|
|
tokensToUpdateDB.insert(token->idToStringWithoutBraces(), token);
|
|
}
|
|
if (tokensToUpdateDB.isEmpty())
|
|
tokensToUpdateDB.insert("empty", nullptr);
|
|
}
|
|
|
|
void DataManager::loadTokensToDelete()
|
|
{
|
|
QSqlQuery* query = db->getTokensToDelete();
|
|
while (query->next())
|
|
{
|
|
tokensToDeleteDB.append(query->value(0).toString());
|
|
}
|
|
if (tokensToDeleteDB.isEmpty())
|
|
tokensToDeleteDB.append("empty");
|
|
}
|
|
|
|
|
|
void DataManager::setLastUpdate()
|
|
{
|
|
for (auto token : tokensToUpdateColnod){
|
|
db->setLastUpdate(token->idToStringWithoutBraces(), token->getLastUpdate());
|
|
}
|
|
}
|
|
|
|
|
|
|