Pārlūkot izejas kodu

ENH: interface cleanup of qCTKDCMTK

Marco Nolden 15 gadi atpakaļ
vecāks
revīzija
0786ef6d24
2 mainītis faili ar 22 papildinājumiem un 24 dzēšanām
  1. 13 13
      Libs/DICOM/Core/qCTKDCMTK.cxx
  2. 9 11
      Libs/DICOM/Core/qCTKDCMTK.h

+ 13 - 13
Libs/DICOM/Core/qCTKDCMTK.cxx

@@ -44,9 +44,6 @@ qCTKDCMTK::~qCTKDCMTK()
 }
 
 //----------------------------------------------------------------------------
-QCTK_SET_CXX(qCTKDCMTK, const QString&, setDatabaseFileName, DatabaseFileName);
-
-//----------------------------------------------------------------------------
 bool qCTKDCMTK::openDatabase(const QString& databaseFileName) 
 {
   QCTK_D(qCTKDCMTK);
@@ -57,14 +54,18 @@ bool qCTKDCMTK::openDatabase(const QString& databaseFileName)
     d->LastError = d->Database.lastError().text();
     return false;
     }
+  if ( d->Database.tables().empty() ) 
+    {
+    initializeDatabase();
+    }
   return true;
 }
 const QString& qCTKDCMTK::GetLastError() const {
   QCTK_D(const qCTKDCMTK);
   return d->LastError; 
 }
-QSqlDatabase& qCTKDCMTK::database() {
-  QCTK_D(qCTKDCMTK);
+const QSqlDatabase& qCTKDCMTK::database() const {
+  QCTK_D(const qCTKDCMTK);
   return d->Database;
 }
 
@@ -75,8 +76,6 @@ bool qCTKDCMTKPrivate::executeScript(const QString& script) {
   sqlCommands.replace( '\n', ' ' );
   sqlCommands.replace("; ", ";\n");
 
-  //MITK_INFO << "Query:\n\n" << sqlCommands.toStdString() << "\n";
-
   QStringList sqlCommandsLines = sqlCommands.split('\n');
 
   QSqlQuery query(Database);
@@ -94,16 +93,17 @@ bool qCTKDCMTKPrivate::executeScript(const QString& script) {
         }
       }
   }
-
-
   return true;
 }
 
-
-bool qCTKDCMTK::initializeDatabase() 
+bool qCTKDCMTK::initializeDatabase(const char* sqlFileName) 
 {
   QCTK_D(qCTKDCMTK);
-  return d->executeScript(":/dicom/dicom-schema.sql");
+  return d->executeScript(sqlFileName);
 }
   
-
+void qCTKDCMTK::closeDatabase()
+{
+  QCTK_D(qCTKDCMTK);
+  d->Database.close();
+}

+ 9 - 11
Libs/DICOM/Core/qCTKDCMTK.h

@@ -19,23 +19,21 @@ public:
   explicit qCTKDCMTK(QObject* parent = 0);
   virtual ~qCTKDCMTK();
   
-  /// 
-  /// 
-  void setDatabaseFileName(const QString& file);
-  
   ///
-  /// open the SQLite database in file
+  /// open the SQLite database in @param file. If the file does not
+  /// exist, a new database is created and initialized with the
+  /// default schema
   virtual bool openDatabase(const QString& file);
 
-  QSqlDatabase& database();
+  const QSqlDatabase& database() const;
   const QString& GetLastError() const; 
   
-  
-  
   ///
-  /// delete all data and initialize the database with
-  /// the default schema
-  bool initializeDatabase();
+  /// close the database. It must not be used afterwards.
+  void closeDatabase();  
+  ///
+  /// delete all data and reinitialize the database.
+  bool initializeDatabase(const char* schemaFile = ":/dicom/dicom-schema.sql");
 private:
   QCTK_DECLARE_PRIVATE(qCTKDCMTK);
 };