Parcourir la source

Use directory of ctkDICOMDatabase rather than passing it

Previously the concept of the directory and the ctkDICOM.sql
file were treated independently.  Now the directory for
the ctkDICOMDatabase is defined as the directory that
contains the sqlite file.

Also change some method signatures for style consistency
(like lastError() replaces GetLastError()).
Steve Pieper il y a 14 ans
Parent
commit
8e7acf5d2e

+ 1 - 0
Applications/ctkDICOM/ctkDICOMMain.cpp

@@ -79,6 +79,7 @@ int main(int argc, char** argv)
   QString databaseFileName = databaseDirectory + QString("/ctkDICOM.sql");
   QString databaseFileName = databaseDirectory + QString("/ctkDICOM.sql");
 
 
   QSharedPointer<ctkDICOMDatabase> dicomDatabase = QSharedPointer<ctkDICOMDatabase> (new ctkDICOMDatabase);
   QSharedPointer<ctkDICOMDatabase> dicomDatabase = QSharedPointer<ctkDICOMDatabase> (new ctkDICOMDatabase);
+  dicomDatabase->openDatabase(databaseFileName);
 
 
   ctkDICOMQueryRetrieveWidget queryRetrieve;
   ctkDICOMQueryRetrieveWidget queryRetrieve;
 
 

+ 1 - 1
Applications/ctkDICOMIndexer/ctkDICOMIndexerMain.cpp

@@ -106,7 +106,7 @@ int main(int argc, char** argv)
   }
   }
   catch (std::exception e)
   catch (std::exception e)
   {
   {
-    std::cerr << "Database error:" << qPrintable(myCTK.GetLastError());
+    std::cerr << "Database error:" << qPrintable(myCTK.lastError());
     myCTK.closeDatabase();
     myCTK.closeDatabase();
     return EXIT_FAILURE;
     return EXIT_FAILURE;
   }
   }

+ 1 - 1
Applications/ctkDICOMQuery/ctkDICOMQueryMain.cpp

@@ -76,7 +76,7 @@ int main(int argc, char** argv)
   ctkDICOMDatabase myCTK;
   ctkDICOMDatabase myCTK;
   logger.debug ( "Opening database " + QString ( argv[1] ) );
   logger.debug ( "Opening database " + QString ( argv[1] ) );
   myCTK.openDatabase ( argv[1] );
   myCTK.openDatabase ( argv[1] );
-  logger.debug ( "Last error: " + myCTK.GetLastError() );
+  logger.debug ( "Last error: " + myCTK.lastError() );
   if ( myCTK.database().isOpen() ) 
   if ( myCTK.database().isOpen() ) 
     {
     {
     logger.debug ( "Database is open" );
     logger.debug ( "Database is open" );

+ 4 - 1
Applications/ctkDICOMRetrieve/ctkDICOMRetrieveMain.cpp

@@ -97,11 +97,14 @@ int main(int argc, char** argv)
                 + "Host: " + Host + "\n"
                 + "Host: " + Host + "\n"
                 + "CalledPort: " + QString::number ( CalledPort ) + "\n" );
                 + "CalledPort: " + QString::number ( CalledPort ) + "\n" );
 
 
+  QSharedPointer<ctkDICOMDatabase> dicomDatabase =  QSharedPointer<ctkDICOMDatabase> (new ctkDICOMDatabase);
+  dicomDatabase->openDatabase( OutputDirectory.absoluteFilePath(QString("ctkDICOM.sql")) );
+  retrieve.setDICOMDatabase( dicomDatabase );
 
 
   logger.info ( "Starting to retrieve" );
   logger.info ( "Starting to retrieve" );
   try
   try
     {
     {
-    retrieve.retrieveStudy ( StudyUID, OutputDirectory );
+    retrieve.retrieveStudy ( StudyUID );
     }
     }
   catch (std::exception e)
   catch (std::exception e)
     {
     {

+ 7 - 7
Libs/DICOM/Core/Testing/Cpp/ctkDICOMModelTest1.cpp

@@ -37,20 +37,20 @@ int ctkDICOMModelTest1( int argc, char * argv [] )
     if (!myCTK.initializeDatabase(argv[2]))
     if (!myCTK.initializeDatabase(argv[2]))
     {
     {
       std::cerr << "Error when initializing the data base: " << argv[2]
       std::cerr << "Error when initializing the data base: " << argv[2]
-          << " error: " << myCTK.GetLastError().toStdString();
+          << " error: " << myCTK.lastError().toStdString();
     }
     }
     /*
     /*
   QSqlQuery toto("SELECT PatientsName as 'Name tt' FROM Patients ORDER BY \"Name tt\" ASC", myCTK.database());
   QSqlQuery toto("SELECT PatientsName as 'Name tt' FROM Patients ORDER BY \"Name tt\" ASC", myCTK.database());
-  qDebug() << "toto: " << myCTK.GetLastError() ;
-  qDebug()<< toto.seek(0) << myCTK.GetLastError();
-  qDebug() << toto.value(0).toString() << myCTK.GetLastError();
+  qDebug() << "toto: " << myCTK.lastError() ;
+  qDebug()<< toto.seek(0) << myCTK.lastError();
+  qDebug() << toto.value(0).toString() << myCTK.lastError();
 
 
   QSqlQuery titi("SELECT StudyID as UID, StudyDescription as Name, ModalitiesInStudy as Scan, StudyDate as Date, AccessionNumber as Number, ReferringPhysician as Institution, ReferringPhysician as Referrer, PerformingPysiciansName as Performer FROM Studies WHERE PatientsUID='14'", myCTK.database());
   QSqlQuery titi("SELECT StudyID as UID, StudyDescription as Name, ModalitiesInStudy as Scan, StudyDate as Date, AccessionNumber as Number, ReferringPhysician as Institution, ReferringPhysician as Referrer, PerformingPysiciansName as Performer FROM Studies WHERE PatientsUID='14'", myCTK.database());
-  qDebug() << "titi: " << titi.seek(0) << myCTK.GetLastError();
+  qDebug() << "titi: " << titi.seek(0) << myCTK.lastError();
   QSqlQuery tata("SELECT SeriesInstanceUID as UID, BodyPartExamined as Scan, SeriesDate as Date, AcquisitionNumber as Number FROM Series WHERE StudyInstanceUID='1.2.826.0.1.3680043.2.1125.1.73379483469717886505187028001198162'", myCTK.database());
   QSqlQuery tata("SELECT SeriesInstanceUID as UID, BodyPartExamined as Scan, SeriesDate as Date, AcquisitionNumber as Number FROM Series WHERE StudyInstanceUID='1.2.826.0.1.3680043.2.1125.1.73379483469717886505187028001198162'", myCTK.database());
-  qDebug() << "tata: " << tata.seek(0) << myCTK.GetLastError();
+  qDebug() << "tata: " << tata.seek(0) << myCTK.lastError();
   QSqlQuery tutu("SELECT Filename as UID, Filename as Name, SeriesInstanceUID as Date FROM Images WHERE SeriesInstanceUID='%1'", myCTK.database());
   QSqlQuery tutu("SELECT Filename as UID, Filename as Name, SeriesInstanceUID as Date FROM Images WHERE SeriesInstanceUID='%1'", myCTK.database());
-  qDebug() << "tutu: " << tutu.seek(0) << myCTK.GetLastError();
+  qDebug() << "tutu: " << tutu.seek(0) << myCTK.lastError();
   */
   */
 
 
     ctkModelTester tester;
     ctkModelTester tester;

+ 4 - 4
Libs/DICOM/Core/ctkDICOMDatabase.cpp

@@ -137,21 +137,21 @@ ctkDICOMDatabase::~ctkDICOMDatabase()
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-const QString ctkDICOMDatabase::GetLastError() const {
+const QString ctkDICOMDatabase::lastError() const {
   Q_D(const ctkDICOMDatabase);
   Q_D(const ctkDICOMDatabase);
   return d->LastError;
   return d->LastError;
 }
 }
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-const QString ctkDICOMDatabase::GetDatabaseFilename() const {
+const QString ctkDICOMDatabase::databaseFilename() const {
   Q_D(const ctkDICOMDatabase);
   Q_D(const ctkDICOMDatabase);
   return d->DatabaseFileName;
   return d->DatabaseFileName;
 }
 }
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-const QString ctkDICOMDatabase::GetDatabaseDirectory() const {
+const QString ctkDICOMDatabase::databaseDirectory() const {
   Q_D(const ctkDICOMDatabase);
   Q_D(const ctkDICOMDatabase);
-  QString databaseFile = GetDatabaseFilename();
+  QString databaseFile = databaseFilename();
   if (!QFileInfo(databaseFile).isAbsolute())
   if (!QFileInfo(databaseFile).isAbsolute())
   {
   {
     databaseFile.prepend(QDir::currentPath() + "/");
     databaseFile.prepend(QDir::currentPath() + "/");

+ 3 - 3
Libs/DICOM/Core/ctkDICOMDatabase.h

@@ -39,9 +39,9 @@ public:
   virtual ~ctkDICOMDatabase();
   virtual ~ctkDICOMDatabase();
 
 
   const QSqlDatabase& database() const;
   const QSqlDatabase& database() const;
-  const QString GetLastError() const;
-  const QString GetDatabaseFilename() const;
-  const QString GetDatabaseDirectory() const;
+  const QString lastError() const;
+  const QString databaseFilename() const;
+  const QString databaseDirectory() const;
 
 
   ///
   ///
   /// open the SQLite database in @param file. If the file does not
   /// open the SQLite database in @param file. If the file does not

+ 1 - 1
Libs/DICOM/Core/ctkDICOMIndexer.cpp

@@ -397,7 +397,7 @@ void ctkDICOMIndexer::addDirectory(ctkDICOMDatabase& database, const QString& di
 
 
     if (createThumbnails)
     if (createThumbnails)
     {
     {
-      QString thumbnailBaseDir =  database.GetDatabaseDirectory() + "/thumbs/";
+      QString thumbnailBaseDir =  database.databaseDirectory() + "/thumbs/";
       QString thumbnailFilename = thumbnailBaseDir + "/" + studySeriesDirectory + "/" + sopInstanceUID.c_str() + ".png";
       QString thumbnailFilename = thumbnailBaseDir + "/" + studySeriesDirectory + "/" + sopInstanceUID.c_str() + ".png";
       QFileInfo thumbnailInfo(thumbnailFilename);
       QFileInfo thumbnailInfo(thumbnailFilename);
       if ( ! ( thumbnailInfo.exists() && thumbnailInfo.lastModified() < QFileInfo(qfilename).lastModified() ) )
       if ( ! ( thumbnailInfo.exists() && thumbnailInfo.lastModified() < QFileInfo(qfilename).lastModified() ) )

+ 15 - 8
Libs/DICOM/Core/ctkDICOMRetrieve.cpp

@@ -75,10 +75,11 @@ public:
   DcmSCU SCU;
   DcmSCU SCU;
   DcmDataset* parameters;
   DcmDataset* parameters;
   QString MoveDestinationAETitle;
   QString MoveDestinationAETitle;
+  QSharedPointer<ctkDICOMDatabase> DICOMDatabase;
 
 
   // do the retrieve, handling both series and study retrieves
   // do the retrieve, handling both series and study retrieves
   enum RetrieveType { RetrieveSeries, RetrieveStudy };
   enum RetrieveType { RetrieveSeries, RetrieveStudy };
-  void retrieve ( QString UID, QDir directory, RetrieveType retriveType );
+  void retrieve ( QString UID, RetrieveType retriveType );
 };
 };
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
@@ -97,7 +98,7 @@ ctkDICOMRetrievePrivate::~ctkDICOMRetrievePrivate()
 }
 }
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-void ctkDICOMRetrievePrivate::retrieve ( QString UID, QDir directory, RetrieveType retriveType ) {
+void ctkDICOMRetrievePrivate::retrieve ( QString UID, RetrieveType retriveType ) {
 
 
   // Register the JPEG libraries in case we need them
   // Register the JPEG libraries in case we need them
   //   (registration only happens once, so it's okay to call repeatedly)
   //   (registration only happens once, so it's okay to call repeatedly)
@@ -170,8 +171,7 @@ void ctkDICOMRetrievePrivate::retrieve ( QString UID, QDir directory, RetrieveTy
     logger.debug ( "Find succeded" );
     logger.debug ( "Find succeded" );
 
 
     logger.debug ( "Making Output Directory" );
     logger.debug ( "Making Output Directory" );
-    // Try to create the directory
-    directory.mkpath ( directory.absolutePath() );
+    QDir directory = QDir( DICOMDatabase->databaseDirectory() );
 
 
     if ( responses->begin() == responses->end() )
     if ( responses->begin() == responses->end() )
       {
       {
@@ -323,18 +323,25 @@ const QString& ctkDICOMRetrieve::moveDestinationAETitle()
 }
 }
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-void ctkDICOMRetrieve::retrieveSeries ( QString seriesInstanceUID, QDir directory ) {
+void ctkDICOMRetrieve::setDICOMDatabase(QSharedPointer<ctkDICOMDatabase> dicomDatabase)
+{
+  Q_D(ctkDICOMRetrieve);
+  d->DICOMDatabase = dicomDatabase;
+}
+
+//------------------------------------------------------------------------------
+void ctkDICOMRetrieve::retrieveSeries ( QString seriesInstanceUID ) {
   Q_D(ctkDICOMRetrieve);
   Q_D(ctkDICOMRetrieve);
   logger.info ( "Starting retrieveSeries" );
   logger.info ( "Starting retrieveSeries" );
-  d->retrieve ( seriesInstanceUID, directory, ctkDICOMRetrievePrivate::RetrieveSeries );
+  d->retrieve ( seriesInstanceUID, ctkDICOMRetrievePrivate::RetrieveSeries );
   return;
   return;
 }
 }
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-void ctkDICOMRetrieve::retrieveStudy ( QString studyInstanceUID, QDir directory ) {
+void ctkDICOMRetrieve::retrieveStudy ( QString studyInstanceUID ) {
   Q_D(ctkDICOMRetrieve);
   Q_D(ctkDICOMRetrieve);
   logger.info ( "Starting retrieveStudy" );
   logger.info ( "Starting retrieveStudy" );
-  d->retrieve ( studyInstanceUID, directory, ctkDICOMRetrievePrivate::RetrieveStudy );
+  d->retrieve ( studyInstanceUID, ctkDICOMRetrievePrivate::RetrieveStudy );
   return;
   return;
 }
 }
 
 

+ 9 - 3
Libs/DICOM/Core/ctkDICOMRetrieve.h

@@ -25,9 +25,13 @@
 // Qt includes 
 // Qt includes 
 #include <QObject>
 #include <QObject>
 #include <QDir>
 #include <QDir>
+#include <QSharedPointer>
 
 
 #include "ctkDICOMCoreExport.h"
 #include "ctkDICOMCoreExport.h"
 
 
+// CTK Core includes
+#include "ctkDICOMDatabase.h"
+
 class ctkDICOMRetrievePrivate;
 class ctkDICOMRetrievePrivate;
 class CTK_DICOM_CORE_EXPORT ctkDICOMRetrieve : public QObject
 class CTK_DICOM_CORE_EXPORT ctkDICOMRetrieve : public QObject
 {
 {
@@ -49,10 +53,12 @@ public:
   int calledPort();
   int calledPort();
   void setMoveDestinationAETitle ( QString moveDestinationAETitle );
   void setMoveDestinationAETitle ( QString moveDestinationAETitle );
   const QString& moveDestinationAETitle();
   const QString& moveDestinationAETitle();
-
+  
+  /// method for database
+  void setDICOMDatabase(QSharedPointer<ctkDICOMDatabase> dicomDatabase);
   // Could be a slot...
   // Could be a slot...
-  void retrieveSeries ( QString seriesInstanceUID, QDir directory );
-  void retrieveStudy ( QString studyInstanceUID, QDir directory );
+  void retrieveSeries ( QString seriesInstanceUID );
+  void retrieveStudy ( QString studyInstanceUID );
 
 
 protected:
 protected:
   QScopedPointer<ctkDICOMRetrievePrivate> d_ptr;
   QScopedPointer<ctkDICOMRetrievePrivate> d_ptr;

+ 1 - 1
Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMModelTest2.cpp

@@ -40,7 +40,7 @@ int ctkDICOMModelTest2( int argc, char * argv [] )
     if (!myCTK.initializeDatabase(argv[2]))
     if (!myCTK.initializeDatabase(argv[2]))
     {
     {
       std::cerr << "Error when initializing the data base: " << argv[2]
       std::cerr << "Error when initializing the data base: " << argv[2]
-          << " error: " << myCTK.GetLastError().toStdString();
+          << " error: " << myCTK.lastError().toStdString();
     }
     }
  
  
     ctkDICOMModel model;
     ctkDICOMModel model;

+ 1 - 1
Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp

@@ -101,7 +101,7 @@ void ctkDICOMAppWidget::setDatabaseDirectory(const QString& directory)
   try { d->DICOMDatabase->openDatabase( databaseFileName ); }
   try { d->DICOMDatabase->openDatabase( databaseFileName ); }
   catch (std::exception e)
   catch (std::exception e)
   {
   {
-    std::cerr << "Database error: " << qPrintable(d->DICOMDatabase->GetLastError()) << "\n";
+    std::cerr << "Database error: " << qPrintable(d->DICOMDatabase->lastError()) << "\n";
     d->DICOMDatabase->closeDatabase();
     d->DICOMDatabase->closeDatabase();
     return;
     return;
   }
   }

+ 3 - 2
Libs/DICOM/Widgets/ctkDICOMQueryRetrieveWidget.cpp

@@ -79,7 +79,7 @@ void ctkDICOMQueryRetrieveWidget::processQuery()
   try { d->QueryResultDatabase.openDatabase( ":memory:" ); }
   try { d->QueryResultDatabase.openDatabase( ":memory:" ); }
   catch (std::exception e)
   catch (std::exception e)
   {
   {
-    logger.error ( "Database error: " + d->QueryResultDatabase.GetLastError() );
+    logger.error ( "Database error: " + d->QueryResultDatabase.lastError() );
     d->QueryResultDatabase.closeDatabase();
     d->QueryResultDatabase.closeDatabase();
     return;
     return;
   }
   }
@@ -148,6 +148,7 @@ void ctkDICOMQueryRetrieveWidget::processRetrieve()
     logger.debug("need to retrieve " + studyUID + " from " + d->QueriesByStudyUID[studyUID]->host());
     logger.debug("need to retrieve " + studyUID + " from " + d->QueriesByStudyUID[studyUID]->host());
     ctkDICOMQuery *query = d->QueriesByStudyUID[studyUID];
     ctkDICOMQuery *query = d->QueriesByStudyUID[studyUID];
     ctkDICOMRetrieve *retrieve = new ctkDICOMRetrieve;
     ctkDICOMRetrieve *retrieve = new ctkDICOMRetrieve;
+    retrieve->setDICOMDatabase( d->RetrieveDatabase );
     d->RetrievalsByStudyUID[studyUID] = retrieve;
     d->RetrievalsByStudyUID[studyUID] = retrieve;
     retrieve->setCallingAETitle( query->callingAETitle() );
     retrieve->setCallingAETitle( query->callingAETitle() );
     retrieve->setCalledAETitle( query->calledAETitle() );
     retrieve->setCalledAETitle( query->calledAETitle() );
@@ -161,7 +162,7 @@ void ctkDICOMQueryRetrieveWidget::processRetrieve()
     logger.info ( "Starting to retrieve" );
     logger.info ( "Starting to retrieve" );
     try
     try
       {
       {
-      retrieve->retrieveStudy ( studyUID, QDir("/tmp/ctk") );
+      retrieve->retrieveStudy ( studyUID );
       }
       }
     catch (std::exception e)
     catch (std::exception e)
       {
       {