From 43270239c4732223859c901b3b9672d2be33d52b Mon Sep 17 00:00:00 2001
From: Sinisa Veseli <sveseli@aps.anl.gov>
Date: Fri, 26 Jun 2015 20:11:06 +0000
Subject: [PATCH] add few object classes

---
 src/python/dm/common/objects/daqInfo.py      | 11 +++++++++++
 src/python/dm/common/objects/dmObject.py     |  7 +++++++
 src/python/dm/common/objects/observedFile.py | 17 ++++++++++-------
 3 files changed, 28 insertions(+), 7 deletions(-)
 create mode 100755 src/python/dm/common/objects/daqInfo.py

diff --git a/src/python/dm/common/objects/daqInfo.py b/src/python/dm/common/objects/daqInfo.py
new file mode 100755
index 00000000..e28bc5e9
--- /dev/null
+++ b/src/python/dm/common/objects/daqInfo.py
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+
+from dmObject import DmObject
+
+class DaqInfo(DmObject):
+
+    DEFAULT_KEY_LIST = [ 'id', 'experimentName', 'dataDirectory' ]
+
+    def __init__(self, dict):
+        DmObject.__init__(self, dict)
+
diff --git a/src/python/dm/common/objects/dmObject.py b/src/python/dm/common/objects/dmObject.py
index 5c85b8ea..843be2d0 100755
--- a/src/python/dm/common/objects/dmObject.py
+++ b/src/python/dm/common/objects/dmObject.py
@@ -13,6 +13,7 @@ import json
 import datetime
 
 from dm.common.exceptions.invalidArgument import InvalidArgument
+from dm.common.exceptions.objectNotFound import ObjectNotFound
 from dm.common.utility import loggingManager
 
 class DmObject(UserDict.UserDict):
@@ -40,6 +41,12 @@ class DmObject(UserDict.UserDict):
             self.logger = loggingManager.getLogger(self._class__.__name__)
         return self.logger
 
+    def getRequiredKeyValue(self, key):
+        value = self.get(key)
+        if value is None:
+            errorMsg = 'Required dictionary key %s is missing.' % key
+            raise ObjectNotFound(errorMsg)
+
     @classmethod
     def getFromDict(cls, dict):
         inst = cls()
diff --git a/src/python/dm/common/objects/observedFile.py b/src/python/dm/common/objects/observedFile.py
index 8ef9ac2b..a183351c 100755
--- a/src/python/dm/common/objects/observedFile.py
+++ b/src/python/dm/common/objects/observedFile.py
@@ -1,18 +1,21 @@
 #!/usr/bin/env python
 
 import time
+import os
 from dmObject import DmObject
 
 class ObservedFile(DmObject):
 
-    DEFAULT_KEY_LIST = [ 'path', 'lastUpdatedTimestamp' ]
+    DEFAULT_KEY_LIST = [ 'filePath', 'lastUpdatedTimestamp' ]
 
-    def __init__(self, dict={}, filePath=None, daqPath=None, experiment=None):
+    def __init__(self, dict={}, filePath=None, dataDirectory=None, experiment=None):
         DmObject.__init__(self, dict)
         if filePath:
             self['filePath'] = filePath
-        if daqPath:
-            self['daqPath'] = daqPath
+        if dataDirectory:
+            self['dataDirectory'] = dataDirectory
+            if filePath:
+                self['experimentFilePath'] = os.path.relpath(filePath, dataDirectory)
         if experiment:
             self['experiment'] = experiment
 
@@ -25,8 +28,8 @@ class ObservedFile(DmObject):
     def getFilePath(self):
         return self.get('filePath')
 
-    def getDaqPath(self):
-        return self.get('daqPath')
+    def getDataDirectory(self):
+        return self.get('dataDirectory')
 
     def getExperiment(self):
         return self.get('experiment')
@@ -34,7 +37,7 @@ class ObservedFile(DmObject):
 ####################################################################
 # Testing
 if __name__ == '__main__':
-    of = ObservedFile(path='tmp/xyz')
+    of = ObservedFile(filePath='tmp/xyz')
     print of
     of.setLastUpdatedTimestampToNow()
     print of
-- 
GitLab