DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
dbe
include
dbe
model_common_interface.hpp
Go to the documentation of this file.
1
// DUNE DAQ modification notice:
2
// This file has been modified from the original ATLAS dbe source for the DUNE DAQ project.
3
// Fork baseline commit: dbe-02-12-17 (2022-05-12).
4
// Renamed since fork: yes (from dbe/model_common_interface.h to include/dbe/model_common_interface.hpp).
5
6
/*
7
* model_common_interface.h
8
*
9
* Created on: Nov 16, 2015
10
* Author: lgeorgop
11
*/
12
13
#ifndef DBE_MODEL_COMMON_INTERFACE_H_
14
#define DBE_MODEL_COMMON_INTERFACE_H_
15
16
#include "
conffwk/ConfigObject.hpp
"
17
#include "
dbe/confaccessor.hpp
"
18
19
#include <QModelIndex>
20
#include <QString>
21
#include <QUuid>
22
23
#include <set>
24
#include <vector>
25
26
#define MODEL_COMMON_INTERFACE_UUID_DEF QUuid const uuid;
27
#define MODEL_COMMON_INTERFACE_UUID_DECL uuid(QUuid::createUuid())
28
29
#define MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS \
30
typedef QModelIndex type_index; \
31
typedef std::vector<type_index> type_indices; \
32
typedef dbe::tref type_object_ref; \
33
typedef dbe::dref type_object_info; \
34
typedef dunedaq::conffwk::class_t type_class_info;
35
36
namespace
dbe
{
37
//------------------------------------------------------------------------------------------
38
39
class
model_common_slots
40
{
41
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
42
43
public
:
44
virtual
~model_common_slots
() =
default
;
45
46
private
:
47
// These methods should be placed in slots declaration such that they can be parsed
48
// appropriately to create slots at each derived class
57
virtual
void
slot_remove_object
(QString
const
&,
dref
const
&) = 0;
58
68
virtual
void
slot_rename_object
(QString
const
&,
dref
const
&) = 0;
69
79
virtual
void
slot_update_object
(QString
const
&,
dref
const
&) = 0;
80
90
virtual
void
slot_create_object
(QString
const
&,
dref
const
&) = 0;
91
};
92
//------------------------------------------------------------------------------------------
93
94
//------------------------------------------------------------------------------------------
95
struct
model_common_data_access_interface
96
{
97
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
98
public
:
99
virtual
type_object_ref
getobject
(type_index
const
& index)
const
= 0;
100
101
virtual
type_class_info
getclass
(type_index
const
& index)
const
= 0;
102
103
virtual
QAbstractItemModel*
ReturnSourceModel
()
const
= 0;
104
105
virtual
~model_common_data_access_interface
() =
default
;
106
};
107
//------------------------------------------------------------------------------------------
108
109
//------------------------------------------------------------------------------------------
110
class
model_initiate_actions_interface
111
{
112
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
113
114
public
:
115
virtual
~model_initiate_actions_interface
() =
default
;
116
//-------------------------- FORWARD CHAIN ------------------------------------------------------------------------
117
// Front end functionality permits explicit actions on the objects linked to this model
118
// These methods should provoke actions onto the database itself
125
virtual
bool
delete_objects
(type_indices::iterator, type_indices::iterator) = 0;
126
virtual
bool
update_objects
(type_indices::iterator, type_indices::iterator) = 0;
127
virtual
bool
create_objects
(type_indices::iterator, type_indices::iterator) = 0;
128
};
129
//------------------------------------------------------------------------------------------
130
131
//------------------------------------------------------------------------------------------
135
class
model_common_interface
136
:
public
model_initiate_actions_interface
137
,
public
model_common_data_access_interface
138
,
private
model_common_slots
139
{
140
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
141
142
friend
class
model_common_slots
;
143
144
public
:
145
virtual
~model_common_interface
() =
default
;
146
147
protected
:
153
virtual
void
remove_deleted_object
(type_index
const
& index) = 0;
154
162
virtual
void
rename_contained_object
(type_index
const
& index, type_object_info
const
& obj) = 0;
163
171
virtual
void
update_contained_object
(type_index
const
& index, type_object_info
const
& obj) = 0;
179
virtual
void
create_contained_object
(type_index
const
& index, type_object_info
const
& obj) = 0;
180
187
virtual
type_index
lookup
(type_object_info
const
&) = 0;
188
189
QUuid
getuuid
()
const
;
190
};
191
//------------------------------------------------------------------------------------------
192
193
//------------------------------------------------------------------------------------------
202
template
<
typename
T>
203
class
model_common_impl
:
public
model_common_interface
204
{
205
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
206
207
public
:
215
bool
delete_objects
(type_indices::iterator, type_indices::iterator)
override
;
216
223
bool
update_objects
(type_indices::iterator, type_indices::iterator)
override
;
224
231
bool
create_objects
(type_indices::iterator, type_indices::iterator)
override
;
232
233
// private:
234
// FOR FUTURE USE
235
// static std::vector<type_object_info> filter_indices(type_indices::iterator,
236
// type_indices::iterator);
237
};
238
//------------------------------------------------------------------------------------------
239
240
//------------------------------------------------------------------------------------------
253
template
<
typename
T>
254
class
model_common_async_operations
255
{
256
public
:
257
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
258
259
model_common_async_operations
();
260
266
void
model_common_connections
();
267
268
protected
:
269
//-------------------------- BACK CHAIN
270
//-------------------------------------------------------------------------------
271
// Back end functionality that permits to implicitly act on an object referenced in this model
272
// These methods should NOT take action onto the database but only on the referenced model
273
279
void
remove_object
(type_object_info
const
&);
280
void
create_object
(type_object_info
const
&);
281
void
rename_object
(type_object_info
const
&);
282
void
update_object
(type_object_info
const
&);
283
void
update_multiple_objects
(std::vector<type_object_info>
const
&);
284
285
MODEL_COMMON_INTERFACE_UUID_DEF
286
};
287
//------------------------------------------------------------------------------------------
288
289
}
// namespace dbe
290
291
#include "
dbe/model_common_interface_macros.hpp
"
292
#include "
dbe/model_common_operations.hpp
"
293
294
#endif
/* DBE_MODEL_COMMON_INTERFACE_H_ */
ConfigObject.hpp
dbe::model_common_async_operations::update_multiple_objects
void update_multiple_objects(std::vector< type_object_info > const &)
Definition
model_common_operations.hpp:88
dbe::model_common_async_operations::model_common_connections
void model_common_connections()
Definition
model_common_operations.hpp:31
dbe::model_common_async_operations::remove_object
void remove_object(type_object_info const &)
Definition
model_common_operations.hpp:55
dbe::model_common_async_operations::rename_object
void rename_object(type_object_info const &)
Definition
model_common_operations.hpp:66
dbe::model_common_async_operations::update_object
void update_object(type_object_info const &)
Definition
model_common_operations.hpp:77
dbe::model_common_async_operations::model_common_async_operations
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS model_common_async_operations()
Definition
model_common_operations.hpp:125
dbe::model_common_async_operations::create_object
void create_object(type_object_info const &)
Definition
model_common_operations.hpp:115
dbe::model_common_impl
Definition
model_common_interface.hpp:204
dbe::model_common_impl::create_objects
bool create_objects(type_indices::iterator, type_indices::iterator) override
Definition
model_common_operations.hpp:226
dbe::model_common_impl::delete_objects
bool delete_objects(type_indices::iterator, type_indices::iterator) override
dbe::model_common_impl::update_objects
bool update_objects(type_indices::iterator, type_indices::iterator) override
Definition
model_common_operations.hpp:215
dbe::model_common_interface
Definition
model_common_interface.hpp:139
dbe::model_common_interface::remove_deleted_object
virtual void remove_deleted_object(type_index const &index)=0
dbe::model_common_interface::rename_contained_object
virtual void rename_contained_object(type_index const &index, type_object_info const &obj)=0
dbe::model_common_interface::lookup
virtual type_index lookup(type_object_info const &)=0
dbe::model_common_interface::getuuid
QUuid getuuid() const
dbe::model_common_interface::update_contained_object
virtual void update_contained_object(type_index const &index, type_object_info const &obj)=0
dbe::model_common_interface::model_common_slots
friend class model_common_slots
Definition
model_common_interface.hpp:142
dbe::model_common_interface::~model_common_interface
virtual ~model_common_interface()=default
dbe::model_common_interface::create_contained_object
virtual void create_contained_object(type_index const &index, type_object_info const &obj)=0
dbe::model_common_slots
Definition
model_common_interface.hpp:40
dbe::model_common_slots::slot_rename_object
virtual void slot_rename_object(QString const &, dref const &)=0
dbe::model_common_slots::slot_update_object
virtual void slot_update_object(QString const &, dref const &)=0
dbe::model_common_slots::~model_common_slots
virtual ~model_common_slots()=default
dbe::model_common_slots::slot_remove_object
virtual void slot_remove_object(QString const &, dref const &)=0
dbe::model_common_slots::slot_create_object
virtual void slot_create_object(QString const &, dref const &)=0
dbe::model_initiate_actions_interface
Definition
model_common_interface.hpp:111
dbe::model_initiate_actions_interface::delete_objects
virtual bool delete_objects(type_indices::iterator, type_indices::iterator)=0
dbe::model_initiate_actions_interface::create_objects
virtual bool create_objects(type_indices::iterator, type_indices::iterator)=0
dbe::model_initiate_actions_interface::~model_initiate_actions_interface
virtual ~model_initiate_actions_interface()=default
dbe::model_initiate_actions_interface::update_objects
virtual bool update_objects(type_indices::iterator, type_indices::iterator)=0
confaccessor.hpp
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
#define MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
Definition
model_common_interface.hpp:29
MODEL_COMMON_INTERFACE_UUID_DEF
#define MODEL_COMMON_INTERFACE_UUID_DEF
Definition
model_common_interface.hpp:26
model_common_interface_macros.hpp
model_common_operations.hpp
dbe
Include QT Headers.
Definition
BatchChangeWidget.hpp:16
dbe::dref
config_object_description dref
Definition
confobject_desc.hpp:90
dbe::model_common_data_access_interface
Definition
model_common_interface.hpp:96
dbe::model_common_data_access_interface::~model_common_data_access_interface
virtual ~model_common_data_access_interface()=default
dbe::model_common_data_access_interface::getclass
virtual type_class_info getclass(type_index const &index) const =0
dbe::model_common_data_access_interface::getobject
virtual type_object_ref getobject(type_index const &index) const =0
dbe::model_common_data_access_interface::ReturnSourceModel
virtual QAbstractItemModel * ReturnSourceModel() const =0
Generated on
for DUNE-DAQ by
1.18.0