Splitted dbmsglib for each class separate .h/.cpp
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include "mymessage.h"
|
#include "messages/mymessage.h"
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
@@ -1,47 +1,10 @@
|
|||||||
#include "dbmsglib.h"
|
#include "dbmsgbase.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QJsonObject>
|
|
||||||
#include <QVariantMap>
|
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
DbMsgFieldBase::DbMsgFieldBase() :
|
#include "dbmsgfieldbase.h"
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString DbMsgBase::m_clearedFieldsName(QStringLiteral("__CLEARED_FIELDS"));
|
const QString DbMsgBase::m_clearedFieldsName(QStringLiteral("__CLEARED_FIELDS"));
|
||||||
|
|
||||||
@@ -69,13 +32,7 @@ void DbMsgBase::debug() const
|
|||||||
{
|
{
|
||||||
const auto fields = getFields();
|
const auto fields = getFields();
|
||||||
for(auto iter = fields.cbegin(); iter != fields.cend(); iter++)
|
for(auto iter = fields.cbegin(); iter != fields.cend(); iter++)
|
||||||
qDebug() << iter.key() << iter.value()->getVariant() << iter.value()->touched();
|
qDebug() << iter.key() << iter.value()->toVariant() << iter.value()->touched();
|
||||||
}
|
|
||||||
|
|
||||||
void DbMsgBase::copyTo(QJsonObject &jsonObject) const
|
|
||||||
{
|
|
||||||
Q_UNUSED(jsonObject)
|
|
||||||
qCritical() << "has not been implemented for json yet";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DbMsgBase::copyTo(QVariantMap &variantMap) const
|
void DbMsgBase::copyTo(QVariantMap &variantMap) const
|
||||||
@@ -86,7 +43,7 @@ void DbMsgBase::copyTo(QVariantMap &variantMap) const
|
|||||||
const auto key = iter.key();
|
const auto key = iter.key();
|
||||||
const auto field = iter.value();
|
const auto field = iter.value();
|
||||||
const auto hasValue = field->hasValue();
|
const auto hasValue = field->hasValue();
|
||||||
const auto variant = field->getVariant();
|
const auto variant = field->toVariant();
|
||||||
if(hasValue)
|
if(hasValue)
|
||||||
variantMap.insert(key, variant);
|
variantMap.insert(key, variant);
|
||||||
else
|
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
|
void DbMsgBase::copyTouchedTo(QVariantMap &variantMap) const
|
||||||
{
|
{
|
||||||
QStringList clearedFields;
|
QStringList clearedFields;
|
||||||
@@ -109,7 +60,7 @@ void DbMsgBase::copyTouchedTo(QVariantMap &variantMap) const
|
|||||||
if(iter.value()->touched())
|
if(iter.value()->touched())
|
||||||
{
|
{
|
||||||
if(iter.value()->hasValue())
|
if(iter.value()->hasValue())
|
||||||
variantMap.insert(iter.key(), iter.value()->getVariant());
|
variantMap.insert(iter.key(), iter.value()->toVariant());
|
||||||
else
|
else
|
||||||
clearedFields.append(iter.key());
|
clearedFields.append(iter.key());
|
||||||
}
|
}
|
31
messagingcorelib/dbmsgbase.h
Normal file
31
messagingcorelib/dbmsgbase.h
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <QVariantMap>
|
||||||
|
#include <QMap>
|
||||||
|
|
||||||
|
#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<QString, DbMsgFieldBase*> getFields() = 0;
|
||||||
|
virtual QMap<QString, const DbMsgFieldBase*> getFields() const = 0;
|
||||||
|
};
|
69
messagingcorelib/dbmsgfield.h
Normal file
69
messagingcorelib/dbmsgfield.h
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "dbmsgfieldbase.h"
|
||||||
|
#include "messagingcorelib_global.h"
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
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<typename T>
|
||||||
|
DbMsgField<T>::DbMsgField() :
|
||||||
|
DbMsgFieldBase()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
DbMsgField<T>::DbMsgField(const T &value) :
|
||||||
|
DbMsgFieldBase(),
|
||||||
|
m_value(value)
|
||||||
|
{
|
||||||
|
setHasValue(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
T &DbMsgField<T>::getValue()
|
||||||
|
{
|
||||||
|
return m_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
const T &DbMsgField<T>::getValue() const
|
||||||
|
{
|
||||||
|
return m_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void DbMsgField<T>::setValue(const T &value)
|
||||||
|
{
|
||||||
|
m_value = value;
|
||||||
|
setHasValue(true);
|
||||||
|
setTouched(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void DbMsgField<T>::clear()
|
||||||
|
{
|
||||||
|
DbMsgFieldBase::clear();
|
||||||
|
m_value = T();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
QVariant DbMsgField<T>::toVariant() const
|
||||||
|
{
|
||||||
|
return getValue();
|
||||||
|
}
|
38
messagingcorelib/dbmsgfieldbase.cpp
Normal file
38
messagingcorelib/dbmsgfieldbase.cpp
Normal file
@@ -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;
|
||||||
|
}
|
27
messagingcorelib/dbmsgfieldbase.h
Normal file
27
messagingcorelib/dbmsgfieldbase.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QVariant>
|
||||||
|
|
||||||
|
#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;
|
||||||
|
};
|
@@ -1,119 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include <QVariant>
|
|
||||||
#include <QMap>
|
|
||||||
#include <QString>
|
|
||||||
|
|
||||||
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<typename T>
|
|
||||||
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<typename T>
|
|
||||||
DbMsgField<T>::DbMsgField() :
|
|
||||||
DbMsgFieldBase()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
DbMsgField<T>::DbMsgField(const T &value) :
|
|
||||||
DbMsgFieldBase(),
|
|
||||||
m_value(value)
|
|
||||||
{
|
|
||||||
setHasValue(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
T &DbMsgField<T>::getValue()
|
|
||||||
{
|
|
||||||
return m_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
const T &DbMsgField<T>::getValue() const
|
|
||||||
{
|
|
||||||
return m_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
void DbMsgField<T>::setValue(const T &value)
|
|
||||||
{
|
|
||||||
m_value = value;
|
|
||||||
setHasValue(true);
|
|
||||||
setTouched(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
void DbMsgField<T>::clear()
|
|
||||||
{
|
|
||||||
DbMsgFieldBase::clear();
|
|
||||||
m_value = T();
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
QVariant DbMsgField<T>::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<QString, DbMsgFieldBase*> getFields() = 0;
|
|
||||||
virtual QMap<QString, const DbMsgFieldBase*> getFields() const = 0;
|
|
||||||
};
|
|
@@ -4,9 +4,13 @@
|
|||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
|
|
||||||
#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)();
|
typedef DbMsgFieldBase &(MyMessage::*FieldGetterMethod)();
|
||||||
static const QMap<QString, FieldGetterMethod> m_fields;
|
static const QMap<QString, FieldGetterMethod> m_fields;
|
@@ -9,12 +9,15 @@ PROJECT_ROOT = ..
|
|||||||
DEFINES += MESSAGINGCORELIB_LIBRARY
|
DEFINES += MESSAGINGCORELIB_LIBRARY
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
mymessage.cpp \
|
dbmsgfieldbase.cpp \
|
||||||
dbmsglib.cpp
|
dbmsgbase.cpp \
|
||||||
|
messages/mymessage.cpp
|
||||||
|
|
||||||
HEADERS += messagingcorelib_global.h \
|
HEADERS += messagingcorelib_global.h \
|
||||||
mymessage.h \
|
dbmsgfieldbase.h \
|
||||||
dbmsglib.h
|
dbmsgfield.h \
|
||||||
|
dbmsgbase.h \
|
||||||
|
messages/mymessage.h
|
||||||
|
|
||||||
FORMS +=
|
FORMS +=
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user