configurationengine/source/cone/carbon/resourcemapper.py
changeset 3 e7e0ae78773e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/cone/carbon/resourcemapper.py	Tue Aug 10 14:29:28 2010 +0300
@@ -0,0 +1,63 @@
+#
+# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+#
+## 
+# @author Teemu Rytkonen
+import re
+import logging
+
+class CarbonResourceMapper(object):
+    def __init__(self):
+        self.CARBON_RESOURCE_TYPE_MAP = {'configurationroot' : self.map_carbon_configurationroot,
+                             'configurationlayer' : self.map_carbon_configurationlayer,
+                             'featurelist' : self.map_carbon_featurelist}
+        self.CONFML_RESOURCE_TYPE_MAP = {'configurationroot' : self.map_confml_configurationroot,
+                             'configurationlayer' : self.map_confml_configurationlayer,
+                             'featurelist' : self.map_confml_featurelist}
+
+    def map_carbon_resource(self, resourcepath):
+        for resourceext in self.CARBON_RESOURCE_TYPE_MAP:
+            if resourcepath.endswith(resourceext):
+                return self.CARBON_RESOURCE_TYPE_MAP[resourceext](resourcepath)
+        return resourcepath
+
+    def map_confml_resource(self, resourcetype, resourcepath):
+        return self.CONFML_RESOURCE_TYPE_MAP[resourcetype](resourcepath)
+
+    def map_carbon_configurationroot(self, resourcepath):
+        return resourcepath.replace('.configurationroot', '.confml')
+
+    def map_carbon_configurationlayer(self, resourcepath):
+        return resourcepath.replace('.configurationlayer', '/root.confml')
+
+    def map_carbon_featurelist(self, resourcepath):
+        return "featurelists/%s" % resourcepath.replace('.featurelist', '.confml')
+
+    def map_confml_configurationroot(self, resourcepath):
+        return resourcepath.replace('.confml', '.configurationroot')
+
+    def map_confml_configurationlayer(self, resourcepath):
+        return resourcepath.replace('/root.confml', '.configurationlayer')
+
+    def map_confml_featurelist(self, resourcepath):
+        path = resourcepath.replace('featurelists/','').replace('.confml', '')
+        version_identifier = 'working'
+        m = re.match('^(.*) \((.*)\)', path)
+        # if the resourcepath does not have version information 
+        # use default WORKING
+        if m:
+            path = m.group(1)
+            version_identifier = m.group(2)
+        return '%s (%s).featurelist' % (path, version_identifier)