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 24 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.

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}

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 138 of file CreateDatabaseWidget.cpp.

138 {
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}
std::list< std::string > get_includes()
#define FAIL(...)
std::string const parse(ers::Issue const &)

◆ CreateDatabaseFileInclude

void dbe::CreateDatabaseWidget::CreateDatabaseFileInclude ( )
privateslot

Definition at line 171 of file CreateDatabaseWidget.cpp.

172{
173 if (create_database_file("")) {
174 emit CanIncludeDatabase ( DatabaseFile.absoluteFilePath() );
175 close();
176 }
177}
void CanIncludeDatabase(const QString &DatabasePath)
bool create_database_file(std::string extra_text)

◆ CreateDatabaseFileLoad

void dbe::CreateDatabaseWidget::CreateDatabaseFileLoad ( )
privateslot

Definition at line 156 of file CreateDatabaseWidget.cpp.

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}
void CanLoadDatabase(const QString &DatabasePath)

◆ CreateDatabaseFileNoLoad

void dbe::CreateDatabaseWidget::CreateDatabaseFileNoLoad ( )
privateslot

Definition at line 164 of file CreateDatabaseWidget.cpp.

165{
166 if (create_database_file("")) {
167 close();
168 }
169}

◆ DefineDatabaseFile

void dbe::CreateDatabaseWidget::DefineDatabaseFile ( )
privateslot

Definition at line 98 of file CreateDatabaseWidget.cpp.

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}
static QList< QUrl > get_path_urls()
Definition FileInfo.cpp:103
static QString get_data_path()
Definition FileInfo.hpp:43
static void set_data_path(const QString &path)
Definition FileInfo.hpp:45

◆ DefineSchema

void dbe::CreateDatabaseWidget::DefineSchema ( )
privateslot

Definition at line 59 of file CreateDatabaseWidget.cpp.

60{
61 auto fd = new QFileDialog ( this, tr ( "Select Schema File" ),
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}
static QString prune_path(QString file)
Definition FileInfo.cpp:63
static void set_schema_path(const QString &path)
Definition FileInfo.hpp:44
static QString get_schema_path()
Definition FileInfo.hpp:42
static QPalette AlertStatusBarPallete

◆ get_includes()

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

Definition at line 127 of file CreateDatabaseWidget.cpp.

127 {
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}

Member Data Documentation

◆ CreateToInclude

bool dbe::CreateDatabaseWidget::CreateToInclude
private

Definition at line 39 of file CreateDatabaseWidget.hpp.

◆ DatabaseFile

QFileInfo dbe::CreateDatabaseWidget::DatabaseFile
private

Definition at line 36 of file CreateDatabaseWidget.hpp.

◆ DirToCreate

QString dbe::CreateDatabaseWidget::DirToCreate
private

Definition at line 38 of file CreateDatabaseWidget.hpp.

◆ SchemaFile

QFileInfo dbe::CreateDatabaseWidget::SchemaFile
private

Definition at line 37 of file CreateDatabaseWidget.hpp.


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