ImagingTools Core SDK
IObjectCollection.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 <istd/TIFactory.h>
7#include <istd/TInterfacePtr.h>
8
9// ImtCore includes
10#include <imtbase/IObjectCollectionInfo.h>
11#include <imtbase/IOperationContext.h>
12
13
14namespace imtbase
15{
16
17
18class IHierarchicalStructure;
19class IRevisionController;
20class ICollectionDataController;
21class IObjectCollectionIterator;
22class IHierarchicalStructure;
23
24
30{
31public:
32 typedef istd::IChangeableSharedPtr DataPtr;
33
34 static const QByteArray CN_OBJECT_DATA_CHANGED;
35 typedef NotifierInfo ObjectDataChanged;
36
37 enum ChangeFlags
38 {
39 CF_OBJECT_DATA_CHANGED = CF_LAST
40 };
41
46 {
51
56
61
66
71
76
81 };
82
84
85 class IDataFactory
86 {
87 public:
88 virtual istd::IChangeableUniquePtr CreateInstance(const QByteArray& keyId = QByteArray()) const = 0;
89 virtual istd::IFactoryInfo::KeyList GetFactoryKeys() const = 0;
90 };
91
92 virtual IHierarchicalStructure* GetCollectionStructure() const;
93
97 virtual const IRevisionController* GetRevisionController() const = 0;
98
103
108 virtual int GetOperationFlags(const Id& elementId = Id()) const = 0;
109
121 virtual Id InsertNewObject(
122 const QByteArray& typeId,
123 const QString& name,
124 const QString& description,
125 const istd::IChangeable* defaultValuePtr = nullptr,
126 const Id& proposedElementId = Id(),
127 const idoc::IDocumentMetaInfo* dataMetaInfoPtr = nullptr,
128 const idoc::IDocumentMetaInfo* elementMetaInfoPtr = nullptr,
129 const IOperationContext* operationContextPtr = nullptr) = 0;
130
134 virtual bool RemoveElements(
135 const Ids& elementIds,
136 const IOperationContext* operationContextPtr = nullptr) = 0;
137
142 virtual bool RemoveElementSet(
143 const iprm::IParamsSet* selectionParamsPtr = nullptr,
144 const IOperationContext* operationContextPtr = nullptr) = 0;
145
149 virtual bool RestoreObjects(
150 const Ids& objectIds,
151 const IOperationContext* operationContextPtr = nullptr) = 0;
152
157 virtual bool RestoreObjectSet(
158 const iprm::IParamsSet* selectionParamsPtr = nullptr,
159 const IOperationContext* operationContextPtr = nullptr) = 0;
160
165 virtual const istd::IChangeable* GetObjectPtr(const Id& objectId) const = 0;
166
172 template<typename Interface>
173 const Interface* GetObjectPtr(const Id& objectId) const
174 {
175 return dynamic_cast<const Interface*>(GetObjectPtr(objectId));
176 }
177
181 virtual bool GetObjectData(const Id& objectId, DataPtr& dataPtr, const iprm::IParamsSet* dataConfigurationPtr = nullptr) const = 0;
182
186 virtual bool SetObjectData(
187 const Id& objectId,
188 const istd::IChangeable& object,
189 CompatibilityMode mode = CM_WITHOUT_REFS,
190 const IOperationContext* operationContextPtr = nullptr) = 0;
191
198 virtual istd::TUniqueInterfacePtr<IObjectCollection> CreateSubCollection(
199 int offset = 0,
200 int count = -1,
201 const iprm::IParamsSet* selectionParamsPtr = nullptr) const = 0;
202
210 const QByteArray& objectId = QByteArray(),
211 int offset = 0,
212 int count = -1,
213 const iprm::IParamsSet* selectionParamsPtr = nullptr) const = 0;
214
219 virtual void ResetObjectIds();
220};
221
222
223// public inline methods
224
226{
227 Q_ASSERT_X(false, "IObjectCollection::ResetObjectIds", "Method not implemented");
228}
229
230
231typedef istd::TUniqueInterfacePtr<IObjectCollection> IObjectCollectionUniquePtr;
232typedef istd::TSharedInterfacePtr<IObjectCollection> IObjectCollectionSharedPtr;
233
234
235} // namespace imtbase
236
237
const Interface * GetObjectPtr(const Id &objectId) const
virtual bool RestoreObjectSet(const iprm::IParamsSet *selectionParamsPtr=nullptr, const IOperationContext *operationContextPtr=nullptr)=0
virtual imtbase::IObjectCollectionIterator * CreateObjectCollectionIterator(const QByteArray &objectId=QByteArray(), int offset=0, int count=-1, const iprm::IParamsSet *selectionParamsPtr=nullptr) const =0
virtual const ICollectionDataController * GetDataController() const =0
virtual bool RemoveElementSet(const iprm::IParamsSet *selectionParamsPtr=nullptr, const IOperationContext *operationContextPtr=nullptr)=0
virtual const istd::IChangeable * GetObjectPtr(const Id &objectId) const =0
virtual const IRevisionController * GetRevisionController() const =0
virtual bool RemoveElements(const Ids &elementIds, const IOperationContext *operationContextPtr=nullptr)=0
virtual bool GetObjectData(const Id &objectId, DataPtr &dataPtr, const iprm::IParamsSet *dataConfigurationPtr=nullptr) const =0
virtual int GetOperationFlags(const Id &elementId=Id()) const =0
virtual bool RestoreObjects(const Ids &objectIds, const IOperationContext *operationContextPtr=nullptr)=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 SetObjectData(const Id &objectId, const istd::IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS, const IOperationContext *operationContextPtr=nullptr)=0
virtual istd::TUniqueInterfacePtr< IObjectCollection > CreateSubCollection(int offset=0, int count=-1, const iprm::IParamsSet *selectionParamsPtr=nullptr) const =0