From 2be2e9f5e31d4fb6d41f59c6aa593122bc9468bb Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Wed, 23 Dec 2020 19:00:57 +0700 Subject: [PATCH] All entities now have GID --- sea_transport/deliverypointeditdialog.cpp | 2 +- sea_transport/entities/cargo_entity.cpp | 12 +++++++++++- sea_transport/entities/cargo_entity.h | 4 ++++ sea_transport/entities/dpoint_entity.cpp | 12 +++++++++++- sea_transport/entities/dpoint_entity.h | 4 ++++ sea_transport/entities/user_entity.cpp | 12 +++++++++++- sea_transport/entities/user_entity.h | 4 ++++ sea_transport/system/apparatus.cpp | 18 ++++++++++++------ sea_transport/usereditdialog.cpp | 2 +- 9 files changed, 59 insertions(+), 11 deletions(-) diff --git a/sea_transport/deliverypointeditdialog.cpp b/sea_transport/deliverypointeditdialog.cpp index 187d1c5..c57d7e4 100644 --- a/sea_transport/deliverypointeditdialog.cpp +++ b/sea_transport/deliverypointeditdialog.cpp @@ -94,7 +94,7 @@ void DeliveryPointEditDialog::set_dpoint(dpoint_entity* dpoint, bool edit) { void DeliveryPointEditDialog::accept() { bool emptyTitle = ui->et_title->text().trimmed().isEmpty(); if (emptyTitle) {; - QString message = "Some errors happend, while saving your note:" + QString message = "Some errors happend, while saving:" "
- Title cannot be empty (all spaces - empty too)"; QMessageBox::critical(this, "Error", message); return; diff --git a/sea_transport/entities/cargo_entity.cpp b/sea_transport/entities/cargo_entity.cpp index a5d136c..1fee72e 100644 --- a/sea_transport/entities/cargo_entity.cpp +++ b/sea_transport/entities/cargo_entity.cpp @@ -1,8 +1,10 @@ #include "cargo_entity.h" +entity_id cargo_entity::__global_id = 0; + cargo_entity::cargo_entity() { - this->_id += QRandomGenerator().generate64(); + this->_id = ++cargo_entity::__global_id + QRandomGenerator().generate64(); } cargo_entity::cargo_entity(const QString &title, unsigned int volume) : _title(title), _volume(volume) { @@ -33,3 +35,11 @@ void cargo_entity::serialize(QDataStream &output) { void cargo_entity::deserialize(QDataStream &input) { input >> this->_id >> this->_title >> this->_volume; } + +void cargo_entity::preloadGlobalId(entity_id gid) { + cargo_entity::__global_id = gid; +} + +entity_id cargo_entity::GID() { + return cargo_entity::__global_id; +} diff --git a/sea_transport/entities/cargo_entity.h b/sea_transport/entities/cargo_entity.h index 60d8c69..79f928d 100644 --- a/sea_transport/entities/cargo_entity.h +++ b/sea_transport/entities/cargo_entity.h @@ -10,6 +10,8 @@ class cargo_entity : public IEntity { private: + static entity_id __global_id; + entity_id _id = 0; QString _title; unsigned int _volume = 50000; @@ -24,6 +26,8 @@ public: void serialize(QDataStream &output); void deserialize(QDataStream &input); + static void preloadGlobalId(entity_id gid); + static entity_id GID(); }; #endif // CARGO_ENTITY_H diff --git a/sea_transport/entities/dpoint_entity.cpp b/sea_transport/entities/dpoint_entity.cpp index 55a682d..13b7873 100644 --- a/sea_transport/entities/dpoint_entity.cpp +++ b/sea_transport/entities/dpoint_entity.cpp @@ -1,8 +1,10 @@ #include "dpoint_entity.h" +entity_id dpoint_entity::__global_id = 0; + dpoint_entity::dpoint_entity() { - this->_id += QRandomGenerator().generate64(); + this->_id = ++dpoint_entity::__global_id + QRandomGenerator().generate64(); } dpoint_entity::dpoint_entity(entity_id dispatcher_id, const QString &title) : _dispatcher_id(dispatcher_id), _title(title) { @@ -83,3 +85,11 @@ void dpoint_entity::deserialize(QDataStream &input) { this->_storages[i].deserialize(input); } } + +void dpoint_entity::preloadGlobalId(entity_id gid) { + dpoint_entity::__global_id = gid; +} + +entity_id dpoint_entity::GID() { + return dpoint_entity::__global_id; +} diff --git a/sea_transport/entities/dpoint_entity.h b/sea_transport/entities/dpoint_entity.h index 0a536ba..75e3774 100644 --- a/sea_transport/entities/dpoint_entity.h +++ b/sea_transport/entities/dpoint_entity.h @@ -12,6 +12,8 @@ class dpoint_entity : public IEntity { private: + static entity_id __global_id; + entity_id _id = 0; entity_id _dispatcher_id; QString _title; @@ -33,6 +35,8 @@ public: void serialize(QDataStream &output); void deserialize(QDataStream &input); + static void preloadGlobalId(entity_id gid); + static entity_id GID(); }; #endif // DPOINT_ENTITY_H diff --git a/sea_transport/entities/user_entity.cpp b/sea_transport/entities/user_entity.cpp index 9c628e6..9d0e641 100644 --- a/sea_transport/entities/user_entity.cpp +++ b/sea_transport/entities/user_entity.cpp @@ -1,8 +1,10 @@ #include "user_entity.h" +entity_id user_entity::__global_id = 0; + user_entity::user_entity() { - this->_id += QRandomGenerator().generate64(); + this->_id = ++user_entity::__global_id + QRandomGenerator().generate64(); } user_entity::user_entity(const QString &login, const QString &password, UserRole role) : _login(login), _role(role) { @@ -47,3 +49,11 @@ void user_entity::serialize(QDataStream &output) { void user_entity::deserialize(QDataStream &input) { input >> this->_id >> this->_login >> this->_role >> this->_pwd_hash; } + +void user_entity::preloadGlobalId(entity_id gid) { + user_entity::__global_id = gid; +} + +entity_id user_entity::GID() { + return user_entity::__global_id; +} diff --git a/sea_transport/entities/user_entity.h b/sea_transport/entities/user_entity.h index 6ab2de9..f3387a1 100644 --- a/sea_transport/entities/user_entity.h +++ b/sea_transport/entities/user_entity.h @@ -15,6 +15,8 @@ enum class UserRole { class user_entity : public IEntity { private: + static entity_id __global_id; + entity_id _id = 0; QString _login; UserRole _role; @@ -33,6 +35,8 @@ public: void serialize(QDataStream &output); void deserialize(QDataStream &input); + static void preloadGlobalId(entity_id gid); + static entity_id GID(); }; #endif // USER_ENTITY_H diff --git a/sea_transport/system/apparatus.cpp b/sea_transport/system/apparatus.cpp index 9aa878d..3e8e2c7 100644 --- a/sea_transport/system/apparatus.cpp +++ b/sea_transport/system/apparatus.cpp @@ -39,9 +39,12 @@ void apparatus::save() { QDataStream stream(&f); // saving GIDs - entity_id vgid = vessel_entity::GID(); + entity_id cgid = cargo_entity::GID(); + entity_id dgid = dpoint_entity::GID(); entity_id sgid = storage_entity::GID(); - stream << vgid << sgid; + entity_id ugid = user_entity::GID(); + entity_id vgid = vessel_entity::GID(); + stream << cgid << dgid << sgid << ugid << vgid; // serializing data this->_auth_system->serialize_data(&stream); @@ -52,17 +55,20 @@ void apparatus::save() { void apparatus::load() { if (_instance == nullptr) { - throw std::runtime_error("HOW DU FUCK INSTANCE IS NULL????"); + throw std::runtime_error("NO WAY INSTANCE IS NULL!"); } QFile f(apparatus::filename); f.open(QIODevice::ReadOnly); QDataStream stream(&f); // loading GIDs - entity_id vgid, sgid = vgid = 0; - stream >> vgid >> sgid; - vessel_entity::preloadGlobalId(vgid); + entity_id cgid, dgid, sgid, ugid, vgid = ugid = sgid = dgid = cgid = 0; + stream >> cgid >> dgid >> sgid >> ugid >> vgid; + cargo_entity::preloadGlobalId(cgid); + dpoint_entity::preloadGlobalId(dgid); storage_entity::preloadGlobalId(sgid); + user_entity::preloadGlobalId(ugid); + vessel_entity::preloadGlobalId(vgid); // deserializing data this->_auth_system->deserialize_data(&stream); diff --git a/sea_transport/usereditdialog.cpp b/sea_transport/usereditdialog.cpp index a84ba1b..3954ff9 100644 --- a/sea_transport/usereditdialog.cpp +++ b/sea_transport/usereditdialog.cpp @@ -52,7 +52,7 @@ void UserEditDialog::accept() { errDlg.setTextFormat(Qt::RichText); errDlg.setWindowTitle(tr("Error")); errDlg.setIcon(QMessageBox::Critical); - QString message = tr("Some errors happend, while saving your note:"); + QString message = tr("Some errors happend, while saving:"); if (emptyTitle) { message.append("
- Title cannot be empty (all spaces - empty too)"); }