6#include <ilog/TLoggerCompWrap.h>
7#include <iprm/IOptionsList.h>
10#include <imtbase/ICollectionFilter.h>
11#include <imtbase/IComplexCollectionFilter.h>
12#include <imtbase/ITimeFilterParam.h>
13#include <imtdb/ISqlDatabaseObjectDelegate.h>
14#include <imtdb/IDatabaseEngine.h>
21class CSqlDatabaseObjectDelegateCompBase:
22 public ilog::CLoggerComponentBase,
26 typedef ilog::CLoggerComponentBase BaseClass;
28 I_BEGIN_BASE_COMPONENT(CSqlDatabaseObjectDelegateCompBase)
30 I_ASSIGN(m_typesCompPtr,
"ObjectTypes",
"List of object types supported by the related database collection",
false,
"ObjectTypes");
31 I_ASSIGN(m_databaseEngineCompPtr,
"DatabaseEngine",
"Database engine for SQL queries",
true,
"DatabaseEngine");
32 I_ASSIGN(m_tableSchemaAttrPtr,
"TableSchema",
"Name of the schema containing the object table",
false,
"");
33 I_ASSIGN(m_tableNameAttrPtr,
"TableName",
"Name of the object table",
true,
"");
34 I_ASSIGN(m_objectIdColumnAttrPtr,
"ObjectIdColumn",
"Name of the column containing ID of the object",
true,
"Id");
35 I_ASSIGN(m_objectTypeIdColumnAttrPtr,
"ObjectTypeIdColumn",
"Name of the column containing type-ID of the object",
true,
"TypeId");
36 I_ASSIGN(m_versionInfoCompPtr,
"VersionInfo",
"Version info",
false,
"VersionInfo");
39 virtual QString
SqlEncode(
const QString& sqlQuery)
const;
42 virtual const iprm::IOptionsList* GetObjectTypeInfos()
const override;
43 virtual QByteArray GetObjectTypeId(
const QByteArray& objectId)
const override;
44 virtual QByteArray GetCountQuery(
const iprm::IParamsSet* paramsPtr =
nullptr)
const override;
45 virtual QByteArray GetSelectionQuery(
46 const QByteArray& objectId = QByteArray(),
49 const iprm::IParamsSet* paramsPtr =
nullptr)
const override;
50 virtual QByteArray GetObjectIdFromRecord(
const QSqlRecord& record)
const override;
51 virtual QByteArray GetObjectTypeIdFromRecord(
const QSqlRecord& record)
const override;
52 virtual bool CreateObjectInfoFromRecord(
53 const QSqlRecord& record,
54 idoc::MetaInfoPtr& objectMetaInfoPtr,
55 idoc::MetaInfoPtr& collectionItemMetaInfoPtr)
const override;
56 virtual QVariant GetElementInfoFromRecord(
const QSqlRecord& sqlRecord,
const QByteArray& infoId)
const override;
58 virtual QByteArray CreateDataMetaInfoQuery(
60 const QByteArray& objectId,
61 const idoc::IDocumentMetaInfo* dataMetaInfoPtr)
const override;
62 virtual QByteArray CreateCollectionItemMetaInfoQuery(
64 const QByteArray& objectId,
65 const idoc::IDocumentMetaInfo* collectionItemMetaInfoPtr)
const override;
66 virtual QByteArray GetSelectionByMetaInfoQuery(
const QByteArray& metaInfoId,
const QVariant& metaInfoValue)
const override;
67 virtual QByteArray CreateUpdateMetaInfoQuery(
const QSqlRecord& record)
const override;
68 virtual QByteArray GetTableName()
const override;
69 virtual QByteArray GetTableScheme()
const override;
70 virtual QByteArray CreateRestoreObjectsQuery(
72 const imtbase::ICollectionInfo::Ids& objectIds,
74 virtual QByteArray CreateRestoreObjectSetQuery(
76 const iprm::IParamsSet* paramsPtr =
nullptr,
80 virtual QString GetBaseSelectionQuery()
const;
81 virtual idoc::IDocumentMetaInfo* CreateCollectionItemMetaInfo(
const QByteArray& typeId)
const;
82 virtual bool SetCollectionItemMetaInfoFromRecord(
const QSqlRecord& record, idoc::IDocumentMetaInfo& metaInfo)
const;
83 virtual idoc::MetaInfoPtr CreateObjectMetaInfo(
const QByteArray& typeId)
const;
84 virtual bool SetObjectMetaInfoFromRecord(
const QSqlRecord& record, idoc::IDocumentMetaInfo& metaInfo)
const;
85 virtual bool CreatePaginationQuery(
int offset,
int count, QByteArray& paginationQuery)
const;
86 virtual bool CreateFilterQuery(
const iprm::IParamsSet& filterParams, QString& filterQuery)
const;
87 virtual bool CreateObjectFilterQuery(
const iprm::IParamsSet& filterParams, QString& filterQuery)
const;
91 virtual bool CreateTimeFilterQuery(
const imtbase::ITimeFilterParam& timeFilter, QString& timeFilterQuery,
const QString& timeFieldId = QStringLiteral(
"root1.\"TimeStamp\""))
const;
92 virtual QString CreateAdditionalFiltersQuery(
const iprm::IParamsSet& filterParams)
const;
95 virtual QString EncodeTextArgument(
const QString& argument)
const;
96 virtual bool TableExists(
const QString& tableName)
const;
100 I_REF(iprm::IOptionsList, m_typesCompPtr);
101 I_REF(iser::IVersionInfo, m_versionInfoCompPtr);
102 I_ATTR(QByteArray, m_tableSchemaAttrPtr);
103 I_ATTR(QByteArray, m_tableNameAttrPtr);
104 I_ATTR(QByteArray, m_objectIdColumnAttrPtr);
105 I_ATTR(QByteArray, m_objectTypeIdColumnAttrPtr);
Core database engine interface for low-level SQL execution and transaction management.
Database Abstraction Layer (ORM Framework) for ImtCore applications.
QString SqlEncode(const QString &sqlQuery)
Encodes a string for safe SQL usage.