Prechádzať zdrojové kódy

xnat: working on the download feature

Nicolas Toussaint 11 rokov pred
rodič
commit
aa8d620083

+ 36 - 23
Libs/XNAT/Core/ctkXnatConnection.cpp

@@ -65,6 +65,7 @@ ctkXnatConnection::ctkXnatConnection()
 {
   Q_D(ctkXnatConnection);
   d->xnat = new qXnatAPI();
+  
 //  d->xnat->setSuppressSslErrors(true);
   d->rawHeaders["User-Agent"] = "Qt";
   d->xnat->setDefaultRawHeaders(d->rawHeaders);
@@ -725,29 +726,41 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScanResource>& scanRes
 //  d->xnat->sync(queryId);
 //}
 
-//void ctkXnatConnection::download(ctkXnatScanResourceFile* scanResourceFile, const QString& fileName)
-//{
-////  qDebug() << "ctkXnatConnection::download(ctkXnatScanResourceFile* scanResourceFile)";
-//  const QString& scanResourceFileName = scanResourceFile->getName();
-//  ctkXnatObject* scanResource = scanResourceFile->getParent();
-//  const QString& scanResourceName = scanResource->getName();
-//  ctkXnatObject* scan = scanResource->getParent();
-//  const QString& scanName = scan->getName();
-//  ctkXnatObject* experiment = scan->getParent()->getParent();
-//  const QString& experimentName = experiment->getName();
-//  ctkXnatObject* subject = experiment->getParent();
-//  const QString& subjectName = subject->getName();
-//  ctkXnatObject* project = subject->getParent();
-//  const QString& projectName = project->getName();
-
-//  Q_D(ctkXnatConnection);
-
-//  QString query = QString("/REST/projects/%1/subjects/%2/experiments/%3/scans/%4/resources/%5/files/%6").arg(projectName, subjectName, experimentName, scanName, scanResourceName, scanResourceFileName);
-//  qRestAPI::Parameters parameters;
-//  parameters["format"] = "zip";
-//  QUuid queryId = d->xnat->download(fileName, query, parameters);
-//  d->xnat->sync(queryId);
-//}
+void ctkXnatConnection::download(ctkXnatScanResourceFile* scanResourceFile, const QString& fileName)
+{
+ const QString& scanResourceFileName = scanResourceFile->getId();
+ ctkXnatObject::Pointer scanResource = scanResourceFile->getParent();
+ const QString& scanResourceName = scanResource->getProperty ("label");
+ ctkXnatObject::Pointer scan = scanResource->getParent();
+ const QString& scanName = scan->getId();
+ ctkXnatObject::Pointer experiment = scan->getParent()->getParent();
+ const QString& experimentName = experiment->getId();
+ ctkXnatObject::Pointer subject = experiment->getParent();
+ const QString& subjectName = subject->getId();
+ ctkXnatObject::Pointer project = subject->getParent();
+ const QString& projectName = project->getId();
+
+ Q_D(ctkXnatConnection);
+
+ QString query = QString("/REST/projects/%1/subjects/%2/experiments/%3/scans/%4/resources/%5/files/%6").arg(projectName, subjectName, experimentName, scanName, scanResourceName, scanResourceFileName);
+
+ qRestAPI::Parameters parameters;
+ parameters["format"] = "zip";
+
+ qDebug() << "launching qRestAPI download with ";
+ qDebug() << "query : "<< query;
+ qDebug() << "object properties : ";
+
+ QList<QString> propertieskeys = scanResourceFile->getProperties();
+
+ foreach (QString key, propertieskeys)
+ {
+   qDebug() << key << " : " << scanResourceFile->getProperty (key);
+ }
+ 
+ QUuid queryId = d->xnat->download(fileName, query, parameters);
+ d->xnat->sync(queryId);
+}
 
 void ctkXnatConnection::processResult(QUuid /*queryId*/, QList<QVariantMap> /*parameters*/)
 {

+ 14 - 13
Libs/XNAT/Core/ctkXnatConnection.h

@@ -89,24 +89,25 @@ public:
 
   void remove(ctkXnatProject* project);
 
-  void downloadScanFiles(ctkXnatExperiment* experiment, const QString& zipFileName);
-  void downloadReconstructionFiles(ctkXnatExperiment* experiment, const QString& zipFileName);
-  void addReconstruction(ctkXnatExperiment* experiment, const QString& categoryEntry);
+  /* void downloadScanFiles(ctkXnatExperiment* experiment, const QString& zipFileName); */
+  /* void downloadReconstructionFiles(ctkXnatExperiment* experiment, const QString& zipFileName); */
+  /* void addReconstruction(ctkXnatExperiment* experiment, const QString& categoryEntry); */
+
+  /* void download(ctkXnatScan* scan, const QString& zipFileName); */
+  /* void download(ctkXnatScanResource* scanResource, const QString& zipFileName); */
 
-  void download(ctkXnatScan* scan, const QString& zipFileName);
-  void download(ctkXnatScanResource* scanResource, const QString& zipFileName);
   void download(ctkXnatScanResourceFile* scanResourceFile, const QString& fileName);
 
-  void downloadReconstruction(ctkXnatReconstruction* reconstruction, const QString& zipFilename);
-  void addReconstructionResource(ctkXnatReconstruction* reconstruction, const QString& resource);
-  void removeReconstruction(ctkXnatReconstruction* reconstruction);
+  /* void downloadReconstruction(ctkXnatReconstruction* reconstruction, const QString& zipFilename); */
+  /* void addReconstructionResource(ctkXnatReconstruction* reconstruction, const QString& resource); */
+  /* void removeReconstruction(ctkXnatReconstruction* reconstruction); */
 
-  void downloadReconstructionResourceFiles(ctkXnatReconstructionResource* reconstructionResource, const QString& zipFilename);
-  void uploadReconstructionResourceFiles(ctkXnatReconstructionResource* reconstructionResource, const QString& zipFilename);
-  void removeReconstructionResource(ctkXnatReconstructionResource* reconstructionResource);
+  /* void downloadReconstructionResourceFiles(ctkXnatReconstructionResource* reconstructionResource, const QString& zipFilename); */
+  /* void uploadReconstructionResourceFiles(ctkXnatReconstructionResource* reconstructionResource, const QString& zipFilename); */
+  /* void removeReconstructionResource(ctkXnatReconstructionResource* reconstructionResource); */
 
-  void download(ctkXnatReconstructionResourceFile* reconstructionResourceFile, const QString& zipFileName);
-  void remove(ctkXnatReconstructionResourceFile* reconstructionResourceFile);
+  /* void download(ctkXnatReconstructionResourceFile* reconstructionResourceFile, const QString& zipFileName); */
+  /* void remove(ctkXnatReconstructionResourceFile* reconstructionResourceFile); */
 
 public slots:
   void processResult(QUuid queryId, QList<QVariantMap> parameters);

+ 2 - 0
Libs/XNAT/Core/ctkXnatScanResourceFile.cpp

@@ -77,6 +77,8 @@ void ctkXnatScanResourceFile::download(const QString& filename)
   
   qDebug() << "file uri is" << object->uri();
   qDebug() << "downloading towards: " << filename;
+
+  object->getConnection()->download (this, filename);
 }
 
 void ctkXnatScanResourceFile::upload(const QString& filename)

+ 3 - 0
Libs/XNAT/Widgets/ctkXnatTreeModel.cpp

@@ -255,6 +255,9 @@ void ctkXnatTreeModel::downloadFile(const QModelIndex& index, const QString& zip
   ctkXnatObject::Pointer object = item->xnatObject();
 
   // ctkXnatObject::Pointer child = object->getChildren()[index.row()];
+
+  qDebug() << "object is null ? " << object.isNull();
+  qDebug() << "object is file ? " << object->isFile();
   
   object->download (zipFilename);