ImagingTools Core SDK
CDependentTableMetaInfoControllerComp.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 <imod/IModel.h>
7#include <imod/CSingleModelObserverBase.h>
8#include <ilog/TLoggerCompWrap.h>
9
10// ImtCore includes
11#include <imtbase/IObjectCollection.h>
12#include <imtdb/IDependentMetaInfoController.h>
13
14
15namespace imtdb
16{
17
18
19class CDependentTableMetaInfoControllerComp: public ilog::CLoggerComponentBase, protected imod::CSingleModelObserverBase
20{
21public:
22 typedef ilog::CLoggerComponentBase BaseClass;
23
24 I_BEGIN_COMPONENT(CDependentTableMetaInfoControllerComp);
25 I_ASSIGN(m_objectCollectionCompPtr, "ObjectCollection", "Object collection", false, "ObjectCollection");
26 I_ASSIGN_TO(m_objectCollectionModelCompPtr, m_objectCollectionCompPtr, true);
27 I_ASSIGN(m_dependentMetaInfoControllerCompPtr, "DependentMetaInfoController", "Dependent meta info controller", true, "DependentMetaInfoController");
28 I_ASSIGN(m_metaInfoIdAttrPtr, "MetaInfoId", "Meta info ID", false, "");
29 I_ASSIGN(m_isDocumentSourceAttrPtr, "IsDocumentSource", "If true, the information will be taken from the document, else from the meta information", false, true);
30 I_ASSIGN(m_dependentTableNameAttrPtr, "DependentTableName", "Dependent table name", true, "");
31 I_ASSIGN_MULTI_0(m_metaInfoNameAttrPtr, "MetaInfoNames", "Meta info names", false);
32 I_ASSIGN_MULTI_0(m_dependentMetaInfoNameAttrPtr, "DependentMetaInfoNames", "Dependent meta info names", true);
33 I_END_COMPONENT;
34
35protected:
36 // reimplemented (imod::CSingleModelObserverBase)
37 virtual void OnUpdate(const istd::IChangeable::ChangeSet& changeSet) override;
38
39 // reimplemented (icomp::CComponentBase)
40 virtual void OnComponentCreated() override;
41 virtual void OnComponentDestroyed() override;
42
43private:
44 I_REF(imtbase::IObjectCollection, m_objectCollectionCompPtr);
45 I_REF(imod::IModel, m_objectCollectionModelCompPtr);
46 I_REF(imtdb::IDependentMetaInfoController, m_dependentMetaInfoControllerCompPtr);
47 I_ATTR(QString, m_metaInfoIdAttrPtr);
48 I_ATTR(QString, m_dependentTableNameAttrPtr);
49 I_ATTR(bool, m_isDocumentSourceAttrPtr);
50 I_MULTIATTR(QString, m_metaInfoNameAttrPtr);
51 I_MULTIATTR(QString, m_dependentMetaInfoNameAttrPtr);
52};
53
54
55} // namespace imtdb
56
Manages cascading metadata updates when related objects are deleted.
Database Abstraction Layer (ORM Framework) for ImtCore applications.