DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dbse::SchemaRelationshipEditor Class Reference

#include <SchemaRelationshipEditor.hpp>

Inheritance diagram for dbse::SchemaRelationshipEditor:
[legend]
Collaboration diagram for dbse::SchemaRelationshipEditor:
[legend]

Signals

void RebuildModel ()
 
void MakeGraphConnection (QString ClassName1, QString ClassName2, QString RelationshipName)
 

Public Member Functions

 ~SchemaRelationshipEditor ()
 
 SchemaRelationshipEditor (dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, QWidget *parent=nullptr)
 
 SchemaRelationshipEditor (dunedaq::oks::OksClass *Class, QWidget *parent=nullptr)
 
 SchemaRelationshipEditor (dunedaq::oks::OksClass *Class, QString ClassType, QWidget *parent=nullptr)
 
void InitialSettings ()
 
void SetController ()
 
void ParseToSave ()
 
void ParseToCreate ()
 

Protected Member Functions

void FillInfo ()
 

Private Slots

void ProxySlot ()
 
void UpdateClassCombo ()
 
void ClassUpdated (QString className)
 

Private Member Functions

void keyPressEvent (QKeyEvent *event) override
 

Private Attributes

dbse::Ui::SchemaRelationshipEditor * ui
 
dunedaq::oks::OksRelationshipSchemaRelationship
 
dunedaq::oks::OksClassSchemaClass
 
bool UsedNew
 
bool GraphScene
 
bool m_writable
 

Detailed Description

Definition at line 15 of file SchemaRelationshipEditor.hpp.

Constructor & Destructor Documentation

◆ ~SchemaRelationshipEditor()

dbse::SchemaRelationshipEditor::~SchemaRelationshipEditor ( )
default

◆ SchemaRelationshipEditor() [1/3]

dbse::SchemaRelationshipEditor::SchemaRelationshipEditor ( dunedaq::oks::OksClass * Class,
dunedaq::oks::OksRelationship * Relationship,
QWidget * parent = nullptr )
explicit

Definition at line 11 of file SchemaRelationshipEditor.cpp.

14 : QWidget ( parent ),
15 ui ( new Ui::SchemaRelationshipEditor ),
16 SchemaRelationship ( Relationship ),
17 SchemaClass ( Class ),
18 UsedNew ( false ),
19 GraphScene ( false )
20{
21 QWidget::setAttribute(Qt::WA_DeleteOnClose);
22
24
25 ui->setupUi ( this );
26 auto title = SchemaClass->get_name() + "::" + SchemaRelationship->get_name();
27 setWindowTitle (
28 QString ( "Relationship Editor : %1" ).arg ( title.c_str() ) );
31}
static KernelWrapper & GetInstance()
bool IsFileWritable(const std::string &FileName) const
dbse::Ui::SchemaRelationshipEditor * ui
dunedaq::oks::OksRelationship * SchemaRelationship
const std::string & get_name() const noexcept
Definition class.hpp:363
OksFile * get_file() const noexcept
Definition class.hpp:338
const std::string & get_full_file_name() const
Definition file.hpp:523
const std::string & get_name() const noexcept

◆ SchemaRelationshipEditor() [2/3]

dbse::SchemaRelationshipEditor::SchemaRelationshipEditor ( dunedaq::oks::OksClass * Class,
QWidget * parent = nullptr )
explicit

Definition at line 33 of file SchemaRelationshipEditor.cpp.

35 : QWidget ( parent ),
36 ui ( new Ui::SchemaRelationshipEditor ),
37 SchemaRelationship ( nullptr ),
38 SchemaClass ( Class ),
39 UsedNew ( true ),
40 GraphScene ( false )
41{
42 QWidget::setAttribute(Qt::WA_DeleteOnClose);
43 ui->setupUi ( this );
44 m_writable = true;
45 auto title = SchemaClass->get_name() + " New Relationship";
46 setWindowTitle (
47 QString ( "Relationship Editor : %1" ).arg ( title.c_str() ) );
50}

◆ SchemaRelationshipEditor() [3/3]

dbse::SchemaRelationshipEditor::SchemaRelationshipEditor ( dunedaq::oks::OksClass * Class,
QString ClassType,
QWidget * parent = nullptr )
explicit

Definition at line 52 of file SchemaRelationshipEditor.cpp.

55 : QWidget ( parent ),
56 ui ( new Ui::SchemaRelationshipEditor ),
57 SchemaRelationship ( nullptr ),
58 SchemaClass ( Class ),
59 UsedNew ( true ),
60 GraphScene ( true )
61{
62 QWidget::setAttribute(Qt::WA_DeleteOnClose);
63 m_writable = true;
64 ui->setupUi ( this );
65 setWindowTitle ( "New Relationship" );
68 ui->RelationshipTypeComboBox->setCurrentIndex (
69 ui->RelationshipTypeComboBox->findData ( ClassType, Qt::DisplayRole ) );
70}

Member Function Documentation

◆ ClassUpdated

void dbse::SchemaRelationshipEditor::ClassUpdated ( QString className)
privateslot

Definition at line 71 of file SchemaRelationshipEditor.cpp.

72{
73 if(!UsedNew && ClassName.toStdString() == SchemaClass->get_name()) {
75 QWidget::close();
76 } else {
77 FillInfo();
78 }
79 }
80}
OksRelationship * find_direct_relationship(const std::string &name) const noexcept
Find direct relationship.
Definition class.cpp:1173

◆ FillInfo()

void dbse::SchemaRelationshipEditor::FillInfo ( )
protected

Definition at line 82 of file SchemaRelationshipEditor.cpp.

83{
84 auto name = SchemaClass->get_name() + "::" + SchemaRelationship->get_name();
85 setObjectName ( QString::fromStdString ( name ) );
86 ui->RelationshipNameLineEdit->setText (
87 QString::fromStdString ( SchemaRelationship->get_name() ) );
88 ui->RelationshipTypeComboBox->setCurrentIndex (
89 ui->RelationshipTypeComboBox->findData (
90 QString::fromStdString ( SchemaRelationship->get_type() ), Qt::DisplayRole ) );
91 ui->RelationshipDescriptionTextEdit->setPlainText (
92 QString::fromStdString ( SchemaRelationship->get_description() ) );
93
95 {
96 ui->IsCompositeCombo->setCurrentIndex ( 0 );
97 }
98 else
99 {
100 ui->IsCompositeCombo->setCurrentIndex ( 1 );
101 }
102
104 {
105 ui->IsExclusiveCombo->setCurrentIndex ( 0 );
106 }
107 else
108 {
109 ui->IsExclusiveCombo->setCurrentIndex ( 1 );
110 }
111
113 {
114 ui->IsDependentCombo->setCurrentIndex ( 0 );
115 }
116 else
117 {
118 ui->IsDependentCombo->setCurrentIndex ( 1 );
119 }
120
122 OksRelationship::CardinalityConstraint::Zero ) ui
123 ->LowCcCombo->setCurrentIndex ( 0 );
125 == OksRelationship::CardinalityConstraint::One )
126 {
127 ui->LowCcCombo->setCurrentIndex ( 1 );
128 }
129 else
130 {
131 ui->LowCcCombo->setCurrentIndex ( 2 );
132 }
133
135 OksRelationship::CardinalityConstraint::Zero ) ui
136 ->HighCcCombo->setCurrentIndex ( 0 );
138 == OksRelationship::CardinalityConstraint::One )
139 {
140 ui->HighCcCombo->setCurrentIndex ( 1 );
141 }
142 else
143 {
144 ui->HighCcCombo->setCurrentIndex ( 2 );
145 }
146}
bool get_is_exclusive() const noexcept
bool get_is_composite() const noexcept
bool get_is_dependent() const noexcept
CardinalityConstraint get_high_cardinality_constraint() const noexcept
Get relationship high cardinality constraint.
const std::string & get_description() const noexcept
CardinalityConstraint get_low_cardinality_constraint() const noexcept
Get relationship low cardinality constraint.
const std::string & get_type() const noexcept

◆ InitialSettings()

void dbse::SchemaRelationshipEditor::InitialSettings ( )

Definition at line 156 of file SchemaRelationshipEditor.cpp.

157{
158 QStringList ClassList;
160 ui->RelationshipTypeComboBox->addItems ( ClassList );
161 auto name = SchemaClass->get_name() + "::";
162 setObjectName ( QString::fromStdString(name) );
163
164 if (!m_writable) {
165 ui->RelationshipTypeComboBox->setEnabled(false);
166 ui->IsCompositeCombo->setEnabled(false);
167 ui->IsExclusiveCombo->setEnabled(false);
168 ui->IsDependentCombo->setEnabled(false);
169 ui->LowCcCombo->setEnabled(false);
170 ui->HighCcCombo->setEnabled(false);
171 ui->RelationshipDescriptionTextEdit->setEnabled(false);
172 ui->RelationshipNameLineEdit->setEnabled(false);
173 }
174
175 if ( !UsedNew )
176 {
177 FillInfo();
178 }
179}
void GetClassListString(QStringList &ClassListString) const

◆ keyPressEvent()

void dbse::SchemaRelationshipEditor::keyPressEvent ( QKeyEvent * event)
overrideprivate

Definition at line 148 of file SchemaRelationshipEditor.cpp.

148 {
149 if (event->key() == Qt::Key_Escape) {
150 close();
151 }
152 QWidget::keyPressEvent(event);
153}

◆ MakeGraphConnection

void dbse::SchemaRelationshipEditor::MakeGraphConnection ( QString ClassName1,
QString ClassName2,
QString RelationshipName )
signal

◆ ParseToCreate()

void dbse::SchemaRelationshipEditor::ParseToCreate ( )

Definition at line 325 of file SchemaRelationshipEditor.cpp.

326{
327 if ( ui->RelationshipNameLineEdit->text().isEmpty() )
328 {
329 QMessageBox::warning ( 0, "Schema editor",
330 QString ( "Please Provide a name for the relationship !" ) );
331 return;
332 }
333
334 QString RelationshipName = ui->RelationshipNameLineEdit->text();
335 QString RelationshipType = ui->RelationshipTypeComboBox->currentText();
336 QString RelationshipDescription = ui->RelationshipDescriptionTextEdit->toPlainText();
337
338 bool IsComposite;
339
340 if ( ui->IsCompositeCombo->currentIndex() == 0 )
341 {
342 IsComposite = true;
343 }
344 else
345 {
346 IsComposite = false;
347 }
348
349 bool IsExclusive;
350
351 if ( ui->IsExclusiveCombo->currentIndex() == 0 )
352 {
353 IsExclusive = true;
354 }
355 else
356 {
357 IsExclusive = false;
358 }
359
360 bool IsDependent;
361
362 if ( ui->IsDependentCombo->currentIndex() == 0 )
363 {
364 IsDependent = true;
365 }
366 else
367 {
368 IsDependent = false;
369 }
370
371 OksRelationship::CardinalityConstraint RelationshipHighCardinality;
372 OksRelationship::CardinalityConstraint RelationshipLowCardinality;
373
374 if ( ui->HighCcCombo->currentIndex() == 0 ) RelationshipHighCardinality =
375 OksRelationship::CardinalityConstraint::Zero;
376 else if ( ui->HighCcCombo->currentIndex() == 1 ) RelationshipHighCardinality =
377 OksRelationship::CardinalityConstraint::One;
378 else
379 {
380 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::Many;
381 }
382
383 if ( ui->LowCcCombo->currentIndex() == 0 ) RelationshipLowCardinality =
384 OksRelationship::CardinalityConstraint::Zero;
385 else if ( ui->LowCcCombo->currentIndex() == 1 ) RelationshipLowCardinality =
386 OksRelationship::CardinalityConstraint::One;
387 else
388 {
389 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::Many;
390 }
391
393 RelationshipName.toStdString(),
394 RelationshipDescription.toStdString(),
395 RelationshipType.toStdString(),
396 IsComposite, IsExclusive, IsDependent,
397 RelationshipLowCardinality,
398 RelationshipHighCardinality );
399 emit RebuildModel();
400
401 if ( GraphScene ) emit MakeGraphConnection ( QString::fromStdString (
403 ui->RelationshipTypeComboBox->currentText(),
404 RelationshipName );
405
406 close();
407}
void PushAddRelationship(dunedaq::oks::OksClass *Class, std::string Name, std::string Description, std::string Type, bool Composite, bool Exclusive, bool Dependent, dunedaq::oks::OksRelationship::CardinalityConstraint LowCc, dunedaq::oks::OksRelationship::CardinalityConstraint HighCc)
void MakeGraphConnection(QString ClassName1, QString ClassName2, QString RelationshipName)

◆ ParseToSave()

void dbse::SchemaRelationshipEditor::ParseToSave ( )

Definition at line 196 of file SchemaRelationshipEditor.cpp.

197{
198 bool changed = false;
199 QString RelationshipName = ui->RelationshipNameLineEdit->text();
200 QString RelationshipType = ui->RelationshipTypeComboBox->currentText();
201 QString RelationshipDescription = ui->RelationshipDescriptionTextEdit->toPlainText();
202
203 bool IsComposite;
204
205 if ( ui->IsCompositeCombo->currentIndex() == 0 )
206 {
207 IsComposite = true;
208 }
209 else
210 {
211 IsComposite = false;
212 }
213
214 bool IsExclusive;
215
216 if ( ui->IsExclusiveCombo->currentIndex() == 0 )
217 {
218 IsExclusive = true;
219 }
220 else
221 {
222 IsExclusive = false;
223 }
224
225 bool IsDependent;
226
227 if ( ui->IsDependentCombo->currentIndex() == 0 )
228 {
229 IsDependent = true;
230 }
231 else
232 {
233 IsDependent = false;
234 }
235
236 OksRelationship::CardinalityConstraint RelationshipHighCardinality;
237 OksRelationship::CardinalityConstraint RelationshipLowCardinality;
238
239 if ( ui->HighCcCombo->currentIndex() == 0 ) RelationshipHighCardinality =
240 OksRelationship::CardinalityConstraint::Zero;
241 else if ( ui->HighCcCombo->currentIndex() == 1 ) RelationshipHighCardinality =
242 OksRelationship::CardinalityConstraint::One;
243 else
244 {
245 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::Many;
246 }
247
248 if ( ui->LowCcCombo->currentIndex() == 0 ) RelationshipLowCardinality =
249 OksRelationship::CardinalityConstraint::Zero;
250 else if ( ui->LowCcCombo->currentIndex() == 1 ) RelationshipLowCardinality =
251 OksRelationship::CardinalityConstraint::One;
252 else
253 {
254 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::Many;
255 }
256
257 if ( RelationshipName != QString::fromStdString ( SchemaRelationship->get_name() ) )
258 {
260 SchemaClass, SchemaRelationship, RelationshipName.toStdString() );
261 changed = true;
262 }
263
264 if ( RelationshipType != QString::fromStdString ( SchemaRelationship->get_type() ) )
265 {
267 SchemaClass, SchemaRelationship, RelationshipType.toStdString() );
268 changed = true;
269 }
270
271 if ( RelationshipDescription != QString::fromStdString (
273 {
275 SchemaClass, SchemaRelationship, RelationshipDescription.toStdString() );
276 changed = true;
277 }
278
279 if ( SchemaRelationship->get_is_composite() != IsComposite )
280 {
283 IsComposite );
284 changed = true;
285 }
286
287 if ( SchemaRelationship->get_is_exclusive() != IsExclusive )
288 {
291 IsExclusive );
292 changed = true;
293 }
294
295 if ( SchemaRelationship->get_is_dependent() != IsDependent )
296 {
299 IsDependent );
300 changed = true;
301 }
302
303 if ( RelationshipHighCardinality != SchemaRelationship->get_high_cardinality_constraint() )
304 {
306 SchemaClass, SchemaRelationship, RelationshipHighCardinality );
307 changed = true;
308 }
309
310 if ( RelationshipLowCardinality != SchemaRelationship->get_low_cardinality_constraint() )
311 {
313 SchemaClass, SchemaRelationship, RelationshipLowCardinality );
314 changed = true;
315 }
316
317 if ( changed )
318 {
319 emit RebuildModel();
320 }
321
322 close();
323}
void PushSetIsCompositeRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, bool Value)
void PushSetHighCcRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, dunedaq::oks::OksRelationship::CardinalityConstraint NewCardinality)
void PushSetIsDependentRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, bool Value)
void PushSetIsExclusiveRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, bool Value)
void PushSetClassTypeRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, std::string ClassType)
void PushSetLowCcRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, dunedaq::oks::OksRelationship::CardinalityConstraint NewCardinality)
void PushSetDescriptionRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, std::string Description)
void PushSetNameRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, std::string Name)
Relationship commands.
Only Configuration DB opened by rdbconfig or oksconflibs plug in can be changed

◆ ProxySlot

void dbse::SchemaRelationshipEditor::ProxySlot ( )
privateslot

Definition at line 409 of file SchemaRelationshipEditor.cpp.

410{
411 if ( UsedNew )
412 {
414 }
415 else
416 {
417 ParseToSave();
418 }
419}

◆ RebuildModel

void dbse::SchemaRelationshipEditor::RebuildModel ( )
signal

◆ SetController()

void dbse::SchemaRelationshipEditor::SetController ( )

Definition at line 181 of file SchemaRelationshipEditor.cpp.

182{
183 if (m_writable) {
184 connect ( ui->buttonBox, SIGNAL ( accepted() ), this, SLOT ( ProxySlot() ) );
185 }
186 else {
187 connect ( ui->buttonBox, SIGNAL ( accepted() ), this, SLOT ( close() ) );
188 }
189 connect ( ui->buttonBox, SIGNAL ( rejected() ), this, SLOT ( close() ) );
190 connect ( &KernelWrapper::GetInstance(), SIGNAL ( ClassCreated(QString) ), this,
191 SLOT ( UpdateClassCombo() ) );
192 connect ( &KernelWrapper::GetInstance(), SIGNAL ( ClassUpdated ( QString ) ), this,
193 SLOT ( ClassUpdated ( QString ) ) );
194}

◆ UpdateClassCombo

void dbse::SchemaRelationshipEditor::UpdateClassCombo ( )
privateslot

Definition at line 421 of file SchemaRelationshipEditor.cpp.

422{
423 QStringList ClassList;
425 ui->RelationshipTypeComboBox->clear();
426 ui->RelationshipTypeComboBox->addItems ( ClassList );
427 ui->RelationshipTypeComboBox->setCurrentIndex (
428 ui->RelationshipTypeComboBox->findData (
429 QString::fromStdString ( SchemaRelationship->get_type() ), Qt::DisplayRole ) );
430}

Member Data Documentation

◆ GraphScene

bool dbse::SchemaRelationshipEditor::GraphScene
private

Definition at line 41 of file SchemaRelationshipEditor.hpp.

◆ m_writable

bool dbse::SchemaRelationshipEditor::m_writable
private

Definition at line 42 of file SchemaRelationshipEditor.hpp.

◆ SchemaClass

dunedaq::oks::OksClass* dbse::SchemaRelationshipEditor::SchemaClass
private

Definition at line 39 of file SchemaRelationshipEditor.hpp.

◆ SchemaRelationship

dunedaq::oks::OksRelationship* dbse::SchemaRelationshipEditor::SchemaRelationship
private

Definition at line 38 of file SchemaRelationshipEditor.hpp.

◆ ui

dbse::Ui::SchemaRelationshipEditor* dbse::SchemaRelationshipEditor::ui
private

Definition at line 37 of file SchemaRelationshipEditor.hpp.

◆ UsedNew

bool dbse::SchemaRelationshipEditor::UsedNew
private

Definition at line 40 of file SchemaRelationshipEditor.hpp.


The documentation for this class was generated from the following files: