really fixed the redundant logging issue this time.
[sfa.git] / sfa / rspecs / rspec_version.py
old mode 100644 (file)
new mode 100755 (executable)
index 986a10f..e6cdcec
@@ -1,39 +1,41 @@
 #!/usr/bin/python
-from sfa.util.sfalogging import sfa_logger
+from sfa.util.sfalogging import logger
 
+class RSpecVersion(dict):
 
-DEFAULT_FORMAT='sfa'
-DEFAULT_VERSION_NUMBER=1
-class RSpecVersion:
+    fields = {'type': None,
+              'version': None,
+              'schema': None,
+              'namespace': None,
+              'extensions': []
+        }
+    def __init__(self, version={}):
+        
+        dict.__init__(self, self.fields)
 
-    format = None
-    version = None
-    schema = None
-    namespace = None
-    extensions = []
+        if not version:
+            from sfa.rspecs.sfa_rspec import sfa_rspec_version
+            self.update(sfa_rspec_version)          
+        elif isinstance(version, dict):
+            self.update(version)
+        elif isinstance(version, basestring):
+            version_parts = version.split(' ')
+            num_parts = len(version_parts)
+            self['type'] = version_parts[0]
+            if num_parts > 1:
+                self['version'] = version_parts[1]
+        else:
+            logger.info("Unable to parse rspec version, using default")
 
-    def __init__(self, version_string):
-        self.logger = sfa_logger() 
-        self.parse_version_string(version_string)
+    def get_version_name(self):
+        return "%s %s" % (str(self['type']), str(self['version']))
 
-    def parse_version_string(self, version_string):
-        # version_raw is currently a string but will 
-        # eventually be a struct.
-        try:
-            format_split = version_string.split(' ')
-            format, version = format_split[0].lower(), format_split[1]
-        except:
-            self.logger.info("RSpecVersion: invalid rspec version string: %s , using default" \
-                        % version_string)
-            # invalid format. Just continue
-            format, version = DEFAULT_FORMAT, DEFAULT_VERSION_NUMBER
+if __name__ == '__main__':
 
-        self.format = format
-        self.version = version 
-    
+    from sfa.rspecs.pl_rspec_version import ad_rspec_versions
+    for version in [RSpecVersion(), 
+                    RSpecVersion("SFA"), 
+                    RSpecVersion("SFA 1"),
+                    RSpecVersion(ad_rspec_versions[0])]: 
+        print version.get_version_name() + ": " + str(version)
 
-    def parse_version_struct(self, version_struct):
-        try:
-            pass
-        except:
-            format, version = DEFAULT_FORMAT, DEFAULT_VERSION_NUMBER