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/messenger.hpp
"
18
#include "
dbe/FileInfo.hpp
"
19
20
using namespace
dunedaq::conffwk
;
21
22
dbe::CreateDatabaseWidget::CreateDatabaseWidget
( QWidget * parent,
bool
Include,
23
const
QString & CreateDir )
24
: QWidget ( parent ),
25
DirToCreate
( CreateDir ),
26
CreateToInclude
( Include )
27
{
28
setupUi (
this
);
29
30
connect ( SchemaButton, SIGNAL ( clicked() ),
this
, SLOT (
DefineSchema
() ),
31
Qt::UniqueConnection );
32
connect ( SelectButton, SIGNAL ( clicked() ),
this
, SLOT (
DefineDatabaseFile
() ),
33
Qt::UniqueConnection );
34
35
if
( !
CreateToInclude
)
36
{
37
connect ( CreateDatabaseButton, SIGNAL ( clicked() ),
this
,
38
SLOT (
CreateDatabaseFileLoad
() ),
39
Qt::UniqueConnection );
40
connect ( CreateNoLoadDatabaseButton, SIGNAL ( clicked() ),
this
,
41
SLOT (
CreateDatabaseFileNoLoad
() ), Qt::UniqueConnection );
42
}
43
else
44
{
45
connect ( CreateDatabaseButton, SIGNAL ( clicked() ),
this
,
46
SLOT (
CreateDatabaseFileInclude
() ), Qt::UniqueConnection );
47
CreateDatabaseButton->setText (
"Create Database File"
);
48
CreateNoLoadDatabaseButton->hide();
49
}
50
51
52
m_instructions->setText (
"Select schema files and define new database file. Database must contain at least one schema file, other includes may be added later via a File info window."
);
53
CreateDatabaseButton->setDisabled (
true
);
54
CreateNoLoadDatabaseButton->setDisabled (
true
);
55
56
DatabaseName->setReadOnly (
true
);
57
}
58
59
void
dbe::CreateDatabaseWidget::DefineSchema
()
60
{
61
auto
fd =
new
QFileDialog (
this
, tr (
"Select Schema File"
),
62
FileInfo::get_schema_path
(),
63
tr (
"XML schema files (*.schema.xml)"
) );
64
fd->setFileMode ( QFileDialog::ExistingFile );
65
fd->setViewMode ( QFileDialog::Detail );
66
fd->setAcceptMode ( QFileDialog::AcceptOpen );
67
fd->setSidebarUrls(
FileInfo::get_path_urls
());
68
if
(!(fd->exec() == QDialog::Accepted)) {
69
return
;
70
}
71
FileInfo::set_schema_path
(fd->directory().path());
72
73
auto
files = fd->selectedFiles();
74
for
(
auto
file: files) {
75
QFileInfo
SchemaFile
= QFileInfo (file);
76
if
( !
SchemaFile
.isFile() ) {
77
m_instructions->setPalette (
StyleUtility::AlertStatusBarPallete
);
78
m_instructions->setText ( QString (
"The file is not accessible. Check before usage"
));
79
}
80
else
{
81
if
(
SchemaFile
.fileName().contains(
"schema"
)) {
82
schema_list->addItem(
FileInfo::prune_path
(file));
83
}
84
else
{
85
m_instructions->setPalette (
StyleUtility::AlertStatusBarPallete
);
86
m_instructions->setText (
87
QString (
"The file %1 is not a schema file"
).arg (
SchemaFile
.absoluteFilePath() ));
88
}
89
}
90
}
91
92
if
(schema_list->count()>0 && !DatabaseName->text().isEmpty()) {
93
CreateDatabaseButton->setEnabled (
true
);
94
CreateNoLoadDatabaseButton->setEnabled (
true
);
95
}
96
}
97
98
void
dbe::CreateDatabaseWidget::DefineDatabaseFile
()
99
{
100
QString Dir;
101
102
QString path =
FileInfo::get_data_path
().append (
"/NewDatabaseFile.data.xml"
);
103
104
auto
fd =
new
QFileDialog (
this
, tr(
"Select new DB File"
),
105
path,
106
tr(
"XML data files (*.data.xml)"
));
107
fd->setFileMode ( QFileDialog::AnyFile );
108
fd->setViewMode ( QFileDialog::Detail );
109
fd->setAcceptMode ( QFileDialog::AcceptSave );
110
fd->setSidebarUrls(
FileInfo::get_path_urls
());
111
if
(!(fd->exec() == QDialog::Accepted)) {
112
return
;
113
}
114
FileInfo::set_data_path
(fd->directory().path());
115
auto
files = fd->selectedFiles();
116
117
DatabaseFile
= QFileInfo (files.at(0));
118
119
DatabaseName->setText (
DatabaseFile
.absoluteFilePath() );
120
121
if
(schema_list->count()>0) {
122
CreateDatabaseButton->setEnabled (
true
);
123
CreateNoLoadDatabaseButton->setEnabled (
true
);
124
}
125
}
126
127
std::list<std::string>
dbe::CreateDatabaseWidget::get_includes
() {
128
std::list<std::string> includes;
129
130
for
(
int
row=0; row<schema_list->count(); ++row) {
131
auto
item = schema_list->item(row)->text();
132
includes.push_back(item.toStdString());
133
}
134
return
includes;
135
}
136
137
138
bool
dbe::CreateDatabaseWidget::create_database_file
(std::string extra_text) {
139
Configuration
db (
"oksconflibs"
);
140
try
{
141
const
std::string DatabaseName =
DatabaseFile
.absoluteFilePath().toStdString();
142
db.
create
(DatabaseName,
get_includes
());
143
db.
commit
();
144
}
145
catch
( dunedaq::conffwk::Exception
const
& ex )
146
{
147
FAIL
(
"Database creation failure"
,
dbe::config::errors::parse
( ex ).c_str() );
148
return
false
;
149
}
150
151
QMessageBox::information (0, tr (
"DBE"
),
152
QString::fromStdString (
"The Database was created.\n"
+extra_text),
153
QMessageBox::Ok );
154
return
true
;
155
}
156
void
dbe::CreateDatabaseWidget::CreateDatabaseFileLoad
()
157
{
158
if
(
create_database_file
(
"Now the DB will be loaded into the Editor!\n"
)) {
159
emit
CanLoadDatabase
(
DatabaseFile
.absoluteFilePath() );
160
close();
161
}
162
}
163
164
void
dbe::CreateDatabaseWidget::CreateDatabaseFileNoLoad
()
165
{
166
if
(
create_database_file
(
""
)) {
167
close();
168
}
169
}
170
171
void
dbe::CreateDatabaseWidget::CreateDatabaseFileInclude
()
172
{
173
if
(
create_database_file
(
""
)) {
174
emit
CanIncludeDatabase
(
DatabaseFile
.absoluteFilePath() );
175
close();
176
}
177
}
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:156
dbe::CreateDatabaseWidget::get_includes
std::list< std::string > get_includes()
Definition
CreateDatabaseWidget.cpp:127
dbe::CreateDatabaseWidget::DatabaseFile
QFileInfo DatabaseFile
Definition
CreateDatabaseWidget.hpp:36
dbe::CreateDatabaseWidget::DirToCreate
QString DirToCreate
Definition
CreateDatabaseWidget.hpp:38
dbe::CreateDatabaseWidget::CreateDatabaseFileNoLoad
void CreateDatabaseFileNoLoad()
Definition
CreateDatabaseWidget.cpp:164
dbe::CreateDatabaseWidget::CanIncludeDatabase
void CanIncludeDatabase(const QString &DatabasePath)
dbe::CreateDatabaseWidget::CreateDatabaseFileInclude
void CreateDatabaseFileInclude()
Definition
CreateDatabaseWidget.cpp:171
dbe::CreateDatabaseWidget::create_database_file
bool create_database_file(std::string extra_text)
Definition
CreateDatabaseWidget.cpp:138
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:98
dbe::CreateDatabaseWidget::DefineSchema
void DefineSchema()
Definition
CreateDatabaseWidget.cpp:59
dbe::CreateDatabaseWidget::SchemaFile
QFileInfo SchemaFile
Definition
CreateDatabaseWidget.hpp:37
dbe::CreateDatabaseWidget::CreateToInclude
bool CreateToInclude
Definition
CreateDatabaseWidget.hpp:39
dbe::FileInfo::get_path_urls
static QList< QUrl > get_path_urls()
Definition
FileInfo.cpp:103
dbe::FileInfo::prune_path
static QString prune_path(QString file)
Definition
FileInfo.cpp:63
dbe::FileInfo::set_schema_path
static void set_schema_path(const QString &path)
Definition
FileInfo.hpp:44
dbe::FileInfo::get_data_path
static QString get_data_path()
Definition
FileInfo.hpp:43
dbe::FileInfo::get_schema_path
static QString get_schema_path()
Definition
FileInfo.hpp:42
dbe::FileInfo::set_data_path
static void set_data_path(const QString &path)
Definition
FileInfo.hpp:45
dbe::StyleUtility::AlertStatusBarPallete
static QPalette AlertStatusBarPallete
Definition
StyleUtility.hpp:36
dunedaq::conffwk::Configuration
Defines base class for cache of template objects.
Definition
Configuration.hpp:228
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:798
dunedaq::conffwk::Configuration::commit
void commit(const std::string &log_message="")
Commit database changes.
Definition
Configuration.cpp:587
Configuration.hpp
conffwk entry point
Schema.hpp
messenger.hpp
FAIL
#define FAIL(...)
Definition
messenger.hpp:133
dbe::config::errors::parse
std::string const parse(ers::Issue const &)
Definition
config_api.cpp:105
dunedaq::conffwk
Definition
ConfigurationHelper.hpp:23
Generated on
for DUNE-DAQ by
1.17.0