configurationengine/doc/api/howto.rst
author m2lahtel
Tue, 10 Aug 2010 14:29:28 +0300
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
permissions -rw-r--r--
ConE 1.2.11 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     1
.. _cone-api-howto:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     2
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     3
How to use cone APIs
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     4
====================
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     5
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     6
The ConE public usage is described here with few common use cases as HowTo guides. 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
     7
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     8
* See `Cone API epydoc <../epydoc/index.html>`_ for reference guide of api functions.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
     9
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    10
How to open a Configuration project
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    11
-----------------------------------
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    12
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    13
* See reference of `Project class <../epydoc/cone.public.api.Project-class.html>`_
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    14
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    15
To open a project with ConE the api offers a Storage and Project classes. The Storage is the storage 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    16
agostic implemenetation for cpf/zip, filestorage and soon also a webstorage. To access anything in ConE 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    17
you must a project open. 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    18
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    19
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    20
.. code-block:: python 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    21
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    22
    from cone.public import api,exceptions
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    23
    """ 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    24
    The Storage access can be given as a extra parameter. It can have values r=read|w=write|a=append. 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    25
    The default Storage access is read, which will fail if the storage does not exist.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    26
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    27
    The Storage.open method will try which of the storage implementations can open that particular path.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    28
    So for example the path can be 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    29
    'foo/bar'  => Opened with FileStorage
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    30
    'test.cpf' => Opened with ZipStorage
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    31
    'test.zip' => Opened with ZipStorage 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    32
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    33
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    34
    """ Open a storage to current path and give it to the project. """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    35
    prj = api.Project(api.Storage.open('.'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    36
    """ Create a new storage to a cpf file and give it to the project. """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    37
    prj = api.Project(api.Storage.open('test.cpf', 'w'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    38
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    39
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    40
How to access and manipulate Configurations
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    41
-------------------------------------------
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    42
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    43
* See reference of `Configuration class <../epydoc/cone.public.api.Configuration-class.html>`_
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
    44
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    45
A Configuration normally is presented inside the Configuration project as a .confml file. So when you
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    46
are accessing configurations your are actually accessing confml files. The project offers funtionality to 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    47
get,add, remove configurations, which acts on root configurations inside the given project.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    48
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    49
How to List configuration's
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    50
^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    51
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    52
.. code-block:: python 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    53
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    54
    from cone.public import api,exceptions
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    55
    """ Create a storage to current path and give it to the project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    56
    prj = api.Project(api.Storage.open('.'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    57
    """ list and print all root configurations  """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    58
    configlist = prj.list_configurations()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    59
    for config in configlist:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    60
        print config
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    61
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    62
How to Open configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    63
^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    64
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    65
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    66
.. code-block:: python 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    67
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    68
    from cone.public import api,exceptions
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    69
    """ Create a storage to current path and give it to the project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    70
    prj = api.Project(api.Storage.open('.'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    71
    """ open a with name """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    72
    """ 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    73
    get_configuration raises a NotFound exception if the given configuration resource 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    74
    is not found from Storage
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    75
    """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    76
    try:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    77
        myconfig = prj.get_configuration('myconfig.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    78
    except exceptions.NotFound:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    79
        print "myconfml is not found from project!"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    80
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    81
How to remove Configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    82
^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    83
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    84
To remove a Configuration call  ``remove_configuration`` method of Configuration.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    85
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    86
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    87
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    88
    myconfig = prj.get_configuration('myconfig.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    89
    myconfig.remove_configuration('my_remove.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    90
    """ finally save and close project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    91
    prj.save()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    92
    prj.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    93
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    94
How to include a one Configuration to an other Configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    95
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    96
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    97
To include a one Configuration to an other call ``include_configuration()`` method of Configuration and pass the filename of Configuration as a parameter.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    98
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
    99
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   100
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   101
    myconfig = prj.get_configuration('myconfig.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   102
    myconfig.include_configuration('../data.confml')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   103
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   104
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   105
How to set / write metadata to a Configuration root file
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   106
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   107
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   108
The metadata element is currently confml model specific, so you need to import the confml.model to enable metadata writing.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   109
The ConfmlMeta element is desinged so that it can contain several ConfmlMetaProperty elements, each of which can be in 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   110
different xml namespaces.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   111
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   112
.. code-block:: python
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   113
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   114
    from cone.public import api
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   115
    from cone.confml import model
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   116
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   117
    store  = api.Storage.open(".","w")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   118
    prj = api.Project(store)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   119
    config = prj.create_configuration("test_meta.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   120
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   121
    prop1 = model.ConfmlMetaProperty("test", 'testing string')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   122
    prop2 = model.ConfmlMetaProperty("testName", 'testing string2', \
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   123
                                     "http://www.nokia.com/xml/cpf-id/1", \
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   124
                                     attrs={"name":"name1", "value": "value1"})            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   125
    prop3 = model.ConfmlMetaProperty("configuration-property", None, \
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   126
                                     "http://www.nokia.com/xml/cpf-id/1", \
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   127
                                     attrs={"name":"sw_version", "value": "1.0.0"})            
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   128
    metaelem = model.ConfmlMeta([prop1, prop2, prop3])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   129
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   130
    config.meta = metaelem
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   131
    config.save()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   132
    prj.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   133
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   134
The output file *test_meta.confml* should look like this..
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   135
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   136
.. code-block:: xml
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   137
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   138
    <configuration name="test_meta_confml" xmlns="http://www.s60.com/xml/confml/2" ...>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   139
      <meta xmlns:cv="http://www.nokia.com/xml/cpf-id/1">
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   140
        <test>testing string</test>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   141
        <cv:testName name="name1" value="value1">testing string2</cv:testName>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   142
        <cv:configuration-property name="sw_version" value="1.0.0" />
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   143
      </meta>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   144
    </configuration>
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   145
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   146
Feature Access and manipulation
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   147
-------------------------------
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   148
* See reference of `Feature class <../epydoc/cone.public.api.Feature-class.html>`_
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   149
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   150
How to add a Feature to Configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   151
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   152
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   153
To add a Feature to Configuration ``add_feature()`` method can be used.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   154
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   155
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   156
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   157
    conf = api.Configuration("myconf.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   158
    conf.add_feature(api.Feature("feature1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   159
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   160
How to add a child Feature to Feature
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   161
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   162
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   163
Childs can be added under Feature by ``add_feature()`` method and passing the parent Feature as a second paremeter:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   164
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   165
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   166
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   167
    conf = api.Configuration("myconf.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   168
    conf.add_feature(api.Feature("feature1"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   169
    conf.add_feature(api.Feature("feature11"),'feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   170
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   171
How to remove Feature from Configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   172
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   173
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   174
Features can be removed from Configuration by a following way:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   175
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   176
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   177
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   178
    conf1 = api.Configuration("myconf.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   179
    conf1.add_feature('feature1.feature12') # Add feature to Configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   180
    conf1.remove_feature('feature1.feature12') # and then remove it
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   181
    """ finally save and close project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   182
    prj.save()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   183
    prj.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   184
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   185
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   186
Feature acces via Views 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   187
-----------------------
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   188
* See reference of `View class <../epydoc/cone.public.api.View-class.html>`_
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   189
* See reference of `Group class <../epydoc/cone.public.api.Group-class.html>`_
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   190
* See reference of `FeatureLink class <../epydoc/cone.public.api.FeatureLink-class.html>`_
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   191
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   192
How to get a Feature from Configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   193
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   194
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   195
Features can be accessed through View:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   196
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   197
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   198
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   199
    from cone.public import api
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   200
    """ Create a storage to current path and give it to the project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   201
    prj = api.Project(api.Storage.open('.'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   202
    """ open the first configuration from the list """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   203
    firstconfig = prj.get_configuration(configlist[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   204
    """ get default view of first configuration """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   205
    default_view = firstconfig.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   206
    """ fetch example_feature1 from default view """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   207
    feature = default_view.get_feature('example_feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   208
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   209
Feature can be accessed also by a property:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   210
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   211
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   212
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   213
    from cone.public import api
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   214
    """ Create a storage to current path and give it to the project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   215
    prj = api.Project(api.Storage.open('.'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   216
    """ open the first configuration from the list """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   217
    firstconfig = prj.get_configuration(configlist[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   218
    """ get default view of first configuration """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   219
    default_view = firstconfig.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   220
    """ fetch example_feature1 from default view """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   221
    feature = default_view.example_feature1
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   222
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   223
How to list all Features inside a certain View
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   224
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   225
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   226
All Features can listed by calling ``list_all_features()`` method of View. Default view returns always 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   227
the view from the Root configuration point of view.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   228
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   229
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   230
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   231
    from cone.public import api
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   232
    """ Create a storage to current path and give it to the project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   233
    prj = api.Project(api.Storage.open('.'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   234
    """ open the first configuration from the list """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   235
    firstconfig = prj.get_configuration(configlist[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   236
    """ get default view of first configuration """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   237
    default_view = firstconfig.get_default_view()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   238
    """ get all features in list from default view """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   239
    features = default_view.list_all_features()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   240
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   241
All features can be listed also using some custom View:
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   242
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   243
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   244
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   245
    from cone.public import api
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   246
    """ Create a storage to current path and give it to the project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   247
    prj = api.Project(api.Storage.open('.'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   248
    """ open the first configuration from the list """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   249
    firstconfig = prj.get_configuration(configlist[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   250
    """ get my_view view to first configuration """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   251
    view = firstconfig.get_view("my_view")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   252
    """ fetch example_feature1 from my_view view """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   253
    features = view.list_all_features()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   254
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   255
How to list Features inside a certain View
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   256
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   257
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   258
To list immediate Features found under the certain View can be done by calling ``list_features()`` method.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   259
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   260
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   261
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   262
    myconfig = api.Configuration("root.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   263
    view = myconfig.get_view("my_view")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   264
    features = view.list_features()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   265
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   266
How to list all Features inside a certain Configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   267
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   268
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   269
To list all Features found under a certain Configuration can be done by calling ``list_all_features()`` method of Configuration.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   270
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   271
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   272
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   273
    from cone.public import api
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   274
    """ Create a storage to current path and give it to the project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   275
    prj = api.Project(api.Storage.open('.'))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   276
    """ open the first configuration from the list """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   277
    firstconfig = prj.get_configuration(configlist[0])
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   278
    """ get all features in list from configuration """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   279
    features = firstconfig.list_all_features()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   280
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   281
How to read a value for a specific Feature
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   282
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   283
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   284
The a value of specific Feature can be read by calling ``get_value()`` method or using value property.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   285
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   286
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   287
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   288
    value1 = my_feature1.get_value()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   289
    value2 = my_feature2.value
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   290
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   291
How to read a possible options of selection Feature
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   292
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   293
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   294
To list possible options of selection Feature can be done by calling ``get_valueset()`` method of Feature.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   295
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   296
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   297
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   298
    feature = api.Feature('my_selection_feature',type='selection')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   299
    feature.add_option('one', '1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   300
    feature.add_option('two', '2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   301
    value_set = feature.get_valueset()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   302
    feature.get_option('1').get_name() #returns  'one'
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   303
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   304
How to read a type of specific Feature
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   305
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   306
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   307
To read a specific type on Feature ``get_type()`` method or type property can be used. 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   308
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   309
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   310
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   311
    feature = dview.get_feature('my_feature')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   312
    feature.get_type() # returns type of the Feature
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   313
    feature.type # returns type of the Feature
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   314
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   315
How to set a value for a specific Feature
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   316
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   317
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   318
To set value for a specific Feature can be done by calling ``set_value()`` method or ``value`` property.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   319
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   320
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   321
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   322
    feature1 = dview.get_feature('my_feature1')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   323
    feature2 = dview.get_feature('my_feature2')
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   324
    feature1.set_value(123)
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   325
    feature2.value = "my_value"
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   326
    """ finally save and close project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   327
    prj.save()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   328
    prj.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   329
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   330
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   331
How to Create a View
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   332
^^^^^^^^^^^^^^^^^^^^
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   333
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   334
.. code-block:: python
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   335
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   336
    from cone.public import api
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   337
    from cone.confml import model
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   338
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   339
    store  = api.Storage.open(".","w")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   340
    prj = api.Project(store)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   341
    """ First create the configuration with two features """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   342
    if prj.is_configuration("test_override.confml"):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   343
        config = prj.get_configuration("test_override.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   344
    else:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   345
        config = prj.create_configuration("test_override.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   346
    fea1 = config.create_feature("foo", name="foo name")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   347
    fea2 = fea1.create_feature("bar", name="bar name")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   348
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   349
    """ Create the view and group to it """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   350
    view = config.create_view('testview')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   351
    group = view.create_group('group1')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   352
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   353
    """ 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   354
    Create a featurelink.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   355
    Note! the featurelink now overrides the name attribute of the original feature.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   356
    """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   357
    link = group.create_featurelink('foo', name="foo name overridden")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   358
    """ override the description attribute of the view link """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   359
    link.desc = "override desc" 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   360
    config.save()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   361
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   362
How to Get a view and test attribute overrides
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   363
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   364
In this example we assume that the previous example was stored to a file *test_override.confml*.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   365
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   366
.. code-block:: python
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   367
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   368
    from cone.public import api
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   369
    from cone.confml import model
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   370
    
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   371
    store  = api.Storage.open(".","w")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   372
    prj = api.Project(store)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   373
    config = prj.get_configuration("test_override.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   374
    """ get the view and a feature from it """
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   375
    view = config.get_view('testview')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   376
    fea = view.get_feature('group1.foo')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   377
    """ assert that the feature attributes have been overridden in the view """ 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   378
    assert(fea.has_attribute('name'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   379
    assert(fea.has_attribute('desc'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   380
    assert(fea.has_attribute('minLength') == False)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   381
    assert(fea._obj.name == 'foo name')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   382
    prj.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   383
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents: 0
diff changeset
   384
0
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   385
Data access and manipulation
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   386
----------------------------
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   387
The data access inside a configuration is possible, but basically this can be avoided by manipulating the values 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   388
of features, which actually modify the data elements inside the configuration.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   389
However if direct data element access is needed, here's how you can do it.
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   390
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   391
How to add Data to Configuration
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   392
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   393
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   394
To add Data to Configuration can be done by calling ``add_data()`` method of Configuration: 
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   395
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   396
.. code-block:: python
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   397
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   398
    conf = api.Configuration("data.confml")
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   399
    conf.add_data(api.Data(ref='feature1', value=123))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   400
    conf.add_data(api.Data(fqn='feature1.feature12', value="test"))
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   401
    """ finally save and close project """
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   402
    prj.save()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   403
    prj.close()
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   404
    
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   405
2e8eeb919028 Adding EPL version of configurationengine.
terytkon
parents:
diff changeset
   406