Quellcode durchsuchen

Adapted to the newer version of WSDL.

Anthony Dass vor 14 Jahren
Ursprung
Commit
fa3fe3f93e
24 geänderte Dateien mit 377 neuen und 175 gelöschten Zeilen
  1. 11 11
      Plugins/org.commontk.dah.app/ctkAppSoapMessageProcessor.cpp
  2. 4 0
      Plugins/org.commontk.dah.app/ctkDicomAbstractApp.cpp
  3. 2 2
      Plugins/org.commontk.dah.app/ctkDicomAppPlugin.cpp
  4. 11 10
      Plugins/org.commontk.dah.app/ctkDicomAppServer.cpp
  5. 2 1
      Plugins/org.commontk.dah.app/ctkDicomAppServer_p.h
  6. 7 7
      Plugins/org.commontk.dah.app/ctkDicomHostService.cpp
  7. 151 68
      Plugins/org.commontk.dah.core/ctkDicomAppHostingTypesHelper.cpp
  8. 4 2
      Plugins/org.commontk.dah.core/ctkDicomAppHostingTypesHelper.h
  9. 1 0
      Plugins/org.commontk.dah.core/ctkDicomAppInterface.h
  10. 71 4
      Plugins/org.commontk.dah.core/ctkDicomAvailableDataHelper.cpp
  11. 8 0
      Plugins/org.commontk.dah.core/ctkDicomAvailableDataHelper.h
  12. 6 6
      Plugins/org.commontk.dah.core/ctkDicomExchangeService.cpp
  13. 14 10
      Plugins/org.commontk.dah.core/ctkExchangeSoapMessageProcessor.cpp
  14. 7 2
      Plugins/org.commontk.dah.core/ctkSimpleSoapClient.cpp
  15. 12 6
      Plugins/org.commontk.dah.core/ctkSoapLog.h
  16. 1 1
      Plugins/org.commontk.dah.exampleapp/ctkExampleDicomAppLogic.cpp
  17. 10 10
      Plugins/org.commontk.dah.host/ctkDicomAbstractHost.cpp
  18. 3 3
      Plugins/org.commontk.dah.host/ctkDicomAbstractHost.h
  19. 7 6
      Plugins/org.commontk.dah.host/ctkDicomAppService.cpp
  20. 2 2
      Plugins/org.commontk.dah.host/ctkDicomHostServer.cpp
  21. 1 1
      Plugins/org.commontk.dah.host/ctkDicomHostServer.h
  22. 9 8
      Plugins/org.commontk.dah.host/ctkDicomHostServerPrivate.cpp
  23. 2 1
      Plugins/org.commontk.dah.host/ctkDicomHostServerPrivate.h
  24. 31 14
      Plugins/org.commontk.dah.host/ctkHostSoapMessageProcessor.cpp

+ 11 - 11
Plugins/org.commontk.dah.app/ctkAppSoapMessageProcessor.cpp

@@ -41,17 +41,17 @@ bool ctkAppSoapMessageProcessor::process(
 
 
   bool foundMethod = false;
   bool foundMethod = false;
   
   
-  if (methodName == "getState")
+  if (methodName == "GetState")
     {
     {
     processGetState(message, reply);
     processGetState(message, reply);
     foundMethod = true;
     foundMethod = true;
     }
     }
-  else if (methodName == "setState")
+  else if (methodName == "SetState")
     {
     {
     processSetState(message, reply);
     processSetState(message, reply);
     foundMethod = true;
     foundMethod = true;
     }
     }
-  else if (methodName == "bringToFront")
+  else if (methodName == "BringToFront")
     {
     {
     processBringToFront(message, reply);
     processBringToFront(message, reply);
     foundMethod = true;
     foundMethod = true;
@@ -70,8 +70,8 @@ void ctkAppSoapMessageProcessor::processGetState(
   // query interface
   // query interface
   const ctkDicomAppHosting::State result = this->AppInterface->getState();
   const ctkDicomAppHosting::State result = this->AppInterface->getState();
   // set reply message
   // set reply message
-  reply->setMethod("getState");
-  QtSoapSimpleType* resultType = new ctkDicomSoapState("getStateResponse",result);
+  reply->setMethod("GetStateResponse");
+  QtSoapSimpleType* resultType = new ctkDicomSoapState("GetStateResult",result);
   reply->addMethodArgument(resultType);
   reply->addMethodArgument(resultType);
 }
 }
 
 
@@ -80,12 +80,12 @@ void ctkAppSoapMessageProcessor::processSetState(
   const QtSoapMessage &message, QtSoapMessage *reply) const
   const QtSoapMessage &message, QtSoapMessage *reply) const
 {
 {
   // extract arguments from input message
   // extract arguments from input message
-  const QtSoapType& inputType = message.method()["newState"];
+  const QtSoapType& inputType = message.method()["state"];
   // query interface
   // query interface
   bool result = this->AppInterface->setState(ctkDicomSoapState::getState(inputType));
   bool result = this->AppInterface->setState(ctkDicomSoapState::getState(inputType));
   // set reply message
   // set reply message
-  reply->setMethod("setState");
-  QtSoapType* resultType = new ctkDicomSoapBool("setStateResponse",result);
+  reply->setMethod("SetStateResponse");
+  QtSoapType* resultType = new ctkDicomSoapBool("SetStateResult",result);
   reply->addMethodArgument(resultType);
   reply->addMethodArgument(resultType);
 }
 }
 
 
@@ -94,12 +94,12 @@ void ctkAppSoapMessageProcessor::processBringToFront(
   const QtSoapMessage &message, QtSoapMessage *reply) const
   const QtSoapMessage &message, QtSoapMessage *reply) const
 {
 {
   // extract arguments from input message
   // extract arguments from input message
-  const QtSoapType& inputType = message.method()["requestedScreenArea"];
+  const QtSoapType& inputType = message.method()["RequestedScreenArea"];
   const QRect requestedScreenArea = ctkDicomSoapRectangle::getQRect(inputType);
   const QRect requestedScreenArea = ctkDicomSoapRectangle::getQRect(inputType);
   // query interface
   // query interface
   bool result = this->AppInterface->bringToFront(requestedScreenArea);
   bool result = this->AppInterface->bringToFront(requestedScreenArea);
   // set reply message
   // set reply message
-  reply->setMethod("bringToFront");
-  QtSoapType* resultType = new ctkDicomSoapBool("bringToFrontResponse",result);
+  reply->setMethod("BringToFrontResponse");
+  QtSoapType* resultType = new ctkDicomSoapBool("BringToFrontResult",result);
   reply->addMethodArgument(resultType);
   reply->addMethodArgument(resultType);
 }
 }

+ 4 - 0
Plugins/org.commontk.dah.app/ctkDicomAbstractApp.cpp

@@ -74,6 +74,10 @@ bool ctkDicomAbstractApp::setState(ctkDicomAppHosting::State newState)
     if (d_ptr->currentState == ctkDicomAppHosting::COMPLETED)
     if (d_ptr->currentState == ctkDicomAppHosting::COMPLETED)
     {
     {
       emit releaseResources();
       emit releaseResources();
+	  //inform the host that now the app is idle
+	  getHostInterface()->notifyStateChanged(ctkDicomAppHosting::IDLE);
+	  //also change the internal state
+	  d_ptr->currentState = ctkDicomAppHosting::IDLE;
       result = true;
       result = true;
     }
     }
     break;
     break;

+ 2 - 2
Plugins/org.commontk.dah.app/ctkDicomAppPlugin.cpp

@@ -68,10 +68,10 @@ void ctkDicomAppPlugin::start(ctkPluginContext* context)
     }
     }
 
 
   // start the application server
   // start the application server
-  this->AppServer = new ctkDicomAppServer(appURL.port());
+  this->AppServer = new ctkDicomAppServer(appURL.port(), appURL.path());
 
 
   // register the host service, providing callbacks to the hosting application
   // register the host service, providing callbacks to the hosting application
-  this->HostInterface = new ctkDicomHostService(QUrl(hostURL).port(), "/HostInterface");
+  this->HostInterface = new ctkDicomHostService(QUrl(hostURL).port(), hostURL.path());
   context->registerService<ctkDicomHostInterface>(HostInterface);
   context->registerService<ctkDicomHostInterface>(HostInterface);
 }
 }
 
 

+ 11 - 10
Plugins/org.commontk.dah.app/ctkDicomAppServer.cpp

@@ -37,8 +37,8 @@
 #include <stdexcept>
 #include <stdexcept>
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-ctkDicomAppServer::ctkDicomAppServer(int port)
-  : AppInterfaceRegistered(false), Port(port),
+ctkDicomAppServer::ctkDicomAppServer(int port, QString path)
+  : AppInterfaceRegistered(false), Port(port), Path(path),
     AppInterfaceTracker(ctkDicomAppPlugin::getPluginContext(), this)
     AppInterfaceTracker(ctkDicomAppPlugin::getPluginContext(), this)
 {
 {
   this->AppInterfaceTracker.open();
   this->AppInterfaceTracker.open();
@@ -65,30 +65,31 @@ void ctkDicomAppServer::incomingWSDLMessage(
   const QString& message, QString* reply)
   const QString& message, QString* reply)
 {
 {
   if (message == "?wsdl")
   if (message == "?wsdl")
-    {
-    QFile wsdlfile(":/dah/ApplicationService.wsdl");
+  {
+    QFile wsdlfile(":/dah/ApplicationService-20100825.wsdl");
     wsdlfile.open(QFile::ReadOnly | QFile::Text);
     wsdlfile.open(QFile::ReadOnly | QFile::Text);
     if(wsdlfile.isOpen())
     if(wsdlfile.isOpen())
       {
       {
       QTextStream textstream(&wsdlfile);
       QTextStream textstream(&wsdlfile);
       *reply = textstream.readAll();
       *reply = textstream.readAll();
       QString actualURL="http://localhost:";
       QString actualURL="http://localhost:";
-      actualURL+=QString::number(Port)+"/ApplicationInterface"; // FIXME: has to be replaced by url provided by host
+      //actualURL+=QString::number(Port)+"/ApplicationInterface"; // FIXME: has to be replaced by url provided by host
+	  actualURL+=QString::number(Port)+Path; 
       reply->replace("REPLACE_WITH_ACTUAL_URL",actualURL);
       reply->replace("REPLACE_WITH_ACTUAL_URL",actualURL);
-      reply->replace("ApplicationService_schema1.xsd",actualURL+"?xsd=1");
+      reply->replace("ApplicationService-20100825.xsd",actualURL+"?xsd=1");
       //reply->replace("<soap:body use=\"literal\"/>","<soap:body use=\"literal\"></soap:body>");
       //reply->replace("<soap:body use=\"literal\"/>","<soap:body use=\"literal\"></soap:body>");
       }
       }
-    }
+  }
   else if (message == "?xsd=1")
   else if (message == "?xsd=1")
-    {
-    QFile wsdlfile(":/dah/HostService_schema1.xsd");
+  {
+    QFile wsdlfile(":/dah/HostService-20100825.xsd");
     wsdlfile.open(QFile::ReadOnly | QFile::Text);
     wsdlfile.open(QFile::ReadOnly | QFile::Text);
     if(wsdlfile.isOpen())
     if(wsdlfile.isOpen())
       {
       {
       QTextStream textstream(&wsdlfile);
       QTextStream textstream(&wsdlfile);
       *reply = textstream.readAll();
       *reply = textstream.readAll();
       }
       }
-    }
+  }
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------

+ 2 - 1
Plugins/org.commontk.dah.app/ctkDicomAppServer_p.h

@@ -45,7 +45,7 @@ class ctkDicomAppServer : public QObject, ctkServiceTrackerCustomizer<ctkDicomAp
   Q_OBJECT
   Q_OBJECT
 
 
 public:
 public:
-  ctkDicomAppServer(int port);
+  ctkDicomAppServer(int port, QString path);
   ~ctkDicomAppServer();
   ~ctkDicomAppServer();
 public slots:
 public slots:
 
 
@@ -67,6 +67,7 @@ private:
   ctkSoapMessageProcessorList Processors;
   ctkSoapMessageProcessorList Processors;
   ctkSimpleSoapServer Server;
   ctkSimpleSoapServer Server;
   int Port;
   int Port;
+  QString Path;
 
 
   ctkServiceTracker<ctkDicomAppInterface*> AppInterfaceTracker;
   ctkServiceTracker<ctkDicomAppInterface*> AppInterfaceTracker;
 };
 };

+ 7 - 7
Plugins/org.commontk.dah.app/ctkDicomHostService.cpp

@@ -37,7 +37,7 @@ ctkDicomHostService::~ctkDicomHostService()
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 QString ctkDicomHostService::generateUID()
 QString ctkDicomHostService::generateUID()
 {
 {
-  const QtSoapType& result = submitSoapRequest("generateUID", NULL);
+  const QtSoapType& result = submitSoapRequest("GenerateUID", NULL);
   QString resultUID = ctkDicomSoapUID::getUID(result);
   QString resultUID = ctkDicomSoapUID::getUID(result);
   return resultUID;
   return resultUID;
 }
 }
@@ -46,8 +46,8 @@ QString ctkDicomHostService::generateUID()
 QString ctkDicomHostService::getOutputLocation(const QStringList& preferredProtocols)
 QString ctkDicomHostService::getOutputLocation(const QStringList& preferredProtocols)
 {
 {
   QtSoapStruct* input = dynamic_cast<QtSoapStruct*>(
   QtSoapStruct* input = dynamic_cast<QtSoapStruct*>(
-    new ctkDicomSoapArrayOfStringType("string","preferredProtocols", preferredProtocols));
-  const QtSoapType& result = submitSoapRequest("getOutputLocation", input);
+   new ctkDicomSoapArrayOfStringType("string","preferredProtocols", preferredProtocols));
+  const QtSoapType& result = submitSoapRequest("GetOutputLocation", input);
   QString resultString = result.value().toString();
   QString resultString = result.value().toString();
   return resultString;
   return resultString;
 }
 }
@@ -56,7 +56,7 @@ QString ctkDicomHostService::getOutputLocation(const QStringList& preferredProto
 QRect ctkDicomHostService::getAvailableScreen(const QRect& preferredScreen)
 QRect ctkDicomHostService::getAvailableScreen(const QRect& preferredScreen)
 {
 {
   QtSoapStruct* input = new ctkDicomSoapRectangle("preferredScreen", preferredScreen);
   QtSoapStruct* input = new ctkDicomSoapRectangle("preferredScreen", preferredScreen);
-  const QtSoapType& result = submitSoapRequest("getAvailableScreen", input);
+  const QtSoapType& result = submitSoapRequest("GetAvailableScreen", input);
   QRect resultRect = ctkDicomSoapRectangle::getQRect(result);
   QRect resultRect = ctkDicomSoapRectangle::getQRect(result);
   qDebug() << "x:" << resultRect.x() << " y:" << resultRect.y();
   qDebug() << "x:" << resultRect.x() << " y:" << resultRect.y();
   return resultRect;
   return resultRect;
@@ -65,8 +65,8 @@ QRect ctkDicomHostService::getAvailableScreen(const QRect& preferredScreen)
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void ctkDicomHostService::notifyStateChanged(ctkDicomAppHosting::State state)
 void ctkDicomHostService::notifyStateChanged(ctkDicomAppHosting::State state)
 {
 {
-  QtSoapType* input = new ctkDicomSoapState("newState", state); // spec would be "state", java has "newState" FIX JAVA/STANDARD
-  submitSoapRequest("notifyStateChanged", input);
+  QtSoapType* input = new ctkDicomSoapState("state", state); // spec would be "state", java has "newState" FIX JAVA/STANDARD
+  submitSoapRequest("NotifyStateChanged", input);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -74,7 +74,7 @@ void ctkDicomHostService::notifyStatus(const ctkDicomAppHosting::Status& status)
 {
 {
   //Q_D(ctkDicomService);
   //Q_D(ctkDicomService);
   QtSoapStruct* input = new ctkDicomSoapStatus("status", status);
   QtSoapStruct* input = new ctkDicomSoapStatus("status", status);
-  submitSoapRequest("notifyStatus", input);
+  submitSoapRequest("NotifyStatus", input);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------

+ 151 - 68
Plugins/org.commontk.dah.core/ctkDicomAppHostingTypesHelper.cpp

@@ -159,13 +159,24 @@ ctkDicomAppHosting::Status ctkDicomSoapStatus::getStatus(const QtSoapType& type)
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 ctkDicomSoapUID::ctkDicomSoapUID(const QString& name, const QString& uid)
 ctkDicomSoapUID::ctkDicomSoapUID(const QString& name, const QString& uid)
-  : QtSoapSimpleType(QtSoapQName(name), uid)
-{}
+  //: QtSoapSimpleType(QtSoapQName(name), uid)
+  : QtSoapStruct(QtSoapQName(name))
+{
+  this->insert(new QtSoapSimpleType(QtSoapQName("Uid"),uid));
+}
+
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 QString ctkDicomSoapUID::getUID(const QtSoapType& type)
 QString ctkDicomSoapUID::getUID(const QtSoapType& type)
 {
 {
-  return type.value().toString();
+  //return type.value().toString();
+  QString uid;
+  if(type.type()==QtSoapType::Struct)
+    uid = type[0].value().toString();
+  else
+    uid = type.value().toString();
+  return uid;
+
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -185,12 +196,15 @@ ctkDicomSoapArrayOfStringType::ctkDicomSoapArrayOfStringType(const QString& type
 //  : QtSoapArray(QtSoapQName(name), QtSoapType::String, array.size())
 //  : QtSoapArray(QtSoapQName(name), QtSoapType::String, array.size())
   : QtSoapStruct(QtSoapQName(name))
   : QtSoapStruct(QtSoapQName(name))
 {
 {
+	 QtSoapStruct *simpleStruct = new QtSoapStruct(QtSoapQName(typeName));
   for (QStringList::ConstIterator it = array.constBegin();
   for (QStringList::ConstIterator it = array.constBegin();
        it < array.constEnd(); it++)
        it < array.constEnd(); it++)
     {
     {
-    this->insert(new QtSoapSimpleType(QtSoapQName(typeName),*it));
+
+    simpleStruct->insert(new QtSoapSimpleType(QtSoapQName("Uid"),*it));
 //    this->append(new QtSoapSimpleType(QtSoapQName(typeName),*it));
 //    this->append(new QtSoapSimpleType(QtSoapQName(typeName),*it));
     }
     }
+  this->insert(simpleStruct);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -211,7 +225,7 @@ ctkDicomSoapUUID::ctkDicomSoapUUID(const QString& name, const QUuid& uuid)
 {
 {
   QString uuidstring(uuid.toString());
   QString uuidstring(uuid.toString());
   uuidstring.remove(0,1).chop(1);
   uuidstring.remove(0,1).chop(1);
-  this->insert(new QtSoapSimpleType(QtSoapQName("uuid"),uuidstring));
+  this->insert(new QtSoapSimpleType(QtSoapQName("Uuid"),uuidstring));
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -235,7 +249,7 @@ ctkDicomSoapArrayOfUUIDS::ctkDicomSoapArrayOfUUIDS(const QString& name, const QL
     {
     {
     QString uuidstring((*it).toString());
     QString uuidstring((*it).toString());
     uuidstring.remove(0,1).chop(1);
     uuidstring.remove(0,1).chop(1);
-    this->insert(new ctkDicomSoapUUID("uuid",uuidstring));
+    this->insert(new ctkDicomSoapUUID("UUID",uuidstring));
     }
     }
 }
 }
 
 
@@ -255,35 +269,69 @@ ctkDicomSoapObjectDescriptor::ctkDicomSoapObjectDescriptor(const QString& name,
                                                            const ctkDicomAppHosting::ObjectDescriptor& od)
                                                            const ctkDicomAppHosting::ObjectDescriptor& od)
   : QtSoapStruct(QtSoapQName(name))
   : QtSoapStruct(QtSoapQName(name))
 {
 {
-  this->insert(new ctkDicomSoapUUID("uuid",
+  this->insert(new ctkDicomSoapUUID("DescriptorUuid",
                                     od.descriptorUUID) );
                                     od.descriptorUUID) );
-  this->insert(new QtSoapSimpleType(
-                 QtSoapQName("mimeType"),
-                 od.mimeType) );
-  this->insert(new QtSoapSimpleType(
-                 QtSoapQName("classUID"),
-                 od.classUID) );
-  this->insert(new QtSoapSimpleType(
-                 QtSoapQName("transferSyntaxUID"),
-                 od.transferSyntaxUID) );
-  this->insert(new QtSoapSimpleType(
-                 QtSoapQName("modality"),
-                 od.modality) );
+
+  /*this->insert(new QtSoapSimpleType(
+                 QtSoapQName("MimeType"),
+                 od.mimeType) );*/
+
+  /*QStringList mimeType;
+  mimeType.append(od.mimeType); 
+  this->insert(new ctkDicomSoapArrayOfStringType("MimeType",
+				"MimeType", 
+				mimeType) );*/
+
+	QtSoapStruct *stMimeType = new QtSoapStruct(QtSoapQName("MimeType"));
+	stMimeType->insert(new QtSoapSimpleType(QtSoapQName("Type"),od.mimeType));
+	this->insert(stMimeType);
+
+  /*this->insert(new QtSoapSimpleType(
+                 QtSoapQName("ClassUID"),
+                 od.classUID) );*/
+
+  this->insert(new ctkDicomSoapUID("ClassUID", od.classUID) );
+
+  /*this->insert(new QtSoapSimpleType(
+                 QtSoapQName("TransferSyntaxUID"),
+                 od.transferSyntaxUID) );*/
+  this->insert(new ctkDicomSoapUID("TransferSyntaxUID", od.transferSyntaxUID) );
+
+  /*this->insert(new QtSoapSimpleType(
+                 QtSoapQName("Modality"),
+                 od.modality) );*/
+	/*QStringList modality;
+	  modality.append(od.modality); 
+	  this->insert(new ctkDicomSoapArrayOfStringType("Modality",
+					"Modality", 
+					modality) );*/
+
+	QtSoapStruct *structModality = new QtSoapStruct(QtSoapQName("Modality"));
+	structModality->insert(new QtSoapSimpleType(QtSoapQName("Modality"),od.modality));
+	this->insert(structModality);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 ctkDicomAppHosting::ObjectDescriptor ctkDicomSoapObjectDescriptor::getObjectDescriptor(const QtSoapType& type)
 ctkDicomAppHosting::ObjectDescriptor ctkDicomSoapObjectDescriptor::getObjectDescriptor(const QtSoapType& type)
 {
 {
   ctkDicomAppHosting::ObjectDescriptor od;
   ctkDicomAppHosting::ObjectDescriptor od;
-  od.descriptorUUID = ctkDicomSoapUUID::getUuid(type["uuid"]);
-  od.mimeType =
-      type["mimeType"].value().toString();
-  od.classUID =
-      type["classUID"].value().toString();
-  od.transferSyntaxUID =
-      type["transferSyntaxUID"].value().toString();
+  od.descriptorUUID = ctkDicomSoapUUID::getUuid(type["DescriptorUuid"]);
+  od.mimeType = 
+      type["Type"].value().toString();
+  //const QStringList mimeType = ctkDicomSoapArrayOfStringType::getArray(type["MimeType"]);
+  //od.mimeType = mimeType[0];
+
+  /*od.classUID =
+      type["ClassUID"].value().toString();*/
+  od.classUID = 
+	  ctkDicomSoapUID::getUID(type["ClassUID"]);
+  /*od.transferSyntaxUID =
+      type["TransferSyntaxUID"].value().toString();*/
+  od.transferSyntaxUID = 
+	  ctkDicomSoapUID::getUID(type["TransferSyntaxUID"]);
+
   od.modality =
   od.modality =
-      type["modality"].value().toString();
+      type["Modality"].value().toString();
   return od;
   return od;
 }
 }
 
 
@@ -315,11 +363,11 @@ ctkDicomAppHosting::ArrayOfObjectDescriptors ctkDicomSoapArrayOfObjectDescriptor
 {
 {
   ctkDicomAppHosting::ArrayOfObjectDescriptors list;
   ctkDicomAppHosting::ArrayOfObjectDescriptors list;
   for (int i = 0; i < type.count() ; i++)
   for (int i = 0; i < type.count() ; i++)
-    {
+  {
     const ctkDicomAppHosting::ObjectDescriptor od =
     const ctkDicomAppHosting::ObjectDescriptor od =
       ctkDicomSoapObjectDescriptor::getObjectDescriptor(type[i]);
       ctkDicomSoapObjectDescriptor::getObjectDescriptor(type[i]);
     list.append(od);
     list.append(od);
-    }
+  }
   return list;
   return list;
 }
 }
 
 
@@ -328,15 +376,18 @@ ctkDicomSoapSeries::ctkDicomSoapSeries(const QString& name,
                                        const ctkDicomAppHosting::Series& s)
                                        const ctkDicomAppHosting::Series& s)
   : QtSoapStruct(QtSoapQName(name))
   : QtSoapStruct(QtSoapQName(name))
 {
 {
-  this->insert(new QtSoapSimpleType(QtSoapQName("seriesUID"),
-                                    s.seriesUID) );
-  QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("objectDescriptors"), QtSoapType::Other,
+  /*this->insert(new QtSoapSimpleType(QtSoapQName("SeriesUID"),
+                                    s.seriesUID) );*/
+
+  this->insert(new ctkDicomSoapUID("SeriesUID", s.seriesUID) );
+
+  QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("ObjectDescriptors"), QtSoapType::Other,
                                               s.objectDescriptors.size());
                                               s.objectDescriptors.size());
 
 
   for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = s.objectDescriptors.constBegin();
   for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = s.objectDescriptors.constBegin();
        it < s.objectDescriptors.constEnd(); it++)
        it < s.objectDescriptors.constEnd(); it++)
     {
     {
-    odescriptors->append(new ctkDicomSoapObjectDescriptor("objectDescriptor",*it));
+    odescriptors->append(new ctkDicomSoapObjectDescriptor("ObjectDescriptor",*it));
     }
     }
   this->insert(odescriptors);
   this->insert(odescriptors);
 }
 }
@@ -346,8 +397,9 @@ ctkDicomAppHosting::Series ctkDicomSoapSeries::getSeries(const QtSoapType& type)
 {
 {
   ctkDicomAppHosting::Series s;
   ctkDicomAppHosting::Series s;
 
 
-  s.seriesUID = type["seriesUID"].value().toString();
-  s.objectDescriptors = ctkDicomSoapArrayOfObjectDescriptors::getArrayOfObjectDescriptors(type["objectDescriptors"]);
+  //s.seriesUID = type["SeriesUID"].value().toString();
+  s.seriesUID = ctkDicomSoapUID::getUID(type["SeriesUID"]);
+  s.objectDescriptors = ctkDicomSoapArrayOfObjectDescriptors::getArrayOfObjectDescriptors(type["ObjectDescriptors"]);
   return s;
   return s;
 }
 }
 
 
@@ -356,9 +408,10 @@ ctkDicomSoapStudy::ctkDicomSoapStudy(const QString& name,
                                      const ctkDicomAppHosting::Study& s)
                                      const ctkDicomAppHosting::Study& s)
   : QtSoapStruct(QtSoapQName(name))
   : QtSoapStruct(QtSoapQName(name))
 {
 {
-  this->insert(new QtSoapSimpleType(QtSoapQName("StudyUID"),
-                                    s.studyUID) );
-  QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("objectDescriptors"), QtSoapType::Other,
+  //this->insert(new QtSoapSimpleType(QtSoapQName("StudyUID"),s.studyUID) );
+  this->insert(new ctkDicomSoapUID("StudyUID", s.studyUID));
+
+  QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("ObjectDescriptors"), QtSoapType::Other,
                                               s.objectDescriptors.size());
                                               s.objectDescriptors.size());
 
 
   for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = s.objectDescriptors.constBegin();
   for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = s.objectDescriptors.constBegin();
@@ -384,8 +437,10 @@ ctkDicomAppHosting::Study ctkDicomSoapStudy::getStudy(const QtSoapType& type)
 {
 {
   ctkDicomAppHosting::Study s;
   ctkDicomAppHosting::Study s;
  
  
-  s.studyUID = type["StudyUID"].value().toString();
-  s.objectDescriptors = ctkDicomSoapArrayOfObjectDescriptors::getArrayOfObjectDescriptors(type["objectDescriptors"]);
+  //s.studyUID = type["StudyUID"].value().toString();
+  s.studyUID = ctkDicomSoapUID::getUID(type["StudyUID"]);
+
+  s.objectDescriptors = ctkDicomSoapArrayOfObjectDescriptors::getArrayOfObjectDescriptors(type["ObjectDescriptors"]);
 
 
   QList<ctkDicomAppHosting::Series> listSeries;
   QList<ctkDicomAppHosting::Series> listSeries;
   const QtSoapType& seriesArray = type["Series"];
   const QtSoapType& seriesArray = type["Series"];
@@ -405,6 +460,7 @@ ctkDicomSoapPatient::ctkDicomSoapPatient(const QString& name,
                                          const ctkDicomAppHosting::Patient& p)
                                          const ctkDicomAppHosting::Patient& p)
   : QtSoapStruct(QtSoapQName(name))
   : QtSoapStruct(QtSoapQName(name))
 {
 {
+
   this->insert(new QtSoapSimpleType(QtSoapQName("Name"),
   this->insert(new QtSoapSimpleType(QtSoapQName("Name"),
                                     p.name) );
                                     p.name) );
   this->insert(new QtSoapSimpleType(QtSoapQName("ID"),
   this->insert(new QtSoapSimpleType(QtSoapQName("ID"),
@@ -413,9 +469,9 @@ ctkDicomSoapPatient::ctkDicomSoapPatient(const QString& name,
                                     p.assigningAuthority) );
                                     p.assigningAuthority) );
   this->insert(new QtSoapSimpleType(QtSoapQName("Sex"),
   this->insert(new QtSoapSimpleType(QtSoapQName("Sex"),
                                     p.sex) );
                                     p.sex) );
-  this->insert(new QtSoapSimpleType(QtSoapQName("BirthDate"),
+  this->insert(new QtSoapSimpleType(QtSoapQName("DateOfBirth"),
                                     p.birthDate) );
                                     p.birthDate) );
-  QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("objectDescriptors"), QtSoapType::Other,
+  QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("ObjectDescriptors"), QtSoapType::Other,
                                               p.objectDescriptors.size());
                                               p.objectDescriptors.size());
 
 
   for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = p.objectDescriptors.constBegin();
   for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = p.objectDescriptors.constBegin();
@@ -430,9 +486,9 @@ ctkDicomSoapPatient::ctkDicomSoapPatient(const QString& name,
 
 
   for (QList<ctkDicomAppHosting::Study>::ConstIterator it = p.studies.constBegin();
   for (QList<ctkDicomAppHosting::Study>::ConstIterator it = p.studies.constBegin();
        it < p.studies.constEnd(); it++)
        it < p.studies.constEnd(); it++)
-    {
+  {
     study->append(new ctkDicomSoapStudy("Study",*it));
     study->append(new ctkDicomSoapStudy("Study",*it));
-    }
+  }
   this->insert(study);
   this->insert(study);
 }
 }
 
 
@@ -445,9 +501,9 @@ ctkDicomAppHosting::Patient ctkDicomSoapPatient::getPatient(const QtSoapType& ty
   p.id = type["ID"].value().toString();
   p.id = type["ID"].value().toString();
   p.assigningAuthority = type["AssigningAuthority"].value().toString();
   p.assigningAuthority = type["AssigningAuthority"].value().toString();
   p.sex = type["Sex"].value().toString();
   p.sex = type["Sex"].value().toString();
-  p.birthDate = type["Birthdate"].value().toString();
+  p.birthDate = type["DateOfBirth"].value().toString();
 
 
-  p.objectDescriptors = ctkDicomSoapArrayOfObjectDescriptors::getArrayOfObjectDescriptors(type["objectDescriptors"]);
+  p.objectDescriptors = ctkDicomSoapArrayOfObjectDescriptors::getArrayOfObjectDescriptors(type["ObjectDescriptors"]);
 
 
   QList<ctkDicomAppHosting::Study> listPatient;
   QList<ctkDicomAppHosting::Study> listPatient;
   const QtSoapType& studiesArray = type["Studies"];
   const QtSoapType& studiesArray = type["Studies"];
@@ -466,25 +522,25 @@ ctkDicomSoapAvailableData::ctkDicomSoapAvailableData(const QString& name,
                                                      const ctkDicomAppHosting::AvailableData& ad)
                                                      const ctkDicomAppHosting::AvailableData& ad)
   : QtSoapStruct(QtSoapQName(name))
   : QtSoapStruct(QtSoapQName(name))
 {
 {
-  QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("objectDescriptors"), QtSoapType::Other,
+  QtSoapArray* odescriptors = new QtSoapArray(QtSoapQName("ObjectDescriptors"), QtSoapType::Other,
                                               ad.objectDescriptors.size());
                                               ad.objectDescriptors.size());
 
 
   for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = ad.objectDescriptors.constBegin();
   for (ctkDicomAppHosting::ArrayOfObjectDescriptors::ConstIterator it = ad.objectDescriptors.constBegin();
        it < ad.objectDescriptors.constEnd(); it++)
        it < ad.objectDescriptors.constEnd(); it++)
     {
     {
-    odescriptors->append(new ctkDicomSoapObjectDescriptor("objectDescriptor",*it));
+    odescriptors->append(new ctkDicomSoapObjectDescriptor("ObjectDescriptor",*it));
     }
     }
   this->insert(odescriptors);
   this->insert(odescriptors);
 
 
-  QtSoapArray* patient = new QtSoapArray(QtSoapQName("patients") ,QtSoapType::Other,
+  QtSoapArray* patients = new QtSoapArray(QtSoapQName("Patients") ,QtSoapType::Other,
                                          ad.patients.size());
                                          ad.patients.size());
 
 
   for (QList<ctkDicomAppHosting::Patient>::ConstIterator it = ad.patients.constBegin();
   for (QList<ctkDicomAppHosting::Patient>::ConstIterator it = ad.patients.constBegin();
        it < ad.patients.constEnd(); it++)
        it < ad.patients.constEnd(); it++)
-    {
-    patient->append(new ctkDicomSoapPatient("patient",*it));
-    }
-  this->insert(patient);
+  {
+	     patients->append(new ctkDicomSoapPatient("Patient",*it));
+  }
+  this->insert(patients);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -507,10 +563,10 @@ ctkDicomAppHosting::AvailableData ctkDicomSoapAvailableData::getAvailableData (c
   //  }
   //  }
   //qDebug() << inputType.typeName() << "  " << inputType.name().name();
   //qDebug() << inputType.typeName() << "  " << inputType.name().name();
 
 
-  ad.objectDescriptors = ctkDicomSoapArrayOfObjectDescriptors::getArrayOfObjectDescriptors(type["objectDescriptors"]);
+  ad.objectDescriptors = ctkDicomSoapArrayOfObjectDescriptors::getArrayOfObjectDescriptors(type["ObjectDescriptors"]);
 
 
   QList<ctkDicomAppHosting::Patient> listPatients;
   QList<ctkDicomAppHosting::Patient> listPatients;
-  const QtSoapType& patientsArray = type["patients"];
+  const QtSoapType& patientsArray = type["Patients"];
   for (int i = 0; i < patientsArray.count() ; i++)
   for (int i = 0; i < patientsArray.count() ; i++)
     {
     {
       const ctkDicomAppHosting::Patient patient =
       const ctkDicomAppHosting::Patient patient =
@@ -527,23 +583,38 @@ ctkDicomSoapObjectLocator::ctkDicomSoapObjectLocator(const QString& name,
                                                      const ctkDicomAppHosting::ObjectLocator& ol)
                                                      const ctkDicomAppHosting::ObjectLocator& ol)
   : QtSoapStruct(QtSoapQName(name))
   : QtSoapStruct(QtSoapQName(name))
 {
 {
-  this->insert(new QtSoapSimpleType(QtSoapQName("Locator"),
-                                    ol.locator) );
-  this->insert(new QtSoapSimpleType(
-                 QtSoapQName("Source"),
-                 ol.source) );
-  this->insert(new QtSoapSimpleType(
-                 QtSoapQName("TransfertSyntax"),
-                 ol.transferSyntax) );
+   /*this->insert(new QtSoapSimpleType(QtSoapQName("Locator"),
+                                    ol.locator) );*/
+
   this->insert(new QtSoapSimpleType(
   this->insert(new QtSoapSimpleType(
                  QtSoapQName("Length"),
                  QtSoapQName("Length"),
                  ol.length) );
                  ol.length) );
+
   this->insert(new QtSoapSimpleType(
   this->insert(new QtSoapSimpleType(
                  QtSoapQName("Offset"),
                  QtSoapQName("Offset"),
                  ol.offset) );
                  ol.offset) );
+
+  this->insert(new ctkDicomSoapUID("TransferSyntax", ol.transferSyntax) );
+  
   this->insert(new QtSoapSimpleType(
   this->insert(new QtSoapSimpleType(
                  QtSoapQName("URI"),
                  QtSoapQName("URI"),
                  ol.URI) );
                  ol.URI) );
+
+  this->insert(new ctkDicomSoapUUID("Locator",
+                                    ol.locator) );
+
+   this->insert(new ctkDicomSoapUUID("Source",
+                                    ol.source) );
+
+  /*this->insert(new QtSoapSimpleType(
+                 QtSoapQName("Source"),
+                 ol.source) );*/
+
+  /*this->insert(new QtSoapSimpleType(
+                 QtSoapQName("TransferSyntax"),
+                 ol.transferSyntax) );*/
+
+  
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -551,16 +622,28 @@ ctkDicomAppHosting::ObjectLocator ctkDicomSoapObjectLocator::getObjectLocator(co
 {
 {
   ctkDicomAppHosting::ObjectLocator ol;
   ctkDicomAppHosting::ObjectLocator ol;
 
 
-  ol.locator = type["Locator"].value().toString();
-  ol.source = type["Source"].value().toString();
-  ol.transferSyntax =
-      type["TransferSyntax"].value().toString();
   ol.length =
   ol.length =
       type["Length"].value().toInt();
       type["Length"].value().toInt();
   ol.offset =
   ol.offset =
       type["Offset"].value().toInt();
       type["Offset"].value().toInt();
+
+  //ol.transferSyntax =
+    //  type["TransferSyntax"].value().toString();
+  ol.transferSyntax = 
+	  ctkDicomSoapUID::getUID(type["TransferSyntax"]);
+
   ol.URI =
   ol.URI =
       type["URI"].value().toString();
       type["URI"].value().toString();
+
+  //ol.locator = type["Locator"].value().toString();
+  ol.locator = ctkDicomSoapUUID::getUuid(type["Locator"]);
+
+  //ol.source = type["Source"].value().toString();
+  ol.source = ctkDicomSoapUUID::getUuid(type["Source"]);
+  //type["Source"].value().toString();
+
+ 
+
   return ol;
   return ol;
 }
 }
 
 
@@ -572,7 +655,7 @@ ctkDicomSoapArrayOfObjectLocators::ctkDicomSoapArrayOfObjectLocators(
   for (QList<ctkDicomAppHosting::ObjectLocator>::ConstIterator it = array.constBegin();
   for (QList<ctkDicomAppHosting::ObjectLocator>::ConstIterator it = array.constBegin();
        it < array.constEnd(); it++)
        it < array.constEnd(); it++)
     {
     {
-    this->append(new ctkDicomSoapObjectLocator("objectLocator",(*it)));
+    this->append(new ctkDicomSoapObjectLocator("ObjectLocator",(*it)));
     }
     }
 }
 }
 
 

+ 4 - 2
Plugins/org.commontk.dah.core/ctkDicomAppHostingTypesHelper.h

@@ -61,11 +61,13 @@ struct org_commontk_dah_core_EXPORT ctkDicomSoapStatus : public QtSoapStruct
 };
 };
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-struct org_commontk_dah_core_EXPORT ctkDicomSoapUID : public QtSoapSimpleType
+//struct org_commontk_dah_core_EXPORT ctkDicomSoapUID : public QtSoapSimpleType
+struct org_commontk_dah_core_EXPORT ctkDicomSoapUID : public QtSoapStruct
 {
 {
   ctkDicomSoapUID(const QString& name, const QString& uid);
   ctkDicomSoapUID(const QString& name, const QString& uid);
 
 
-  static QString getUID(const QtSoapType& type);
+  //static QString getUID(const QtSoapType& type);
+  static QString getUID(const QtSoapType& array);
 };
 };
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------

+ 1 - 0
Plugins/org.commontk.dah.core/ctkDicomAppInterface.h

@@ -24,6 +24,7 @@
 #define CTKDICOMAPPINTERFACE_H
 #define CTKDICOMAPPINTERFACE_H
 
 
 #include "ctkDicomExchangeInterface.h"
 #include "ctkDicomExchangeInterface.h"
+#include <ctkDicomAppHostingTypesHelper.h>
 
 
 struct ctkDicomAppInterface : public ctkDicomExchangeInterface
 struct ctkDicomAppInterface : public ctkDicomExchangeInterface
 {
 {

+ 71 - 4
Plugins/org.commontk.dah.core/ctkDicomAvailableDataHelper.cpp

@@ -148,6 +148,62 @@ void ctkDicomAvailableDataAccessor::find(const ctkDicomAppHosting::Patient& pati
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
+bool addNonDICOMToAvailableData(ctkDicomAppHosting::AvailableData& data, 
+                        ctkDicomObjectLocatorCache* objectLocatorCache, 
+                        long length, 
+                        long offset, 
+                        const QString& uri)
+{
+  if(objectLocatorCache == NULL)
+    return false;
+  
+  ctkDicomAppHosting::ObjectDescriptor objectDescriptor;
+  ctkDicomAppHosting::Study study;
+  ctkDicomAppHosting::Series series;
+  ctkDicomAppHosting::Patient patient;
+ 
+
+  QFileInfo fileinfo(uri);
+  QString ext = fileinfo.suffix();
+
+  QString uuid = QUuid::createUuid().toString();
+  objectDescriptor.descriptorUUID = uuid;
+  //objectDescriptor.mimeType = "text/plain";
+  objectDescriptor.classUID = "";
+  objectDescriptor.transferSyntaxUID = "";
+  objectDescriptor.modality = "";
+  
+  //the default mime type is set to plain text
+  if ( ext.compare("xml") == 0)
+	  objectDescriptor.mimeType = "text/xml";
+  else if ( ext.compare("txt") == 0)
+	  objectDescriptor.mimeType = "text/plain";
+  else if ( (ext.compare("jpg") == 0) || (ext.compare("jpeg") == 0))
+	  objectDescriptor.mimeType = "image/jpeg";
+  else if ( ext.compare("bmp") == 0)
+	  objectDescriptor.mimeType = "image/bmp";
+  else
+	   objectDescriptor.mimeType = "text/plain"; //default
+
+  ctkDicomAppHosting::Patient* ppatient;
+  ctkDicomAppHosting::Study* pstudy;
+  ctkDicomAppHosting::Series* pseries;
+
+  data.objectDescriptors.append(objectDescriptor);
+
+  ctkDicomAppHosting::ObjectLocator locator;
+  locator.locator = objectDescriptor.descriptorUUID;
+  locator.source = objectDescriptor.descriptorUUID;
+  locator.offset = offset;
+  locator.length = length;
+  locator.transferSyntax = objectDescriptor.transferSyntaxUID;
+  locator.URI = uri;
+
+  objectLocatorCache->insert(objectDescriptor.descriptorUUID, locator);
+  return true;
+}
+
+
 bool addToAvailableData(ctkDicomAppHosting::AvailableData& data, 
 bool addToAvailableData(ctkDicomAppHosting::AvailableData& data, 
                         ctkDicomObjectLocatorCache* objectLocatorCache, 
                         ctkDicomObjectLocatorCache* objectLocatorCache, 
                         const ctkDICOMDataset& dataset, 
                         const ctkDICOMDataset& dataset, 
@@ -157,12 +213,13 @@ bool addToAvailableData(ctkDicomAppHosting::AvailableData& data,
 {
 {
   if(objectLocatorCache == NULL)
   if(objectLocatorCache == NULL)
     return false;
     return false;
+  
   ctkDicomAppHosting::ObjectDescriptor objectDescriptor;
   ctkDicomAppHosting::ObjectDescriptor objectDescriptor;
   ctkDicomAppHosting::Study study;
   ctkDicomAppHosting::Study study;
   ctkDicomAppHosting::Series series;
   ctkDicomAppHosting::Series series;
   ctkDicomAppHosting::Patient patient;
   ctkDicomAppHosting::Patient patient;
   patient.name = dataset.GetElementAsString(DCM_PatientName);
   patient.name = dataset.GetElementAsString(DCM_PatientName);
-qDebug()<<"Patient:  " << patient.name;
+  qDebug()<<"Patient:  " << patient.name;
   patient.id = dataset.GetElementAsString(DCM_PatientID);
   patient.id = dataset.GetElementAsString(DCM_PatientID);
   patient.assigningAuthority = dataset.GetElementAsString(DCM_IssuerOfPatientID);
   patient.assigningAuthority = dataset.GetElementAsString(DCM_IssuerOfPatientID);
   patient.sex = dataset.GetElementAsString(DCM_PatientSex);
   patient.sex = dataset.GetElementAsString(DCM_PatientSex);
@@ -233,13 +290,23 @@ bool addToAvailableData(ctkDicomAppHosting::AvailableData& data,
 {
 {
   QFileInfo fileinfo(filename);
   QFileInfo fileinfo(filename);
   qDebug() << filename << " " << fileinfo.exists();
   qDebug() << filename << " " << fileinfo.exists();
+  
+  
+  QString uri("file:///");
+  uri.append(fileinfo.absoluteFilePath());
 
 
+  //first check if its a non-DICOM file, if so add it first.
+  QString ext = fileinfo.suffix();
+  if ( (ext.compare("txt") == 0) || (ext.compare("xml") ==0) || (ext.compare("jpg") ==0) || (ext.compare("bmp") ==0) || (ext.compare("csv") ==0)|| (ext.compare("nii") ==0))
+  {
+  	  qDebug() << "adding Non DICOM File";
+      return addNonDICOMToAvailableData(data, objectLocatorCache, fileinfo.size(), 0, uri);
+  }
+  //this could be a DICOM file then
   ctkDICOMDataset ctkdataset;
   ctkDICOMDataset ctkdataset;
   ctkdataset.InitializeFromFile(filename, EXS_Unknown, EGL_noChange, 400);
   ctkdataset.InitializeFromFile(filename, EXS_Unknown, EGL_noChange, 400);
 
 
-  QString uri("file:/");
-  uri.append(fileinfo.absoluteFilePath());
   return addToAvailableData(data, objectLocatorCache, ctkdataset, fileinfo.size(), 0, uri);
   return addToAvailableData(data, objectLocatorCache, ctkdataset, fileinfo.size(), 0, uri);
-}
 
 
 }
 }
+}

+ 8 - 0
Plugins/org.commontk.dah.core/ctkDicomAvailableDataHelper.h

@@ -79,4 +79,12 @@ bool org_commontk_dah_core_EXPORT addToAvailableData(ctkDicomAppHosting::Availab
 
 
 }
 }
 
 
+//----------------------------------------------------------------------------
+bool org_commontk_dah_core_EXPORT addNonDICOMToAvailableData(ctkDicomAppHosting::AvailableData& data, 
+                        ctkDicomObjectLocatorCache* objectLocatorCache, 
+                        const ctkDICOMDataset& dataset, 
+                        long length, 
+                        long offset, 
+                        const QString& uri);
+
 #endif // CTKDICOMAVAILABLEDATAHELPER_H
 #endif // CTKDICOMAVAILABLEDATAHELPER_H

+ 6 - 6
Plugins/org.commontk.dah.core/ctkDicomExchangeService.cpp

@@ -45,7 +45,7 @@ bool ctkDicomExchangeService::notifyDataAvailable(
   QList<QtSoapType*> list;
   QList<QtSoapType*> list;
   list << new ctkDicomSoapAvailableData("data", data);
   list << new ctkDicomSoapAvailableData("data", data);
   list << new ctkDicomSoapBool("lastData", lastData);
   list << new ctkDicomSoapBool("lastData", lastData);
-  const QtSoapType & result = submitSoapRequest("notifyDataAvailable",list);
+  const QtSoapType & result = submitSoapRequest("NotifyDataAvailable",list);
   return ctkDicomSoapBool::getBool(result);
   return ctkDicomSoapBool::getBool(result);
 }
 }
 
 
@@ -57,10 +57,10 @@ QList<ctkDicomAppHosting::ObjectLocator> ctkDicomExchangeService::getData(
   //Q_D(ctkDicomService);
   //Q_D(ctkDicomService);
   QList<QtSoapType*> list;
   QList<QtSoapType*> list;
 
 
-  list << new ctkDicomSoapArrayOfUUIDS("objectUUIDS",objectUUIDs);
-  list << new ctkDicomSoapArrayOfStringType("UID","acceptableTransferSyntaxUIDs", acceptableTransferSyntaxUIDs);
+  list << new ctkDicomSoapArrayOfUUIDS("objects",objectUUIDs);
+  list << new ctkDicomSoapArrayOfStringType("UID","acceptableTransferSyntaxes", acceptableTransferSyntaxUIDs);
   list << new ctkDicomSoapBool("includeBulkData", includeBulkData);
   list << new ctkDicomSoapBool("includeBulkData", includeBulkData);
-  const QtSoapType & result = submitSoapRequest("getData",list);
+  const QtSoapType & result = submitSoapRequest("GetData",list);
 //QtSoapType *tt;
 //QtSoapType *tt;
 //  list << (tt=new ctkDicomSoapArrayOfUUIDS("uuids",objectUUIDs));
 //  list << (tt=new ctkDicomSoapArrayOfUUIDS("uuids",objectUUIDs));
 extern void DumpAll(const QtSoapType& type, int indent=0);
 extern void DumpAll(const QtSoapType& type, int indent=0);
@@ -78,7 +78,7 @@ void ctkDicomExchangeService::releaseData(const QList<QUuid>& objectUUIDs)
 {
 {
   QList<QtSoapType*> list;
   QList<QtSoapType*> list;
 
 
-  list << new ctkDicomSoapArrayOfUUIDS("objectUUIDS",objectUUIDs);
-   submitSoapRequest("releaseData",list);
+  list << new ctkDicomSoapArrayOfUUIDS("objects",objectUUIDs);
+   submitSoapRequest("ReleaseData",list);
   return;
   return;
 }
 }

+ 14 - 10
Plugins/org.commontk.dah.core/ctkExchangeSoapMessageProcessor.cpp

@@ -24,6 +24,9 @@
 
 
 #include <ctkDicomAppHostingTypesHelper.h>
 #include <ctkDicomAppHostingTypesHelper.h>
 
 
+#include <QFile>
+#include <QTextStream>
+
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 ctkExchangeSoapMessageProcessor::ctkExchangeSoapMessageProcessor(ctkDicomExchangeInterface* inter)
 ctkExchangeSoapMessageProcessor::ctkExchangeSoapMessageProcessor(ctkDicomExchangeInterface* inter)
 : exchangeInterface(inter)
 : exchangeInterface(inter)
@@ -42,17 +45,17 @@ bool ctkExchangeSoapMessageProcessor::process(
 
 
   bool foundMethod = false;
   bool foundMethod = false;
 
 
-  if (methodName == "notifyDataAvailable")
+  if (methodName == "NotifyDataAvailable")
     {
     {
     processNotifyDataAvailable(message, reply);
     processNotifyDataAvailable(message, reply);
     foundMethod = true;
     foundMethod = true;
     }
     }
-  else if (methodName == "getData")
+  else if (methodName == "GetData")
     {
     {
     processGetData(message, reply);
     processGetData(message, reply);
     foundMethod = true;
     foundMethod = true;
     }
     }
-  else if (methodName == "releaseData")
+  else if (methodName == "ReleaseData")
     {
     {
     processReleaseData(message, reply);
     processReleaseData(message, reply);
     foundMethod = true;
     foundMethod = true;
@@ -80,8 +83,8 @@ void ctkExchangeSoapMessageProcessor::processNotifyDataAvailable(
   // query interface
   // query interface
   bool result = exchangeInterface->notifyDataAvailable(data, lastData);
   bool result = exchangeInterface->notifyDataAvailable(data, lastData);
   // set reply message
   // set reply message
-  reply->setMethod("notifyDataAvailable");
-  QtSoapType* resultType = new ctkDicomSoapBool("dataAvailable",result);
+  reply->setMethod("NotifyDataAvailableResponse");
+  QtSoapType* resultType = new ctkDicomSoapBool("NotifyDataAvailableResult",result);
   reply->addMethodArgument(resultType);
   reply->addMethodArgument(resultType);
 }
 }
 
 
@@ -90,9 +93,9 @@ void ctkExchangeSoapMessageProcessor::processGetData(
     const QtSoapMessage &message, QtSoapMessage *reply) const
     const QtSoapMessage &message, QtSoapMessage *reply) const
 {
 {
   // extract arguments from input message
   // extract arguments from input message
-  const QtSoapType& inputType = message.method()["objectUUIDs"];
+  const QtSoapType& inputType = message.method()["objects"];
   const QList<QUuid> objectUUIDs = ctkDicomSoapArrayOfUUIDS::getArray(inputType);
   const QList<QUuid> objectUUIDs = ctkDicomSoapArrayOfUUIDS::getArray(inputType);
-  const QtSoapType& inputType2 = message.method()["acceptableTransferSyntaxUIDs"];
+  const QtSoapType& inputType2 = message.method()["acceptableTransferSyntaxes"];
   const QStringList acceptableTransferSyntaxUIDs = ctkDicomSoapArrayOfStringType::getArray(inputType2);
   const QStringList acceptableTransferSyntaxUIDs = ctkDicomSoapArrayOfStringType::getArray(inputType2);
   const QtSoapType& inputType3 = message.method()["includeBulkData"];
   const QtSoapType& inputType3 = message.method()["includeBulkData"];
   const bool includeBulkData = ctkDicomSoapBool::getBool(inputType3);
   const bool includeBulkData = ctkDicomSoapBool::getBool(inputType3);
@@ -100,8 +103,9 @@ void ctkExchangeSoapMessageProcessor::processGetData(
   const QList<ctkDicomAppHosting::ObjectLocator> result = exchangeInterface->getData(
   const QList<ctkDicomAppHosting::ObjectLocator> result = exchangeInterface->getData(
     objectUUIDs, acceptableTransferSyntaxUIDs, includeBulkData);
     objectUUIDs, acceptableTransferSyntaxUIDs, includeBulkData);
   // set reply message
   // set reply message
-  reply->setMethod("getData");
-  QtSoapType* resultType = new ctkDicomSoapArrayOfObjectLocators("arrayOfObjectLocator", result);
+  reply->setMethod(QtSoapQName("GetDataResponse","http://dicom.nema.org/PS3.19/ApplicationService-20100825"));
+  //reply->setMethod(QtSoapQName("GetDataResponse","http://dicom.nema.org/PS3.19/HostService-20100825"));
+  QtSoapType* resultType = new ctkDicomSoapArrayOfObjectLocators("GetDataResult", result);
   reply->addMethodArgument(resultType);
   reply->addMethodArgument(resultType);
 }
 }
 
 
@@ -110,7 +114,7 @@ void ctkExchangeSoapMessageProcessor::processReleaseData(
     const QtSoapMessage &message, QtSoapMessage * /*reply*/) const
     const QtSoapMessage &message, QtSoapMessage * /*reply*/) const
 {
 {
   // extract arguments from input message
   // extract arguments from input message
-  const QtSoapType& inputType = message.method()["objectUUIDs"];
+  const QtSoapType& inputType = message.method()["objects"];
   const QList<QUuid> objectUUIDs = ctkDicomSoapArrayOfUUIDS::getArray(
   const QList<QUuid> objectUUIDs = ctkDicomSoapArrayOfUUIDS::getArray(
     dynamic_cast<const QtSoapArray&>(inputType));
     dynamic_cast<const QtSoapArray&>(inputType));
   // query interface
   // query interface

+ 7 - 2
Plugins/org.commontk.dah.core/ctkSimpleSoapClient.cpp

@@ -82,9 +82,12 @@ const QtSoapType & ctkSimpleSoapClient::submitSoapRequest(const QString& methodN
 {
 {
   Q_D(ctkSimpleSoapClient);
   Q_D(ctkSimpleSoapClient);
 
 
-  QString action="\"";
+  /*QString action="\"";
   //action.append(methodName);
   //action.append(methodName);
   action.append("\"");
   action.append("\"");
+  d->Http.setAction(action);*/
+  QString action = "http://dicom.nema.org/PS3.19/IHostService/" + methodName;
+
   d->Http.setAction(action);
   d->Http.setAction(action);
 
 
   CTK_SOAP_LOG( << "Submitting action " << action
   CTK_SOAP_LOG( << "Submitting action " << action
@@ -92,7 +95,8 @@ const QtSoapType & ctkSimpleSoapClient::submitSoapRequest(const QString& methodN
                 << " to path " << d->Path );
                 << " to path " << d->Path );
 
 
   QtSoapMessage request;
   QtSoapMessage request;
-  request.setMethod(QtSoapQName(methodName,"http://wg23.dicom.nema.org/"));
+  //request.setMethod(QtSoapQName(methodName,"http://wg23.dicom.nema.org/"));
+  request.setMethod(QtSoapQName(methodName,"http://dicom.nema.org/PS3.19" + d->Path ));
   if(!soapTypes.isEmpty())
   if(!soapTypes.isEmpty())
     {
     {
     for (QList<QtSoapType*>::ConstIterator it = soapTypes.begin();
     for (QList<QtSoapType*>::ConstIterator it = soapTypes.begin();
@@ -103,6 +107,7 @@ const QtSoapType & ctkSimpleSoapClient::submitSoapRequest(const QString& methodN
                     << " Argument name is " << (*it)->name().name() );
                     << " Argument name is " << (*it)->name().name() );
       }
       }
     }
     }
+  CTK_SOAP_LOG_LOWLEVEL( << "Submitting request " << methodName);
   CTK_SOAP_LOG_LOWLEVEL( << request.toXmlString());
   CTK_SOAP_LOG_LOWLEVEL( << request.toXmlString());
 
 
   d->Http.submitRequest(request, d->Path);;
   d->Http.submitRequest(request, d->Path);;

+ 12 - 6
Plugins/org.commontk.dah.core/ctkSoapLog.h

@@ -22,13 +22,19 @@
 #ifndef CTKSOAPLOG_H
 #ifndef CTKSOAPLOG_H
 #define CTKSOAPLOG_H
 #define CTKSOAPLOG_H
 
 
-//#define CTK_SOAP_LOG_LOWLEVEL(msg) qDebug() msg;
-#define CTK_SOAP_LOG_LOWLEVEL(msg)
+#define CTK_SOAP_LOG_LOWLEVEL(msg) qDebug() msg;
+//#define CTK_SOAP_LOG_LOWLEVEL(msg)
 
 
-//#define CTK_SOAP_LOG(msg) qDebug() msg;
-#define CTK_SOAP_LOG(msg)
+#define CTK_SOAP_LOG(msg) qDebug() msg;
+//#define CTK_SOAP_LOG(msg)
 
 
-//#define CTK_SOAP_LOG_HIGHLEVEL(msg) qDebug() msg;
-#define CTK_SOAP_LOG_HIGHLEVEL(msg)
+#define CTK_SOAP_LOG_HIGHLEVEL(msg) qDebug() msg;
+//#define CTK_SOAP_LOG_HIGHLEVEL(msg)
+
+//#define CTK_SOAP_LOG_REQUEST(msg) 
+#define CTK_SOAP_LOG_REQUEST(msg) qDebug() msg;
+
+#define CTK_SOAP_LOG_RECEPTION(msg) qDebug() msg;
+//#define CTK_SOAP_LOG_RECEPTION(msg)
 
 
 #endif // CTKSOAPLOG_H
 #endif // CTKSOAPLOG_H

+ 1 - 1
Plugins/org.commontk.dah.exampleapp/ctkExampleDicomAppLogic.cpp

@@ -228,7 +228,7 @@ void ctkExampleDicomAppLogic::buttonClicked()
     qDebug() << "URI: " << locators.begin()->URI;
     qDebug() << "URI: " << locators.begin()->URI;
     QString filename = locators.begin()->URI;
     QString filename = locators.begin()->URI;
     if(filename.startsWith("file:/",Qt::CaseInsensitive))
     if(filename.startsWith("file:/",Qt::CaseInsensitive))
-      filename=filename.remove(0,6);
+      filename=filename.remove(0,8);
     qDebug()<<filename;
     qDebug()<<filename;
     DicomImage dcmtkImage(filename.toLatin1().data());
     DicomImage dcmtkImage(filename.toLatin1().data());
     ctkDICOMImage ctkImage(&dcmtkImage);
     ctkDICOMImage ctkImage(&dcmtkImage);

+ 10 - 10
Plugins/org.commontk.dah.host/ctkDicomAbstractHost.cpp

@@ -53,16 +53,16 @@ ctkDicomAbstractHostPrivate::ctkDicomAbstractHostPrivate(
 {
 {
   // start server
   // start server
   if (this->HostPort == 0)
   if (this->HostPort == 0)
-    {
+  {
     this->HostPort = 8080;
     this->HostPort = 8080;
-    }
+  }
   if (this->AppPort == 0)
   if (this->AppPort == 0)
-    {
+  {
     this->AppPort = 8081;
     this->AppPort = 8081;
-    }
+  }
 
 
-  this->Server = new ctkDicomHostServer(hostInterface,hostPort);
-  this->AppService = new ctkDicomAppService(appPort, "/ApplicationInterface");
+  this->Server = new ctkDicomHostServer(hostInterface, hostPort, "/HostService-20100825");
+  this->AppService = new ctkDicomAppService(appPort, "/ApplicationService-20100825"); //ApplicationInterface
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -133,14 +133,14 @@ ctkDicomObjectLocatorCache* ctkDicomAbstractHost::objectLocatorCache()const
 bool ctkDicomAbstractHost::publishData(const ctkDicomAppHosting::AvailableData& availableData, bool lastData)
 bool ctkDicomAbstractHost::publishData(const ctkDicomAppHosting::AvailableData& availableData, bool lastData)
 {
 {
   if (!this->objectLocatorCache()->isCached(availableData))
   if (!this->objectLocatorCache()->isCached(availableData))
-    {
+  {
     return false;
     return false;
-    }
+  }
   bool success = this->getDicomAppService()->notifyDataAvailable(availableData, lastData);
   bool success = this->getDicomAppService()->notifyDataAvailable(availableData, lastData);
   if(!success)
   if(!success)
-    {
+  {
     return false;
     return false;
-    }
+  }
   return true;
   return true;
 }
 }
 
 

+ 3 - 3
Plugins/org.commontk.dah.host/ctkDicomAbstractHost.h

@@ -48,7 +48,7 @@ class org_commontk_dah_host_EXPORT ctkDicomAbstractHost : public QObject, public
 public:
 public:
 
 
   /**
   /**
-   * @brief Starts the soap sever on the specified port or choose port automatically.
+   * @brief Starts the soap server on the specified port or choose port automatically.
    *
    *
    * @param hostPort
    * @param hostPort
    * @param appPort
    * @param appPort
@@ -93,7 +93,7 @@ public:
    *
    *
    * @return ctkDicomAppHosting::State
    * @return ctkDicomAppHosting::State
   */
   */
-  ctkDicomAppHosting::State getApplicationState()const;
+  ctkDicomAppHosting::State getApplicationState() const;
 
 
   /**
   /**
    * @brief Gets the application service in order to call methods on the hosted app.
    * @brief Gets the application service in order to call methods on the hosted app.
@@ -120,7 +120,7 @@ public:
    *
    *
    * @return ctkDicomObjectLocatorCache *
    * @return ctkDicomObjectLocatorCache *
   */
   */
-  ctkDicomObjectLocatorCache* objectLocatorCache()const;
+  ctkDicomObjectLocatorCache* objectLocatorCache() const;
 
 
   /**
   /**
    * @brief
    * @brief

+ 7 - 6
Plugins/org.commontk.dah.host/ctkDicomAppService.cpp

@@ -39,24 +39,25 @@ ctkDicomAppService::~ctkDicomAppService()
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 ctkDicomAppHosting::State ctkDicomAppService::getState()
 ctkDicomAppHosting::State ctkDicomAppService::getState()
 {
 {
-  const QtSoapType & result = submitSoapRequest("getState", NULL);
+  const QtSoapType & result = submitSoapRequest("GetState", NULL);
   return ctkDicomSoapState::getState(result);
   return ctkDicomSoapState::getState(result);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 bool ctkDicomAppService::setState(ctkDicomAppHosting::State newState)
 bool ctkDicomAppService::setState(ctkDicomAppHosting::State newState)
 {
 {
-  QtSoapType* input = new ctkDicomSoapState("newState", newState);
-  const QtSoapType & result = submitSoapRequest("setState", input);
+  QtSoapType* input = new ctkDicomSoapState("state", newState);
+  const QtSoapType & result = submitSoapRequest("SetState", input);
   return ctkDicomSoapBool::getBool(result);
   return ctkDicomSoapBool::getBool(result);
+
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 bool ctkDicomAppService::bringToFront(const QRect& requestedScreenArea)
 bool ctkDicomAppService::bringToFront(const QRect& requestedScreenArea)
 {
 {
-  QtSoapType* input = new ctkDicomSoapRectangle("requestedScreenArea", requestedScreenArea);
-  const QtSoapType & result = submitSoapRequest("bringToFront", input);
-  return ctkDicomSoapBool::getBool(result);
+  QtSoapType* input = new ctkDicomSoapRectangle("RequestedScreenArea", requestedScreenArea);
+  const QtSoapType & result = submitSoapRequest("BringToFront", input);
+  return ctkDicomSoapBool::getBool(result);	
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------

+ 2 - 2
Plugins/org.commontk.dah.host/ctkDicomHostServer.cpp

@@ -24,8 +24,8 @@
 #include "ctkDicomHostServerPrivate.h"
 #include "ctkDicomHostServerPrivate.h"
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-ctkDicomHostServer::ctkDicomHostServer(ctkDicomHostInterface* hostInterface, int port)
-  : d_ptr(new ctkDicomHostServerPrivate(hostInterface, port))
+ctkDicomHostServer::ctkDicomHostServer(ctkDicomHostInterface* hostInterface, int port, QString path)
+  : d_ptr(new ctkDicomHostServerPrivate(hostInterface, port, path))
 {
 {
 
 
 }
 }

+ 1 - 1
Plugins/org.commontk.dah.host/ctkDicomHostServer.h

@@ -35,7 +35,7 @@ class org_commontk_dah_host_EXPORT ctkDicomHostServer
 
 
 public:
 public:
 
 
-  ctkDicomHostServer(ctkDicomHostInterface* hostInterface, int port);
+  ctkDicomHostServer(ctkDicomHostInterface* hostInterface, int port, QString path);
   virtual ~ctkDicomHostServer();
   virtual ~ctkDicomHostServer();
 
 
 private:
 private:

+ 9 - 8
Plugins/org.commontk.dah.host/ctkDicomHostServerPrivate.cpp

@@ -34,8 +34,8 @@
 #include <stdexcept>
 #include <stdexcept>
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-ctkDicomHostServerPrivate::ctkDicomHostServerPrivate(ctkDicomHostInterface* hostInterface, int port) :
-    Port(port), HostInterface(hostInterface)
+ctkDicomHostServerPrivate::ctkDicomHostServerPrivate(ctkDicomHostInterface* hostInterface, int port, QString path) :
+    Port(port), Path(path), HostInterface(hostInterface)
 {
 {
   connect(&this->Server, SIGNAL(incomingSoapMessage(QtSoapMessage,QtSoapMessage*)),
   connect(&this->Server, SIGNAL(incomingSoapMessage(QtSoapMessage,QtSoapMessage*)),
           this, SLOT(incomingSoapMessage(QtSoapMessage,QtSoapMessage*)));
           this, SLOT(incomingSoapMessage(QtSoapMessage,QtSoapMessage*)));
@@ -43,9 +43,9 @@ ctkDicomHostServerPrivate::ctkDicomHostServerPrivate(ctkDicomHostInterface* host
           this, SLOT(incomingWSDLMessage(QString,QString*)));
           this, SLOT(incomingWSDLMessage(QString,QString*)));
 
 
   if (!this->Server.listen(QHostAddress::LocalHost, this->Port))
   if (!this->Server.listen(QHostAddress::LocalHost, this->Port))
-    {
+  {
     qCritical() << "Listening to 127.0.0.1:" << this->Port << " failed.";
     qCritical() << "Listening to 127.0.0.1:" << this->Port << " failed.";
-    }
+  }
 
 
   ctkHostSoapMessageProcessor* hostProcessor = new ctkHostSoapMessageProcessor( hostInterface );
   ctkHostSoapMessageProcessor* hostProcessor = new ctkHostSoapMessageProcessor( hostInterface );
   this->Processors.push_back(hostProcessor);
   this->Processors.push_back(hostProcessor);
@@ -59,22 +59,23 @@ void ctkDicomHostServerPrivate::incomingWSDLMessage(
 {
 {
   if (message == "?wsdl")
   if (message == "?wsdl")
     {
     {
-    QFile wsdlfile(":/dah/HostService.wsdl");
+    QFile wsdlfile(":/dah/HostService-20100825.wsdl");
     wsdlfile.open(QFile::ReadOnly | QFile::Text);
     wsdlfile.open(QFile::ReadOnly | QFile::Text);
     if(wsdlfile.isOpen())
     if(wsdlfile.isOpen())
       {
       {
       QTextStream textstream(&wsdlfile);
       QTextStream textstream(&wsdlfile);
       *reply = textstream.readAll();
       *reply = textstream.readAll();
       QString actualURL="http://localhost:";
       QString actualURL="http://localhost:";
-      actualURL+=QString::number(this->Port)+"/HostInterface"; // FIXME: has to be replaced by url provided by host
+      //actualURL+=QString::number(this->Port)+"/HostInterface"; // FIXME: has to be replaced by url provided by host
+	  actualURL+=QString::number(this->Port)+Path; 
       reply->replace("REPLACE_WITH_ACTUAL_URL",actualURL);
       reply->replace("REPLACE_WITH_ACTUAL_URL",actualURL);
-      reply->replace("HostService_schema1.xsd",actualURL+"?xsd=1");
+      reply->replace("HostService-20100825.xsd",actualURL+"?xsd=1");
       //reply->replace("<soap:body use=\"literal\"/>","<soap:body use=\"literal\"></soap:body>");
       //reply->replace("<soap:body use=\"literal\"/>","<soap:body use=\"literal\"></soap:body>");
       }
       }
     }
     }
   else if (message == "?xsd=1")
   else if (message == "?xsd=1")
     {
     {
-    QFile wsdlfile(":/dah/HostService_schema1.xsd");
+    QFile wsdlfile(":/dah/HostService-20100825.xsd");
     wsdlfile.open(QFile::ReadOnly | QFile::Text);
     wsdlfile.open(QFile::ReadOnly | QFile::Text);
     if(wsdlfile.isOpen())
     if(wsdlfile.isOpen())
       {
       {

+ 2 - 1
Plugins/org.commontk.dah.host/ctkDicomHostServerPrivate.h

@@ -35,10 +35,11 @@ class ctkDicomHostServerPrivate : public QObject
   Q_OBJECT
   Q_OBJECT
 
 
 public:
 public:
-  ctkDicomHostServerPrivate(ctkDicomHostInterface* hostInterface, int port);
+  ctkDicomHostServerPrivate(ctkDicomHostInterface* hostInterface, int port, QString path);
 
 
   ctkSimpleSoapServer Server;
   ctkSimpleSoapServer Server;
   int Port;
   int Port;
+  QString Path;
 
 
 public slots:
 public slots:
 
 

+ 31 - 14
Plugins/org.commontk.dah.host/ctkHostSoapMessageProcessor.cpp

@@ -41,27 +41,27 @@ bool ctkHostSoapMessageProcessor::process(
 
 
   bool foundMethod = false;
   bool foundMethod = false;
   
   
-  if (methodName == "getAvailableScreen")
+  if (methodName == "GetAvailableScreen")
     {
     {
     processGetAvailableScreen(message, reply);
     processGetAvailableScreen(message, reply);
     foundMethod = true;
     foundMethod = true;
     }
     }
-  else if (methodName == "notifyStateChanged")
+  else if (methodName == "NotifyStateChanged")
     {
     {
     processNotifyStateChanged(message, reply);
     processNotifyStateChanged(message, reply);
     foundMethod = true;
     foundMethod = true;
     }
     }
-  else if (methodName == "notifyStatus")
+  else if (methodName == "NotifyStatus")
     {
     {
     processNotifyStatus(message, reply);
     processNotifyStatus(message, reply);
     foundMethod = true;
     foundMethod = true;
     }
     }
-  else if (methodName == "generateUID")
+  else if (methodName == "GenerateUID")
     {
     {
     processGenerateUID(message, reply);
     processGenerateUID(message, reply);
     foundMethod = true;
     foundMethod = true;
     }
     }
-  else if (methodName == "getOutputLocation")
+  else if (methodName == "GetOutputLocation")
     {
     {
     processGetOutputLocation(message, reply);
     processGetOutputLocation(message, reply);
     foundMethod = true;
     foundMethod = true;
@@ -75,36 +75,48 @@ void ctkHostSoapMessageProcessor::processGetAvailableScreen(
     const QtSoapMessage &message, QtSoapMessage *reply) const
     const QtSoapMessage &message, QtSoapMessage *reply) const
 {
 {
   // extract arguments from input message
   // extract arguments from input message
-  const QtSoapType& inputType = message.method()["preferredScreen"];
+  const QtSoapType& inputType = message.method()["PreferredScreen"];
   const QRect preferredScreen = ctkDicomSoapRectangle::getQRect(inputType);
   const QRect preferredScreen = ctkDicomSoapRectangle::getQRect(inputType);
   // query interface
   // query interface
   const QRect result = this->HostInterface->getAvailableScreen(preferredScreen);
   const QRect result = this->HostInterface->getAvailableScreen(preferredScreen);
   // set reply message
   // set reply message
-  reply->setMethod("getAvailableScreenResponse");
-  QtSoapStruct* returnType = new ctkDicomSoapRectangle("availableScreen",result);
+  reply->setMethod("GetAvailableScreenResponse");
+  QtSoapStruct* returnType = new ctkDicomSoapRectangle("AvailableScreen",result);
   reply->addMethodArgument(returnType);
   reply->addMethodArgument(returnType);
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void ctkHostSoapMessageProcessor::processNotifyStateChanged(
 void ctkHostSoapMessageProcessor::processNotifyStateChanged(
-    const QtSoapMessage &message, QtSoapMessage * /* reply */) const
+    const QtSoapMessage &message, QtSoapMessage *reply) const
 {
 {
   // extract arguments from input message
   // extract arguments from input message
   const QtSoapType& inputType = message.method()[0];//["state"]; java sends ["newState"]; FIX JAVA/STANDARD
   const QtSoapType& inputType = message.method()[0];//["state"]; java sends ["newState"]; FIX JAVA/STANDARD
   // query interface
   // query interface
   this->HostInterface->notifyStateChanged(ctkDicomSoapState::getState(inputType));
   this->HostInterface->notifyStateChanged(ctkDicomSoapState::getState(inputType));
   // set reply message: nothing to be done
   // set reply message: nothing to be done
+
+  /*bool result = true;
+  reply->setMethod("NotifyStateChanged");
+  QtSoapType* resultType = new ctkDicomSoapBool("NotifyStateChangedResponse",result);
+  reply->addMethodArgument(resultType);*/
+
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 void ctkHostSoapMessageProcessor::processNotifyStatus(
 void ctkHostSoapMessageProcessor::processNotifyStatus(
-    const QtSoapMessage &message, QtSoapMessage * /* reply */) const
+    const QtSoapMessage &message, QtSoapMessage *reply) const
 {
 {
   // extract arguments from input message
   // extract arguments from input message
   const QtSoapType& inputType = message.method()["status"];
   const QtSoapType& inputType = message.method()["status"];
   // query interface
   // query interface
   this->HostInterface->notifyStatus(ctkDicomSoapStatus::getStatus(inputType));
   this->HostInterface->notifyStatus(ctkDicomSoapStatus::getStatus(inputType));
   // set reply message: nothing to be done
   // set reply message: nothing to be done
+	
+  /*bool result = true;
+  reply->setMethod("NotifyStatus");
+  QtSoapType* resultType = new ctkDicomSoapBool("NotifyStatusResponse",result);
+  reply->addMethodArgument(resultType);*/
+
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -116,7 +128,7 @@ void ctkHostSoapMessageProcessor::processGenerateUID(
   // query interface
   // query interface
   const QString uid = this->HostInterface->generateUID();
   const QString uid = this->HostInterface->generateUID();
   // set reply message
   // set reply message
-  reply->setMethod("generateUID");
+  reply->setMethod("GenerateUID");
   QtSoapType* resultType = new ctkDicomSoapUID("uid",uid);
   QtSoapType* resultType = new ctkDicomSoapUID("uid",uid);
   reply->addMethodArgument(resultType);
   reply->addMethodArgument(resultType);
 }
 }
@@ -126,13 +138,18 @@ void ctkHostSoapMessageProcessor::processGetOutputLocation(
   const QtSoapMessage& message, QtSoapMessage* reply) const
   const QtSoapMessage& message, QtSoapMessage* reply) const
 {
 {
   // extract arguments from input message
   // extract arguments from input message
+  //const QtSoapType& inputType = message.method()["preferredProtocols"];
+  //const QStringList preferredProtocols = ctkDicomSoapArrayOfStringType::getArray(
+    //dynamic_cast<const QtSoapArray&>(inputType));
+
   const QtSoapType& inputType = message.method()["preferredProtocols"];
   const QtSoapType& inputType = message.method()["preferredProtocols"];
-  const QStringList preferredProtocols = ctkDicomSoapArrayOfStringType::getArray(
-    dynamic_cast<const QtSoapArray&>(inputType));
+  const QStringList preferredProtocols = ctkDicomSoapArrayOfStringType::getArray(inputType);
+
+
   // query interface
   // query interface
   const QString result = this->HostInterface->getOutputLocation(preferredProtocols);
   const QString result = this->HostInterface->getOutputLocation(preferredProtocols);
   // set reply message
   // set reply message
-  reply->setMethod("getOutputLocation");
+  reply->setMethod("GetOutputLocation");
   QtSoapType* resultType = new QtSoapSimpleType( QtSoapQName("preferredProtocols"), result );
   QtSoapType* resultType = new QtSoapSimpleType( QtSoapQName("preferredProtocols"), result );
   reply->addMethodArgument(resultType);
   reply->addMethodArgument(resultType);
 }
 }