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::OksRelationship * SchemaRelationship
dunedaq::oks::OksClass * SchemaClass
bool UsedNew
bool GraphScene
bool m_writable

Detailed Description

Definition at line 18 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 17 of file SchemaRelationshipEditor.cpp.

20 : QWidget(parent)
21 , ui(new Ui::SchemaRelationshipEditor)
22 , SchemaRelationship(Relationship)
23 , SchemaClass(Class)
24 , UsedNew(false)
25 , GraphScene(false)
26{
27 QWidget::setAttribute(Qt::WA_DeleteOnClose);
28
30
31 ui->setupUi(this);
32 auto title = SchemaClass->get_name() + "::" + SchemaRelationship->get_name();
33 setWindowTitle(QString("Relationship Editor : %1").arg(title.c_str()));
36}
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:374
OksFile * get_file() const noexcept
Definition class.hpp:352
const std::string & get_full_file_name() const
Definition file.hpp:528
const std::string & get_name() const noexcept

◆ SchemaRelationshipEditor() [2/3]

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

Definition at line 38 of file SchemaRelationshipEditor.cpp.

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

◆ SchemaRelationshipEditor() [3/3]

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

Definition at line 54 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(QString("Relationship Editor : %1 New Relationship").arg(SchemaClass->get_name().c_str()));
68 ui->RelationshipTypeComboBox->setCurrentIndex(ui->RelationshipTypeComboBox->findData(ClassType, Qt::DisplayRole));
69}

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:1130

◆ FillInfo()

void dbse::SchemaRelationshipEditor::FillInfo ( )
protected

Definition at line 83 of file SchemaRelationshipEditor.cpp.

84{
85 auto name = SchemaClass->get_name() + "::" + SchemaRelationship->get_name();
86 setObjectName(QString::fromStdString(name));
87 ui->RelationshipNameLineEdit->setText(QString::fromStdString(SchemaRelationship->get_name()));
88 ui->RelationshipTypeComboBox->setCurrentIndex(
89 ui->RelationshipTypeComboBox->findData(QString::fromStdString(SchemaRelationship->get_type()), Qt::DisplayRole));
90 ui->RelationshipDescriptionTextEdit->setPlainText(QString::fromStdString(SchemaRelationship->get_description()));
91
93 ui->IsCompositeCombo->setCurrentIndex(0);
94 } else {
95 ui->IsCompositeCombo->setCurrentIndex(1);
96 }
97
99 ui->IsExclusiveCombo->setCurrentIndex(0);
100 } else {
101 ui->IsExclusiveCombo->setCurrentIndex(1);
102 }
103
105 ui->IsDependentCombo->setCurrentIndex(0);
106 } else {
107 ui->IsDependentCombo->setCurrentIndex(1);
108 }
109
110 if (SchemaRelationship->get_low_cardinality_constraint() == OksRelationship::CardinalityConstraint::Zero)
111 ui->LowCcCombo->setCurrentIndex(0);
112 else if (SchemaRelationship->get_low_cardinality_constraint() == OksRelationship::CardinalityConstraint::One) {
113 ui->LowCcCombo->setCurrentIndex(1);
114 } else {
115 ui->LowCcCombo->setCurrentIndex(2);
116 }
117
118 if (SchemaRelationship->get_high_cardinality_constraint() == OksRelationship::CardinalityConstraint::Zero)
119 ui->HighCcCombo->setCurrentIndex(0);
120 else if (SchemaRelationship->get_high_cardinality_constraint() == OksRelationship::CardinalityConstraint::One) {
121 ui->HighCcCombo->setCurrentIndex(1);
122 } else {
123 ui->HighCcCombo->setCurrentIndex(2);
124 }
125}
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 137 of file SchemaRelationshipEditor.cpp.

138{
139 QStringList ClassList;
141 ui->RelationshipTypeComboBox->addItems(ClassList);
142 auto name = SchemaClass->get_name() + "::";
143 setObjectName(QString::fromStdString(name));
144
145 if (!m_writable) {
146 ui->RelationshipTypeComboBox->setEnabled(false);
147 ui->IsCompositeCombo->setEnabled(false);
148 ui->IsExclusiveCombo->setEnabled(false);
149 ui->IsDependentCombo->setEnabled(false);
150 ui->LowCcCombo->setEnabled(false);
151 ui->HighCcCombo->setEnabled(false);
152 ui->RelationshipDescriptionTextEdit->setEnabled(false);
153 ui->RelationshipNameLineEdit->setEnabled(false);
154 }
155
156 if (!UsedNew) {
157 FillInfo();
158 }
159}
void GetClassListString(QStringList &ClassListString) const

◆ keyPressEvent()

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

Definition at line 128 of file SchemaRelationshipEditor.cpp.

129{
130 if (event->key() == Qt::Key_Escape) {
131 close();
132 }
133 QWidget::keyPressEvent(event);
134}

◆ MakeGraphConnection

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

◆ ParseToCreate()

void dbse::SchemaRelationshipEditor::ParseToCreate ( )

Definition at line 278 of file SchemaRelationshipEditor.cpp.

279{
280 if (ui->RelationshipNameLineEdit->text().isEmpty()) {
281 QMessageBox::warning(0, "Schema editor", QString("Please Provide a name for the relationship !"));
282 return;
283 }
284
285 QString RelationshipName = ui->RelationshipNameLineEdit->text();
286 QString RelationshipType = ui->RelationshipTypeComboBox->currentText();
287 QString RelationshipDescription = ui->RelationshipDescriptionTextEdit->toPlainText();
288
289 bool IsComposite;
290
291 if (ui->IsCompositeCombo->currentIndex() == 0) {
292 IsComposite = true;
293 } else {
294 IsComposite = false;
295 }
296
297 bool IsExclusive;
298
299 if (ui->IsExclusiveCombo->currentIndex() == 0) {
300 IsExclusive = true;
301 } else {
302 IsExclusive = false;
303 }
304
305 bool IsDependent;
306
307 if (ui->IsDependentCombo->currentIndex() == 0) {
308 IsDependent = true;
309 } else {
310 IsDependent = false;
311 }
312
313 OksRelationship::CardinalityConstraint RelationshipHighCardinality;
314 OksRelationship::CardinalityConstraint RelationshipLowCardinality;
315
316 if (ui->HighCcCombo->currentIndex() == 0)
317 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::Zero;
318 else if (ui->HighCcCombo->currentIndex() == 1)
319 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::One;
320 else {
321 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::Many;
322 }
323
324 if (ui->LowCcCombo->currentIndex() == 0)
325 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::Zero;
326 else if (ui->LowCcCombo->currentIndex() == 1)
327 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::One;
328 else {
329 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::Many;
330 }
331
333 RelationshipName.toStdString(),
334 RelationshipDescription.toStdString(),
335 RelationshipType.toStdString(),
336 IsComposite,
337 IsExclusive,
338 IsDependent,
339 RelationshipLowCardinality,
340 RelationshipHighCardinality);
341 emit RebuildModel();
342
343 if (GraphScene)
345 QString::fromStdString(SchemaClass->get_name()), ui->RelationshipTypeComboBox->currentText(), RelationshipName);
346
347 close();
348}
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 175 of file SchemaRelationshipEditor.cpp.

176{
177 bool changed = false;
178 QString RelationshipName = ui->RelationshipNameLineEdit->text();
179 QString RelationshipType = ui->RelationshipTypeComboBox->currentText();
180 QString RelationshipDescription = ui->RelationshipDescriptionTextEdit->toPlainText();
181
182 bool IsComposite;
183
184 if (ui->IsCompositeCombo->currentIndex() == 0) {
185 IsComposite = true;
186 } else {
187 IsComposite = false;
188 }
189
190 bool IsExclusive;
191
192 if (ui->IsExclusiveCombo->currentIndex() == 0) {
193 IsExclusive = true;
194 } else {
195 IsExclusive = false;
196 }
197
198 bool IsDependent;
199
200 if (ui->IsDependentCombo->currentIndex() == 0) {
201 IsDependent = true;
202 } else {
203 IsDependent = false;
204 }
205
206 OksRelationship::CardinalityConstraint RelationshipHighCardinality;
207 OksRelationship::CardinalityConstraint RelationshipLowCardinality;
208
209 if (ui->HighCcCombo->currentIndex() == 0)
210 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::Zero;
211 else if (ui->HighCcCombo->currentIndex() == 1)
212 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::One;
213 else {
214 RelationshipHighCardinality = OksRelationship::CardinalityConstraint::Many;
215 }
216
217 if (ui->LowCcCombo->currentIndex() == 0)
218 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::Zero;
219 else if (ui->LowCcCombo->currentIndex() == 1)
220 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::One;
221 else {
222 RelationshipLowCardinality = OksRelationship::CardinalityConstraint::Many;
223 }
224
225 if (RelationshipName != QString::fromStdString(SchemaRelationship->get_name())) {
227 SchemaClass, SchemaRelationship, RelationshipName.toStdString());
228 changed = true;
229 }
230
231 if (RelationshipType != QString::fromStdString(SchemaRelationship->get_type())) {
233 SchemaClass, SchemaRelationship, RelationshipType.toStdString());
234 changed = true;
235 }
236
237 if (RelationshipDescription != QString::fromStdString(SchemaRelationship->get_description())) {
239 SchemaClass, SchemaRelationship, RelationshipDescription.toStdString());
240 changed = true;
241 }
242
243 if (SchemaRelationship->get_is_composite() != IsComposite) {
245 changed = true;
246 }
247
248 if (SchemaRelationship->get_is_exclusive() != IsExclusive) {
250 changed = true;
251 }
252
253 if (SchemaRelationship->get_is_dependent() != IsDependent) {
255 changed = true;
256 }
257
258 if (RelationshipHighCardinality != SchemaRelationship->get_high_cardinality_constraint()) {
260 SchemaClass, SchemaRelationship, RelationshipHighCardinality);
261 changed = true;
262 }
263
264 if (RelationshipLowCardinality != SchemaRelationship->get_low_cardinality_constraint()) {
266 SchemaClass, SchemaRelationship, RelationshipLowCardinality);
267 changed = true;
268 }
269
270 if (changed) {
271 emit RebuildModel();
272 }
273
274 close();
275}
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.
Changes could not be no object was changed

◆ ProxySlot

void dbse::SchemaRelationshipEditor::ProxySlot ( )
privateslot

Definition at line 351 of file SchemaRelationshipEditor.cpp.

◆ RebuildModel

void dbse::SchemaRelationshipEditor::RebuildModel ( )
signal

◆ SetController()

void dbse::SchemaRelationshipEditor::SetController ( )

Definition at line 162 of file SchemaRelationshipEditor.cpp.

163{
164 if (m_writable) {
165 connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(ProxySlot()));
166 } else {
167 connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(close()));
168 }
169 connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(close()));
170 connect(&KernelWrapper::GetInstance(), SIGNAL(ClassCreated(QString)), this, SLOT(UpdateClassCombo()));
171 connect(&KernelWrapper::GetInstance(), SIGNAL(ClassUpdated(QString)), this, SLOT(ClassUpdated(QString)));
172}

◆ UpdateClassCombo

void dbse::SchemaRelationshipEditor::UpdateClassCombo ( )
privateslot

Definition at line 361 of file SchemaRelationshipEditor.cpp.

362{
363 QStringList ClassList;
365 ui->RelationshipTypeComboBox->clear();
366 ui->RelationshipTypeComboBox->addItems(ClassList);
367 ui->RelationshipTypeComboBox->setCurrentIndex(
368 ui->RelationshipTypeComboBox->findData(QString::fromStdString(SchemaRelationship->get_type()), Qt::DisplayRole));
369}

Member Data Documentation

◆ GraphScene

bool dbse::SchemaRelationshipEditor::GraphScene
private

Definition at line 46 of file SchemaRelationshipEditor.hpp.

◆ m_writable

bool dbse::SchemaRelationshipEditor::m_writable
private

Definition at line 47 of file SchemaRelationshipEditor.hpp.

◆ SchemaClass

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

Definition at line 44 of file SchemaRelationshipEditor.hpp.

◆ SchemaRelationship

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

Definition at line 43 of file SchemaRelationshipEditor.hpp.

◆ ui

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

Definition at line 42 of file SchemaRelationshipEditor.hpp.

◆ UsedNew

bool dbse::SchemaRelationshipEditor::UsedNew
private

Definition at line 45 of file SchemaRelationshipEditor.hpp.


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