DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
dbe
src
widgets
CreateDatabaseWidget.cpp
Go to the documentation of this file.
1
// DUNE DAQ modification notice:
2
// This file has been modified from the original ATLAS dbe source for the DUNE DAQ project.
3
// Fork baseline commit: dbe-02-12-17 (2022-05-12).
4
// Renamed since fork: no.
5
7
#include <QFileDialog>
8
#include <QMessageBox>
10
#include "
dbe/CreateDatabaseWidget.hpp
"
11
#include "
dbe/StyleUtility.hpp
"
13
#include "
conffwk/ConfigObject.hpp
"
14
#include "
conffwk/Configuration.hpp
"
15
#include "
conffwk/Schema.hpp
"
16
#include "
dbe/Exceptions.hpp
"
17
#include "
dbe/FileInfo.hpp
"
18
#include "
dbe/messenger.hpp
"
19
20
using namespace
dunedaq::conffwk
;
21
22
dbe::CreateDatabaseWidget::CreateDatabaseWidget
(QWidget* parent,
bool
Include,
const
QString& CreateDir)
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
}
49
50
void
51
dbe::CreateDatabaseWidget::DefineSchema
()
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
}
85
86
void
87
dbe::CreateDatabaseWidget::DefineDatabaseFile
()
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
}
113
114
std::list<std::string>
115
dbe::CreateDatabaseWidget::get_includes
()
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
}
125
126
bool
127
dbe::CreateDatabaseWidget::create_database_file
(std::string extra_text)
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
}
143
void
144
dbe::CreateDatabaseWidget::CreateDatabaseFileLoad
()
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
}
151
152
void
153
dbe::CreateDatabaseWidget::CreateDatabaseFileNoLoad
()
154
{
155
if
(
create_database_file
(
""
)) {
156
close();
157
}
158
}
159
160
void
161
dbe::CreateDatabaseWidget::CreateDatabaseFileInclude
()
162
{
163
if
(
create_database_file
(
""
)) {
164
emit
CanIncludeDatabase
(
DatabaseFile
.absoluteFilePath());
165
close();
166
}
167
}
ConfigObject.hpp
CreateDatabaseWidget.hpp
Exceptions.hpp
FileInfo.hpp
StyleUtility.hpp
dbe::CreateDatabaseWidget::CanLoadDatabase
void CanLoadDatabase(const QString &DatabasePath)
dbe::CreateDatabaseWidget::CreateDatabaseFileLoad
void CreateDatabaseFileLoad()
Definition
CreateDatabaseWidget.cpp:144
dbe::CreateDatabaseWidget::get_includes
std::list< std::string > get_includes()
Definition
CreateDatabaseWidget.cpp:115
dbe::CreateDatabaseWidget::DatabaseFile
QFileInfo DatabaseFile
Definition
CreateDatabaseWidget.hpp:35
dbe::CreateDatabaseWidget::DirToCreate
QString DirToCreate
Definition
CreateDatabaseWidget.hpp:37
dbe::CreateDatabaseWidget::CreateDatabaseFileNoLoad
void CreateDatabaseFileNoLoad()
Definition
CreateDatabaseWidget.cpp:153
dbe::CreateDatabaseWidget::CanIncludeDatabase
void CanIncludeDatabase(const QString &DatabasePath)
dbe::CreateDatabaseWidget::CreateDatabaseFileInclude
void CreateDatabaseFileInclude()
Definition
CreateDatabaseWidget.cpp:161
dbe::CreateDatabaseWidget::create_database_file
bool create_database_file(std::string extra_text)
Definition
CreateDatabaseWidget.cpp:127
dbe::CreateDatabaseWidget::CreateDatabaseWidget
CreateDatabaseWidget(QWidget *parent=nullptr, bool Include=false, const QString &CreateDir=QString())
Definition
CreateDatabaseWidget.cpp:22
dbe::CreateDatabaseWidget::DefineDatabaseFile
void DefineDatabaseFile()
Definition
CreateDatabaseWidget.cpp:87
dbe::CreateDatabaseWidget::DefineSchema
void DefineSchema()
Definition
CreateDatabaseWidget.cpp:51
dbe::CreateDatabaseWidget::SchemaFile
QFileInfo SchemaFile
Definition
CreateDatabaseWidget.hpp:36
dbe::CreateDatabaseWidget::CreateToInclude
bool CreateToInclude
Definition
CreateDatabaseWidget.hpp:38
dbe::FileInfo::get_path_urls
static QList< QUrl > get_path_urls()
Definition
FileInfo.cpp:108
dbe::FileInfo::prune_path
static QString prune_path(QString file)
Definition
FileInfo.cpp:66
dbe::FileInfo::set_schema_path
static void set_schema_path(const QString &path)
Definition
FileInfo.hpp:41
dbe::FileInfo::get_data_path
static QString get_data_path()
Definition
FileInfo.hpp:40
dbe::FileInfo::get_schema_path
static QString get_schema_path()
Definition
FileInfo.hpp:39
dbe::FileInfo::set_data_path
static void set_data_path(const QString &path)
Definition
FileInfo.hpp:42
dbe::StyleUtility::AlertStatusBarPallete
static QPalette AlertStatusBarPallete
Definition
StyleUtility.hpp:35
dunedaq::conffwk::Configuration
Defines base class for cache of template objects.
Definition
Configuration.hpp:234
dunedaq::conffwk::Configuration::create
void create(const std::string &at, const std::string &class_name, const std::string &id, ConfigObject &object)
Create new object by class name and object id.
Definition
Configuration.cpp:739
dunedaq::conffwk::Configuration::commit
void commit(const std::string &log_message="")
Commit database changes.
Definition
Configuration.cpp:540
Configuration.hpp
conffwk entry point
Schema.hpp
messenger.hpp
FAIL
#define FAIL(...)
Definition
messenger.hpp:129
dbe::config::errors::parse
std::string const parse(ers::Issue const &)
Definition
config_api.cpp:98
dunedaq::conffwk
Definition
test_circular_dependency.hpp:5
Generated on
for DUNE-DAQ by
1.18.0