From f25d88b68ad2d162cd09205ce1d774ae948ebc2b Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 <0xFEEDC0DE64@gmail.com> Date: Sat, 1 Sep 2018 18:06:46 +0200 Subject: [PATCH] Splitted dbmsglib for each class separate .h/.cpp --- messagingclient/main.cpp | 2 +- .../{dbmsglib.cpp => dbmsgbase.cpp} | 59 +-------- messagingcorelib/dbmsgbase.h | 31 +++++ messagingcorelib/dbmsgfield.h | 69 ++++++++++ messagingcorelib/dbmsgfieldbase.cpp | 38 ++++++ messagingcorelib/dbmsgfieldbase.h | 27 ++++ messagingcorelib/dbmsglib.h | 119 ------------------ messagingcorelib/{ => messages}/mymessage.cpp | 0 messagingcorelib/{ => messages}/mymessage.h | 8 +- messagingcorelib/messagingcorelib.pro | 11 +- 10 files changed, 184 insertions(+), 180 deletions(-) rename messagingcorelib/{dbmsglib.cpp => dbmsgbase.cpp} (58%) create mode 100644 messagingcorelib/dbmsgbase.h create mode 100644 messagingcorelib/dbmsgfield.h create mode 100644 messagingcorelib/dbmsgfieldbase.cpp create mode 100644 messagingcorelib/dbmsgfieldbase.h delete mode 100644 messagingcorelib/dbmsglib.h rename messagingcorelib/{ => messages}/mymessage.cpp (100%) rename messagingcorelib/{ => messages}/mymessage.h (93%) diff --git a/messagingclient/main.cpp b/messagingclient/main.cpp index f56df89..ae2b587 100644 --- a/messagingclient/main.cpp +++ b/messagingclient/main.cpp @@ -1,7 +1,7 @@ #include #include -#include "mymessage.h" +#include "messages/mymessage.h" int main(int argc, char **argv) { diff --git a/messagingcorelib/dbmsglib.cpp b/messagingcorelib/dbmsgbase.cpp similarity index 58% rename from messagingcorelib/dbmsglib.cpp rename to messagingcorelib/dbmsgbase.cpp index 743974b..f5fb834 100644 --- a/messagingcorelib/dbmsglib.cpp +++ b/messagingcorelib/dbmsgbase.cpp @@ -1,47 +1,10 @@ -#include "dbmsglib.h" +#include "dbmsgbase.h" #include -#include -#include #include -DbMsgFieldBase::DbMsgFieldBase() : - m_hasValue(false), m_touched(false) -{ -} - -DbMsgFieldBase::~DbMsgFieldBase() -{ -} - -bool DbMsgFieldBase::hasValue() const -{ - return m_hasValue; -} - -void DbMsgFieldBase::clear() -{ - m_hasValue = false; -} - -bool DbMsgFieldBase::touched() const -{ - return m_touched; -} - -void DbMsgFieldBase::setTouched(bool touched) -{ - m_touched = touched; -} - -void DbMsgFieldBase::setHasValue(bool hasValue) -{ - if(m_hasValue && !hasValue) - clear(); - else - m_hasValue = hasValue; -} +#include "dbmsgfieldbase.h" const QString DbMsgBase::m_clearedFieldsName(QStringLiteral("__CLEARED_FIELDS")); @@ -69,13 +32,7 @@ void DbMsgBase::debug() const { const auto fields = getFields(); for(auto iter = fields.cbegin(); iter != fields.cend(); iter++) - qDebug() << iter.key() << iter.value()->getVariant() << iter.value()->touched(); -} - -void DbMsgBase::copyTo(QJsonObject &jsonObject) const -{ - Q_UNUSED(jsonObject) - qCritical() << "has not been implemented for json yet"; + qDebug() << iter.key() << iter.value()->toVariant() << iter.value()->touched(); } void DbMsgBase::copyTo(QVariantMap &variantMap) const @@ -86,7 +43,7 @@ void DbMsgBase::copyTo(QVariantMap &variantMap) const const auto key = iter.key(); const auto field = iter.value(); const auto hasValue = field->hasValue(); - const auto variant = field->getVariant(); + const auto variant = field->toVariant(); if(hasValue) variantMap.insert(key, variant); else @@ -94,12 +51,6 @@ void DbMsgBase::copyTo(QVariantMap &variantMap) const } } -void DbMsgBase::copyTouchedTo(QJsonObject &jsonObject) const -{ - Q_UNUSED(jsonObject) - qCritical() << "has not been implemented for json yet"; -} - void DbMsgBase::copyTouchedTo(QVariantMap &variantMap) const { QStringList clearedFields; @@ -109,7 +60,7 @@ void DbMsgBase::copyTouchedTo(QVariantMap &variantMap) const if(iter.value()->touched()) { if(iter.value()->hasValue()) - variantMap.insert(iter.key(), iter.value()->getVariant()); + variantMap.insert(iter.key(), iter.value()->toVariant()); else clearedFields.append(iter.key()); } diff --git a/messagingcorelib/dbmsgbase.h b/messagingcorelib/dbmsgbase.h new file mode 100644 index 0000000..2df545d --- /dev/null +++ b/messagingcorelib/dbmsgbase.h @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include + +#include "messagingcorelib_global.h" + +class DbMsgFieldBase; + +class MESSAGINGCORELIBSHARED_EXPORT DbMsgBase +{ + static const QString m_clearedFieldsName; + +public: + DbMsgBase(); + virtual ~DbMsgBase(); + + bool touched() const; + + void setTouched(bool touched); + + void debug() const; + + void copyTo(QVariantMap &variantMap) const; + void copyTouchedTo(QVariantMap &variantMap) const; + +protected: + virtual QMap getFields() = 0; + virtual QMap getFields() const = 0; +}; diff --git a/messagingcorelib/dbmsgfield.h b/messagingcorelib/dbmsgfield.h new file mode 100644 index 0000000..dac230f --- /dev/null +++ b/messagingcorelib/dbmsgfield.h @@ -0,0 +1,69 @@ +#pragma once + +#include "dbmsgfieldbase.h" +#include "messagingcorelib_global.h" + +template +class DbMsgField : public DbMsgFieldBase +{ +public: + DbMsgField(); + DbMsgField(const T &value); + + T &getValue(); + const T &getValue() const; + void setValue(const T &value); + + void clear() override; + QVariant toVariant() const override; + +private: + T m_value; +}; + +template +DbMsgField::DbMsgField() : + DbMsgFieldBase() +{ +} + +template +DbMsgField::DbMsgField(const T &value) : + DbMsgFieldBase(), + m_value(value) +{ + setHasValue(true); +} + +template +T &DbMsgField::getValue() +{ + return m_value; +} + +template +const T &DbMsgField::getValue() const +{ + return m_value; +} + +template +void DbMsgField::setValue(const T &value) +{ + m_value = value; + setHasValue(true); + setTouched(true); +} + +template +void DbMsgField::clear() +{ + DbMsgFieldBase::clear(); + m_value = T(); +} + +template +QVariant DbMsgField::toVariant() const +{ + return getValue(); +} diff --git a/messagingcorelib/dbmsgfieldbase.cpp b/messagingcorelib/dbmsgfieldbase.cpp new file mode 100644 index 0000000..46e33b3 --- /dev/null +++ b/messagingcorelib/dbmsgfieldbase.cpp @@ -0,0 +1,38 @@ +#include "dbmsgfieldbase.h" + +DbMsgFieldBase::DbMsgFieldBase() : + m_hasValue(false), m_touched(false) +{ +} + +DbMsgFieldBase::~DbMsgFieldBase() +{ +} + +bool DbMsgFieldBase::hasValue() const +{ + return m_hasValue; +} + +void DbMsgFieldBase::clear() +{ + m_hasValue = false; +} + +bool DbMsgFieldBase::touched() const +{ + return m_touched; +} + +void DbMsgFieldBase::setTouched(bool touched) +{ + m_touched = touched; +} + +void DbMsgFieldBase::setHasValue(bool hasValue) +{ + if(m_hasValue && !hasValue) + clear(); + else + m_hasValue = hasValue; +} diff --git a/messagingcorelib/dbmsgfieldbase.h b/messagingcorelib/dbmsgfieldbase.h new file mode 100644 index 0000000..5c1a3b4 --- /dev/null +++ b/messagingcorelib/dbmsgfieldbase.h @@ -0,0 +1,27 @@ +#pragma once + +#include + +#include "messagingcorelib_global.h" + +class MESSAGINGCORELIBSHARED_EXPORT DbMsgFieldBase +{ +public: + DbMsgFieldBase(); + virtual ~DbMsgFieldBase(); + + bool hasValue() const; + virtual void clear(); + + bool touched() const; + void setTouched(bool touched); + + virtual QVariant toVariant() const = 0; + +protected: + void setHasValue(bool hasValue); + +private: + bool m_hasValue; + bool m_touched; +}; diff --git a/messagingcorelib/dbmsglib.h b/messagingcorelib/dbmsglib.h deleted file mode 100644 index daf1f7a..0000000 --- a/messagingcorelib/dbmsglib.h +++ /dev/null @@ -1,119 +0,0 @@ -#pragma once - -#include -#include -#include - -class QJsonObject; - -class DbMsgFieldBase -{ -public: - DbMsgFieldBase(); - virtual ~DbMsgFieldBase(); - - bool hasValue() const; - virtual void clear(); - - bool touched() const; - void setTouched(bool touched); - - virtual QVariant getVariant() const = 0; - -protected: - void setHasValue(bool hasValue); - -private: - bool m_hasValue; - bool m_touched; -}; - -template -class DbMsgField : public DbMsgFieldBase -{ -public: - DbMsgField(); - DbMsgField(const T &value); - - T &getValue(); - const T &getValue() const; - void setValue(const T &value); - - void clear() override; - QVariant getVariant() const override; - -private: - T m_value; -}; - -template -DbMsgField::DbMsgField() : - DbMsgFieldBase() -{ -} - -template -DbMsgField::DbMsgField(const T &value) : - DbMsgFieldBase(), - m_value(value) -{ - setHasValue(true); -} - -template -T &DbMsgField::getValue() -{ - return m_value; -} - -template -const T &DbMsgField::getValue() const -{ - return m_value; -} - -template -void DbMsgField::setValue(const T &value) -{ - m_value = value; - setHasValue(true); - setTouched(true); -} - -template -void DbMsgField::clear() -{ - DbMsgFieldBase::clear(); - m_value = T(); -} - -template -QVariant DbMsgField::getVariant() const -{ - return getValue(); -} - -class DbMsgBase -{ - static const QString m_clearedFieldsName; - -public: - DbMsgBase(); - virtual ~DbMsgBase(); - - bool touched() const; - - void setTouched(bool touched); - - void debug() const; - - void copyTo(QJsonObject &jsonObject) const; - void copyTo(QVariantMap &variantMap) const; - - void copyTouchedTo(QJsonObject &jsonObject) const; - void copyTouchedTo(QVariantMap &variantMap) const; - -protected: - virtual QMap getFields() = 0; - virtual QMap getFields() const = 0; -}; diff --git a/messagingcorelib/mymessage.cpp b/messagingcorelib/messages/mymessage.cpp similarity index 100% rename from messagingcorelib/mymessage.cpp rename to messagingcorelib/messages/mymessage.cpp diff --git a/messagingcorelib/mymessage.h b/messagingcorelib/messages/mymessage.h similarity index 93% rename from messagingcorelib/mymessage.h rename to messagingcorelib/messages/mymessage.h index 77a1959..58f75c3 100644 --- a/messagingcorelib/mymessage.h +++ b/messagingcorelib/messages/mymessage.h @@ -4,9 +4,13 @@ #include #include -#include "dbmsglib.h" +#include "dbmsgbase.h" +#include "messagingcorelib_global.h" +#include "dbmsgfield.h" -class MyMessage : public DbMsgBase +class DbMsgFieldBase; + +class MESSAGINGCORELIBSHARED_EXPORT MyMessage : public DbMsgBase { typedef DbMsgFieldBase &(MyMessage::*FieldGetterMethod)(); static const QMap m_fields; diff --git a/messagingcorelib/messagingcorelib.pro b/messagingcorelib/messagingcorelib.pro index 20e465c..ce4f1ea 100644 --- a/messagingcorelib/messagingcorelib.pro +++ b/messagingcorelib/messagingcorelib.pro @@ -9,12 +9,15 @@ PROJECT_ROOT = .. DEFINES += MESSAGINGCORELIB_LIBRARY SOURCES += \ - mymessage.cpp \ - dbmsglib.cpp + dbmsgfieldbase.cpp \ + dbmsgbase.cpp \ + messages/mymessage.cpp HEADERS += messagingcorelib_global.h \ - mymessage.h \ - dbmsglib.h + dbmsgfieldbase.h \ + dbmsgfield.h \ + dbmsgbase.h \ + messages/mymessage.h FORMS +=