6#include <QtSql/QSqlRecord>
9#include <istd/CCrcCalculator.h>
10#include <istd/TDelPtr.h>
11#include <ilog/CMessage.h>
12#include <iprm/IParamsSet.h>
13#include <iprm/ITextParam.h>
20template <
class BaseDelegate>
21class TMessageDatabaseDelegateComp:
public BaseDelegate
24 typedef BaseDelegate BaseClass;
26 I_BEGIN_COMPONENT(TMessageDatabaseDelegateComp)
30 virtual istd::IChangeableUniquePtr CreateObjectFromRecord(
31 const QSqlRecord& record,
32 const iprm::IParamsSet* paramsPtr =
nullptr)
const override;
33 virtual bool CreateObjectFilterQuery(
const iprm::IParamsSet& filterParams, QString& filterQuery)
const override;
41template <
class BaseDelegate>
42istd::IChangeableUniquePtr TMessageDatabaseDelegateComp<BaseDelegate>::CreateObjectFromRecord(
43 const QSqlRecord& record,
44 const iprm::IParamsSet* )
const
46 if (!this->m_databaseEngineCompPtr.IsValid()){
50 if (!this->m_documentFactoriesCompPtr.IsValid()){
54 istd::IChangeableUniquePtr documentPtr;
55 documentPtr.SetPtr(
new ilog::CMessage());
56 if (!documentPtr.IsValid()){
60 if (record.contains(
"Document")){
61 QByteArray documentContent = record.value(qPrintable(
"Document")).toByteArray();
63 if (BaseDelegate::ReadDataFromMemory(
"MessageInfo", documentContent, *documentPtr)){
72template <
class BaseDelegate>
73bool TMessageDatabaseDelegateComp<BaseDelegate>::CreateObjectFilterQuery(
const iprm::IParamsSet& filterParams, QString& filterQuery)
const
75 const iprm::IParamsSet* categoryParamsSetPtr =
dynamic_cast<const iprm::IParamsSet*
>(filterParams.GetParameter(
"Category"));
76 if (categoryParamsSetPtr !=
nullptr){
77 iprm::IParamsSet::Ids paramIds = categoryParamsSetPtr->GetParamIds();
79 if (!paramIds.isEmpty()){
80#if QT_VERSION < 0x060000
81 QByteArrayList idsList(paramIds.toList());
83 QByteArrayList idsList(paramIds.cbegin(), paramIds.cend());
85 for (
int i = 0; i < idsList.size(); i++){
86 const QByteArray& key = idsList[i];
88 const iprm::ITextParam* textParamPtr =
dynamic_cast<const iprm::ITextParam*
>(categoryParamsSetPtr->GetParameter(key));
89 if (textParamPtr ==
nullptr){
93 QString value = textParamPtr->GetText();
94 if (key ==
"VerboseFilter" && value ==
"false"){
95 if (!filterQuery.isEmpty()){
96 filterQuery +=
" AND ";
98 filterQuery += QString(
"json_extract(\"Document\",'$.Category') != 0");
100 else if (key ==
"InfoFilter" && value ==
"false"){
101 if (!filterQuery.isEmpty()){
102 filterQuery +=
" AND ";
104 filterQuery += QString(
"json_extract(\"Document\",'$.Category') != 1");
106 else if (key ==
"WarningFilter" && value ==
"false"){
107 if (!filterQuery.isEmpty()){
108 filterQuery +=
" AND ";
110 filterQuery += QString(
"json_extract(\"Document\",'$.Category') != 2");
112 else if (key ==
"ErrorFilter" && value ==
"false"){
113 if (!filterQuery.isEmpty()){
114 filterQuery +=
" AND ";
116 filterQuery += QString(
"json_extract(\"Document\",'$.Category') != 3");
118 else if (key ==
"CriticalFilter" && value ==
"false"){
119 if (!filterQuery.isEmpty()){
120 filterQuery +=
" AND ";
122 filterQuery += QString(
"json_extract(\"Document\",'$.Category') != 4");
128 const iprm::IParamsSet* sourceParamsSetPtr =
dynamic_cast<const iprm::IParamsSet*
>(filterParams.GetParameter(
"Source"));
129 if (sourceParamsSetPtr !=
nullptr){
130 iprm::IParamsSet::Ids paramIds = sourceParamsSetPtr->GetParamIds();
132 if (!paramIds.isEmpty()){
133#if QT_VERSION < 0x060000
134 QByteArrayList idsList(paramIds.toList());
136 QByteArrayList idsList(paramIds.cbegin(), paramIds.cend());
138 for (
int i = 0; i < idsList.size(); i++){
139 const QByteArray& key = idsList[i];
141 const iprm::ITextParam* textParamPtr =
dynamic_cast<const iprm::ITextParam*
>(sourceParamsSetPtr->GetParameter(key));
142 if (textParamPtr ==
nullptr){
146 QString value = textParamPtr->GetText();
147 if (value ==
"false"){
148 if (!filterQuery.isEmpty()){
149 filterQuery +=
" AND ";
151 filterQuery += QString(
"json_extract(\"Document\",'$.Source') != '%1'").arg(qPrintable(key));
Database Abstraction Layer (ORM Framework) for ImtCore applications.