6#include <QtCore/QReadWriteLock>
10#include <ilog/TLoggerCompWrap.h>
11#include <iprm/COptionsManager.h>
12#include <iprm/IEnableableParam.h>
15#include <imtdb/ISqlDatabaseObjectCollection.h>
16#include <imtbase/IObjectCollectionIterator.h>
17#include <imtbase/ICollectionDataController.h>
18#include <imtbase/IMetaInfoCreator.h>
19#include <imtbase/TModelUpdateBinder.h>
20#include <imtdb/IDatabaseEngine.h>
21#include <imtdb/ISqlDatabaseObjectDelegate.h>
22#include <imtdb/IDatabaseLoginSettings.h>
34 public ilog::CLoggerComponentBase,
39 typedef ilog::CLoggerComponentBase BaseClass;
46 I_ASSIGN(m_objectCollectionFactoryCompPtr,
"ObjectCollectionFactory",
"Factory used for object collection creation",
false,
"ObjectCollectionFactory");
47 I_ASSIGN(m_dbEngineCompPtr,
"DatabaseEngine",
"Database engine used for low level SQL quering",
true,
"DatabaseEngine");
48 I_ASSIGN(m_objectDelegateCompPtr,
"ObjectDelegate",
"Database object delegate used for creation of C++ objects from the SQL record",
true,
"ObjectDelegate");
49 I_ASSIGN(m_metaInfoCreatorCompPtr,
"MetaInfoCreator",
"Meta-info creator",
false,
"MetaInfoCreator");
50 I_ASSIGN(m_databaseAccessSettingsCompPtr,
"DatabaseAccessSettings",
"Database access settings",
false,
"DatabaseAccessSettings");
51 I_ASSIGN(m_collectionDataControllerCompPtr,
"CollectionDataController",
"Data export/import controller for the collection",
false,
"DataController");
57 virtual QByteArray GetDatabaseId()
const override;
58 virtual bool AreInternalTransactionsEnabled()
const override;
59 virtual bool SetInternalTransactionsEnabled(
bool isEnabled)
override;
64 virtual int GetOperationFlags(
const QByteArray& objectId = QByteArray())
const override;
65 virtual QByteArray InsertNewObject(
66 const QByteArray& typeId,
68 const QString& description,
69 const istd::IChangeable* defaultValuePtr =
nullptr,
70 const QByteArray& proposedObjectId = QByteArray(),
71 const idoc::IDocumentMetaInfo* dataMetaInfoPtr =
nullptr,
72 const idoc::IDocumentMetaInfo* elementMetaInfoPtr =
nullptr,
75 virtual bool RemoveElementSet(
76 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
78 virtual bool RestoreObjects(
81 virtual bool RestoreObjectSet(
82 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
84 virtual const istd::IChangeable* GetObjectPtr(
const QByteArray& objectId)
const override;
85 virtual bool GetObjectData(
const QByteArray& objectId, DataPtr& dataPtr,
const iprm::IParamsSet* dataConfigurationPtr =
nullptr)
const override;
86 virtual bool SetObjectData(
88 const istd::IChangeable&
object,
89 CompatibilityMode mode = CM_WITHOUT_REFS,
91 virtual imtbase::IObjectCollectionUniquePtr CreateSubCollection(
94 const iprm::IParamsSet* selectionParamsPtr =
nullptr)
const override;
96 const QByteArray& objectId = QByteArray(),
99 const iprm::IParamsSet* selectionParamsPtr =
nullptr)
const override;
102 virtual const iprm::IOptionsList* GetObjectTypesInfo()
const override;
103 virtual Id GetObjectTypeId(
const QByteArray& objectId)
const override;
104 virtual idoc::MetaInfoPtr GetDataMetaInfo(
const Id& objectId)
const override;
107 virtual int GetElementsCount(
108 const iprm::IParamsSet* selectionParamPtr =
nullptr,
109 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
110 virtual Ids GetElementIds(
113 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
114 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
115 virtual bool GetSubsetInfo(
119 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
120 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
121 virtual QVariant GetElementInfo(
const QByteArray& elementId,
int infoType, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
122 virtual idoc::MetaInfoPtr GetElementMetaInfo(
const Id& elementId, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
123 virtual bool SetElementName(
const Id& elementId,
const QString& name, ilog::IMessageConsumer* logPtr =
nullptr)
override;
124 virtual bool SetElementDescription(
const Id& elementId,
const QString& description, ilog::IMessageConsumer* logPtr =
nullptr)
override;
125 virtual bool SetElementEnabled(
const Id& elementId,
bool isEnabled =
true, ilog::IMessageConsumer* logPtr =
nullptr)
override;
128 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS)
override;
131 virtual bool IsObjectTypeSupported(
const QByteArray& typeId)
const;
132 virtual bool ExecuteTransaction(
const QByteArray& sqlQuery)
const;
133 virtual bool ExecuteTransaction(
const QByteArray& sqlQuery,
const QVariantMap& bindValues)
const;
134 QSqlRecord GetObjectRecord(
const QByteArray& objectId)
const;
135 void OnDatabaseAccessChanged(
136 const istd::IChangeable::ChangeSet& changeSet,
140 virtual void OnComponentCreated()
override;
141 virtual void OnComponentDestroyed()
override;
144 void AddOperationContextToChangeSet(
const imtbase::IOperationContext& operationContext, istd::IChangeable::ChangeSet& changeSet)
const;
158 bool m_isInitialized;
160 mutable QRecursiveMutex m_transactionDisableCountersMutex;
161 QMap<Qt::HANDLE, int> m_transactionDisableCounters;
Core database engine interface for low-level SQL execution and transaction management.
Configuration interface for database connection credentials and parameters.
SQL-specific extension of IObjectCollection for database-backed object collections.
Database Abstraction Layer (ORM Framework) for ImtCore applications.