Przeglądaj źródła

XML Schema type property for ctkXnatObject

Miklos Espak 11 lat temu
rodzic
commit
79c39da265

+ 19 - 58
Libs/XNAT/Core/ctkXnatConnection.cpp

@@ -436,20 +436,20 @@ void ctkXnatConnection::fetch(const QSharedPointer<ctkXnatReconstructionResource
   }
 }
 
-//void ctkXnatConnection::create(ctkXnatProject* project)
-//{
-//  const QString& projectName = project->name();
+void ctkXnatConnection::create(ctkXnatObject* object)
+{
+  const QString& uri = object->uri();
 
-//  Q_D(ctkXnatConnection);
+  Q_D(ctkXnatConnection);
 
-//  QString query = QString("/REST/projects/%1").arg(projectName);
-//  bool success = d->xnat->sync(d->xnat->put(query));
+  QString query = uri;
+  bool success = d->xnat->sync(d->xnat->put(query));
 
-//  if (!success)
-//  {
-//    throw ctkXnatException("Error occurred while creating the project.");
-//  }
-//}
+  if (!success)
+  {
+    throw ctkXnatException("Error occurred while removing the data.");
+  }
+}
 
 void ctkXnatConnection::remove(ctkXnatObject* object)
 {
@@ -517,17 +517,6 @@ void ctkXnatConnection::remove(ctkXnatObject* object)
 //  d->xnat->sync(queryId);
 //}
 
-//void ctkXnatConnection::addReconstruction(ctkXnatExperiment* /*experiment*/, const QString& /*reconstruction*/)
-//{
-////  const QString& experimentName = experiment->getName();
-////  ctkXnatObject* subject = experiment->getParent();
-////  const QString& subjectName = subject->getName();
-////  ctkXnatObject* project = subject->getParent();
-////  const QString& projectName = project->getName();
-
-//  // TODO
-//}
-
 //void ctkXnatConnection::downloadReconstruction(ctkXnatReconstruction* reconstruction, const QString& fileName)
 //{
 //  const QString& reconstructionName = reconstruction->getName();
@@ -547,19 +536,6 @@ void ctkXnatConnection::remove(ctkXnatObject* object)
 //  d->xnat->sync(queryId);
 //}
 
-//void ctkXnatConnection::addReconstructionResource(ctkXnatReconstruction* /*reconstruction*/, const QString& /*resourceName*/)
-//{
-////  const QString& reconstructionName = reconstruction->getName();
-////  ctkXnatObject* experiment = reconstruction->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();
-
-//  // TODO
-//}
-
 //void ctkXnatConnection::downloadReconstructionResourceFiles(ctkXnatReconstructionResource* reconstructionResource, const QString& fileName)
 //{
 //  const QString& reconstructionResourceName = reconstructionResource->getName();
@@ -581,21 +557,6 @@ void ctkXnatConnection::remove(ctkXnatObject* object)
 //  d->xnat->sync(queryId);
 //}
 
-//void ctkXnatConnection::uploadReconstructionResourceFiles(ctkXnatReconstructionResource* /*reconstructionResource*/, const QString& /*zipFilename*/)
-//{
-////  const QString& resourceName = reconstructionResource->getName();
-////  ctkXnatObject* reconstruction = reconstructionResource->getParent();
-////  const QString& reconstructionName = reconstruction->getName();
-////  ctkXnatObject* experiment = reconstruction->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();
-
-//  // TODO
-//}
-
 //void ctkXnatConnection::download(ctkXnatReconstructionResourceFile* reconstructionResourceFile, const QString& fileName)
 //{
 //  const QString& reconstructionResourceFileName = reconstructionResourceFile->getName();
@@ -638,23 +599,23 @@ void ctkXnatConnection::remove(ctkXnatObject* object)
 //  d->xnat->sync(queryId);
 //}
 
-void ctkXnatConnection::download(ctkXnatScanResource* scanResource, const QString& fileName)
+void ctkXnatConnection::download(ctkXnatFile* file, const QString& fileName)
 {
   Q_D(ctkXnatConnection);
+  QString query = file->uri();
 
-  QString query = scanResource->uri() + "/files";
-  qRestAPI::Parameters parameters;
-  parameters["format"] = "zip";
-  QUuid queryId = d->xnat->download(fileName, query, parameters);
+  QUuid queryId = d->xnat->download(fileName, query);
   d->xnat->sync(queryId);
 }
 
-void ctkXnatConnection::download(ctkXnatFile* file, const QString& fileName)
+void ctkXnatConnection::download(ctkXnatScanResource* scanResource, const QString& fileName)
 {
   Q_D(ctkXnatConnection);
-  QString query = file->uri();
 
-  QUuid queryId = d->xnat->download(fileName, query);
+  QString query = scanResource->uri() + "/files";
+  qRestAPI::Parameters parameters;
+  parameters["format"] = "zip";
+  QUuid queryId = d->xnat->download(fileName, query, parameters);
   d->xnat->sync(queryId);
 }
 

+ 8 - 9
Libs/XNAT/Core/ctkXnatConnection.h

@@ -83,6 +83,8 @@ public:
   void fetch(const QSharedPointer<ctkXnatReconstruction>& reconstruction);
   void fetch(const QSharedPointer<ctkXnatReconstructionResource>& reconstructionResource);
 
+  void create(ctkXnatObject* object);
+
   void create(ctkXnatProject* project);
   void create(ctkXnatSubject* subject);
 
@@ -90,22 +92,19 @@ public:
 
   void download(ctkXnatFile* file, const QString& fileName);
 
-  /* 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 download(ctkXnatScan* scan, const QString& zipFileName); */
+//  void download(ctkXnatScan* scan, const QString& zipFileName);
 
   void download(ctkXnatScanResource* scanResource, const QString& zipFileName);
   void download(ctkXnatReconstructionResource* reconstructionResource, const QString& zipFileName);
 
-  /* void downloadReconstruction(ctkXnatReconstruction* reconstruction, const QString& zipFilename); */
-  /* void addReconstructionResource(ctkXnatReconstruction* reconstruction, const QString& resource); */
+//  void downloadReconstruction(ctkXnatReconstruction* reconstruction, const QString& zipFilename);
 
-  /* void downloadReconstructionResourceFiles(ctkXnatReconstructionResource* reconstructionResource, const QString& zipFilename); */
-  /* void uploadReconstructionResourceFiles(ctkXnatReconstructionResource* reconstructionResource, const QString& zipFilename); */
+//  void downloadReconstructionResourceFiles(ctkXnatReconstructionResource* reconstructionResource, const QString& zipFilename);
 
-  /* void download(ctkXnatReconstructionResourceFile* reconstructionResourceFile, const QString& zipFileName); */
+//  void download(ctkXnatReconstructionResourceFile* reconstructionResourceFile, const QString& zipFileName);
 
 public slots:
   void processResult(QUuid queryId, QList<QVariantMap> parameters);

+ 17 - 0
Libs/XNAT/Core/ctkXnatObject.cpp

@@ -64,6 +64,18 @@ void ctkXnatObject::setUri(const QString& uri)
   setProperty("URI", uri);
 }
 
+QString ctkXnatObject::xsiType() const
+{
+  Q_D(const ctkXnatObject);
+  return d->xsiType;
+}
+
+void ctkXnatObject::setXsiType(const QString& xsiType)
+{
+  Q_D(ctkXnatObject);
+  d->xsiType = xsiType;
+}
+
 QString ctkXnatObject::name() const
 {
   return property("name");
@@ -173,6 +185,11 @@ ctkXnatConnection* ctkXnatObject::connection() const
   return server ? xnatObject->connection() : 0;
 }
 
+void ctkXnatObject::create()
+{
+  this->connection()->create(this);
+}
+
 void ctkXnatObject::remove()
 {
   this->connection()->remove(this);

+ 9 - 0
Libs/XNAT/Core/ctkXnatObject.h

@@ -55,6 +55,9 @@ public:
   /// the REST API.
   QString uri() const;
 
+  /// Gets the XML Schema type of the object.
+  QString xsiType() const;
+
   /// Gets the name of the object.
   QString name() const;
 
@@ -94,6 +97,9 @@ public:
   /// Fetches the children and the properties of the object.
   void fetch();
 
+  /// Creates the object from the XNAT server.
+  virtual void create();
+
   /// Removes the object from the XNAT server.
   virtual void remove();
 
@@ -119,6 +125,9 @@ protected:
   /// the REST API.
   void setUri(const QString& uri);
 
+  /// Sets the XML Schema type of the object.
+  void setXsiType(const QString& xsiType);
+
   /// Sets the name of the object.
   void setName(const QString& name);
 

+ 4 - 1
Libs/XNAT/Core/ctkXnatObjectPrivate.h

@@ -46,9 +46,12 @@ private:
 
   friend class ctkXnatObject;
 
-  QList<QSharedPointer<ctkXnatObject> > children;
+  QString xsiType;
+
   QMap<QString,QString> properties;
 
+  QList<QSharedPointer<ctkXnatObject> > children;
+
   bool fetched;
 
   QWeakPointer<ctkXnatObject> parent;