--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/cone/public/persistence.py Thu Mar 11 17:04:37 2010 +0200
@@ -0,0 +1,97 @@
+#
+# 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:
+#
+
+import os
+from cone.public import api, exceptions
+
+
+class PersistenceFactory(api.FactoryBase):
+ @classmethod
+ def get_reader_for_elem(cls,elemname):
+ for reader in ConeReader.__subclasses__():
+ if reader.supported_elem(elemname):
+ return reader()
+ raise exceptions.ConePersistenceError("No reader for given elemname %s found!" % elemname)
+
+ @classmethod
+ def get_writer_for_class(cls,classname):
+ for writer in ConeWriter.__subclasses__():
+ if writer.supported_class(classname):
+ return writer ()
+ raise exceptions.ConePersistenceError("No writer for given class found!")
+
+
+class ConeHandler(object):
+ ext = ""
+ class_type = ""
+
+
+class ConeReader(ConeHandler):
+ '''
+ Read data from the string and return a ConeObject
+ '''
+
+ @classmethod
+ def supported_elem(cls, elemname, parent=None):
+ """
+ Class method to determine if this ConeReader supports reading
+ of the given element name
+ """
+ return False
+
+ def loads(self,data):
+ raise exceptions.NotSupportedException()
+
+ def load(self,res):
+ raise exceptions.NotSupportedException()
+
+
+class ConeWriter(object):
+ '''
+ Write a ConeObject to a string
+ '''
+ @classmethod
+ def supported_class(cls, classname):
+ """
+ Class method to determine if this ConeWriter supports writing
+ of the given class name
+ """
+ return False
+
+ def dumps(self,ConeObject):
+ raise exceptions.NotSupportedException()
+
+ def dump(self,ConeObject,res,indent=True):
+ raise exceptions.NotSupportedException()
+
+def indent(elem, level=0):
+ i = os.linesep + level*" "
+ if len(elem):
+ try:
+ if not elem.text or not elem.text.strip():
+ elem.text = i + " "
+ for e in elem:
+ indent(e, level+1)
+ if not e.tail or not e.tail.strip():
+ e.tail = i + " "
+ if not e.tail or not e.tail.strip():
+ e.tail = i
+ else:
+ if level and (not elem.tail or not elem.tail.strip()):
+ elem.tail = i
+ except AttributeError,e:
+ # explanation for this kind of try-except required
+ pass
\ No newline at end of file