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 Attributes

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

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 ui->setupUi ( this );
23 setWindowTitle (
24 QString ( "Relationship Editor : %1" ).arg ( SchemaRelationship->get_name().c_str() ) );
27}
dbse::Ui::SchemaRelationshipEditor * ui
dunedaq::oks::OksRelationship * SchemaRelationship
const std::string & get_name() const noexcept

◆ SchemaRelationshipEditor() [2/3]

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

Definition at line 29 of file SchemaRelationshipEditor.cpp.

31 : QWidget ( parent ),
32 ui ( new Ui::SchemaRelationshipEditor ),
33 SchemaRelationship ( nullptr ),
34 SchemaClass ( Class ),
35 UsedNew ( true ),
36 GraphScene ( false )
37{
38 QWidget::setAttribute(Qt::WA_DeleteOnClose);
39 ui->setupUi ( this );
40 setWindowTitle ( "New Relationship" );
43}

◆ SchemaRelationshipEditor() [3/3]

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

Definition at line 45 of file SchemaRelationshipEditor.cpp.

48 : QWidget ( parent ),
49 ui ( new Ui::SchemaRelationshipEditor ),
50 SchemaRelationship ( nullptr ),
51 SchemaClass ( Class ),
52 UsedNew ( true ),
53 GraphScene ( true )
54{
55 QWidget::setAttribute(Qt::WA_DeleteOnClose);
56 ui->setupUi ( this );
57 setWindowTitle ( "New Relationship" );
60 ui->RelationshipTypeComboBox->setCurrentIndex (
61 ui->RelationshipTypeComboBox->findData ( ClassType, Qt::DisplayRole ) );
62}

Member Function Documentation

◆ ClassUpdated

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

Definition at line 63 of file SchemaRelationshipEditor.cpp.

64{
65 if(!UsedNew && ClassName.toStdString() == SchemaClass->get_name()) {
67 QWidget::close();
68 } else {
69 FillInfo();
70 }
71 }
72}
OksRelationship * find_direct_relationship(const std::string &name) const noexcept
Find direct relationship.
Definition class.cpp:1173
const std::string & get_name() const noexcept
Definition class.hpp:363

◆ FillInfo()

void dbse::SchemaRelationshipEditor::FillInfo ( )
protected

Definition at line 74 of file SchemaRelationshipEditor.cpp.

75{
76 setObjectName ( QString::fromStdString ( SchemaRelationship->get_name() ) );
77 ui->RelationshipNameLineEdit->setText (
78 QString::fromStdString ( SchemaRelationship->get_name() ) );
79 ui->RelationshipTypeComboBox->setCurrentIndex (
80 ui->RelationshipTypeComboBox->findData (
81 QString::fromStdString ( SchemaRelationship->get_type() ), Qt::DisplayRole ) );
82 ui->RelationshipDescriptionTextEdit->setPlainText (
83 QString::fromStdString ( SchemaRelationship->get_description() ) );
84
86 {
87 ui->IsCompositeCombo->setCurrentIndex ( 0 );
88 }
89 else
90 {
91 ui->IsCompositeCombo->setCurrentIndex ( 1 );
92 }
93
95 {
96 ui->IsExclusiveCombo->setCurrentIndex ( 0 );
97 }
98 else
99 {
100 ui->IsExclusiveCombo->setCurrentIndex ( 1 );
101 }
102
104 {
105 ui->IsDependentCombo->setCurrentIndex ( 0 );
106 }
107 else
108 {
109 ui->IsDependentCombo->setCurrentIndex ( 1 );
110 }
111
113 OksRelationship::CardinalityConstraint::Zero ) ui
114 ->LowCcCombo->setCurrentIndex ( 0 );
116 == OksRelationship::CardinalityConstraint::One )
117 {
118 ui->LowCcCombo->setCurrentIndex ( 1 );
119 }
120 else
121 {
122 ui->LowCcCombo->setCurrentIndex ( 2 );
123 }
124
126 OksRelationship::CardinalityConstraint::Zero ) ui
127 ->HighCcCombo->setCurrentIndex ( 0 );
129 == OksRelationship::CardinalityConstraint::One )
130 {
131 ui->HighCcCombo->setCurrentIndex ( 1 );
132 }
133 else
134 {
135 ui->HighCcCombo->setCurrentIndex ( 2 );
136 }
137}
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 138 of file SchemaRelationshipEditor.cpp.

139{
140 QStringList ClassList;
142 ui->RelationshipTypeComboBox->addItems ( ClassList );
143 setObjectName ( "NEW" );
144
145 if ( !UsedNew )
146 {
147 FillInfo();
148 }
149}
void GetClassListString(QStringList &ClassListString) const
static KernelWrapper & GetInstance()

◆ MakeGraphConnection

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

◆ ParseToCreate()

void dbse::SchemaRelationshipEditor::ParseToCreate ( )

Definition at line 290 of file SchemaRelationshipEditor.cpp.

291{
292 if ( ui->RelationshipNameLineEdit->text().isEmpty() )
293 {
294 QMessageBox::warning ( 0, "Schema editor",
295 QString ( "Please Provide a name for the relationship !" ) );
296 return;
297 }
298
299 QString RelationshipName = ui->RelationshipNameLineEdit->text();
300 QString RelationshipType = ui->RelationshipTypeComboBox->currentText();
301 QString RelationshipDescription = ui->RelationshipDescriptionTextEdit->toPlainText();
302
303 bool IsComposite;
304
305 if ( ui->IsCompositeCombo->currentIndex() == 0 )
306 {
307 IsComposite = true;
308 }
309 else
310 {
311 IsComposite = false;
312 }
313
314 bool IsExclusive;
315
316 if ( ui->IsExclusiveCombo->currentIndex() == 0 )
317 {
318 IsExclusive = true;
319 }
320 else
321 {
322 IsExclusive = false;
323 }
324
325 bool IsDependent;
326
327 if ( ui->IsDependentCombo->currentIndex() == 0 )
328 {
329 IsDependent = true;
330 }
331 else
332 {
333 IsDependent = false;
334 }
335
336 OksRelationship::CardinalityConstraint RelationshipHighCardinality;
337 OksRelationship::CardinalityConstraint RelationshipLowCardinality;
338
339 if ( ui->HighCcCombo->currentIndex() == 0 ) RelationshipHighCardinality =
340 OksRelationship::CardinalityConstraint::Zero;
341 else if ( ui->HighCcCombo->currentIndex() == 1 ) RelationshipHighCardinality =
342 OksRelationship::CardinalityConstraint::One;
343 else
344 {
345 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::Many;
346 }
347
348 if ( ui->LowCcCombo->currentIndex() == 0 ) RelationshipLowCardinality =
349 OksRelationship::CardinalityConstraint::Zero;
350 else if ( ui->LowCcCombo->currentIndex() == 1 ) RelationshipLowCardinality =
351 OksRelationship::CardinalityConstraint::One;
352 else
353 {
354 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::Many;
355 }
356
358 RelationshipName.toStdString(),
359 RelationshipDescription.toStdString(),
360 RelationshipType.toStdString(),
361 IsComposite, IsExclusive, IsDependent,
362 RelationshipLowCardinality,
363 RelationshipHighCardinality );
364 emit RebuildModel();
365
366 if ( GraphScene ) emit MakeGraphConnection ( QString::fromStdString (
368 ui->RelationshipTypeComboBox->currentText(),
369 RelationshipName );
370
371 close();
372}
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 161 of file SchemaRelationshipEditor.cpp.

162{
163 bool changed = false;
164 QString RelationshipName = ui->RelationshipNameLineEdit->text();
165 QString RelationshipType = ui->RelationshipTypeComboBox->currentText();
166 QString RelationshipDescription = ui->RelationshipDescriptionTextEdit->toPlainText();
167
168 bool IsComposite;
169
170 if ( ui->IsCompositeCombo->currentIndex() == 0 )
171 {
172 IsComposite = true;
173 }
174 else
175 {
176 IsComposite = false;
177 }
178
179 bool IsExclusive;
180
181 if ( ui->IsExclusiveCombo->currentIndex() == 0 )
182 {
183 IsExclusive = true;
184 }
185 else
186 {
187 IsExclusive = false;
188 }
189
190 bool IsDependent;
191
192 if ( ui->IsDependentCombo->currentIndex() == 0 )
193 {
194 IsDependent = true;
195 }
196 else
197 {
198 IsDependent = false;
199 }
200
201 OksRelationship::CardinalityConstraint RelationshipHighCardinality;
202 OksRelationship::CardinalityConstraint RelationshipLowCardinality;
203
204 if ( ui->HighCcCombo->currentIndex() == 0 ) RelationshipHighCardinality =
205 OksRelationship::CardinalityConstraint::Zero;
206 else if ( ui->HighCcCombo->currentIndex() == 1 ) RelationshipHighCardinality =
207 OksRelationship::CardinalityConstraint::One;
208 else
209 {
210 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::Many;
211 }
212
213 if ( ui->LowCcCombo->currentIndex() == 0 ) RelationshipLowCardinality =
214 OksRelationship::CardinalityConstraint::Zero;
215 else if ( ui->LowCcCombo->currentIndex() == 1 ) RelationshipLowCardinality =
216 OksRelationship::CardinalityConstraint::One;
217 else
218 {
219 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::Many;
220 }
221
222 if ( RelationshipName != QString::fromStdString ( SchemaRelationship->get_name() ) )
223 {
225 SchemaClass, SchemaRelationship, RelationshipName.toStdString() );
226 changed = true;
227 }
228
229 if ( RelationshipType != QString::fromStdString ( SchemaRelationship->get_type() ) )
230 {
232 SchemaClass, SchemaRelationship, RelationshipType.toStdString() );
233 changed = true;
234 }
235
236 if ( RelationshipDescription != QString::fromStdString (
238 {
240 SchemaClass, SchemaRelationship, RelationshipDescription.toStdString() );
241 changed = true;
242 }
243
244 if ( SchemaRelationship->get_is_composite() != IsComposite )
245 {
248 IsComposite );
249 changed = true;
250 }
251
252 if ( SchemaRelationship->get_is_exclusive() != IsExclusive )
253 {
256 IsExclusive );
257 changed = true;
258 }
259
260 if ( SchemaRelationship->get_is_dependent() != IsDependent )
261 {
264 IsDependent );
265 changed = true;
266 }
267
268 if ( RelationshipHighCardinality != SchemaRelationship->get_high_cardinality_constraint() )
269 {
271 SchemaClass, SchemaRelationship, RelationshipHighCardinality );
272 changed = true;
273 }
274
275 if ( RelationshipLowCardinality != SchemaRelationship->get_low_cardinality_constraint() )
276 {
278 SchemaClass, SchemaRelationship, RelationshipLowCardinality );
279 changed = true;
280 }
281
282 if ( changed )
283 {
284 emit RebuildModel();
285 }
286
287 close();
288}
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 374 of file SchemaRelationshipEditor.cpp.

375{
376 if ( UsedNew )
377 {
379 }
380 else
381 {
382 ParseToSave();
383 }
384}

◆ RebuildModel

void dbse::SchemaRelationshipEditor::RebuildModel ( )
signal

◆ SetController()

void dbse::SchemaRelationshipEditor::SetController ( )

Definition at line 151 of file SchemaRelationshipEditor.cpp.

152{
153 connect ( ui->buttonBox, SIGNAL ( accepted() ), this, SLOT ( ProxySlot() ) );
154 connect ( ui->buttonBox, SIGNAL ( rejected() ), this, SLOT ( close() ) );
155 connect ( &KernelWrapper::GetInstance(), SIGNAL ( ClassCreated() ), this,
156 SLOT ( UpdateClassCombo() ) );
157 connect ( &KernelWrapper::GetInstance(), SIGNAL ( ClassUpdated ( QString ) ), this,
158 SLOT ( ClassUpdated ( QString ) ) );
159}

◆ UpdateClassCombo

void dbse::SchemaRelationshipEditor::UpdateClassCombo ( )
privateslot

Definition at line 386 of file SchemaRelationshipEditor.cpp.

387{
388 QStringList ClassList;
390 ui->RelationshipTypeComboBox->clear();
391 ui->RelationshipTypeComboBox->addItems ( ClassList );
392 ui->RelationshipTypeComboBox->setCurrentIndex (
393 ui->RelationshipTypeComboBox->findData (
394 QString::fromStdString ( SchemaRelationship->get_type() ), Qt::DisplayRole ) );
395}

Member Data Documentation

◆ GraphScene

bool dbse::SchemaRelationshipEditor::GraphScene
private

Definition at line 40 of file SchemaRelationshipEditor.hpp.

◆ SchemaClass

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

Definition at line 38 of file SchemaRelationshipEditor.hpp.

◆ SchemaRelationship

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

Definition at line 37 of file SchemaRelationshipEditor.hpp.

◆ ui

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

Definition at line 36 of file SchemaRelationshipEditor.hpp.

◆ UsedNew

bool dbse::SchemaRelationshipEditor::UsedNew
private

Definition at line 39 of file SchemaRelationshipEditor.hpp.


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