From 4be81e47e9a802cff9580757ae9a9e6b0e086233 Mon Sep 17 00:00:00 2001
From: "Barbara B. Frosik" <bfrosik@aps.anl.gov>
Date: Fri, 18 Sep 2015 19:37:56 +0000
Subject: [PATCH] added optional daqInfo parameter and encoded name and
 directory in startDaq protocol

---
 src/python/dm/daq_web_service/api/experimentRestApi.py   | 7 ++++---
 .../service/experimentSessionController.py               | 7 ++++++-
 .../service/impl/experimentSessionControllerImpl.py      | 9 +++++----
 .../dm/esafsync/serviceconn/DaqServiceConnection.java    | 4 ++--
 4 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/python/dm/daq_web_service/api/experimentRestApi.py b/src/python/dm/daq_web_service/api/experimentRestApi.py
index cbdc2dc6..f6cca3a4 100755
--- a/src/python/dm/daq_web_service/api/experimentRestApi.py
+++ b/src/python/dm/daq_web_service/api/experimentRestApi.py
@@ -23,9 +23,10 @@ class ExperimentRestApi(DaqRestApi):
             raise InvalidRequest('Experiment data directory must be provided.')
         daqInfo['experimentName'] = experimentName
         daqInfo['dataDirectory'] = dataDirectory
-        print json.dumps(daqInfo)
-        url += '?experimentName=%s' % experimentName
-        url += '&dataDirectory=%s' % dataDirectory
+        #print json.dumps(daqInfo)
+        url += '?experimentName=%s' % Encoder.encode(experimentName)
+        url += '&dataDirectory=%s' % Encoder.encode(dataDirectory)
+        url += '&daqInfo=%s' % (Encoder.encode(json.dumps(daqInfo)))
         responseDict = self.sendSessionRequest(url=url, method='POST')
         return Experiment(responseDict)
 
diff --git a/src/python/dm/daq_web_service/service/experimentSessionController.py b/src/python/dm/daq_web_service/service/experimentSessionController.py
index 7139e3d0..5e348959 100755
--- a/src/python/dm/daq_web_service/service/experimentSessionController.py
+++ b/src/python/dm/daq_web_service/service/experimentSessionController.py
@@ -23,10 +23,15 @@ class ExperimentSessionController(DmSessionController):
 	experimentName = kwargs.get('experimentName')
 	if experimentName is None or not len(experimentName):
 	    raise InvalidRequest('Missing experiment name.')
+        experimentName = Encoder.decode(experimentName)
 	dataDirectory = kwargs.get('dataDirectory')
 	if dataDirectory is None or not len(dataDirectory):
 	    raise InvalidRequest('Missing data directory.')
-        response = self.experimentSessionControllerImpl.startDaq(experimentName, dataDirectory).getFullJsonRep()
+        dataDirectory = Encoder.decode(dataDirectory)
+        daqInfo = kwargs.get('daqInfo')
+        if daqInfo is not None:
+            daqInfo = Encoder.decode(daqInfo)
+        response = self.experimentSessionControllerImpl.startDaq(experimentName, dataDirectory, daqInfo).getFullJsonRep()
         self.logger.debug('Returning: %s' % response)
         return response
 
diff --git a/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py b/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py
index 99ee8d36..1c73e3aa 100755
--- a/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py
+++ b/src/python/dm/daq_web_service/service/impl/experimentSessionControllerImpl.py
@@ -23,10 +23,11 @@ class ExperimentSessionControllerImpl(DmObjectManager):
         DmObjectManager.__init__(self)
         self.dsExperimentApi = DsRestApiFactory.getExperimentRestApi()
 
-    def startDaq(self, experimentName, dataDirectory):
-        daqInfo={}
-	daqInfo['experimentName'] = experimentName
-	daqInfo['dataDirectory'] = dataDirectory
+    def startDaq(self, experimentName, dataDirectory, daqInfo):
+        if daqInfo is None:
+           daqInfo={}
+	   daqInfo['experimentName'] = experimentName
+	   daqInfo['dataDirectory'] = dataDirectory
         experiment = ExperimentTracker.getInstance().get(experimentName)
         if experiment is not None:
             oldDaqInfo = experiment.get('daqInfo')
diff --git a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/DaqServiceConnection.java b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/DaqServiceConnection.java
index bc62267f..2e096277 100644
--- a/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/DaqServiceConnection.java
+++ b/tools/ExperimentSynchronizer/src/gov/anl/dm/esafsync/serviceconn/DaqServiceConnection.java
@@ -40,8 +40,8 @@ public class DaqServiceConnection extends ServiceConnection{
 		}
 		
     	Map<String, String> data = new HashMap<>();
-    	data.put(Keyword.DAQ_EXPERIMENT_NAME, experimentName);
-    	data.put(Keyword.DAQ_DATA_DIRECTORY, directory);
+    	data.put(Keyword.DAQ_EXPERIMENT_NAME, encode(experimentName));
+    	data.put(Keyword.DAQ_DATA_DIRECTORY, encode(directory));
 
     	if ((new File(dataDir)).exists()) {
 			if ((new File(directory)).exists()) {
-- 
GitLab