瀏覽代碼

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 14 年之前
父節點
當前提交
8e7acf5d2e

+ 1 - 0
Applications/ctkDICOM/ctkDICOMMain.cpp

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

+ 1 - 1
Applications/ctkDICOMIndexer/ctkDICOMIndexerMain.cpp

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

+ 1 - 1
Applications/ctkDICOMQuery/ctkDICOMQueryMain.cpp

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

+ 4 - 1
Applications/ctkDICOMRetrieve/ctkDICOMRetrieveMain.cpp

@@ -97,11 +97,14 @@ int main(int argc, char** argv)
                 + "Host: " + Host + "\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" );
   try
     {
-    retrieve.retrieveStudy ( StudyUID, OutputDirectory );
+    retrieve.retrieveStudy ( StudyUID );
     }
   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]))
     {
       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());
-  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());
-  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());
-  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());
-  qDebug() << "tutu: " << tutu.seek(0) << myCTK.GetLastError();
+  qDebug() << "tutu: " << tutu.seek(0) << myCTK.lastError();
   */
 
     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);
   return d->LastError;
 }
 
 //------------------------------------------------------------------------------
-const QString ctkDICOMDatabase::GetDatabaseFilename() const {
+const QString ctkDICOMDatabase::databaseFilename() const {
   Q_D(const ctkDICOMDatabase);
   return d->DatabaseFileName;
 }
 
 //------------------------------------------------------------------------------
-const QString ctkDICOMDatabase::GetDatabaseDirectory() const {
+const QString ctkDICOMDatabase::databaseDirectory() const {
   Q_D(const ctkDICOMDatabase);
-  QString databaseFile = GetDatabaseFilename();
+  QString databaseFile = databaseFilename();
   if (!QFileInfo(databaseFile).isAbsolute())
   {
     databaseFile.prepend(QDir::currentPath() + "/");

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

@@ -39,9 +39,9 @@ public:
   virtual ~ctkDICOMDatabase();
 
   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

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

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

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

@@ -75,10 +75,11 @@ public:
   DcmSCU SCU;
   DcmDataset* parameters;
   QString MoveDestinationAETitle;
+  QSharedPointer<ctkDICOMDatabase> DICOMDatabase;
 
   // do the retrieve, handling both series and study retrieves
   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
   //   (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 ( "Making Output Directory" );
-    // Try to create the directory
-    directory.mkpath ( directory.absolutePath() );
+    QDir directory = QDir( DICOMDatabase->databaseDirectory() );
 
     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);
   logger.info ( "Starting retrieveSeries" );
-  d->retrieve ( seriesInstanceUID, directory, ctkDICOMRetrievePrivate::RetrieveSeries );
+  d->retrieve ( seriesInstanceUID, ctkDICOMRetrievePrivate::RetrieveSeries );
   return;
 }
 
 //------------------------------------------------------------------------------
-void ctkDICOMRetrieve::retrieveStudy ( QString studyInstanceUID, QDir directory ) {
+void ctkDICOMRetrieve::retrieveStudy ( QString studyInstanceUID ) {
   Q_D(ctkDICOMRetrieve);
   logger.info ( "Starting retrieveStudy" );
-  d->retrieve ( studyInstanceUID, directory, ctkDICOMRetrievePrivate::RetrieveStudy );
+  d->retrieve ( studyInstanceUID, ctkDICOMRetrievePrivate::RetrieveStudy );
   return;
 }
 

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

@@ -25,9 +25,13 @@
 // Qt includes 
 #include <QObject>
 #include <QDir>
+#include <QSharedPointer>
 
 #include "ctkDICOMCoreExport.h"
 
+// CTK Core includes
+#include "ctkDICOMDatabase.h"
+
 class ctkDICOMRetrievePrivate;
 class CTK_DICOM_CORE_EXPORT ctkDICOMRetrieve : public QObject
 {
@@ -49,10 +53,12 @@ public:
   int calledPort();
   void setMoveDestinationAETitle ( QString moveDestinationAETitle );
   const QString& moveDestinationAETitle();
-
+  
+  /// method for database
+  void setDICOMDatabase(QSharedPointer<ctkDICOMDatabase> dicomDatabase);
   // 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:
   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]))
     {
       std::cerr << "Error when initializing the data base: " << argv[2]
-          << " error: " << myCTK.GetLastError().toStdString();
+          << " error: " << myCTK.lastError().toStdString();
     }
  
     ctkDICOMModel model;

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

@@ -101,7 +101,7 @@ void ctkDICOMAppWidget::setDatabaseDirectory(const QString& directory)
   try { d->DICOMDatabase->openDatabase( databaseFileName ); }
   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();
     return;
   }

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

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