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 "
dbe/confaccessor.hpp
"
17
#include "
conffwk/ConfigObject.hpp
"
18
19
#include <QString>
20
#include <QModelIndex>
21
#include <QUuid>
22
23
#include <vector>
24
#include <set>
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
37
38
namespace
dbe
39
{
40
//------------------------------------------------------------------------------------------
41
42
class
model_common_slots
43
{
44
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
45
46
public
:
47
virtual
~model_common_slots
() =
default
;
48
49
private
:
50
// These methods should be placed in slots declaration such that they can be parsed
51
// appropriately to create slots at each derived class
60
virtual
void
slot_remove_object
( QString
const
&,
dref
const
& ) = 0;
61
71
virtual
void
slot_rename_object
( QString
const
&,
dref
const
& ) = 0;
72
82
virtual
void
slot_update_object
( QString
const
&,
dref
const
& ) = 0;
83
93
virtual
void
slot_create_object
( QString
const
&,
dref
const
& ) = 0;
94
};
95
//------------------------------------------------------------------------------------------
96
97
//------------------------------------------------------------------------------------------
98
struct
model_common_data_access_interface
99
{
100
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
101
public
:
102
virtual
type_object_ref
getobject
( type_index
const
& index )
const
= 0;
103
104
virtual
type_class_info
getclass
( type_index
const
& index )
const
= 0;
105
106
virtual
QAbstractItemModel *
ReturnSourceModel
()
const
= 0;
107
108
virtual
~model_common_data_access_interface
() =
default
;
109
};
110
//------------------------------------------------------------------------------------------
111
112
//------------------------------------------------------------------------------------------
113
class
model_initiate_actions_interface
114
{
115
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
116
117
public
:
118
virtual
~model_initiate_actions_interface
() =
default
;
119
//-------------------------- FORWARD CHAIN ------------------------------------------------------------------------
120
// Front end functionality permits explicit actions on the objects linked to this model
121
// These methods should provoke actions onto the database itself
128
virtual
bool
delete_objects
( type_indices::iterator, type_indices::iterator ) = 0;
129
virtual
bool
update_objects
( type_indices::iterator, type_indices::iterator ) = 0;
130
virtual
bool
create_objects
( type_indices::iterator, type_indices::iterator ) = 0;
131
};
132
//------------------------------------------------------------------------------------------
133
134
//------------------------------------------------------------------------------------------
138
class
model_common_interface
:
139
public
model_initiate_actions_interface
,
140
public
model_common_data_access_interface
,
141
private
model_common_slots
142
{
143
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
144
145
friend
class
model_common_slots
;
146
public
:
147
virtual
~model_common_interface
() =
default
;
148
149
protected
:
155
virtual
void
remove_deleted_object
( type_index
const
& index ) = 0;
156
164
virtual
void
rename_contained_object
( type_index
const
& index,
165
type_object_info
const
& obj ) = 0;
166
174
virtual
void
update_contained_object
( type_index
const
& index,
175
type_object_info
const
& obj ) = 0;
183
virtual
void
create_contained_object
( type_index
const
& index,
184
type_object_info
const
& obj ) = 0;
185
192
virtual
type_index
lookup
( type_object_info
const
& ) = 0;
193
194
QUuid
getuuid
()
const
;
195
};
196
//------------------------------------------------------------------------------------------
197
198
//------------------------------------------------------------------------------------------
207
template
<
typename
T>
class
model_common_impl
:
208
public
model_common_interface
209
{
210
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
211
212
public
:
213
221
bool
delete_objects
( type_indices::iterator, type_indices::iterator )
override
;
222
229
bool
update_objects
( type_indices::iterator, type_indices::iterator )
override
;
230
237
bool
create_objects
( type_indices::iterator, type_indices::iterator )
override
;
238
239
// private:
240
// FOR FUTURE USE
241
// static std::vector<type_object_info> filter_indices(type_indices::iterator,
242
// type_indices::iterator);
243
};
244
//------------------------------------------------------------------------------------------
245
246
//------------------------------------------------------------------------------------------
259
template
<
typename
T>
class
model_common_async_operations
260
{
261
public
:
262
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS
263
264
model_common_async_operations
();
265
271
void
model_common_connections
();
272
273
protected
:
274
//-------------------------- BACK CHAIN -------------------------------------------------------------------------------
275
// Back end functionality that permits to implicitly act on an object referenced in this model
276
// These methods should NOT take action onto the database but only on the referenced model
277
283
void
remove_object
( type_object_info
const
& );
284
void
create_object
( type_object_info
const
& );
285
void
rename_object
( type_object_info
const
& );
286
void
update_object
( type_object_info
const
& );
287
void
update_multiple_objects
( std::vector<type_object_info>
const
& );
288
289
MODEL_COMMON_INTERFACE_UUID_DEF
290
291
};
292
//------------------------------------------------------------------------------------------
293
294
}
// namespace dbe
295
296
#include "
dbe/model_common_interface_macros.hpp
"
297
#include "
dbe/model_common_operations.hpp
"
298
299
#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:85
dbe::model_common_async_operations::model_common_connections
void model_common_connections()
Definition
model_common_operations.hpp:30
dbe::model_common_async_operations::remove_object
void remove_object(type_object_info const &)
Definition
model_common_operations.hpp:49
dbe::model_common_async_operations::rename_object
void rename_object(type_object_info const &)
Definition
model_common_operations.hpp:61
dbe::model_common_async_operations::update_object
void update_object(type_object_info const &)
Definition
model_common_operations.hpp:73
dbe::model_common_async_operations::model_common_async_operations
MODEL_COMMON_TYPES_TOPLEVEL_DEFINITIONS model_common_async_operations()
Definition
model_common_operations.hpp:124
dbe::model_common_async_operations::create_object
void create_object(type_object_info const &)
Definition
model_common_operations.hpp:112
dbe::model_common_impl
Definition
model_common_interface.hpp:209
dbe::model_common_impl::create_objects
bool create_objects(type_indices::iterator, type_indices::iterator) override
Definition
model_common_operations.hpp:232
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:222
dbe::model_common_interface
Definition
model_common_interface.hpp:142
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:145
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:43
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:114
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:18
dbe::dref
config_object_description dref
Definition
confobject_desc.hpp:109
dbe::model_common_data_access_interface
Definition
model_common_interface.hpp:99
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.17.0