Browse Source

Added ObjectLocator arrays

Benoît Bleuzé 15 years ago
parent
commit
4047d8941e

+ 1 - 1
Plugins/org.commontk.dicom.wg23.core/ctkDicomExchangeInterface.h

@@ -40,7 +40,7 @@ public:
 
   virtual bool notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData)=0;
 
-  virtual QList<ctkDicomWG23::ObjectLocator> getData(QList<QUuid> objectUUIDs, QList<QString> acceptableTransferSyntaxUIDs, bool includeBulkData) = 0;
+  virtual QList<ctkDicomWG23::ObjectLocator> *getData(QList<QUuid> objectUUIDs, QList<QString> acceptableTransferSyntaxUIDs, bool includeBulkData) = 0;
 
   //    8.3.3 getAsModels(objectUUIDs : ArrayOfUUID, classUID : UID, supportedInfosetTypes : ArrayOfMimeType) : ModelSetDescriptor	33
 //    8.3.4 queryModel(models : ArrayOfUUID, xpaths : ArrayOfString) : ArrayOfQueryResult	34

+ 2 - 3
Plugins/org.commontk.dicom.wg23.core/ctkDicomExchangeService.cpp

@@ -48,7 +48,7 @@ bool ctkDicomExchangeService::notifyDataAvailable(
 
 
 
-QList<ctkDicomWG23::ObjectLocator> ctkDicomExchangeService::getData(
+QList<ctkDicomWG23::ObjectLocator>* ctkDicomExchangeService::getData(
         QList<QUuid> objectUUIDs,
         QList<QString> acceptableTransferSyntaxUIDs, bool includeBulkData){
 
@@ -59,8 +59,7 @@ QList<ctkDicomWG23::ObjectLocator> ctkDicomExchangeService::getData(
     list << new ctkDicomSoapArrayOfStringType("UID","acceptableTransferSyntaxUIDs", acceptableTransferSyntaxUIDs);
     list << new ctkDicomSoapBool("includeBulkData", includeBulkData);
     const QtSoapType & result = d->askHost("getData",list);
-    QList<ctkDicomWG23::ObjectLocator>t;
-    return t;//ctkDicomSoapObjectLocator::getArrayOfObjectLocator(result);
+    return ctkDicomSoapArrayOfObjectLocators::getArray(static_cast<const QtSoapArray &>(result));
 }
 
 void ctkDicomExchangeService::releaseData(QList<QUuid> objectUUIDs){

+ 1 - 1
Plugins/org.commontk.dicom.wg23.core/ctkDicomExchangeService.h

@@ -37,7 +37,7 @@ public:
   ~ctkDicomExchangeService();
 
   bool notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData);
-  QList<ctkDicomWG23::ObjectLocator> getData(QList<QUuid> objectUUIDs,
+  QList<ctkDicomWG23::ObjectLocator> *getData(QList<QUuid> objectUUIDs,
                                              QList<QString> acceptableTransferSyntaxUIDs, bool includeBulkData);
   void releaseData(QList<QUuid> objectUUIDs);
 

+ 25 - 0
Plugins/org.commontk.dicom.wg23.core/ctkDicomWG23TypesHelper.h

@@ -475,4 +475,29 @@ public:
 };
 
 
+class ctkDicomSoapArrayOfObjectLocators : public QtSoapArray{
+    public:
+    ctkDicomSoapArrayOfObjectLocators ( const QString & name, const QList<ctkDicomWG23::ObjectLocator> &array):
+            QtSoapArray ( QtSoapQName(name),QtSoapType::String,
+                          array.size()){
+
+        for (QList<ctkDicomWG23::ObjectLocator>::ConstIterator it = array.constBegin();
+                it < array.constEnd(); it++){
+                    this->append(new ctkDicomSoapObjectLocator("objectLocator",(*it)));
+        }
+    };
+
+    static QList<ctkDicomWG23::ObjectLocator>* getArray(const QtSoapArray& array){
+        QList<ctkDicomWG23::ObjectLocator> * list = new QList<ctkDicomWG23::ObjectLocator>();
+
+        for (int i = 0; i < array.count() ; i++ ){
+            const ctkDicomWG23::ObjectLocator ol =
+                    ctkDicomSoapObjectLocator::getObjectLocator(array.at(i));
+            list->append(ol);
+        }
+        return list;
+    };
+
+};
+
 #endif

+ 1 - 1
Plugins/org.commontk.dicom.wg23.core/ctkExchangeSoapMessageProcessor.cpp

@@ -88,7 +88,7 @@ void ctkExchangeSoapMessageProcessor::processGetData(
   const QtSoapType& inputType3 = message.method()["includeBulkData"];
   const bool includeBulkData = ctkDicomSoapBool::getBool(inputType3);
   // query interface
-  const QList<ctkDicomWG23::ObjectLocator> result = exchangeInterface->getData(
+  const QList<ctkDicomWG23::ObjectLocator>* result = exchangeInterface->getData(
     *objectUUIDs, *acceptableTransferSyntaxUIDs, includeBulkData);
   // set reply message
   reply->setMethod("getData");