2018-09-01 18:06:46 +02:00
|
|
|
#include "dbmsgbase.h"
|
2018-09-01 16:50:01 +02:00
|
|
|
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
|
2018-09-01 18:06:46 +02:00
|
|
|
#include "dbmsgfieldbase.h"
|
2018-09-01 17:52:29 +02:00
|
|
|
|
|
|
|
|
const QString DbMsgBase::m_clearedFieldsName(QStringLiteral("__CLEARED_FIELDS"));
|
|
|
|
|
|
2018-09-01 16:50:01 +02:00
|
|
|
DbMsgBase::DbMsgBase()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DbMsgBase::~DbMsgBase()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool DbMsgBase::touched() const
|
|
|
|
|
{
|
|
|
|
|
const auto fields = getFields();
|
|
|
|
|
return std::any_of(fields.cbegin(), fields.cend(), [](const DbMsgFieldBase *field) { return field->touched(); });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DbMsgBase::setTouched(bool touched)
|
|
|
|
|
{
|
|
|
|
|
for(DbMsgFieldBase *field : getFields())
|
|
|
|
|
field->setTouched(touched);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DbMsgBase::debug() const
|
|
|
|
|
{
|
|
|
|
|
const auto fields = getFields();
|
|
|
|
|
for(auto iter = fields.cbegin(); iter != fields.cend(); iter++)
|
2018-09-01 18:06:46 +02:00
|
|
|
qDebug() << iter.key() << iter.value()->toVariant() << iter.value()->touched();
|
2018-09-01 17:02:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DbMsgBase::copyTo(QVariantMap &variantMap) const
|
|
|
|
|
{
|
|
|
|
|
const auto fields = getFields();
|
|
|
|
|
for(auto iter = fields.cbegin(); iter != fields.cend(); iter++)
|
2018-09-01 17:52:29 +02:00
|
|
|
{
|
|
|
|
|
const auto key = iter.key();
|
|
|
|
|
const auto field = iter.value();
|
|
|
|
|
const auto hasValue = field->hasValue();
|
2018-09-01 18:06:46 +02:00
|
|
|
const auto variant = field->toVariant();
|
2018-09-01 17:52:29 +02:00
|
|
|
if(hasValue)
|
|
|
|
|
variantMap.insert(key, variant);
|
|
|
|
|
else
|
|
|
|
|
qWarning() << key << "has no value for full transmission!";
|
|
|
|
|
}
|
2018-09-01 17:02:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DbMsgBase::copyTouchedTo(QVariantMap &variantMap) const
|
|
|
|
|
{
|
2018-09-01 17:52:29 +02:00
|
|
|
QStringList clearedFields;
|
|
|
|
|
|
2018-09-01 17:02:21 +02:00
|
|
|
const auto fields = getFields();
|
|
|
|
|
for(auto iter = fields.cbegin(); iter != fields.cend(); iter++)
|
|
|
|
|
if(iter.value()->touched())
|
2018-09-01 17:52:29 +02:00
|
|
|
{
|
|
|
|
|
if(iter.value()->hasValue())
|
2018-09-01 18:06:46 +02:00
|
|
|
variantMap.insert(iter.key(), iter.value()->toVariant());
|
2018-09-01 17:52:29 +02:00
|
|
|
else
|
|
|
|
|
clearedFields.append(iter.key());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!clearedFields.isEmpty())
|
|
|
|
|
variantMap.insert(m_clearedFieldsName, clearedFields);
|
2018-09-01 17:02:21 +02:00
|
|
|
}
|