ImagingTools Core SDK
CSqlDatabaseObjectDelegateCompBase.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <ilog/TLoggerCompWrap.h>
7#include <iprm/IOptionsList.h>
8
9// ImtCore includes
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>
15
16
17namespace imtdb
18{
19
20
21class CSqlDatabaseObjectDelegateCompBase:
22 public ilog::CLoggerComponentBase,
24{
25public:
26 typedef ilog::CLoggerComponentBase BaseClass;
27
28 I_BEGIN_BASE_COMPONENT(CSqlDatabaseObjectDelegateCompBase)
29 I_REGISTER_INTERFACE(imtdb::ISqlDatabaseObjectDelegate);
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");
37 I_END_COMPONENT
38
39 virtual QString SqlEncode(const QString& sqlQuery) const;
40
41 // reimplemented (imtdb::ISqlDatabaseObjectDelegate)
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(),
47 int offset = 0,
48 int count = -1,
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;
57 virtual QByteArray CreateResetQuery(const imtbase::IObjectCollection& collection) const override;
58 virtual QByteArray CreateDataMetaInfoQuery(
59 const imtbase::IObjectCollection& collection,
60 const QByteArray& objectId,
61 const idoc::IDocumentMetaInfo* dataMetaInfoPtr) const override;
62 virtual QByteArray CreateCollectionItemMetaInfoQuery(
63 const imtbase::IObjectCollection& collection,
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(
71 const imtbase::IObjectCollection& collection,
72 const imtbase::ICollectionInfo::Ids& objectIds,
73 const imtbase::IOperationContext* operationContextPtr = nullptr) const override;
74 virtual QByteArray CreateRestoreObjectSetQuery(
75 const imtbase::IObjectCollection& collection,
76 const iprm::IParamsSet* paramsPtr = nullptr,
77 const imtbase::IOperationContext* operationContextPtr = nullptr) const override;
78
79protected:
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;
88 virtual bool CreateObjectFilterQuery(const imtbase::IComplexCollectionFilter& collectionFilter, QString& filterQuery) const;
89 virtual bool CreateTextFilterQuery(const imtbase::ICollectionFilter& collectionFilter, QString& textFilterQuery) const;
90 virtual bool CreateTextFilterQuery(const imtbase::IComplexCollectionFilter& collectionFilter, QString& textFilterQuery) 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;
93 virtual bool CreateSortQuery(const imtbase::ICollectionFilter& collectionFilter, QString& sortQuery) const;
94 virtual bool CreateSortQuery(const imtbase::IComplexCollectionFilter& collectionFilter, QString& sortQuery) const;
95 virtual QString EncodeTextArgument(const QString& argument) const;
96 virtual bool TableExists(const QString& tableName) const;
97
98protected:
99 I_REF(imtdb::IDatabaseEngine, m_databaseEngineCompPtr);
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);
106};
107
108
109} // namespace imtdb
110
111
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.