Browse Source

Scan resource download

Miklos Espak 11 years ago
parent
commit
8e13c788ea

+ 37 - 40
Libs/XNAT/Core/ctkXnatConnection.cpp

@@ -192,9 +192,11 @@ void ctkXnatConnection::fetch(const ctkXnatProject::Pointer& project)
 
   foreach (ctkXnatSubject* subject, subjects)
   {
-    QString label = subject->getProperty ("label");
+    QString label = subject->getProperty("label");
     if (label.size())
-      subject->setProperty ("ID", label);
+    {
+      subject->setProperty("ID", label);
+    }
     ctkXnatObject::Pointer ptr(subject);
     ptr->d_func()->selfPtr = ptr;
     project->addChild(ptr);
@@ -316,9 +318,15 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScan>& scan)
   
   foreach (ctkXnatScanResource* resource, resources)
   {
-    QString label = resource->getProperty ("label");
+    QString label = resource->getProperty("label");
     if (label.size())
-      resource->setProperty ("ID", label);
+    {
+      resource->setProperty("ID", label);
+    }
+    
+    resource->setUri(query + "/" + label);
+    qDebug() << "ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScan>& scan): resource uri:" << resource->uri();
+
     ctkXnatObject::Pointer ptr(resource);
     ptr->d_func()->selfPtr = ptr;
     scan->addChild(ptr);
@@ -347,13 +355,17 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScanResource>& scanRes
 
   foreach (ctkXnatScanResourceFile* file, files)
   {
-    QString uri = file->getProperty ("URI");
+    QString uri = file->getProperty("URI");
     if (uri.size())
-      file->setUri (uri);
+    {
+      file->setUri(uri);
+    }
 
-    QString label = file->getProperty ("Name");
+    QString label = file->getProperty("Name");
     if (label.size())
-      file->setProperty ("ID", label);
+    {
+      file->setProperty("ID", label);
+    }
 
     ctkXnatObject::Pointer ptr(file);
     ptr->d_func()->selfPtr = ptr;
@@ -704,43 +716,28 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatScanResource>& scanRes
 //  d->xnat->sync(queryId);
 //}
 
-//void ctkXnatConnection::download(ctkXnatScanResource* scanResource, const QString& fileName)
-//{
-////  qDebug() << "ctkXnatConnection::download(ctkXnatScanResource* scanResource, const QString& zipFilename)";
-//  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);
+void ctkXnatConnection::download(ctkXnatScanResource* scanResource, const QString& fileName)
+{
+  Q_D(ctkXnatConnection);
 
-//  QString query = QString("/REST/projects/%1/subjects/%2/experiments/%3/scans/%4/resources/%5/files").arg(projectName, subjectName, experimentName, scanName, scanResourceName);
-//  qRestAPI::Parameters parameters;
-//  parameters["format"] = "zip";
-//  QUuid queryId = d->xnat->download(fileName, query, parameters);
-//  d->xnat->sync(queryId);
-//}
+  QString query = scanResource->uri() + "/files";
+  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)
 {
- Q_D(ctkXnatConnection);
- QString query = scanResourceFile->uri();
- qRestAPI::Parameters parameters;
- /**
-    nt: When the object is a file we don't need to use the "?format=zip" parameter
-    in the URI. So we leave the parameter map empty
- */
- // parameters["format"] = "zip";
-
- QUuid queryId = d->xnat->download(fileName, query, parameters);
- d->xnat->sync(queryId);
+  Q_D(ctkXnatConnection);
+  QString query = scanResourceFile->uri();
+
+  QUuid queryId = d->xnat->download(fileName, query);
+  d->xnat->sync(queryId);
 }
 
-void ctkXnatConnection::processResult(QUuid /*queryId*/, QList<QVariantMap> /*parameters*/)
+void ctkXnatConnection::processResult(QUuid queryId, QList<QVariantMap> parameters)
 {
+  Q_UNUSED(queryId)
+  Q_UNUSED(parameters)
 }

+ 1 - 1
Libs/XNAT/Core/ctkXnatConnection.h

@@ -94,8 +94,8 @@ public:
   /* void addReconstruction(ctkXnatExperiment* experiment, const QString& categoryEntry); */
 
   /* void download(ctkXnatScan* scan, const QString& zipFileName); */
-  /* void download(ctkXnatScanResource* scanResource, const QString& zipFileName); */
 
+  void download(ctkXnatScanResource* scanResource, const QString& zipFileName);
   void download(ctkXnatScanResourceFile* scanResourceFile, const QString& fileName);
 
   /* void downloadReconstruction(ctkXnatReconstruction* reconstruction, const QString& zipFilename); */

+ 5 - 1
Libs/XNAT/Core/ctkXnatScanResource.cpp

@@ -25,7 +25,6 @@
 #include "ctkXnatScanResourceFile.h"
 #include "ctkXnatObjectPrivate.h"
 
-
 class ctkXnatScanResourcePrivate : public ctkXnatObjectPrivate
 {
 public:
@@ -84,6 +83,11 @@ void ctkXnatScanResource::fetchImpl()
   this->getConnection()->fetch(self.staticCast<ctkXnatScanResource>());
 }
 
+void ctkXnatScanResource::download(const QString& filename)
+{
+  this->getConnection()->download(this, filename);
+}
+
 void ctkXnatScanResource::remove()
 {
   // ctkXnatObject::remove();

+ 2 - 0
Libs/XNAT/Core/ctkXnatScanResource.h

@@ -48,6 +48,8 @@ public:
   
   bool isFile() const;
 
+  void download(const QString& filename);
+
   /* bool receivesFiles() const; */
   /* bool holdsFiles() const; */
   /* bool isDeletable() const; */