|
ImagingTools Core SDK
|
One of the most important aspects in the software development is the definition and implementation of the data layer. A general task here is the grouping of data, since we can assume that any software product must manage sets of entities. We call such sets of entities - Collection. The typical requirements for an entity collection are:
The aim of the collection module is to standardize the working with object collections through a set of general interfaces and the associated implementations
A collection is a container of items. We do not know anything about the structure or implementation detailes of the items in the container. The only thing we know about this container is that the items, that are located there, can be clearly identified (e.g. via a UUID). With regard to a collection, we therefore differentiate between two types of interfaces:
The basic interface for access to information about a collection is imtbase::ICollectionInfo. This simple interface allows querying all existing IDs of the elements in the collection. If the IDs of elements are known, the properties (descriptions) of these elements can be accessed (via these IDs)
For a collection itself, we don't have a general interface. Instead, there are interfaces for certain types of collections, the most important one is - imtbase::IObjectCollection. This interface describes the collection of data objects, that is, objects that implement directly or indirectly the istd::IChangeable interface. "Concrete" collection interfaces can offer their specialized extensions to the imtbase::ICollectionInfo interface. There is a suitable imtbase::IObjectCollectionInfo interface for imtbase::IObjectCollection.
As already said, for the collection of data objects we provide the interface imtbase::IObjectCollection. This interface allows CRUD/L operations for a document container. There are following implementations of object/document collections:
An important aspect is the management of informations about objects containing in the collection. We differentiate between of followng kinds of such informations: