LCOV - code coverage report
Current view: top level - dbe/src/widgets - CreateDatabaseWidget.cpp (source / functions) Coverage Total Hit
Test: code.result Lines: 0.0 % 109 0
Test Date: 2025-12-21 13:07:08 Functions: 0.0 % 6 0

            Line data    Source code
       1              : /// Including QT Headers
       2              : #include<QFileDialog>
       3              : #include<QMessageBox>
       4              : /// Including DBE
       5              : #include"dbe/CreateDatabaseWidget.hpp"
       6              : #include"dbe/StyleUtility.hpp"
       7              : /// Including config headers
       8              : #include "conffwk/ConfigObject.hpp"
       9              : #include "conffwk/Configuration.hpp"
      10              : #include "conffwk/Schema.hpp"
      11              : #include "dbe/Exceptions.hpp"
      12              : #include "dbe/messenger.hpp"
      13              : 
      14              : using namespace dunedaq::conffwk;
      15              : 
      16            0 : dbe::CreateDatabaseWidget::CreateDatabaseWidget ( QWidget * parent, bool Include,
      17            0 :                                                   const QString & CreateDir )
      18              :   : QWidget ( parent ),
      19            0 :     StatusBar ( nullptr ),
      20            0 :     DirToCreate ( CreateDir ),
      21            0 :     CreateToInclude ( Include )
      22              : {
      23            0 :   setupUi ( this );
      24              : 
      25            0 :   connect ( SchemaButton, SIGNAL ( clicked() ), this, SLOT ( DefineSchema() ),
      26              :             Qt::UniqueConnection );
      27            0 :   connect ( SelectButton, SIGNAL ( clicked() ), this, SLOT ( DefineDatabaseFile() ),
      28              :             Qt::UniqueConnection );
      29              : 
      30            0 :   if ( !CreateToInclude )
      31              :   {
      32            0 :     connect ( CreateDatabaseButton, SIGNAL ( clicked() ), this,
      33              :               SLOT ( CreateDatabaseFileLoad() ),
      34              :               Qt::UniqueConnection );
      35            0 :     connect ( CreateNoLoadDatabaseButton, SIGNAL ( clicked() ), this,
      36              :               SLOT ( CreateDatabaseFileNoLoad() ), Qt::UniqueConnection );
      37              :   }
      38              :   else
      39              :   {
      40            0 :     connect ( CreateDatabaseButton, SIGNAL ( clicked() ), this,
      41              :               SLOT ( CreateDatabaseFileInclude() ), Qt::UniqueConnection );
      42            0 :     CreateDatabaseButton->setText ( "Create Database File" );
      43            0 :     CreateNoLoadDatabaseButton->hide();
      44              :   }
      45              : 
      46            0 :   StatusBar = new QStatusBar ( StatusFrame );
      47            0 :   StatusBar->setSizeGripEnabled ( false );
      48            0 :   StatusFrame->setFrameStyle ( QFrame::NoFrame );
      49            0 :   StatusLayout->addWidget ( StatusBar );
      50              : 
      51            0 :   StatusBar->setAutoFillBackground ( true );
      52            0 :   StatusBar->showMessage ( "Select schema files and define new database file!" );
      53            0 :   CreateDatabaseButton->setDisabled ( true );
      54            0 :   CreateNoLoadDatabaseButton->setDisabled ( true );
      55              : 
      56            0 :   DatabaseName->setReadOnly ( true );
      57            0 : }
      58              : 
      59            0 : void dbe::CreateDatabaseWidget::DefineSchema()
      60              : {
      61            0 :   QString SchemaFilePath = QFileDialog::getOpenFileName ( this, tr ( "Open Schema File" ),
      62            0 :                                                           DirToCreate.append("./"),
      63            0 :                                                           tr ( "XML files (*.xml)" ) );
      64            0 :   QFileInfo SchemaFile = QFileInfo ( SchemaFilePath );
      65              : 
      66            0 :   if ( !SchemaFile.isFile() )
      67              :   {
      68            0 :     StatusBar->setPalette ( StyleUtility::AlertStatusBarPallete );
      69            0 :     StatusBar->showMessage ( QString ( "The file is not accessible. Check before usage" ) );
      70              :   }
      71              :   else
      72              :   {
      73            0 :     if ( SchemaFile.fileName().contains ( "schema" ) ) SchemaCombo->addItem (
      74            0 :         SchemaFile.absoluteFilePath() );
      75              :     else
      76              :     {
      77            0 :       StatusBar->setPalette ( StyleUtility::AlertStatusBarPallete );
      78            0 :       StatusBar->showMessage (
      79            0 :         QString ( "The file %1 is not a schema file" ).arg ( SchemaFile.absoluteFilePath() ) );
      80              :     }
      81              :   }
      82            0 : }
      83              : 
      84            0 : void dbe::CreateDatabaseWidget::DefineDatabaseFile()
      85              : {
      86            0 :   QString Dir;
      87              : 
      88            0 :   if ( DirToCreate.isEmpty() )
      89              :   {
      90            0 :     Dir = QString ( "./NewDatabaseFile.data.xml" );
      91              :   }
      92              :   else
      93              :   {
      94            0 :     Dir = DirToCreate.append ( "/NewDatabaseFile.data.xml" );
      95              :   }
      96              : 
      97            0 :   QString DatabaseFilePath = QFileDialog::getSaveFileName ( this,
      98            0 :                                                             tr ( "Save to Database File" ),
      99              :                                                             Dir,
     100            0 :                                                             tr ( "XML files (*.xml)" ) );
     101            0 :   DatabaseFile = QFileInfo ( DatabaseFilePath );
     102              : 
     103            0 :   DatabaseName->setText ( DatabaseFile.absoluteFilePath() );
     104            0 :   CreateDatabaseButton->setEnabled ( true );
     105            0 :   CreateNoLoadDatabaseButton->setEnabled ( true );
     106            0 : }
     107              : 
     108            0 : void dbe::CreateDatabaseWidget::CreateDatabaseFileLoad()
     109              : {
     110            0 :   Configuration db ( "oksconflibs" );
     111              : 
     112            0 :   try
     113              :   {
     114            0 :     std::list<std::string> Includes;
     115              : 
     116            0 :     for ( int i = 0; i < SchemaCombo->count(); ++i )
     117              :     {
     118            0 :       QString Item = SchemaCombo->itemText ( i );
     119            0 :       Includes.push_back ( Item.toStdString() );
     120            0 :     }
     121              : 
     122            0 :     const std::string DatabaseName = DatabaseFile.absoluteFilePath().toStdString();
     123            0 :     db.create ( DatabaseName, Includes );
     124            0 :     db.commit();
     125              : 
     126            0 :     QMessageBox::information (
     127            0 :       0, tr ( "DBE" ),
     128            0 :       QString ( "Database was created.\nNow the DB will be loaded into the Editor!\n" ),
     129              :       QMessageBox::Ok );
     130            0 :     emit CanLoadDatabase ( DatabaseFile.absoluteFilePath() );
     131            0 :     close();
     132            0 :   }
     133            0 :   catch ( dunedaq::conffwk::Exception const & ex )
     134              :   {
     135            0 :     FAIL ( "Database creation failure", dbe::config::errors::parse ( ex ).c_str() );
     136            0 :   }
     137            0 : }
     138              : 
     139            0 : void dbe::CreateDatabaseWidget::CreateDatabaseFileNoLoad()
     140              : {
     141            0 :   Configuration db ( "oksconflibs" );
     142              : 
     143            0 :   try
     144              :   {
     145            0 :     std::list<std::string> Includes;
     146              : 
     147            0 :     for ( int i = 0; i < SchemaCombo->count(); ++i )
     148              :     {
     149            0 :       QString Item = SchemaCombo->itemText ( i );
     150            0 :       Includes.push_back ( Item.toStdString() );
     151            0 :     }
     152              : 
     153            0 :     const std::string DatabaseName = DatabaseFile.absoluteFilePath().toStdString();
     154            0 :     db.create ( DatabaseName, Includes );
     155            0 :     db.commit();
     156              : 
     157            0 :     QMessageBox::information ( 0, tr ( "DBE" ), QString ( "The Database was created.\n" ),
     158              :                                QMessageBox::Ok );
     159            0 :     close();
     160            0 :   }
     161            0 :   catch ( dunedaq::conffwk::Exception const & ex )
     162              :   {
     163            0 :     FAIL ( "Database creation failure", dbe::config::errors::parse ( ex ).c_str() );
     164            0 :   }
     165            0 : }
     166              : 
     167            0 : void dbe::CreateDatabaseWidget::CreateDatabaseFileInclude()
     168              : {
     169            0 :   Configuration db ( "oksconflibs" );
     170              : 
     171            0 :   try
     172              :   {
     173            0 :     std::list<std::string> Includes;
     174              : 
     175            0 :     for ( int i = 0; i < SchemaCombo->count(); ++i )
     176              :     {
     177            0 :       QString Item = SchemaCombo->itemText ( i );
     178            0 :       Includes.push_back ( Item.toStdString() );
     179            0 :     }
     180              : 
     181            0 :     const std::string DatabaseName = DatabaseFile.absoluteFilePath().toStdString();
     182            0 :     db.create ( DatabaseName, Includes );
     183            0 :     db.commit();
     184              : 
     185            0 :     QMessageBox::information ( 0, tr ( "DBE" ), QString ( "The Database was created.\n" ),
     186              :                                QMessageBox::Ok );
     187            0 :     emit CanIncludeDatabase ( DatabaseFile.absoluteFilePath() );
     188            0 :     close();
     189            0 :   }
     190            0 :   catch ( dunedaq::conffwk::Exception const & ex )
     191              :   {
     192            0 :     FAIL ( "Database creation error", dbe::config::errors::parse ( ex ).c_str() );
     193            0 :   }
     194            0 : }
        

Generated by: LCOV version 2.0-1