Quellcode durchsuchen

The Assessor support is working properly, including the download function

Nicolas Toussaint vor 11 Jahren
Ursprung
Commit
69f30fec5c

+ 11 - 15
Libs/XNAT/Core/ctkXnatAssessor.cpp

@@ -28,7 +28,6 @@
 
 #include "ctkXnatAssessorResource.h"
 #include "ctkXnatScanResource.h"
-#include <qDebug>
 
 //----------------------------------------------------------------------------
 class ctkXnatAssessorPrivate : public ctkXnatObjectPrivate
@@ -53,7 +52,6 @@ public:
 ctkXnatAssessor::ctkXnatAssessor(ctkXnatObject* parent, const QString& schemaType)
 : ctkXnatObject(*new ctkXnatAssessorPrivate(), parent, schemaType)
 {
-  qDebug() << " constructing  the assessor";
 }
 
 //----------------------------------------------------------------------------
@@ -85,31 +83,29 @@ void ctkXnatAssessor::fetchImpl()
 
   foreach (ctkXnatObject* assessorResource, assessorResources)
   {
+    QString resource_id = assessorResource->property("xnat_abstractresource_id");
     QString label = assessorResource->property("label");
-    if (!label.isEmpty())
-    {
-      assessorResource->setProperty("ID", label);
-    }
+    
+    if (!resource_id.isEmpty())
+      assessorResource->setProperty("ID", resource_id);
+    
     this->add(assessorResource);
   }
-
+  
   assessorResourcesUri = this->resourceUri() + "/out/resources";
   queryId = session->httpGet(assessorResourcesUri);
 
-  qDebug() << "retrieving assessor resources";
   assessorResources = session->httpResults(queryId,
 					   ctkXnatDefaultSchemaTypes::XSI_ASSESSOR_RESOURCE);
 
   foreach (ctkXnatObject* assessorResource, assessorResources)
   {
+    QString resource_id = assessorResource->property("xnat_abstractresource_id");
     QString label = assessorResource->property("label");
-    if (!label.isEmpty())
-    {
-      assessorResource->setProperty("ID", label);
-      qDebug() << " adding object, is it AssessorResource : " << (typeid(ctkXnatScanResource) == typeid(assessorResource));
-      qDebug() << " adding assessor resource object with properties \n: " << assessorResource->properties();
-      
-    }
+    
+    if (!resource_id.isEmpty())
+      assessorResource->setProperty("ID", resource_id);
+    
     this->add(assessorResource);
   }
   

+ 3 - 7
Libs/XNAT/Core/ctkXnatAssessorFolder.cpp

@@ -27,8 +27,6 @@
 #include "ctkXnatAssessor.h"
 #include "ctkXnatDefaultSchemaTypes.h"
 
-#include <qDebug>
-
 //----------------------------------------------------------------------------
 class ctkXnatAssessorFolderPrivate : public ctkXnatObjectPrivate
 {
@@ -45,13 +43,13 @@ public:
 
 };
 
-
 //----------------------------------------------------------------------------
 ctkXnatAssessorFolder::ctkXnatAssessorFolder(ctkXnatObject* parent)
   : ctkXnatObject(*new ctkXnatAssessorFolderPrivate(), parent, QString::null)
 {
-  qDebug() << " constructing  the assessor folder";  
+  
   this->setProperty("ID", "assessors");
+  this->setProperty("label", "Assessments");
 }
 
 //----------------------------------------------------------------------------
@@ -78,14 +76,12 @@ void ctkXnatAssessorFolder::fetchImpl()
   ctkXnatSession* const session = this->session();
   QUuid queryId = session->httpGet(assessorsUri);
 
-  
-  qDebug() << "retrieving assessors";
   QList<ctkXnatObject*> assessors = session->httpResults(queryId,
                                                      ctkXnatDefaultSchemaTypes::XSI_ASSESSOR);
 
   foreach (ctkXnatObject* assessor, assessors)
   {
-    qDebug() << " adding object, is it Assessor : " << (typeid(ctkXnatAssessor) == typeid(assessor));
+    
     this->add(assessor);
   }
 }

+ 6 - 12
Libs/XNAT/Core/ctkXnatAssessorResource.cpp

@@ -25,8 +25,6 @@
 #include "ctkXnatObjectPrivate.h"
 #include "ctkXnatDefaultSchemaTypes.h"
 
-#include <qDebug>
-
 //----------------------------------------------------------------------------
 class ctkXnatAssessorResourcePrivate : public ctkXnatObjectPrivate
 {
@@ -47,8 +45,7 @@ public:
 //----------------------------------------------------------------------------
 ctkXnatAssessorResource::ctkXnatAssessorResource(ctkXnatObject* parent, const QString& schemaType)
 : ctkXnatObject(*new ctkXnatAssessorResourcePrivate(), parent, schemaType)
-{
-  qDebug() << " constructing  the assessor resource";
+{  
 }
 
 //----------------------------------------------------------------------------
@@ -58,9 +55,8 @@ ctkXnatAssessorResource::~ctkXnatAssessorResource()
 
 //----------------------------------------------------------------------------
 QString ctkXnatAssessorResource::resourceUri() const
-{
-  
-  return QString("%1/resources/%2").arg(parent()->resourceUri(), this->property("xnat_abstractresource_id"));
+{  
+  return QString("%1/out/resources/%2").arg(parent()->resourceUri(), this->id());
 }
 
 //----------------------------------------------------------------------------
@@ -72,6 +68,7 @@ void ctkXnatAssessorResource::reset()
 //----------------------------------------------------------------------------
 void ctkXnatAssessorResource::fetchImpl()
 {
+    
   QString assessorResourceFilesUri = this->resourceUri() + "/files";
   ctkXnatSession* const session = this->session();
   QUuid queryId = session->httpGet(assessorResourceFilesUri);
@@ -80,15 +77,12 @@ void ctkXnatAssessorResource::fetchImpl()
   QList<ctkXnatObject*> files = session->httpResults(queryId,
                                                      ctkXnatDefaultSchemaTypes::XSI_FILE);
 
-  qDebug() << " trying to get things from : " << this->resourceUri() << "/files";
   foreach (ctkXnatObject* file, files)
   {
-    QString label = file->property("Name");
-    qDebug() << " got a assessment file called : " << label << ".";
-    qDebug() << " with properties : " << file->properties() << ".";
-    
+    QString label = file->property("Name");    
     if (!label.isEmpty())
     {
+      file->setProperty("label", label);
       file->setProperty("ID", label);
     }
     this->add(file);

+ 2 - 2
Libs/XNAT/Core/ctkXnatDefaultSchemaTypes.cpp

@@ -26,8 +26,8 @@ QString ctkXnatDefaultSchemaTypes::XSI_SUBJECT = "xnat:subjectData";
 QString ctkXnatDefaultSchemaTypes::XSI_EXPERIMENT = "xnat:experimentData";
 QString ctkXnatDefaultSchemaTypes::XSI_SCAN = "xnat:imageScanData";
 QString ctkXnatDefaultSchemaTypes::XSI_SCAN_RESOURCE = "xnat:scanResource";
-QString ctkXnatDefaultSchemaTypes::XSI_ASSESSOR = "xnat:mrAssessorData";
-QString ctkXnatDefaultSchemaTypes::XSI_ASSESSOR_RESOURCE = "xnat:abstractResource";
+QString ctkXnatDefaultSchemaTypes::XSI_ASSESSOR = "xnat:imageAssessorData";
+QString ctkXnatDefaultSchemaTypes::XSI_ASSESSOR_RESOURCE = "xnat:assessorResource";
 QString ctkXnatDefaultSchemaTypes::XSI_FILE = "xnat:abstractResource";
 QString ctkXnatDefaultSchemaTypes::XSI_RECONSTRUCTION = "xnat:reconstructedImageData";
 QString ctkXnatDefaultSchemaTypes::XSI_RECONSTRUCTION_RESOURCE = "xnat:reconstructionResource";

+ 2 - 2
Libs/XNAT/Core/ctkXnatDefaultSchemaTypes.h

@@ -36,8 +36,8 @@ struct CTK_XNAT_CORE_EXPORT ctkXnatDefaultSchemaTypes
   static QString XSI_EXPERIMENT; // = "xnat:experimentData"
   static QString XSI_SCAN; // = "xnat:imageScanData"
   static QString XSI_SCAN_RESOURCE; // = "xnat:scanResource"
-  static QString XSI_ASSESSOR; // = "xnat:mrAssessorData"
-  static QString XSI_ASSESSOR_RESOURCE; // = "xnat:abstractResource"
+  static QString XSI_ASSESSOR; // = "xnat:imageAssessorData"
+  static QString XSI_ASSESSOR_RESOURCE; // = "xnat:assessorResource"
   static QString XSI_FILE; // = "xnat:abstractResource"
   static QString XSI_RECONSTRUCTION; // = "xnat:reconstructedImageData"
   static QString XSI_RECONSTRUCTION_RESOURCE; // = "xnat:reconstructionResource"

+ 4 - 7
Libs/XNAT/Core/ctkXnatExperiment.cpp

@@ -26,13 +26,12 @@
 #include "ctkXnatSubject.h"
 #include "ctkXnatScan.h"
 #include "ctkXnatReconstruction.h"
+#include "ctkXnatAssessor.h"
 #include "ctkXnatScanFolder.h"
-#include "ctkXnatAssessorFolder.h"
 #include "ctkXnatReconstructionFolder.h"
+#include "ctkXnatAssessorFolder.h"
 #include "ctkXnatDefaultSchemaTypes.h"
 
-#include <qDebug>
-
 //----------------------------------------------------------------------------
 class ctkXnatExperimentPrivate : public ctkXnatObjectPrivate
 {
@@ -56,8 +55,6 @@ public:
 ctkXnatExperiment::ctkXnatExperiment(ctkXnatObject* parent, const QString& schemaType)
 : ctkXnatObject(*new ctkXnatExperimentPrivate(), parent, schemaType)
 {
-  qDebug() << " constructing  the experiment";  
-  
 }
 
 //----------------------------------------------------------------------------
@@ -109,11 +106,11 @@ void ctkXnatExperiment::fetchImpl()
   QUuid assessorsQueryId = session->httpGet(assessorsUri);
 
   QList<ctkXnatObject*> assessors = session->httpResults(assessorsQueryId,
-                                                               ctkXnatDefaultSchemaTypes::XSI_ASSESSOR);
+							 ctkXnatDefaultSchemaTypes::XSI_ASSESSOR);
 
   if (!assessors.isEmpty())
   {
-    ctkXnatAssessorFolder* assessorFolder = new ctkXnatAssessorFolder();
+    ctkXnatAssessorFolder* assessorFolder = new ctkXnatAssessorFolder(this);
     this->add(assessorFolder);
   }
 }

+ 0 - 3
Libs/XNAT/Core/ctkXnatScan.cpp

@@ -28,7 +28,6 @@
 #include "ctkXnatObjectPrivate.h"
 #include "ctkXnatDefaultSchemaTypes.h"
 
-
 //----------------------------------------------------------------------------
 class ctkXnatScanPrivate : public ctkXnatObjectPrivate
 {
@@ -85,9 +84,7 @@ void ctkXnatScan::fetchImpl()
   {
     QString label = scanResource->property("label");
     if (!label.isEmpty())
-    {
       scanResource->setProperty("ID", label);
-    }
     this->add(scanResource);
   }
 }

+ 6 - 0
Libs/XNAT/Core/ctkXnatScanFolder.cpp

@@ -52,6 +52,7 @@ ctkXnatScanFolder::ctkXnatScanFolder(ctkXnatObject* parent)
   : ctkXnatObject(*new ctkXnatScanFolderPrivate(), parent, QString::null)
 {
   this->setProperty("ID", "scans");
+  this->setProperty("label", "Scans");
 }
 
 //----------------------------------------------------------------------------
@@ -83,6 +84,11 @@ void ctkXnatScanFolder::fetchImpl()
 
   foreach (ctkXnatObject* scan, scans)
   {
+    QString series_description = scan->property ("series_description");
+    QString label = scan->property ("label");
+    label = label.isEmpty() ? series_description : label;
+    scan->setProperty ("label", label);
+    
     this->add(scan);
   }
 }

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

@@ -60,7 +60,7 @@ ctkXnatScanResource::~ctkXnatScanResource()
 //----------------------------------------------------------------------------
 QString ctkXnatScanResource::resourceUri() const
 {
-  return QString("%1/resources/%2").arg(parent()->resourceUri(), this->property("label"));
+  return QString("%1/resources/%2").arg(parent()->resourceUri(), this->id ());
 }
 
 //----------------------------------------------------------------------------
@@ -84,8 +84,10 @@ void ctkXnatScanResource::fetchImpl()
     QString label = file->property("Name");
     if (!label.isEmpty())
     {
+      file->setProperty("label", label);
       file->setProperty("ID", label);
     }
+    
     this->add(file);
   }
 }

+ 5 - 10
Libs/XNAT/Core/ctkXnatSession.cpp

@@ -29,13 +29,10 @@
 #include "ctkXnatObject.h"
 #include "ctkXnatProject.h"
 #include "ctkXnatReconstruction.h"
-#include "ctkXnatReconstructionFolder.h"
 #include "ctkXnatReconstructionResource.h"
 #include "ctkXnatScan.h"
-#include "ctkXnatScanFolder.h"
 #include "ctkXnatScanResource.h"
 #include "ctkXnatAssessor.h"
-#include "ctkXnatAssessorFolder.h"
 #include "ctkXnatAssessorResource.h"
 #include "ctkXnatSubject.h"
 #include "ctkXnatDefaultSchemaTypes.h"
@@ -250,16 +247,12 @@ QList<ctkXnatObject*> ctkXnatSessionPrivate::results(qRestResult* restResult, QS
     if (!customSchemaType.isEmpty())
     {
       typeId = QMetaType::type(qPrintable(customSchemaType));
-      if (!typeId)
-      {
-        qWarning() << QString("No ctkXnatObject sub-class registered for the schema %1. Falling back to the default class.").arg(customSchemaType);
-      }
     }
 
     // Fall back. Create the default class according to the default schema type
     if (!typeId)
     {
-      qDebug() << "fallback to : " << schemaType << " from custom " << customSchemaType;
+      qWarning() << QString("No ctkXnatObject sub-class registered for the schema %1. Falling back to the default class %2.").arg(customSchemaType).arg(schemaType);
       typeId = QMetaType::type(qPrintable(schemaType));
     }
 
@@ -285,6 +278,8 @@ QList<ctkXnatObject*> ctkXnatSessionPrivate::results(qRestResult* restResult, QS
       object->setProperty(it.key().toAscii().data(), it.value());
     }
 
+    qDebug() << "\n\n" << "xnat object found with properties \n" << object->properties() << "\n\n";
+
     results.push_back(object);
   }
   return results;
@@ -306,11 +301,11 @@ ctkXnatSession::ctkXnatSession(const ctkXnatLoginProfile& loginProfile)
   qRegisterMetaType<ctkXnatScan>(qPrintable(ctkXnatDefaultSchemaTypes::XSI_SCAN));
   qRegisterMetaType<ctkXnatReconstruction>(qPrintable(ctkXnatDefaultSchemaTypes::XSI_RECONSTRUCTION));
   qRegisterMetaType<ctkXnatScanResource>(qPrintable(ctkXnatDefaultSchemaTypes::XSI_SCAN_RESOURCE));
-  qRegisterMetaType<ctkXnatFile>(qPrintable(ctkXnatDefaultSchemaTypes::XSI_FILE));
   qRegisterMetaType<ctkXnatReconstructionResource>(qPrintable(ctkXnatDefaultSchemaTypes::XSI_RECONSTRUCTION_RESOURCE));
   qRegisterMetaType<ctkXnatAssessor>(qPrintable(ctkXnatDefaultSchemaTypes::XSI_ASSESSOR));
   qRegisterMetaType<ctkXnatAssessorResource>(qPrintable(ctkXnatDefaultSchemaTypes::XSI_ASSESSOR_RESOURCE));
-
+  qRegisterMetaType<ctkXnatFile>(qPrintable(ctkXnatDefaultSchemaTypes::XSI_FILE));
+  
   QString url = d->loginProfile.serverUrl().toString();
   d->xnat->setServerUrl(url);
 

+ 1 - 1
Libs/XNAT/Core/ctkXnatTreeModel.cpp

@@ -76,7 +76,7 @@ QVariant ctkXnatTreeModel::data(const QModelIndex& index, int role) const
     QString displayData = xnatObject->name();
     if (displayData.isEmpty())
     {
-      displayData = xnatObject->id();
+      displayData = xnatObject->property("label");
     }
     return displayData;
   }