forked from ondra/colnod-connector
226 lines
5.6 KiB
C++
226 lines
5.6 KiB
C++
#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");
|
|
}
|
|
|
|
|
|
|