configurationengine/source/cone/confml/model.py
author m2lahtel
Tue, 10 Aug 2010 14:29:28 +0300
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
child 5 d2c80f5cab53
permissions -rw-r--r--
ConE 1.2.11 release
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
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
Base class for Confml elements.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
Attributes:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
 All Confml element attributes become attributes of this instance.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
import types
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    24
import sys
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    25
import re
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
from cone.public import api, exceptions, container, utils
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
class ConfmlElement(api.Base):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    29
    def __init__(self, ref="", **kwargs):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    30
        super(ConfmlElement,self).__init__(ref, **kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    31
        self.lineno = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    32
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
    def _get_mapper(self,modelname):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
        Return a instance of appropriate mapper for given model.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
        mapmodule = __import__('cone.confml.mapping')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
        return mapmodule.confml.mapping.MAPPERS[modelname]()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
    def get_desc(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
            desc = getattr(self,ConfmlDescription.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
            return desc.text
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
    def set_desc(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
        self._add(ConfmlDescription(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
    def del_desc(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
            self._remove(ConfmlDescription.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
    """ The description as a property """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
    desc = property(get_desc,set_desc,del_desc)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    57
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    58
class ConfmlData(api.Data):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    59
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    60
    The data element can contain any data setting for a feature. The data element can be 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    61
    a value definition for any type of data. It basically just links some data to a feature. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    62
    The default Data attribute is 'data', but it can be any string. For example current use case 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    63
    is 'rfs'.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    64
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    65
    def __init__(self, **kwargs):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    66
        super(ConfmlData,self).__init__(**kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    67
        self.lineno = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    68
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
class ConfmlConfiguration(ConfmlElement, api.Configuration):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
    Confml configuration class. 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    73
    def __init__(self,ref="", **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
        super(ConfmlConfiguration,self).__init__(ref, **kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
        if kwargs.get('meta'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
            self.meta = kwargs.get('meta')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
        if kwargs.get('desc'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
            self.desc = kwargs.get('desc')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    80
    def _view_class(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    81
        return ConfmlView
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    82
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    83
    def _feature_class(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    84
        return ConfmlFeature
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    85
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    86
    def _configuration_class(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    87
        return ConfmlConfiguration
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
    def get_desc(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    91
        @return: The description of the Configuration.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
            desc = getattr(self,ConfmlDescription.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
            return desc.text
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
    def set_desc(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
        self._add(ConfmlDescription(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
    def del_desc(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   104
            self._remove(ConfmlDescription.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   105
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   106
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   107
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   108
    """ The description as a property """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   109
    desc = property(get_desc,set_desc,del_desc)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   110
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   111
    def get_meta(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   112
        """
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   113
        @return: The meta element of the Configuration.
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   114
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   115
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   116
            meta = getattr(self,ConfmlMeta.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   117
            return meta
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   118
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   119
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   120
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   121
    def set_meta(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   122
        self._add(ConfmlMeta(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   123
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   124
    def del_meta(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   125
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   126
            self._remove(ConfmlMeta.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   127
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   128
            pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   129
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   130
    """ The meta element as a property """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   131
    meta = property(get_meta,set_meta,del_meta)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   132
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   133
class ConfmlSettingAttributes(ConfmlElement):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   134
    """
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   135
    Abstract base class for setting attributes. This is used as 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   136
    a base in actual ConfmlSetting and ConfmlFeatureLink.
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   137
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   138
    def __init__(self, ref,**kwargs):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   139
        super(ConfmlSettingAttributes,self).__init__(ref,**kwargs)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   140
        if kwargs.get('desc'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   141
            self.desc = kwargs.get('desc')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   142
        if kwargs.get('minOccurs'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   143
            self.minOccurs = kwargs.get('minOccurs')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   144
        if kwargs.get('maxOccurs'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   145
            self.maxOccurs = kwargs.get('maxOccurs')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
        if kwargs.get('maxLength'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
            self.maxLength = kwargs.get('maxLength')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   148
        if kwargs.get('minLength'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   149
            self.minLength = kwargs.get('minLength')
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   150
        self.mapKey = kwargs.get('mapKey')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   151
        self.mapValue = kwargs.get('mapValue')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   152
        self.displayName = kwargs.get('displayName')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   153
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   154
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
        self.readOnly = kwargs.get('readOnly',None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
        self.constraint = kwargs.get('constraint',None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
        self.required = kwargs.get('required',None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
        self.relevant = kwargs.get('relevant',None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
    def get_valueset(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
        Get the ValueSet object for this feature, that has the list of available values.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
        return api.ValueRe('.*')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
    def get_maxlength(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
            return getattr(self,ConfmlMaxLength.refname).value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
    def set_maxlength(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
        self._add(ConfmlMaxLength(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
    def del_maxlength(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
            self._remove(ConfmlMaxLength.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
            pass
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   180
    """ The maxLength as a property """
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
    maxLength = property(get_maxlength,set_maxlength,del_maxlength)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
    def get_minlength(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   184
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
            return getattr(self,ConfmlMinLength.refname).value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   186
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   187
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   188
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   189
    def set_minlength(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   190
        self._add(ConfmlMinLength(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   191
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   192
    def del_minlength(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   193
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   194
            self._remove(ConfmlMinLength.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   195
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   196
            pass
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   197
    """ The minLength as a property """
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   198
    minLength = property(get_minlength,set_minlength,del_minlength)
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   199
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   200
    def get_length(self): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   201
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   202
            return getattr(self,ConfmlLength.refname).value
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   203
        except AttributeError:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   204
            return None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   205
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   206
    def set_length(self,value): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   207
        self._add(ConfmlLength(value))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   208
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   209
    def del_length(self): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   210
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   211
            self._remove(ConfmlLength.refname)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   212
        except exceptions.NotFound:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   213
            pass
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   214
    """ The length as a property """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   215
    length = property(get_length,set_length,del_length)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   216
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   217
    def get_minInclusive(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   218
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   219
            return getattr(self,ConfmlMinInclusive.refname).value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   220
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   221
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   222
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   223
    def set_minInclusive(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   224
        self._add(ConfmlMinInclusive(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   225
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   226
    def del_minInclusive(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   227
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   228
            self._remove(ConfmlMinInclusive.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   229
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   230
            pass     
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   231
    """ The minInclusive as a property """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   232
    minInclusive = property(get_minInclusive,set_minInclusive,del_minInclusive)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   233
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   234
    def get_maxInclusive(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   235
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   236
            return getattr(self,ConfmlMaxInclusive.refname).value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   237
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   238
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   239
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   240
    def set_maxInclusive(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   241
        self._add(ConfmlMaxInclusive(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   242
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   243
    def del_maxInclusive(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   244
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   245
            self._remove(ConfmlMaxInclusive.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   246
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   247
            pass     
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   248
    """ The minInclusive as a property """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   249
    maxInclusive = property(get_maxInclusive,set_maxInclusive,del_maxInclusive)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   250
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   251
    def get_minExclusive(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   252
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   253
            return getattr(self,ConfmlMinExclusive.refname).value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   254
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   255
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   256
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   257
    def set_minExclusive(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   258
        self._add(ConfmlMinExclusive(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   259
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   260
    def del_minExclusive(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   261
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   262
            self._remove(ConfmlMinExclusive.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   263
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   264
            pass     
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   265
    """ The minExclusive as a property """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   266
    minExclusive = property(get_minExclusive,set_minExclusive,del_minExclusive)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   267
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   268
    def get_maxExclusive(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   269
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   270
            return getattr(self,ConfmlMaxExclusive.refname).value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   271
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   272
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   273
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   274
    def set_maxExclusive(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   275
        self._add(ConfmlMaxExclusive(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   276
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   277
    def del_maxExclusive(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   278
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   279
            self._remove(ConfmlMaxExclusive.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   280
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   281
            pass     
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   282
    """ The maxExclusive as a property """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   283
    maxExclusive = property(get_maxExclusive,set_maxExclusive,del_maxExclusive)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   284
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   285
    def get_pattern(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   286
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   287
            return getattr(self,ConfmlPattern.refname).value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   288
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   289
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   290
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   291
    def set_pattern(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   292
        self._add(ConfmlPattern(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   293
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   294
    def del_pattern(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   295
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   296
            self._remove(ConfmlPattern.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   297
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   298
            pass     
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   299
    """ The pattern as a property """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   300
    pattern = property(get_pattern,set_pattern,del_pattern)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   301
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   302
    def get_totalDigits(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   303
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   304
            return getattr(self,ConfmlTotalDigits.refname).value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   305
        except AttributeError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   306
            return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   307
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   308
    def set_totalDigits(self,value): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   309
        self._add(ConfmlTotalDigits(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   310
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   311
    def del_totalDigits(self): 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   312
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   313
            self._remove(ConfmlTotalDigits.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   314
        except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   315
            pass     
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   316
    """ The totalDigits as a property """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   317
    totalDigits = property(get_totalDigits,set_totalDigits,del_totalDigits)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   318
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   319
    @property
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   320
    def options(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   321
        optdict = {}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   322
        for opt in self._objects(type=api.Option):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   323
            optdict[opt.value] = opt
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   324
        return  optdict
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   325
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   326
    @property
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   327
    def properties(self):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   328
        propdict = {}
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   329
        for prop in self._objects(type=api.Property):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   330
            propdict[prop.name] = prop
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   331
        return  propdict
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   332
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   333
    def get_rfs(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   334
        return super(ConfmlSettingAttributes,self).get_value('rfs')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   335
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   336
    def set_rfs(self, value):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   337
        super(ConfmlSettingAttributes,self).set_value('rfs',value)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   338
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   339
    def del_rfs(self):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   340
        super(ConfmlSettingAttributes,self).del_value('rfs')
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   341
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   342
    rfs = property(get_rfs,set_rfs,del_rfs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   343
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   344
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   345
class ConfmlGroup(ConfmlElement, api.Group):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   346
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   347
    Confml view.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   348
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   349
    def __init__(self, ref="", **kwargs):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   350
        super(ConfmlGroup,self).__init__(ref,**kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   351
        if kwargs.get('icon'):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   352
            self.icon = kwargs.get('icon')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   353
        if kwargs.get('desc'):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   354
            self.desc = kwargs.get('desc')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   355
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   356
    def _group_class(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   357
        return ConfmlGroup
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   358
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   359
    def _featurelink_class(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   360
        return ConfmlFeatureLink
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   361
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   362
    def get_icon(self): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   363
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   364
            icon = getattr(self,ConfmlIcon.refname)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   365
            return icon.href
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   366
        except AttributeError:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   367
            return None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   368
    def set_icon(self,value): self._add(ConfmlIcon(value))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   369
    def del_icon(self): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   370
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   371
            self._remove(ConfmlIcon.refname)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   372
        except exceptions.NotFound:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   373
            pass
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   374
    """ The icon as a property """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   375
    icon = property(get_icon,set_icon,del_icon)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   376
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   377
    def get_desc(self): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   378
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   379
            desc = getattr(self,ConfmlDescription.refname)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   380
            return desc.text
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   381
        except AttributeError:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   382
            return None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   383
    def set_desc(self,value): self._add(ConfmlDescription(value))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   384
    def del_desc(self): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   385
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   386
            self._remove(ConfmlDescription.refname)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   387
        except exceptions.NotFound:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   388
            pass
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   389
    """ The description as a property """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   390
    desc = property(get_desc,set_desc,del_desc)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   391
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   392
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   393
class ConfmlView(api.View, ConfmlGroup):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   394
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   395
    Confml view.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   396
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   397
    def __init__(self, ref="", **kwargs):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   398
        super(ConfmlView,self).__init__(ref,**kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   399
        if kwargs.get('desc'):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   400
            self.desc = kwargs.get('desc')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   401
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   402
    def get_desc(self): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   403
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   404
            desc = getattr(self,ConfmlDescription.refname)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   405
            return desc.text
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   406
        except AttributeError:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   407
            return None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   408
    def set_desc(self,value): self._add(ConfmlDescription(value))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   409
    def del_desc(self): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   410
        try:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   411
            self._remove(ConfmlDescription.refname)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   412
        except exceptions.NotFound:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   413
            pass
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   414
    """ The description as a property """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   415
    desc = property(get_desc,set_desc,del_desc)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   416
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   417
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   418
class ConfmlFeature(ConfmlElement, api.Feature):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   419
    def _feature_class(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   420
        return ConfmlSetting
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   421
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   422
class ConfmlSetting(ConfmlSettingAttributes, api.Feature):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   423
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   424
    Confml setting class. Attribute 'options' contains options of this setting.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   425
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   426
    supported_types = ['int',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   427
                       'string',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   428
                       'boolean',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   429
                       'selection']
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   430
    def __init__(self, ref,**kwargs):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   431
        super(ConfmlSetting,self).__init__(ref,**kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   432
        self.type = kwargs.get('type',None)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   433
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   434
    def get_value_cast(self, value, attr=None):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   435
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   436
        A function to perform the value type casting in get operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   437
        @param value: the value to cast 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   438
        @param attr: the attribute which is fetched from model (normally in confml either None='data' or 'rfs')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   439
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   440
        if not attr or attr == 'data':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   441
            return self.get_data_cast(value)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   442
        elif attr == 'rfs':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   443
            return self.get_rfs_cast(value)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   444
        else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   445
            return value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   446
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   447
    def set_value_cast(self, value, attr=None):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   448
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   449
        A function to perform the value type casting in the set operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   450
        @param value: the value to cast 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   451
        @param attr: the attribute which is fetched from model (normally in confml either None='data' or 'rfs')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   452
        """
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   453
        # Add a exception case for None value, because the data casting will always fail for it
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   454
        if value == None:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   455
            return value
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   456
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   457
        if not attr or attr == 'data':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   458
            return self.set_data_cast(value)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   459
        elif attr == 'rfs':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   460
            return self.set_rfs_cast(value)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   461
        else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   462
            return value
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   463
        
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   464
    def get_data_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   465
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   466
        A function to perform the data type casting in get operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   467
        @param value: the value to cast 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   468
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   469
        return value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   470
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   471
    def set_data_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   472
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   473
        A function to perform the data type casting in the set operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   474
        @param value: the value to cast 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   475
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   476
        return value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   477
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   478
    def get_rfs_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   479
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   480
        A function to perform the rfs type casting in get operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   481
        @param value: the value to cast 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   482
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   483
        if value == 'true':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   484
            return True
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   485
        elif value == 'false':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   486
            return False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   487
        else: # otherwise this is an invalid rfs value. Should it report an error?
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   488
            return value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   489
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   490
    def set_rfs_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   491
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   492
        A function to perform the rfs type casting in the set operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   493
        @param value: the value to cast 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   494
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   495
        if value:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   496
            return 'true'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   497
        else: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   498
            return 'false'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   499
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   500
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   501
class ConfmlStringSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   502
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   503
    Confml setting class for integer type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   504
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   505
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   506
        kwargs['type'] = 'string'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   507
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   508
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   509
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   510
class ConfmlIntSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   511
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   512
    Confml setting class for integer type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   513
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   514
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   515
        kwargs['type'] = 'int'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   516
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   517
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   518
    def get_valueset(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   519
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   520
        Get the ValueSet object for this feature, that has the list of available values.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   521
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   522
        return api.ValueRange(0,sys.maxint)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   523
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   524
    def get_data_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   525
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   526
        A function to perform the value type casting in get operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   527
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   528
        if value:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   529
            try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   530
                return int(value)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   531
            except ValueError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   532
                return int(value, 16)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   533
        else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   534
            return value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   535
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   536
    def set_data_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   537
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   538
        A function to perform the value type casting in the set operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   539
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   540
        return str(int(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   541
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   542
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   543
class ConfmlRealSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   544
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   545
    Confml setting class for real type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   546
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   547
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   548
        kwargs['type'] = 'real'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   549
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   550
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   551
    def get_valueset(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   552
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   553
        Get the ValueSet object for this feature, that has the list of available values.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   554
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   555
        return api.ValueRange(0,float(sys.maxint))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   556
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   557
    def get_data_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   558
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   559
        A function to perform the value type casting in get operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   560
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   561
        if value:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   562
            return float(value)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   563
        else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   564
            return value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   565
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   566
    def set_data_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   567
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   568
        A function to perform the value type casting in the set operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   569
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   570
        return str(float(value))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   571
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   572
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   573
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   574
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   575
class ConfmlBooleanSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   576
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   577
    Confml setting class for boolean type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   578
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   579
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   580
        kwargs['type'] = 'boolean'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   581
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   582
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   583
    def get_valueset(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   584
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   585
        Get the ValueSet object for this feature, that has the list of available values.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   586
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   587
        return api.ValueSet([True,False])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   588
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   589
    def get_data_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   590
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   591
        A function to perform the value type casting in get operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   592
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   593
        if value:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   594
            if value in ('true', '1'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   595
                return True
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   596
            else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   597
                return False
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   598
        else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   599
            return value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   600
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   601
    def set_data_cast(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   602
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   603
        A function to perform the value type casting in the set operation  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   604
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   605
        if isinstance(value, basestring):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   606
            if value in ('false', '0'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   607
                return 'false'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   608
            elif value in ('true', '1'):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   609
                return 'true'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   610
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   611
        return str(bool(value)).lower()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   612
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   613
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   614
class ConfmlSelectionSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   615
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   616
    Confml setting class for boolean type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   617
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   618
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   619
        kwargs['type'] = 'selection'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   620
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   621
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   622
    def get_valueset(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   623
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   624
        Get the ValueSet object for this feature, that has the list of available values.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   625
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   626
        return api.Feature.get_valueset(self)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   627
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   628
class ConfmlMultiSelectionSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   629
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   630
    Confml setting class for multiSelection type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   631
    """
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   632
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   633
    # Pattern for checking whether a data value should be interpreted
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   634
    # in the old style (e.g. '"opt1" "opt2" "opt3"')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   635
    OLD_STYLE_DATA_PATTERN = re.compile(r'"[^"]*([^"]*" ")*[^"]*"')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   636
    
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   637
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   638
        kwargs['type'] = 'multiSelection'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   639
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   640
        
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   641
    def add_data(self, data):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   642
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   643
        Add a data value.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   644
        @param data: A Data object  
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   645
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   646
        # If there are existing data objects added to the proxy, and they
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   647
        # are not in the same DataContainer (ConfML data section), change the
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   648
        # policy to replace
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   649
        if self.dataproxy.datas.get(data.attr):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   650
            existing_data_obj = self.dataproxy.datas[data.attr][-1]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   651
            existing_obj_parent = existing_data_obj._find_parent_or_default(type=api.DataContainer)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   652
            new_obj_parent = data._find_parent_or_default(type=api.DataContainer)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   653
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   654
            if existing_obj_parent is not new_obj_parent:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   655
                self.dataproxy.datas[data.attr] = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   656
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   657
        self.dataproxy._add_data(data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   658
    
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   659
    def get_valueset(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   660
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   661
        Get the ValueSet object for this feature, that has the list of available values.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   662
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   663
        return api.Feature.get_valueset(self)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   664
    
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   665
    def convert_data_to_value(self, data_objects, cast=True, attr=None):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   666
        if len(data_objects) == 1:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   667
            d = data_objects[0]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   668
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   669
            # Special handling for cases where the data is in the old format
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   670
            # (pre-2.88 ConfML spec)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   671
            if d.value is not None:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   672
                if self.OLD_STYLE_DATA_PATTERN.match(d.value):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   673
                    return tuple([v.rstrip('"').lstrip('"') for v in d.value.split('" "')])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   674
            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   675
            # Single data object with empty="true" means that nothing is selected
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   676
            if d.empty: return ()
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   677
        
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   678
        # Read each data value (or name-ID mapped value) into result
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   679
        result = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   680
        for data_obj in data_objects:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   681
            if data_obj.map:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   682
                value = self._resolve_name_id_mapped_value(data_obj.map, cast_value=cast)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   683
            else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   684
                value = data_obj.value
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   685
            result.append(value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   686
        result = utils.distinct_array(result)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   687
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   688
        # Handle None in the result (data element with no text data)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   689
        if None in result:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   690
            # If the empty string is a valid option, change the None to that,
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   691
            # otherwise ignore
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   692
            index = result.index(None)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   693
            if '' in self.get_valueset():   result[index] = ''
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   694
            else:                           del result[index]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   695
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   696
        return tuple(result)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   697
    
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   698
    def convert_value_to_data(self, value, attr=None):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   699
        if not isinstance(value, (types.ListType, types.TupleType, types.NoneType)):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   700
            raise ValueError("Only list, tuple and None types are allowed.")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   701
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   702
        if value:   return [api.Data(fqr=self.fqr, value=v, attr=attr) for v in value]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   703
        else:       return [api.Data(fqr=self.fqr, empty=True, attr=attr)]
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   704
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   705
class ConfmlDateSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   706
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   707
    Confml setting class for date type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   708
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   709
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   710
        kwargs['type'] = 'date'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   711
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   712
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   713
class ConfmlTimeSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   714
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   715
    Confml setting class for time type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   716
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   717
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   718
        kwargs['type'] = 'time'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   719
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   720
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   721
class ConfmlDateTimeSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   722
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   723
    Confml setting class for date-time type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   724
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   725
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   726
        kwargs['type'] = 'dateTime'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   727
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   728
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   729
class ConfmlHexBinarySetting(ConfmlSetting):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   730
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   731
    Confml setting class for hex-binary type.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   732
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   733
    def __init__(self, ref,**kwargs):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   734
        kwargs['type'] = 'hexBinary'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   735
        ConfmlSetting.__init__(self,ref,**kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   736
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   737
    def get_valueset(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   738
        return api.ValueRe(r'^([0123456789ABCDEF]{2})*$')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   739
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   740
    def get_data_cast(self, value):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   741
        value = value or '' # Handle None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   742
        if value not in self.get_valueset():
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   743
            raise ValueError("Cannot convert value %r of setting '%s' into binary data: Not a valid hex string", value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   744
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   745
        temp = []
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   746
        for i in xrange(len(value) / 2):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   747
            start = i * 2
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   748
            end   = start + 2 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   749
            temp.append(chr(int(value[start:end], 16)))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   750
        return ''.join(temp)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   751
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   752
    def set_data_cast(self, value):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   753
        return ''.join(['%02X' % ord(c) for c in value])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   754
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   755
class ConfmlDurationSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   756
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   757
    Confml setting class for date type.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   758
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   759
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   760
        kwargs['type'] = 'duration'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   761
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   762
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   763
class ConfmlSequenceSetting(api.FeatureSequence,ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   764
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   765
    Confml setting class. Attribute 'options' contains options of this setting.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   766
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   767
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   768
        ConfmlSetting.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   769
        api.FeatureSequence.__init__(self,ref,**kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   770
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   771
class ConfmlFileSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   772
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   773
    Confml file setting class.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   774
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   775
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   776
        kwargs['type'] = 'file'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   777
        ConfmlSetting.__init__(self, ref, **kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   778
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   779
        The file element always includes localPath and targetPath child elements.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   780
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   781
        self.add_feature(ConfmlLocalPath())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   782
        self.add_feature(ConfmlTargetPath())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   783
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   784
class ConfmlFolderSetting(ConfmlSetting):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   785
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   786
    Confml folder setting class.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   787
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   788
    def __init__(self, ref,**kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   789
        kwargs['type'] = 'folder'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   790
        ConfmlSetting.__init__(self, ref, **kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   791
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   792
        The folder element always includes localPath and targetPath child elements.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   793
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   794
        self.add_feature(ConfmlLocalPath())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   795
        self.add_feature(ConfmlTargetPath())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   796
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   797
class ConfmlLocalPath(ConfmlElement, api.Feature):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   798
    """
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   799
    Confml file class. Attribute setting. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   800
    The localPath "name" is always the same as its ref 'localPath'
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   801
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   802
    def __init__(self, ref='localPath', **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   803
        kwargs['type'] = 'string'
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   804
        kwargs['name'] = ref
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   805
        ConfmlElement.__init__(self, **kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   806
        api.Feature.__init__(self, ref, **kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   807
        self.readOnly = kwargs.get('readOnly', None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   808
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   809
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   810
class ConfmlTargetPath(ConfmlElement, api.Feature):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   811
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   812
    Confml file class. Attribute setting.
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   813
    The targetPath "name" is always the same as its ref 'targetPath'
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   814
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   815
    def __init__(self, ref='targetPath', **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   816
        kwargs['type'] = 'string'
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   817
        kwargs['name'] = ref
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   818
        ConfmlElement.__init__(self, **kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   819
        api.Feature.__init__(self, ref, **kwargs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   820
        self.readOnly = kwargs.get('readOnly', None)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   821
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   822
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   823
class ConfmlFeatureLink(ConfmlSettingAttributes, api.FeatureLink):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   824
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   825
    ConfmlFeatureLink object is the setting reference object inside confml 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   826
    group / view. It can populate the actual FeatureProxy objects under the
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   827
    particular group / view object.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   828
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   829
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   830
    """ the override_attributes explicitly states which feature link attributes can be overridden """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   831
    override_attributes = ['name', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   832
                           'desc', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   833
                           'minLength',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   834
                           'maxLength',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   835
                           'minOccurs',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   836
                           'maxOccurs',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   837
                           'minInclusive',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   838
                           'maxInclusive',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   839
                           'minExclusive',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   840
                           'maxExclusive',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   841
                           'pattern',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   842
                           'totalDigits',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   843
                           'options',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   844
                           'properties',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   845
                           'readOnly'
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   846
                           ]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   847
    def __init__(self, ref,**kwargs):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   848
        ConfmlSettingAttributes.__init__(self, ref,**kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   849
        api.FeatureLink.__init__(self, ref, **kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   850
        self.type = kwargs.get('type',None)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   851
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   852
class ConfmlMeta(api.Base):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   853
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   854
    Confml meta element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   855
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   856
    refname = "_meta"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   857
    def __init__(self, array=None, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   858
        super(ConfmlMeta,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   859
        self.array  = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   860
        if array:            
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   861
            self.array += array
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   862
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   863
    def __getitem__(self, key):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   864
        return self.array[key]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   865
 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   866
    def __delitem__(self, key):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   867
        del self.array[key]
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   868
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   869
    def __setitem__(self, key, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   870
        self.array[key] = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   871
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   872
    def __len__(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   873
        return len(self.array)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   874
    
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   875
    def __str__(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   876
        tempstr = "ConfmlMeta object\n"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   877
        counter = 0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   878
        for item in self.array:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   879
            tempstr += "\t%d: %s\n" % (counter, item.__str__())
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   880
            counter += 1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   881
        return tempstr 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   882
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   883
    def __cmp__(self, other):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   884
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   885
            for item in self.array:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   886
                if item != other.array[self.array.index(item)]:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   887
                    return 1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   888
        except:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   889
            return 1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   890
        return 0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   891
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   892
    def append(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   893
        self.array.append(value)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   894
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   895
    def add(self, tag, value, ns=None, attributes=None):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   896
        self.array.append(ConfmlMetaProperty(tag, value, ns, attrs=attributes))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   897
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   898
    def get(self, tag, default=None):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   899
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   900
        Try to find the element by its tag in the meta elem array.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   901
        @param tag: the tag that is searched,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   902
        @param default: return the default value if the element is not found. 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   903
        @return: the value of the ConfmlMetaProperty object if it is found. Default value 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   904
        if element with tag is not found.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   905
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   906
        for item in self.array:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   907
            if item.tag == tag:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   908
                return item.value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   909
        return default
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   910
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   911
    def replace(self, index, tag, value, ns=None, dict=None):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   912
        self.array[index] = ConfmlMetaProperty(tag, value, ns, attrs=dict)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   913
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   914
    def update(self, data):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   915
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   916
        Update this the ConfmlMeta object meta with the given data.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   917
        @param data: The input ConfmlMeta data to update for this object
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   918
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   919
        if data:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   920
            for property in data.array:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   921
                self.set_property_by_tag(property.tag, property.value, property.ns, property.attrs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   922
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   923
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   924
    def clear(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   925
        self.array = []
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   926
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   927
    def clone(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   928
        newMeta = ConfmlMeta()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   929
        for item in self.array:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   930
            newProp = ConfmlMetaProperty(item.tag, item.value, item.ns, attrs = item.attrs)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   931
            newMeta.append(newProp)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   932
        return newMeta
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   933
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   934
    def find_by_tag(self, value):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   935
        for item in self.array:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   936
            if item.tag == value:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   937
                return self.array.index(item)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   938
        return -1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   939
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   940
    def find_by_attribute(self, name, value):
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   941
        for item in self.array:            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   942
            if item.attrs.has_key(name) and item.attrs[name] == value:
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   943
                return self.array.index(item)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   944
        return -1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   945
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   946
    def get_property_by_tag(self, tag, attrs={}):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   947
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   948
        Try to find the element by its tag in the meta elem array.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   949
        @param tag: the tag that is searched
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   950
        @return: the ConfmlMetaProperty object if it is found. None if element with tag is not found.
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   951
        """ 
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   952
        for item in self.array:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   953
            if item.tag == tag:
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   954
                if not item.attrs or (item.attrs.get("name", None) == attrs.get("name", None)):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   955
                    return item
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   956
        return None
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   957
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   958
    def set_property_by_tag(self, tag, value, ns=None, attributes=None):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   959
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   960
        Try to find the element by its tag and set it the meta elem array. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   961
        This will either create a new element to the meta or replace first 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   962
        encountered elem in array. 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   963
        @param tag: the tag that is searched
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   964
        @return: the ConfmlMetaProperty object if it is found. None if element with tag is not found.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   965
        """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   966
                
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   967
        if self.get_property_by_tag(tag, attributes):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   968
            property = self.get_property_by_tag(tag, attributes) 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   969
            property.value = value
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   970
            property.attrs = attributes or {}
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   971
        else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   972
            self.add(tag, value, ns, attributes)
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   973
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   974
class ConfmlDescription(api.Base):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   975
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   976
    Confml description element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   977
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   978
    refname = "_desc"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   979
    def __init__(self, text=None, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   980
        super(ConfmlDescription,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   981
        self.text = text or ''
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   982
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   983
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   984
class ConfmlIcon(api.Base):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   985
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   986
    Confml icon element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   987
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   988
    refname = "_icon"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   989
    def __init__(self, href='', **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   990
        super(ConfmlIcon,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   991
        self.href = href
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   992
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   993
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   994
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   995
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   996
class ConfmlMetaProperty(api.Base):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   997
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   998
    Confml meta property element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   999
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1000
    refname = "_metaproperty"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1001
    def __init__(self, tag, value = None, ns = None, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1002
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1003
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1004
        super(ConfmlMetaProperty,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1005
        self.tag = tag
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1006
        self.value = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1007
        self.ns = ns
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1008
        self.attrs = dict(kwargs.get('attrs') or {})
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1009
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1010
    def __cmp__(self, other):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1011
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1012
            if self.tag != other.tag or self.value != other.value\
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1013
                or self.ns != other.ns or self.attrs != other.attrs:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1014
                return 1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1015
        except:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1016
            return 1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1017
        return 0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1018
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1019
    def __str__(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1020
        return "Tag: %s Value: %s Namespace: %s Attributes: % s" % (self.tag, self.value, self.ns, repr(self.attrs))         
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1021
        
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1022
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1023
class ConfmlNumericValue(api.Base):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1024
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1025
    Confml base class for all float type properties.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1026
    Performs a simple value casting from string to int in value setting.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1027
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1028
    def __init__(self, ref="", **kwargs):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1029
        super(ConfmlNumericValue,self).__init__(ref, **kwargs)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1030
        self._value = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1031
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1032
    def get_value(self): return self._value
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1033
    def del_value(self): self._value = None
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1034
    def set_value(self, value): 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1035
        if utils.is_float(value):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1036
            self._value = float(value) 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1037
        else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1038
            self._value = int(value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1039
    """ The value as a property """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1040
    value = property(get_value,set_value,del_value)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1041
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1042
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1043
class ConfmlLength(ConfmlNumericValue):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1044
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1045
    Confml length element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1046
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1047
    refname = "_length"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1048
    def __init__(self, value, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1049
        super(ConfmlLength,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1050
        self.value = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1051
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1052
class ConfmlMaxLength(ConfmlNumericValue):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1053
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1054
    Confml max element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1055
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1056
    refname = "_maxLength"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1057
    def __init__(self, value, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1058
        super(ConfmlMaxLength,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1059
        self.value = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1060
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1061
class ConfmlMinLength(ConfmlNumericValue):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1062
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1063
    Confml min element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1064
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1065
    refname = "_minLength"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1066
    def __init__(self, value, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1067
        super(ConfmlMinLength,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1068
        self.value = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1069
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1070
class ConfmlMinInclusive(ConfmlNumericValue):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1071
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1072
    Confml minInclusive element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1073
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1074
    refname = "_minInclusive"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1075
    def __init__(self, value, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1076
        super(ConfmlMinInclusive,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1077
        self.value = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1078
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1079
class ConfmlMaxInclusive(ConfmlNumericValue):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1080
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1081
    Confml minInclusive element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1082
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1083
    refname = "_maxInclusive"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1084
    def __init__(self, value, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1085
        super(ConfmlMaxInclusive,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1086
        self.value = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1087
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1088
class ConfmlMinExclusive(ConfmlNumericValue):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1089
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1090
    Confml minExclusive element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1091
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1092
    refname = "_minExclusive"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1093
    def __init__(self, value, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1094
        super(ConfmlMinExclusive,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1095
        self.value = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1096
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1097
class ConfmlMaxExclusive(ConfmlNumericValue):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1098
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1099
    Confml maxExclusive element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1100
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1101
    refname = "_maxExclusive"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1102
    def __init__(self, value, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1103
        super(ConfmlMaxExclusive,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1104
        self.value = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1105
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1106
class ConfmlPattern(api.Base):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1107
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1108
    Confml pattern element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1109
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1110
    refname = "_pattern"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1111
    def __init__(self, value, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1112
        super(ConfmlPattern,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1113
        self.value = value   
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1114
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
  1115
class ConfmlTotalDigits(ConfmlNumericValue):
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1116
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1117
    Confml totalDigits element
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1118
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1119
    refname = "_totalDigits"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1120
    def __init__(self, value, **kwargs):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1121
        super(ConfmlTotalDigits,self).__init__(self.refname)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1122
        self.value = value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1123
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1124
def get_mapper(modelname):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1125
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1126
    Return a instance of appropriate mapper for given model.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1127
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1128
    mapmodule = __import__('cone.confml.mapping')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1129
    return mapmodule.confml.mapping.MAPPERS[modelname]()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
  1130