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

#include <CreateDatabaseWidget.hpp>

Inheritance diagram for dbe::CreateDatabaseWidget:
[legend]
Collaboration diagram for dbe::CreateDatabaseWidget:
[legend]

Signals

void CanLoadDatabase (const QString &DatabasePath)
void CanIncludeDatabase (const QString &DatabasePath)

Public Member Functions

 CreateDatabaseWidget (QWidget *parent=nullptr, bool Include=false, const QString &CreateDir=QString())

Private Slots

void DefineSchema ()
void DefineDatabaseFile ()
void CreateDatabaseFileLoad ()
void CreateDatabaseFileNoLoad ()
void CreateDatabaseFileInclude ()

Private Member Functions

std::list< std::string > get_includes ()
bool create_database_file (std::string extra_text)

Private Attributes

QFileInfo DatabaseFile
QFileInfo SchemaFile
QString DirToCreate
bool CreateToInclude

Detailed Description

Definition at line 22 of file CreateDatabaseWidget.hpp.

Constructor & Destructor Documentation

◆ CreateDatabaseWidget()

dbe::CreateDatabaseWidget::CreateDatabaseWidget ( QWidget * parent = nullptr,
bool Include = false,
const QString & CreateDir = QString() )

Definition at line 22 of file CreateDatabaseWidget.cpp.

23 : QWidget(parent)
24 , DirToCreate(CreateDir)
25 , CreateToInclude(Include)
26{
27 setupUi(this);
28
29 connect(SchemaButton, SIGNAL(clicked()), this, SLOT(DefineSchema()), Qt::UniqueConnection);
30 connect(SelectButton, SIGNAL(clicked()), this, SLOT(DefineDatabaseFile()), Qt::UniqueConnection);
31
32 if (!CreateToInclude) {
33 connect(CreateDatabaseButton, SIGNAL(clicked()), this, SLOT(CreateDatabaseFileLoad()), Qt::UniqueConnection);
34 connect(
35 CreateNoLoadDatabaseButton, SIGNAL(clicked()), this, SLOT(CreateDatabaseFileNoLoad()), Qt::UniqueConnection);
36 } else {
37 connect(CreateDatabaseButton, SIGNAL(clicked()), this, SLOT(CreateDatabaseFileInclude()), Qt::UniqueConnection);
38 CreateDatabaseButton->setText("Create Database File");
39 CreateNoLoadDatabaseButton->hide();
40 }
41
42 m_instructions->setText("Select schema files and define new database file. Database must contain at least one schema "
43 "file, other includes may be added later via a File info window.");
44 CreateDatabaseButton->setDisabled(true);
45 CreateNoLoadDatabaseButton->setDisabled(true);
46
47 DatabaseName->setReadOnly(true);
48}

Member Function Documentation

◆ CanIncludeDatabase

void dbe::CreateDatabaseWidget::CanIncludeDatabase ( const QString & DatabasePath)
signal

◆ CanLoadDatabase

void dbe::CreateDatabaseWidget::CanLoadDatabase ( const QString & DatabasePath)
signal

◆ create_database_file()

bool dbe::CreateDatabaseWidget::create_database_file ( std::string extra_text)
private

Definition at line 127 of file CreateDatabaseWidget.cpp.

128{
129 Configuration db("oksconflibs");
130 try {
131 const std::string DatabaseName = DatabaseFile.absoluteFilePath().toStdString();
132 db.create(DatabaseName, get_includes());
133 db.commit();
134 } catch (dunedaq::conffwk::Exception const& ex) {
135 FAIL("Database creation failure", dbe::config::errors::parse(ex).c_str());
136 return false;
137 }
138
139 QMessageBox::information(
140 0, tr("DBE"), QString::fromStdString("The Database was created.\n" + extra_text), QMessageBox::Ok);
141 return true;
142}
std::list< std::string > get_includes()
#define FAIL(...)
std::string const parse(ers::Issue const &)

◆ CreateDatabaseFileInclude

void dbe::CreateDatabaseWidget::CreateDatabaseFileInclude ( )
privateslot

Definition at line 161 of file CreateDatabaseWidget.cpp.

162{
163 if (create_database_file("")) {
164 emit CanIncludeDatabase(DatabaseFile.absoluteFilePath());
165 close();
166 }
167}
void CanIncludeDatabase(const QString &DatabasePath)
bool create_database_file(std::string extra_text)

◆ CreateDatabaseFileLoad

void dbe::CreateDatabaseWidget::CreateDatabaseFileLoad ( )
privateslot

Definition at line 144 of file CreateDatabaseWidget.cpp.

145{
146 if (create_database_file("Now the DB will be loaded into the Editor!\n")) {
147 emit CanLoadDatabase(DatabaseFile.absoluteFilePath());
148 close();
149 }
150}
void CanLoadDatabase(const QString &DatabasePath)

◆ CreateDatabaseFileNoLoad

void dbe::CreateDatabaseWidget::CreateDatabaseFileNoLoad ( )
privateslot

Definition at line 153 of file CreateDatabaseWidget.cpp.

154{
155 if (create_database_file("")) {
156 close();
157 }
158}

◆ DefineDatabaseFile

void dbe::CreateDatabaseWidget::DefineDatabaseFile ( )
privateslot

Definition at line 87 of file CreateDatabaseWidget.cpp.

88{
89 QString Dir;
90
91 QString path = FileInfo::get_data_path().append("/NewDatabaseFile.data.xml");
92
93 auto fd = new QFileDialog(this, tr("Select new DB File"), path, tr("XML data files (*.data.xml)"));
94 fd->setFileMode(QFileDialog::AnyFile);
95 fd->setViewMode(QFileDialog::Detail);
96 fd->setAcceptMode(QFileDialog::AcceptSave);
97 fd->setSidebarUrls(FileInfo::get_path_urls());
98 if (!(fd->exec() == QDialog::Accepted)) {
99 return;
100 }
101 FileInfo::set_data_path(fd->directory().path());
102 auto files = fd->selectedFiles();
103
104 DatabaseFile = QFileInfo(files.at(0));
105
106 DatabaseName->setText(DatabaseFile.absoluteFilePath());
107
108 if (schema_list->count() > 0) {
109 CreateDatabaseButton->setEnabled(true);
110 CreateNoLoadDatabaseButton->setEnabled(true);
111 }
112}
static QList< QUrl > get_path_urls()
Definition FileInfo.cpp:108
static QString get_data_path()
Definition FileInfo.hpp:40
static void set_data_path(const QString &path)
Definition FileInfo.hpp:42

◆ DefineSchema

void dbe::CreateDatabaseWidget::DefineSchema ( )
privateslot

Definition at line 51 of file CreateDatabaseWidget.cpp.

52{
53 auto fd =
54 new QFileDialog(this, tr("Select Schema File"), FileInfo::get_schema_path(), tr("XML schema files (*.schema.xml)"));
55 fd->setFileMode(QFileDialog::ExistingFile);
56 fd->setViewMode(QFileDialog::Detail);
57 fd->setAcceptMode(QFileDialog::AcceptOpen);
58 fd->setSidebarUrls(FileInfo::get_path_urls());
59 if (!(fd->exec() == QDialog::Accepted)) {
60 return;
61 }
62 FileInfo::set_schema_path(fd->directory().path());
63
64 auto files = fd->selectedFiles();
65 for (auto file : files) {
66 QFileInfo SchemaFile = QFileInfo(file);
67 if (!SchemaFile.isFile()) {
68 m_instructions->setPalette(StyleUtility::AlertStatusBarPallete);
69 m_instructions->setText(QString("The file is not accessible. Check before usage"));
70 } else {
71 if (SchemaFile.fileName().contains("schema")) {
72 schema_list->addItem(FileInfo::prune_path(file));
73 } else {
74 m_instructions->setPalette(StyleUtility::AlertStatusBarPallete);
75 m_instructions->setText(QString("The file %1 is not a schema file").arg(SchemaFile.absoluteFilePath()));
76 }
77 }
78 }
79
80 if (schema_list->count() > 0 && !DatabaseName->text().isEmpty()) {
81 CreateDatabaseButton->setEnabled(true);
82 CreateNoLoadDatabaseButton->setEnabled(true);
83 }
84}
static QString prune_path(QString file)
Definition FileInfo.cpp:66
static void set_schema_path(const QString &path)
Definition FileInfo.hpp:41
static QString get_schema_path()
Definition FileInfo.hpp:39
static QPalette AlertStatusBarPallete

◆ get_includes()

std::list< std::string > dbe::CreateDatabaseWidget::get_includes ( )
private

Definition at line 115 of file CreateDatabaseWidget.cpp.

116{
117 std::list<std::string> includes;
118
119 for (int row = 0; row < schema_list->count(); ++row) {
120 auto item = schema_list->item(row)->text();
121 includes.push_back(item.toStdString());
122 }
123 return includes;
124}

Member Data Documentation

◆ CreateToInclude

bool dbe::CreateDatabaseWidget::CreateToInclude
private

Definition at line 38 of file CreateDatabaseWidget.hpp.

◆ DatabaseFile

QFileInfo dbe::CreateDatabaseWidget::DatabaseFile
private

Definition at line 35 of file CreateDatabaseWidget.hpp.

◆ DirToCreate

QString dbe::CreateDatabaseWidget::DirToCreate
private

Definition at line 37 of file CreateDatabaseWidget.hpp.

◆ SchemaFile

QFileInfo dbe::CreateDatabaseWidget::SchemaFile
private

Definition at line 36 of file CreateDatabaseWidget.hpp.


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