configurationengine/source/cone/confml/mapping.py
author terytkon
Thu, 11 Mar 2010 17:04:37 +0200
changeset 0 2e8eeb919028
permissions -rw-r--r--
Adding EPL version of configurationengine.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     1
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     3
# All rights reserved.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     4
# This component and the accompanying materials are made available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     6
# which accompanies this distribution, and is available
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     8
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     9
# Initial Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    11
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    12
# Contributors:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    13
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    14
# Description:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    15
#
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    16
## 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    17
# @author Teemu Rytkonen
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    19
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
Methods for Mapping Carbon model to other data model objects 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
"""
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
from cone.public import api, exceptions, container, utils
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
from cone.public.mapping import BaseMapper
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
from cone.carbon import model as carbonmodel
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
""" Carbon to confml model mapping is done in Carbon2confml """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
from cone.confml import model 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
class Confml2carbon(object):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
    Carbon2confml class maps Carbon model object to confml model objects.  
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
    def __init__(self):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
        self.MAPPING_TABLE = {model.ConfmlConfiguration: self.configuration,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
                              model.ConfmlFeature: self.setting,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
                              model.ConfmlSetting: self.setting,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
                              model.ConfmlIntSetting: self.setting,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
                              model.ConfmlBooleanSetting: self.setting,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
                              model.ConfmlSelectionSetting: self.setting}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
        pass
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    43
    def map_object(self, object):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    44
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
        Return a confml model object from Carbon object
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
        try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
            return self.MAPPING_TABLE[object.__class__](object)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
        except KeyError:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
            return object
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
    def configuration(self, object):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
        Map a CarbonConfiguration object to a ConfmlConfiguration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
        mapdict = object._dict()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    57
        if object.meta and object.meta.get('type') == 'featurelist':
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    58
            mapobj = object._clone(class_instance=carbonmodel.FeatureList, recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    59
        else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    60
            mapobj = object._clone(class_instance=carbonmodel.CarbonConfiguration, recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
        return mapobj
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    62
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    63
    def setting(self, object):
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    64
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    65
        Map a CarbonSetting object to a ConfmlSetting
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    66
        """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    67
        mapdict = object._dict()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    68
        if object.__class__ == model.ConfmlFeature:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
            mapobj = object._clone(class_instance=carbonmodel.CarbonFeature, recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
        elif object.__class__ == model.ConfmlIntSetting:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
            mapobj = object._clone(class_instance=carbonmodel.CarbonIntSetting, recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
        elif object.__class__ == model.ConfmlBooleanSetting:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    73
            mapobj = object._clone(class_instance=carbonmodel.CarbonBooleanSetting, recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
        elif object.__class__ == model.ConfmlSelectionSetting:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
            mapobj = object._clone(class_instance=carbonmodel.CarbonSelectionSetting, recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
        elif object.__class__ == model.ConfmlSetting:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
            mapobj = object._clone(class_instance=carbonmodel.CarbonSetting, recursion=True)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
        else:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
            raise exceptions.IncorrectClassError('Cannot find a mapping object for this class %s!' % object.__class__)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
        return mapobj
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
MAPPERS =  \
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
{ 'carbon' : Confml2carbon,
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
  'confml' : BaseMapper
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
}
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86