configurationengine/source/cone/storage/resources.py
changeset 0 2e8eeb919028
equal deleted inserted replaced
-1:000000000000 0:2e8eeb919028
       
     1 #
       
     2 # Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 # All rights reserved.
       
     4 # This component and the accompanying materials are made available
       
     5 # under the terms of "Eclipse Public License v1.0"
       
     6 # which accompanies this distribution, and is available
       
     7 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 #
       
     9 # Initial Contributors:
       
    10 # Nokia Corporation - initial contribution.
       
    11 #
       
    12 # Contributors:
       
    13 #
       
    14 # Description: 
       
    15 #
       
    16 
       
    17 
       
    18 import zipfile,os,re,zlib
       
    19 from cone.public.api import Resource
       
    20 
       
    21 class CpfRootResource(Resource):
       
    22     """
       
    23     Parses a single CPF configuration project root confml file. Parses the XInclude statements to 
       
    24     find out the layers inside the project
       
    25     """ 
       
    26     def __init__(self):
       
    27         self.configuration_namespace = "http://www.s60.com/xml/confml/1"
       
    28         self.include_namespace       = "http://www.w3.org/2001/xinclude"
       
    29         self.desc                    = ""
       
    30         self.includes                = []
       
    31         self.meta                    = {}
       
    32         self.filename                = "defaultroot.confml"
       
    33         return
       
    34     
       
    35     def parse_file(self, xmlfile):
       
    36         self.filename = xmlfile
       
    37         self.etree    = ElementTree.parse(xmlfile)
       
    38         self.parse_includes()
       
    39         self.parse_meta()
       
    40         self.parse_desc()
       
    41         return
       
    42     
       
    43     def parse_str(self, xml_as_string):
       
    44         self.etree = ElementTree.fromstring(xml_as_string)
       
    45         self.parse_includes()
       
    46         self.parse_meta()
       
    47         self.parse_desc()
       
    48         return
       
    49 
       
    50     def parse_includes(self):
       
    51         includes = self.etree.getiterator("{%s}include" % self.include_namespace)
       
    52         for inc in includes:
       
    53             self.includes.append(inc.get('href'))
       
    54 
       
    55     def parse_meta(self):
       
    56         meta = self.etree.find("{%s}meta" % self.configuration_namespace)
       
    57         if meta:
       
    58             for elem in meta.getiterator():
       
    59                 m = re.match("{.*}(?P<tagname>.*)",elem.tag)
       
    60                 if m:
       
    61                     self.meta[m.group('tagname')] = elem.text
       
    62 
       
    63     def parse_desc(self):
       
    64         desc_elem = self.etree.find("{%s}desc" % self.configuration_namespace)
       
    65         if desc_elem != None:
       
    66             self.desc = desc_elem.text
       
    67       
       
    68     def get_layers(self):
       
    69         return self.includes
       
    70     
       
    71     def get_meta(self):
       
    72         return self.meta
       
    73     
       
    74     def get_desc(self):
       
    75         return self.desc
       
    76 
       
    77     def get_configuration(self):
       
    78         configuration = CpfConfiguration(self.filename)
       
    79         for inc in self.includes:
       
    80             configuration.add_layer(CpfLayer(inc))
       
    81         return configuration
       
    82