瀏覽代碼

adding the assessor, assessor folder and assessor resource classes

Nicolas Toussaint 11 年之前
父節點
當前提交
923953df7b

+ 116 - 0
Libs/XNAT/Core/ctkXnatAssessor.cpp

@@ -0,0 +1,116 @@
+/*=============================================================================
+
+  Library: XNAT/Core
+
+  Copyright (c) University College London,
+    Centre for Medical Image Computing
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#include "ctkXnatAssessor.h"
+
+#include "ctkXnatSession.h"
+#include "ctkXnatObject.h"
+#include "ctkXnatObjectPrivate.h"
+#include "ctkXnatDefaultSchemaTypes.h"
+
+#include "ctkXnatAssessorResource.h"
+#include "ctkXnatScanResource.h"
+#include <qDebug>
+
+//----------------------------------------------------------------------------
+class ctkXnatAssessorPrivate : public ctkXnatObjectPrivate
+{
+public:
+
+  ctkXnatAssessorPrivate()
+  : ctkXnatObjectPrivate()
+  {
+  }
+
+  void reset()
+  {
+    uri.clear();
+  }
+
+  QString uri;
+};
+
+
+//----------------------------------------------------------------------------
+ctkXnatAssessor::ctkXnatAssessor(ctkXnatObject* parent, const QString& schemaType)
+: ctkXnatObject(*new ctkXnatAssessorPrivate(), parent, schemaType)
+{
+  qDebug() << " constructing  the assessor";
+}
+
+//----------------------------------------------------------------------------
+ctkXnatAssessor::~ctkXnatAssessor()
+{
+}
+
+//----------------------------------------------------------------------------
+QString ctkXnatAssessor::resourceUri() const
+{
+  return QString("%1/%2").arg(parent()->resourceUri(), this->id());
+}
+
+//----------------------------------------------------------------------------
+void ctkXnatAssessor::reset()
+{
+  ctkXnatObject::reset();
+}
+
+//----------------------------------------------------------------------------
+void ctkXnatAssessor::fetchImpl()
+{
+  QString assessorResourcesUri = this->resourceUri() + "/resources";
+  ctkXnatSession* const session = this->session();
+  QUuid queryId = session->httpGet(assessorResourcesUri);
+
+  QList<ctkXnatObject*> assessorResources = session->httpResults(queryId,
+                                                             ctkXnatDefaultSchemaTypes::XSI_ASSESSOR_RESOURCE);
+
+  foreach (ctkXnatObject* assessorResource, assessorResources)
+  {
+    QString label = assessorResource->property("label");
+    if (!label.isEmpty())
+    {
+      assessorResource->setProperty("ID", label);
+    }
+    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 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();
+      
+    }
+    this->add(assessorResource);
+  }
+  
+}

+ 55 - 0
Libs/XNAT/Core/ctkXnatAssessor.h

@@ -0,0 +1,55 @@
+/*=============================================================================
+
+  Library: XNAT/Core
+
+  Copyright (c) University College London,
+    Centre for Medical Image Computing
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#ifndef ctkXnatAssessor_h
+#define ctkXnatAssessor_h
+
+#include "ctkXNATCoreExport.h"
+
+#include "ctkXnatObject.h"
+#include "ctkXnatDefaultSchemaTypes.h"
+
+class ctkXnatAssessorPrivate;
+
+/**
+ * @ingroup XNAT_Core
+ */
+class CTK_XNAT_CORE_EXPORT ctkXnatAssessor : public ctkXnatObject
+{
+
+public:
+
+  ctkXnatAssessor(ctkXnatObject* parent = 0, const QString& schemaType = ctkXnatDefaultSchemaTypes::XSI_ASSESSOR);
+
+  virtual ~ctkXnatAssessor();
+
+  virtual QString resourceUri() const;
+
+  void reset();
+
+private:
+
+  virtual void fetchImpl();
+
+  Q_DECLARE_PRIVATE(ctkXnatAssessor)
+};
+
+#endif

+ 91 - 0
Libs/XNAT/Core/ctkXnatAssessorFolder.cpp

@@ -0,0 +1,91 @@
+/*=============================================================================
+
+  Library: XNAT/Core
+
+  Copyright (c) University College London,
+    Centre for Medical Image Computing
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#include "ctkXnatAssessorFolder.h"
+
+#include "ctkXnatSession.h"
+#include "ctkXnatExperiment.h"
+#include "ctkXnatObjectPrivate.h"
+#include "ctkXnatAssessor.h"
+#include "ctkXnatDefaultSchemaTypes.h"
+
+#include <qDebug>
+
+//----------------------------------------------------------------------------
+class ctkXnatAssessorFolderPrivate : public ctkXnatObjectPrivate
+{
+public:
+
+  ctkXnatAssessorFolderPrivate()
+  : ctkXnatObjectPrivate()
+  {
+  }
+
+  void reset()
+  {
+  }
+
+};
+
+
+//----------------------------------------------------------------------------
+ctkXnatAssessorFolder::ctkXnatAssessorFolder(ctkXnatObject* parent)
+  : ctkXnatObject(*new ctkXnatAssessorFolderPrivate(), parent, QString::null)
+{
+  qDebug() << " constructing  the assessor folder";  
+  this->setProperty("ID", "assessors");
+}
+
+//----------------------------------------------------------------------------
+ctkXnatAssessorFolder::~ctkXnatAssessorFolder()
+{
+}
+
+//----------------------------------------------------------------------------
+QString ctkXnatAssessorFolder::resourceUri() const
+{
+  return QString("%1/%2").arg(parent()->resourceUri(), this->id());
+}
+
+//----------------------------------------------------------------------------
+void ctkXnatAssessorFolder::reset()
+{
+  ctkXnatObject::reset();
+}
+
+//----------------------------------------------------------------------------
+void ctkXnatAssessorFolder::fetchImpl()
+{
+  QString assessorsUri = this->resourceUri();
+  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);
+  }
+}

+ 55 - 0
Libs/XNAT/Core/ctkXnatAssessorFolder.h

@@ -0,0 +1,55 @@
+/*=============================================================================
+
+  Library: XNAT/Core
+
+  Copyright (c) University College London,
+    Centre for Medical Image Computing
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#ifndef ctkXnatAssessorFolder_h
+#define ctkXnatAssessorFolder_h
+
+#include "ctkXNATCoreExport.h"
+
+#include "ctkXnatObject.h"
+
+class ctkXnatAssessorFolderPrivate;
+
+/**
+ * @ingroup XNAT_Core
+ */
+class CTK_XNAT_CORE_EXPORT ctkXnatAssessorFolder : public ctkXnatObject
+{
+
+public:
+
+  ctkXnatAssessorFolder(ctkXnatObject* parent = NULL);
+
+  virtual ~ctkXnatAssessorFolder();
+
+  virtual QString resourceUri() const;
+
+  void reset();
+
+private:
+
+  friend class qRestResult;
+  virtual void fetchImpl();
+
+  Q_DECLARE_PRIVATE(ctkXnatAssessorFolder)
+};
+
+#endif

+ 102 - 0
Libs/XNAT/Core/ctkXnatAssessorResource.cpp

@@ -0,0 +1,102 @@
+/*=============================================================================
+
+  Library: XNAT/Core
+
+  Copyright (c) University College London,
+    Centre for Medical Image Computing
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#include "ctkXnatAssessorResource.h"
+
+#include "ctkXnatSession.h"
+#include "ctkXnatObjectPrivate.h"
+#include "ctkXnatDefaultSchemaTypes.h"
+
+#include <qDebug>
+
+//----------------------------------------------------------------------------
+class ctkXnatAssessorResourcePrivate : public ctkXnatObjectPrivate
+{
+public:
+
+  ctkXnatAssessorResourcePrivate()
+  : ctkXnatObjectPrivate()
+  {
+  }
+
+  void reset()
+  {
+  }
+
+};
+
+
+//----------------------------------------------------------------------------
+ctkXnatAssessorResource::ctkXnatAssessorResource(ctkXnatObject* parent, const QString& schemaType)
+: ctkXnatObject(*new ctkXnatAssessorResourcePrivate(), parent, schemaType)
+{
+  qDebug() << " constructing  the assessor resource";
+}
+
+//----------------------------------------------------------------------------
+ctkXnatAssessorResource::~ctkXnatAssessorResource()
+{
+}
+
+//----------------------------------------------------------------------------
+QString ctkXnatAssessorResource::resourceUri() const
+{
+  
+  return QString("%1/resources/%2").arg(parent()->resourceUri(), this->property("xnat_abstractresource_id"));
+}
+
+//----------------------------------------------------------------------------
+void ctkXnatAssessorResource::reset()
+{
+  ctkXnatObject::reset();
+}
+
+//----------------------------------------------------------------------------
+void ctkXnatAssessorResource::fetchImpl()
+{
+  QString assessorResourceFilesUri = this->resourceUri() + "/files";
+  ctkXnatSession* const session = this->session();
+  QUuid queryId = session->httpGet(assessorResourceFilesUri);
+
+  
+  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() << ".";
+    
+    if (!label.isEmpty())
+    {
+      file->setProperty("ID", label);
+    }
+    this->add(file);
+  }
+}
+
+//----------------------------------------------------------------------------
+void ctkXnatAssessorResource::download(const QString& filename)
+{
+  this->session()->download(this, filename);
+}

+ 60 - 0
Libs/XNAT/Core/ctkXnatAssessorResource.h

@@ -0,0 +1,60 @@
+/*=============================================================================
+
+  Library: XNAT/Core
+
+  Copyright (c) University College London,
+    Centre for Medical Image Computing
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=============================================================================*/
+
+#ifndef ctkXnatAssessorResource_h
+#define ctkXnatAssessorResource_h
+
+#include "ctkXNATCoreExport.h"
+
+#include "ctkXnatObject.h"
+#include "ctkXnatDefaultSchemaTypes.h"
+
+class ctkXnatAssessorResourcePrivate;
+
+/**
+ * @ingroup XNAT_Core
+ */
+class CTK_XNAT_CORE_EXPORT ctkXnatAssessorResource : public ctkXnatObject
+{
+
+public:
+
+  ctkXnatAssessorResource(ctkXnatObject* parent = 0,
+                      const QString& schemaType = ctkXnatDefaultSchemaTypes::XSI_ASSESSOR_RESOURCE);
+
+  virtual ~ctkXnatAssessorResource();
+
+  QString resourceUri() const;
+
+  void reset();
+
+  void download(const QString& filename);
+
+private:
+
+  friend class qRestResult;
+  virtual void fetchImpl();
+
+  Q_DECLARE_PRIVATE(ctkXnatAssessorResource)
+
+};
+
+#endif