Skip to content
Snippets Groups Projects
Commit 62426ce2 authored by Stefano Borini's avatar Stefano Borini
Browse files

Readapted Core driver to handle MCO bundles

parent 0c554e0a
No related branches found
No related tags found
1 merge request!5Introducing bundles
...@@ -3,9 +3,10 @@ from envisage.plugin import Plugin ...@@ -3,9 +3,10 @@ from envisage.plugin import Plugin
from traits.has_traits import on_trait_change from traits.has_traits import on_trait_change
from traits.trait_types import List from traits.trait_types import List
from force_bdss.data_sources.i_data_source import ( from force_bdss.data_sources.i_data_source_bundle import (
IDataSource) IDataSourceBundle)
from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer from force_bdss.mco.i_multi_criteria_optimizer_bundle import (
IMultiCriteriaOptimizerBundle)
class CoreMCODriver(Plugin): class CoreMCODriver(Plugin):
...@@ -20,15 +21,15 @@ class CoreMCODriver(Plugin): ...@@ -20,15 +21,15 @@ class CoreMCODriver(Plugin):
#: A List of the available Multi Criteria Optimizers. #: A List of the available Multi Criteria Optimizers.
#: This will be populated by MCO plugins. #: This will be populated by MCO plugins.
multi_criteria_optimizers = ExtensionPoint( mco_bundles = ExtensionPoint(
List(IMultiCriteriaOptimizer), List(IMultiCriteriaOptimizerBundle),
id='force_bdss.multi_criteria_optimizers') id='force.bdss.mco.bundles')
#: A list of the available Key Performance Indicator calculators. #: A list of the available Key Performance Indicator calculators.
#: It will be populated by plugins. #: It will be populated by plugins.
data_sources = ExtensionPoint( data_source_bundles = ExtensionPoint(
List(IDataSource), List(IDataSourceBundle),
id='force_bdss.data_sources') id='force.bdss.data_sources.bundles')
@on_trait_change("application:started") @on_trait_change("application:started")
def application_started(self): def application_started(self):
...@@ -42,13 +43,15 @@ class CoreMCODriver(Plugin): ...@@ -42,13 +43,15 @@ class CoreMCODriver(Plugin):
raise Exception("Requested data source {} but don't know " raise Exception("Requested data source {} but don't know "
"to find it.".format(requested_ds)) "to find it.".format(requested_ds))
else: else:
mco_name = workflow.multi_criteria_optimization.name mco_data = workflow.multi_criteria_optimizer
mco = self._find_mco_by_name(mco_name) mco_bundle = self._find_mco_bundle_by_name(mco_data.name)
if mco: if mco_bundle:
mco.run(self.application) mco_model = mco_bundle.create_model(mco_data.model_data)
mco = mco_bundle.create_optimizer(self, mco_model)
mco.run()
else: else:
raise Exception("Requested MCO {} but it's not available" raise Exception("Requested MCO {} but it's not available"
"to compute it.".format(mco_name)) "to compute it.".format(mco_data.name))
def _find_data_source_by_computes(self, computes): def _find_data_source_by_computes(self, computes):
for ds in self.data_sources: for ds in self.data_sources:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment