configurationengine/source/plugins/symbian/ConeImagePlugin/imageplugin/imageml.py
author terytkon
Thu, 11 Mar 2010 17:04:37 +0200
changeset 0 2e8eeb919028
child 3 e7e0ae78773e
permissions -rw-r--r--
Adding EPL version of configurationengine.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     1
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     3
# All rights reserved.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     4
# This component and the accompanying materials are made available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     6
# which accompanies this distribution, and is available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     8
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     9
# Initial Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    11
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    12
# Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    13
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    14
# Description: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    15
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    16
'''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    17
A plugin implementation for image selection from ConfigurationLayers.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
'''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
import re
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
import os
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
import sys
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
import logging
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
import shutil
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
import xml.parsers.expat
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
    from cElementTree import ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
except ImportError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
    try:    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
        from elementtree import ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
    except ImportError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
            from xml.etree import cElementTree as ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
        except ImportError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
            from xml.etree import ElementTree
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
import __init__
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
from cone.public import exceptions,plugin,utils,api
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
from imageplugin.generators import OutputGenerator,InputFile,InputDir,InvalidInputFileException
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
class ImageImpl(plugin.ImplBase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
    ContentImpl plugin finds all image resources from each layer and copies
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
    them to the output correctly. It follows the Configuration project override
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
    rules, so that the topmost layer files override files on the previous layers.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
    IMPL_TYPE_ID = "imageml"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
    def __init__(self,ref,configuration):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
        Overloading the default constructor
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    57
        plugin.ImplBase.__init__(self,ref,configuration)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    58
        self.include = {}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    59
        self.exclude = {}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    60
        self.input = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
        self.desc = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    62
        self.output_file = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    63
        self.logger = logging.getLogger('cone.imageml(%s)' % self.ref)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    64
        self.errors = False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    65
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    66
    def get_include_pattern(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    67
        include_pattern = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    68
        if self.include.has_key('pattern'): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
            include_pattern = self.include['pattern'][0] 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
        return include_pattern
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
    def get_exclude_pattern(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    73
        exclude_pattern = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
        if self.exclude.has_key('pattern'): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
            exclude_pattern = self.exclude['pattern'][0] 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
        return exclude_pattern
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
    def list_output_files(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
        Return a list of output files as an array. 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
        return []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
    def generate(self, context=None):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
        Generate the given implementation.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
        self.logger.info('Generating')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
        ret = True
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
        for generator in self.generators:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    91
            self.logger.info(generator)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
            generator.subpath =  self.output
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
            try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
                ret = generator.generate() and ret
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
            except InvalidInputFileException, e:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
                self.logger.error(e)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
        return ret
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
    def generate_layers(self,layers):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
        Generate the given Configuration layers.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
        return self.generate()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   104
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   105
    def get_refs(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   106
        refs = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
        for generator in self.generators:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   108
            refs.extend(generator.get_refs())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   109
        if refs:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   110
            return utils.distinct_array(refs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   111
        else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   112
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   113
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   114
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   115
class ImageImplReader(plugin.ReaderBase):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   116
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   117
    Parses a single imageml implml file
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   118
    """ 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   119
    NAMESPACE = 'http://www.s60.com/xml/imageml/1'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   120
    FILE_EXTENSIONS = ['imageml']
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   121
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   122
    INCLUDE_ATTR = ['pattern']
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   123
    EXCLUDE_ATTR = ['pattern']
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   124
    def __init__(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   125
        self.desc = None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   126
        self.output = None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   127
        self.input_dir = None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   128
        self.include = None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   129
        self.exclude = None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   130
        self.namespaces = [self.NAMESPACE]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   131
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   132
    @classmethod
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   133
    def read_impl(cls, resource_ref, configuration, etree):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   134
        reader = ImageImplReader()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   135
        reader.desc = reader.parse_desc(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   136
        reader.outputgenerators = reader.parse_outputs(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   137
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   138
        impl = ImageImpl(resource_ref, configuration)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   139
        impl.desc = reader.desc
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   140
        impl.generators = reader.outputgenerators
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
        for generator in impl.generators:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
            generator.configuration = configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   144
        return impl
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   145
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
    def fromstring(self, xml_as_string):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
        etree = ElementTree.fromstring(xml_as_string)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   148
        self.desc = self.parse_desc(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   149
        self.outputgenerators = self.parse_outputs(etree)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   150
        return
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   151
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   152
    def parse_desc(self,etree):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   153
        desc = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   154
        desc_elem = etree.find("{%s}desc" % self.namespaces[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
        if desc_elem != None:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
            desc = desc_elem.text
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
        return desc
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
    def parse_input_include(self,etree):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
        include_elem = etree.findall("{%s}include" % self.namespaces[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
        include = {}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
        for f in include_elem:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
            for key in self.INCLUDE_ATTR:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
                # Add the attribute if it is found to include dict
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
                include[key] = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
                attr = f.get(key)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
                if attr: include[key].append((attr))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
        return include
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
    def parse_input_exclude(self,etree):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
        elem = etree.findall("{%s}exclude" % self.namespaces[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
        exclude = {}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
        for f in elem:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
            for key in self.EXCLUDE_ATTR:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
                # Add the attribute if it is found
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
                exclude[key] = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
                attr = f.get(key)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
                if attr: exclude[key].append((attr))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
        return exclude
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
    def parse_inputs(self,etree):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
        inputs = etree.findall("{%s}input" % self.namespaces[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
        inputlist = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   184
        for input_elem in inputs:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
            if input_elem.get('dir'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   186
                inputdir = InputDir(input_elem.get('dir'),**input_elem.attrib)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   187
                inputdir.include = self.parse_input_include(input_elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   188
                inputdir.exclude = self.parse_input_exclude(input_elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   189
                inputlist.append(inputdir)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   190
            elif input_elem.get('file'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   191
                inputlist.append(InputFile(input_elem.get('file'),**input_elem.attrib))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   192
        return inputlist
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   193
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   194
    def parse_outputs(self,etree):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   195
        outputs = etree.findall("{%s}output" % self.namespaces[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   196
        outputpath = ""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   197
        outputgenerators = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   198
        for output_elem in outputs:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   199
            if output_elem.get('file'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   200
                outputpath = output_elem.get('file')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   201
            generator = OutputGenerator(outputpath,**output_elem.attrib)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   202
            generator.inputs = self.parse_inputs(output_elem)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   203
            outputgenerators.append(generator)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   204
        return outputgenerators
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   205