6#include <QtCore/QVector>
8#include <QtCore/QReadWriteLock>
11#include <istd/TOptInterfacePtr.h>
12#include <imod/CModelUpdateBridge.h>
13#include <idoc/CStandardDocumentMetaInfo.h>
14#include <imod/CSingleModelObserverBase.h>
17#include <imtbase/CObjectCollectionMetaInfo.h>
18#include <imtbase/ICollectionDataController.h>
19#include <imtbase/IMetaInfoCreator.h>
20#include <imtbase/IObjectCollection.h>
21#include <imtbase/IObjectCollectionIterator.h>
35 virtual public iser::ISerializable
42 virtual const ifile::IFilePersistence* GetPersistenceForObjectType(
const QByteArray& typeId)
const override;
43 virtual bool ExportFile(
46 const QString& targetFilePath = QString())
const override;
47 virtual Id ImportFile(
49 const QByteArray& typeId,
50 const QString& sourceFilePath = QString(),
51 const QString& objectName = QString())
const override;
56 virtual int GetOperationFlags(
const Id& objectId = Id())
const override;
57 virtual Id InsertNewObject(
58 const QByteArray& typeId,
60 const QString& description,
61 const istd::IChangeable* defaultValuePtr =
nullptr,
62 const Id& proposedElementId = Id(),
63 const idoc::IDocumentMetaInfo* dataMetaInfoPtr =
nullptr,
64 const idoc::IDocumentMetaInfo* elementMetaInfoPtr =
nullptr,
66 virtual bool RemoveElements(
const Ids& elementIds,
const IOperationContext* operationContextPtr =
nullptr)
override;
67 virtual bool RemoveElementSet(
68 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
70 virtual bool RestoreObjects(
73 virtual bool RestoreObjectSet(
74 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
76 virtual const istd::IChangeable* GetObjectPtr(
const Id& objectId)
const override;
77 virtual bool GetObjectData(
const Id& objectId, DataPtr& dataPtr,
const iprm::IParamsSet* dataConfigurationPtr =
nullptr)
const override;
78 virtual bool SetObjectData(
80 const istd::IChangeable&
object,
81 CompatibilityMode mode = CM_WITHOUT_REFS,
83 virtual IObjectCollectionUniquePtr CreateSubCollection(
int offset,
int count,
const iprm::IParamsSet *selectionParamsPtr)
const override;
85 const QByteArray& objectId = QByteArray(),
88 const iprm::IParamsSet* selectionParamsPtr =
nullptr)
const override;
91 virtual const iprm::IOptionsList* GetObjectTypesInfo()
const override;
92 virtual QByteArray GetObjectTypeId(
const Id& objectId)
const override;
93 virtual idoc::MetaInfoPtr GetDataMetaInfo(
const Id& objectId)
const override;
96 virtual int GetElementsCount(
97 const iprm::IParamsSet* selectionParamPtr =
nullptr,
98 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
99 virtual Ids GetElementIds(
102 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
103 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
104 virtual bool GetSubsetInfo(
108 const iprm::IParamsSet* selectionParamsPtr =
nullptr,
109 ilog::IMessageConsumer* logPtr =
nullptr)
const override;
110 virtual QVariant GetElementInfo(
const Id& elementId,
int infoType, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
111 virtual idoc::MetaInfoPtr GetElementMetaInfo(
const Id& elementId, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
112 virtual bool SetElementName(
const Id& elementId,
const QString& name, ilog::IMessageConsumer* logPtr =
nullptr)
override;
113 virtual bool SetElementDescription(
const Id& elementId,
const QString& description, ilog::IMessageConsumer* logPtr =
nullptr)
override;
114 virtual bool SetElementEnabled(
const Id& elementId,
bool isEnabled =
true, ilog::IMessageConsumer* logPtr =
nullptr)
override;
117 virtual bool Serialize(iser::IArchive & archive)
override;
120 virtual int GetSupportedOperations()
const override;
121 virtual bool CopyFrom(
const IChangeable&
object, CompatibilityMode mode = CM_WITHOUT_REFS)
override;
122 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS)
override;
128 CollectionIterator() =
delete;
130 ~CollectionIterator();
133 bool IsValid()
const;
136 virtual void OnUpdate(
const istd::IChangeable::ChangeSet& changeSet)
override;
139 virtual bool Next()
const override;
140 virtual bool Previous()
const override;
141 virtual QByteArray GetObjectId()
const override;
142 virtual QByteArray GetObjectTypeId()
const override;
143 virtual bool GetObjectData(IObjectCollection::DataPtr& dataPtr)
const override;
144 virtual idoc::MetaInfoPtr GetDataMetaInfo()
const override;
145 virtual int GetElementsCount()
const override;
146 virtual idoc::MetaInfoPtr GetCollectionMetaInfo()
const override;
147 virtual QVariant GetElementInfo(
int infoType)
const override;
148 virtual QVariant GetElementInfo(QByteArray infoId)
const override;
152 QByteArray GetObjectId(
int index)
const;
164 copyMode(istd::IChangeable::CM_WITHOUT_REFS)
166 id = QUuid::createUuid().toByteArray();
169 ObjectInfo(
const ObjectInfo&
object)
171 this->dataPtr =
object.dataPtr;
172 this->copyMode =
object.copyMode;
174 this->
id =
object.id;
175 this->typeId =
object.typeId;
176 this->name =
object.name;
177 this->isEnabled =
object.isEnabled;
178 this->flags =
object.flags;
179 this->description =
object.description;
180 this->collectionItemMetaInfo.CopyFrom(
object.collectionItemMetaInfo);
181 this->contentsMetaInfoPtr =
object.contentsMetaInfoPtr;
185 istd::TOptInterfacePtr<IChangeable> dataPtr;
191 istd::IChangeable::CompatibilityMode copyMode;
192 imtbase::CObjectCollectionMetaInfo collectionItemMetaInfo;
197 idoc::MetaInfoPtr contentsMetaInfoPtr;
200 typedef QVector<ObjectInfo> Objects;
225 virtual bool InsertObjectIntoCollection(ObjectInfo info);
226 virtual int GetItemDefaultFlags()
const;
227 ObjectInfo* GetObjectInfo(
const Id&
id)
const;
228 virtual void RemoveAllObjects();
231 istd::IChangeableUniquePtr CreateDataObject(
const QByteArray& typeId)
const;
234 imod::CModelUpdateBridge m_modelUpdateBridge;
235 mutable QReadWriteLock m_lock;
virtual istd::IChangeableUniquePtr CreateObjectInstance(const QByteArray &typeId) const =0
virtual IObjectCollection * CreateSubCollectionInstance() const
virtual IObjectCollection * GetObjectStorage(const QByteArray &typeId, const istd::IChangeable *objectPtr) const