update// added new writer method to filesystem to convert old format to new

This commit is contained in:
Strider
2020-05-17 14:57:38 +02:00
parent d4bf7a83c8
commit e6b8f000c9
7 changed files with 76 additions and 32 deletions

View File

@@ -33,3 +33,18 @@ c
c c
c c
q q
b FileSystem::writeContacts(QString file, json j)
b FileSystem::writeContacts
r
q
b FileSystem::writeContacts
r
b ContactDataStore::dump()
r
c
n
q
b FileSystem::writeContacts
r
n
q

View File

@@ -1,2 +1,2 @@
break ContactItem::toJson() break FileSystem::writeContacts

View File

@@ -40,10 +40,7 @@ QString ChatDataStore::dump()
j.push_back(c.second.toJson()); j.push_back(c.second.toJson());
} }
chats["chatitems"] = j; chats["chatitems"] = j;
return QString::fromStdString(chats.dump());
std::string dump = chats.dump(4);
qDebug() << dump.c_str();
return "";
} }
std::map<QString, ChatItem> ChatDataStore::getAllRawChatItems() std::map<QString, ChatItem> ChatDataStore::getAllRawChatItems()

View File

@@ -43,10 +43,7 @@ QString ContactDataStore::dump()
j.push_back(c.second.toJson()); j.push_back(c.second.toJson());
} }
contacts["contacts"] = j; contacts["contacts"] = j;
return QString::fromStdString(contacts.dump(4));
std::string dump = contacts.dump(4);
qDebug() << dump.c_str();
return "";
} }
ContactDataStore* ContactDataStore::instance = nullptr; ContactDataStore* ContactDataStore::instance = nullptr;

View File

@@ -20,6 +20,51 @@ FileSystem* FileSystem::getInstance()
} }
QList<ContactItem> FileSystem::readContacts(QString file) QList<ContactItem> FileSystem::readContacts(QString file)
{
return this->readContactsOldFormat(file); //will be called if addresses are in the old dat-format
}
void FileSystem::writeContacts(QString file, QString data)
{
qDebug() << data;
QFile _file(file);
if (_file.exists())
{
std::ofstream f(file.toStdString().c_str());
if(f.is_open())
{
f << data.toStdString();
}
f.close();
}
else
{
qInfo() << file << "not exist";
}
}
void FileSystem::writeContactsOldFormat(QString file, QList<ContactItem> contacts)
{
QFile _file(file);
_file.open(QIODevice::ReadWrite | QIODevice::Truncate);
QDataStream out(&_file); // we will serialize the data into the file
QList<QList<QString>> _contacts;
for(auto &item: contacts)
{
QList<QString> c;
c.push_back(item.getName());
c.push_back(item.getPartnerAddress());
c.push_back(item.getMyAddress());
c.push_back(item.getCid());
c.push_back(item.getAvatar());
_contacts.push_back(c);
}
out << QString("v1") << _contacts;
_file.close();
}
QList<ContactItem> FileSystem::readContactsOldFormat(QString file)
{ {
QList<ContactItem> contacts; QList<ContactItem> contacts;
QFile _file(file); QFile _file(file);
@@ -51,26 +96,6 @@ QList<ContactItem> FileSystem::readContacts(QString file)
return contacts; return contacts;
} }
void FileSystem::writeContacts(QString file, QList<ContactItem> contacts)
{
QFile _file(file);
_file.open(QIODevice::ReadWrite | QIODevice::Truncate);
QDataStream out(&_file); // we will serialize the data into the file
QList<QList<QString>> _contacts;
for(auto &item: contacts)
{
QList<QString> c;
c.push_back(item.getName());
c.push_back(item.getPartnerAddress());
c.push_back(item.getMyAddress());
c.push_back(item.getCid());
c.push_back(item.getAvatar());
_contacts.push_back(c);
}
out << QString("v1") << _contacts;
_file.close();
}
FileSystem::~FileSystem() FileSystem::~FileSystem()
{ {
this->instance = nullptr; this->instance = nullptr;

View File

@@ -5,7 +5,8 @@
#include <QList> #include <QList>
#include "../Model/ContactItem.h" #include "../Model/ContactItem.h"
#include "../Crypto/FileEncryption.h" #include "../Crypto/FileEncryption.h"
#include <fstream>
using json = nlohmann::json;
class FileSystem class FileSystem
{ {
private: private:
@@ -16,7 +17,11 @@ class FileSystem
public: public:
static FileSystem* getInstance(); static FileSystem* getInstance();
QList<ContactItem> readContacts(QString file); QList<ContactItem> readContacts(QString file);
void writeContacts(QString file, QList<ContactItem> contacts); void writeContacts(QString file, QString data);
//converter
QList<ContactItem> readContactsOldFormat(QString file);
void writeContactsOldFormat(QString file, QList<ContactItem> contacts);
~FileSystem(); ~FileSystem();
}; };

View File

@@ -406,11 +406,16 @@ void AddressBook::readFromStorage()
DataStore::getContactDataStore()->setData(item.getCid(), item); DataStore::getContactDataStore()->setData(item.getCid(), item);
} }
DataStore::getContactDataStore()->dump(); DataStore::getContactDataStore()->dump();
AddressBook::writeToStorage();
} }
void AddressBook::writeToStorage() void AddressBook::writeToStorage()
{ {
FileSystem::getInstance()->writeContacts(AddressBook::writeableFile(), allLabels); //FileSystem::getInstance()->writeContacts(AddressBook::writeableFile(), DataStore::getContactDataStore()->dump());
FileSystem::getInstance()->writeContactsOldFormat(AddressBook::writeableFile(), allLabels);
/*QFile file(AddressBook::writeableFile()); /*QFile file(AddressBook::writeableFile());
file.open(QIODevice::ReadWrite | QIODevice::Truncate); file.open(QIODevice::ReadWrite | QIODevice::Truncate);
QDataStream out(&file); // we will serialize the data into the file QDataStream out(&file); // we will serialize the data into the file