ImagingTools Core SDK
Public Member Functions | List of all members
imtdb::ISqlDatabaseObjectCollectionabstract

SQL-specific extension of IObjectCollection for database-backed object collections. More...

#include <ISqlDatabaseObjectCollection.h>

Inheritance diagram for imtdb::ISqlDatabaseObjectCollection:
imtbase::IObjectCollection imtbase::IObjectCollectionInfo imtbase::ICollectionInfo imtdb::CSqlDatabaseObjectCollectionComp

Public Member Functions

virtual QByteArray GetDatabaseId () const =0
 Gets the unique identifier of the database hosting this collection.
 
virtual bool AreInternalTransactionsEnabled () const =0
 Checks if internal transactions are enabled for this collection.
 
virtual bool SetInternalTransactionsEnabled (bool isEnabled)=0
 Enables or disables internal transaction wrapping.
 
- Public Member Functions inherited from imtbase::IObjectCollection
virtual const IRevisionControllerGetRevisionController () const =0
 
virtual const ICollectionDataControllerGetDataController () const =0
 
virtual int GetOperationFlags (const Id &elementId=Id()) const =0
 
virtual Id InsertNewObject (const QByteArray &typeId, const QString &name, const QString &description, const istd::IChangeable *defaultValuePtr=nullptr, const Id &proposedElementId=Id(), const idoc::IDocumentMetaInfo *dataMetaInfoPtr=nullptr, const idoc::IDocumentMetaInfo *elementMetaInfoPtr=nullptr, const IOperationContext *operationContextPtr=nullptr)=0
 
virtual bool RemoveElements (const Ids &elementIds, const IOperationContext *operationContextPtr=nullptr)=0
 
virtual bool RemoveElementSet (const iprm::IParamsSet *selectionParamsPtr=nullptr, const IOperationContext *operationContextPtr=nullptr)=0
 
virtual bool RestoreObjects (const Ids &objectIds, const IOperationContext *operationContextPtr=nullptr)=0
 
virtual bool RestoreObjectSet (const iprm::IParamsSet *selectionParamsPtr=nullptr, const IOperationContext *operationContextPtr=nullptr)=0
 
virtual const istd::IChangeable * GetObjectPtr (const Id &objectId) const =0
 
template<typename Interface >
const Interface * GetObjectPtr (const Id &objectId) const
 
virtual bool GetObjectData (const Id &objectId, DataPtr &dataPtr, const iprm::IParamsSet *dataConfigurationPtr=nullptr) const =0
 
virtual bool SetObjectData (const Id &objectId, const istd::IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS, const IOperationContext *operationContextPtr=nullptr)=0
 
virtual istd::TUniqueInterfacePtr< IObjectCollectionCreateSubCollection (int offset=0, int count=-1, const iprm::IParamsSet *selectionParamsPtr=nullptr) const =0
 
virtual imtbase::IObjectCollectionIteratorCreateObjectCollectionIterator (const QByteArray &objectId=QByteArray(), int offset=0, int count=-1, const iprm::IParamsSet *selectionParamsPtr=nullptr) const =0
 
virtual void ResetObjectIds ()
 
- Public Member Functions inherited from imtbase::IObjectCollectionInfo
virtual const iprm::IOptionsList * GetObjectTypesInfo () const =0
 
virtual Id GetObjectTypeId (const Id &objectId) const =0
 
virtual idoc::MetaInfoPtr GetDataMetaInfo (const Id &objectId) const =0
 
- Public Member Functions inherited from imtbase::ICollectionInfo
virtual int GetElementsCount (const iprm::IParamsSet *selectionParamsPtr=nullptr, ilog::IMessageConsumer *logPtr=nullptr) const =0
 
virtual Ids GetElementIds (int offset=0, int count=-1, const iprm::IParamsSet *selectionParamsPtr=nullptr, ilog::IMessageConsumer *logPtr=nullptr) const =0
 
virtual bool GetSubsetInfo (ICollectionInfo &subsetInfo, int offset=0, int count=-1, const iprm::IParamsSet *selectionParamsPtr=nullptr, ilog::IMessageConsumer *logPtr=nullptr) const =0
 
virtual QVariant GetElementInfo (const Id &elementId, int infoType, ilog::IMessageConsumer *logPtr=nullptr) const =0
 
virtual idoc::MetaInfoPtr GetElementMetaInfo (const Id &elementId, ilog::IMessageConsumer *logPtr=nullptr) const =0
 
virtual bool SetElementName (const Id &elementId, const QString &name, ilog::IMessageConsumer *logPtr=nullptr)=0
 
virtual bool SetElementDescription (const Id &elementId, const QString &description, ilog::IMessageConsumer *logPtr=nullptr)=0
 
virtual bool SetElementEnabled (const Id &elementId, bool isEnabled=true, ilog::IMessageConsumer *logPtr=nullptr)=0
 

Additional Inherited Members

- Public Types inherited from imtbase::IObjectCollection
enum  OperationalFlags {
  OF_SUPPORT_RENAME = 1 , OF_SUPPORT_INSERT = 2 , OF_SUPPORT_DELETE = 4 , OF_SUPPORT_EDIT = 8 ,
  OF_SUPPORT_USING = 16 , OF_SUPPORT_PAGINATION = 32 , OF_ALL = OF_SUPPORT_RENAME | OF_SUPPORT_INSERT | OF_SUPPORT_DELETE | OF_SUPPORT_EDIT | OF_SUPPORT_USING | OF_SUPPORT_PAGINATION
}
 
- Public Types inherited from imtbase::ICollectionInfo
enum  ChangeFlags {
  CF_ADDED = 10000 , CF_ELEMENT_RENAMED , CF_ELEMENT_DESCRIPTION_CHANGED , CF_ELEMENT_STATE ,
  CF_REMOVED , CF_RESTORED , CF_LAST
}
 
enum  ElementInfoType { EIT_NAME , EIT_DESCRIPTION , EIT_ENABLED , EIT_USER = 1000 }
 
enum  MetaInfoType {
  MIT_INSERTION_USER = idoc::IDocumentMetaInfo::MIT_USER + 10000 , MIT_INSERTION_TIME , MIT_LAST_OPERATION_USER , MIT_LAST_OPERATION_TIME ,
  MIT_PREVIEW_THUMBNAIL , MIT_REVISION = idoc::IDocumentMetaInfo::MIT_USER + 20000
}
 

Detailed Description

SQL-specific extension of IObjectCollection for database-backed object collections.

ISqlDatabaseObjectCollection extends the base IObjectCollection interface with SQL-specific functionality, particularly transaction management control. This interface is used by collections that store objects in SQL databases (PostgreSQL, SQLite, etc.).

Key features:

Transaction Control

The collection supports two transaction modes:

Internal Transactions Enabled (default):

Internal Transactions Disabled:

// Single collection operations (internal transactions enabled)
collection->InsertNewObject(object, id); // Auto-commit
// Multi-collection transactions (internal transactions disabled)
auto txManager = acf::CreateComponent<CSqlDatabaseTransactionManagerComp>();
txManager->AddCollection(collection1);
txManager->AddCollection(collection2);
txManager->StartTransaction(); // Disables internal transactions
collection1->InsertNewObject(obj1, id1);
collection2->InsertNewObject(obj2, id2);
txManager->EndTransaction(true); // Commits both, re-enables internal transactions
See also
imtbase::IObjectCollection for base collection operations
CSqlDatabaseObjectCollectionComp for primary implementation
CSqlDatabaseTransactionManagerComp for coordinated multi-collection transactions

Definition at line 59 of file ISqlDatabaseObjectCollection.h.

Member Function Documentation

◆ AreInternalTransactionsEnabled()

virtual bool imtdb::ISqlDatabaseObjectCollection::AreInternalTransactionsEnabled ( ) const
pure virtual

Checks if internal transactions are enabled for this collection.

Returns whether the collection automatically wraps each operation (insert, update, delete) in its own transaction.

Returns
true if internal transactions are enabled (default), false if disabled
Note
Internal transactions are temporarily disabled when participating in multi-collection transactions via CSqlDatabaseTransactionManagerComp
See also
SetInternalTransactionsEnabled()

◆ GetDatabaseId()

virtual QByteArray imtdb::ISqlDatabaseObjectCollection::GetDatabaseId ( ) const
pure virtual

Gets the unique identifier of the database hosting this collection.

Returns a unique identifier for the database connection used by this collection. Useful for:

  • Determining if multiple collections share the same database
  • Coordinating transactions across collections in the same database
  • Debugging and logging database operations
Returns
Unique database identifier (typically connection name or database name hash)
Note
Collections with the same database ID can participate in shared transactions
See also
CSqlDatabaseTransactionManagerComp

◆ SetInternalTransactionsEnabled()

virtual bool imtdb::ISqlDatabaseObjectCollection::SetInternalTransactionsEnabled ( bool  isEnabled)
pure virtual

Enables or disables internal transaction wrapping.

Controls whether each collection operation runs in its own transaction.

When to disable internal transactions:

  • Coordinating operations across multiple collections
  • Using CSqlDatabaseTransactionManagerComp
  • Manual transaction management via IDatabaseEngine
  • Batch operations that should be atomic

When to enable internal transactions:

  • Default mode for independent operations
  • Single-collection scenarios
  • Automatic commit/rollback per operation desired
Parameters
isEnabledtrue to enable internal transactions, false to disable
Returns
true if setting changed successfully, false on error
Warning
Disabling internal transactions without an external transaction means operations will run without transaction protection (not recommended)
Note
CSqlDatabaseTransactionManagerComp automatically manages this setting
See also
AreInternalTransactionsEnabled()
CSqlDatabaseTransactionManagerComp