DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
SchemaRelationshipEditor.cpp
Go to the documentation of this file.
1#include <QMessageBox>
5#include "ui_SchemaRelationshipEditor.h"
6
7using namespace dunedaq::oks;
8
10
12 OksRelationship * Relationship,
13 QWidget * parent )
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}
28
30 QWidget * parent )
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}
44
46 QString ClassType,
47 QWidget * parent )
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}
64{
65 if(!UsedNew && ClassName.toStdString() == SchemaClass->get_name()) {
66 if(SchemaClass->find_direct_relationship(SchemaRelationship->get_name()) == nullptr) {
67 QWidget::close();
68 } else {
69 FillInfo();
70 }
71 }
72}
73
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
85 if ( SchemaRelationship->get_is_composite() )
86 {
87 ui->IsCompositeCombo->setCurrentIndex ( 0 );
88 }
89 else
90 {
91 ui->IsCompositeCombo->setCurrentIndex ( 1 );
92 }
93
94 if ( SchemaRelationship->get_is_exclusive() )
95 {
96 ui->IsExclusiveCombo->setCurrentIndex ( 0 );
97 }
98 else
99 {
100 ui->IsExclusiveCombo->setCurrentIndex ( 1 );
101 }
102
103 if ( SchemaRelationship->get_is_dependent() )
104 {
105 ui->IsDependentCombo->setCurrentIndex ( 0 );
106 }
107 else
108 {
109 ui->IsDependentCombo->setCurrentIndex ( 1 );
110 }
111
112 if ( SchemaRelationship->get_low_cardinality_constraint() ==
113 OksRelationship::CardinalityConstraint::Zero ) ui
114 ->LowCcCombo->setCurrentIndex ( 0 );
115 else if ( SchemaRelationship->get_low_cardinality_constraint()
116 == OksRelationship::CardinalityConstraint::One )
117 {
118 ui->LowCcCombo->setCurrentIndex ( 1 );
119 }
120 else
121 {
122 ui->LowCcCombo->setCurrentIndex ( 2 );
123 }
124
125 if ( SchemaRelationship->get_high_cardinality_constraint() ==
126 OksRelationship::CardinalityConstraint::Zero ) ui
127 ->HighCcCombo->setCurrentIndex ( 0 );
128 else if ( SchemaRelationship->get_high_cardinality_constraint()
129 == OksRelationship::CardinalityConstraint::One )
130 {
131 ui->HighCcCombo->setCurrentIndex ( 1 );
132 }
133 else
134 {
135 ui->HighCcCombo->setCurrentIndex ( 2 );
136 }
137}
139{
140 QStringList ClassList;
142 ui->RelationshipTypeComboBox->addItems ( ClassList );
143 setObjectName ( "NEW" );
144
145 if ( !UsedNew )
146 {
147 FillInfo();
148 }
149}
150
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}
160
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 (
237 SchemaRelationship->get_description() ) )
238 {
240 SchemaClass, SchemaRelationship, RelationshipDescription.toStdString() );
241 changed = true;
242 }
243
244 if ( SchemaRelationship->get_is_composite() != IsComposite )
245 {
247 SchemaRelationship,
248 IsComposite );
249 changed = true;
250 }
251
252 if ( SchemaRelationship->get_is_exclusive() != IsExclusive )
253 {
255 SchemaRelationship,
256 IsExclusive );
257 changed = true;
258 }
259
260 if ( SchemaRelationship->get_is_dependent() != IsDependent )
261 {
263 SchemaRelationship,
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}
289
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 (
367 SchemaClass->get_name() ),
368 ui->RelationshipTypeComboBox->currentText(),
369 RelationshipName );
370
371 close();
372}
373
375{
376 if ( UsedNew )
377 {
378 ParseToCreate();
379 }
380 else
381 {
382 ParseToSave();
383 }
384}
385
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}
void PushSetIsCompositeRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, bool Value)
void GetClassListString(QStringList &ClassListString) const
static KernelWrapper & GetInstance()
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 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 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.
dbse::Ui::SchemaRelationshipEditor * ui
SchemaRelationshipEditor(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, QWidget *parent=nullptr)
dunedaq::oks::OksRelationship * SchemaRelationship
The OKS class.
Definition class.hpp:200
const std::string & get_name() const noexcept