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
from traits.has_traits import on_trait_change
from traits.trait_types import List
from force_bdss.data_sources.i_data_source import (
IDataSource)
from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
from force_bdss.data_sources.i_data_source_bundle import (
IDataSourceBundle)
from force_bdss.mco.i_multi_criteria_optimizer_bundle import (
IMultiCriteriaOptimizerBundle)
class CoreMCODriver(Plugin):
......@@ -20,15 +21,15 @@ class CoreMCODriver(Plugin):
#: A List of the available Multi Criteria Optimizers.
#: This will be populated by MCO plugins.
multi_criteria_optimizers = ExtensionPoint(
List(IMultiCriteriaOptimizer),
id='force_bdss.multi_criteria_optimizers')
mco_bundles = ExtensionPoint(
List(IMultiCriteriaOptimizerBundle),
id='force.bdss.mco.bundles')
#: A list of the available Key Performance Indicator calculators.
#: It will be populated by plugins.
data_sources = ExtensionPoint(
List(IDataSource),
id='force_bdss.data_sources')
data_source_bundles = ExtensionPoint(
List(IDataSourceBundle),
id='force.bdss.data_sources.bundles')
@on_trait_change("application:started")
def application_started(self):
......@@ -42,13 +43,15 @@ class CoreMCODriver(Plugin):
raise Exception("Requested data source {} but don't know "
"to find it.".format(requested_ds))
else:
mco_name = workflow.multi_criteria_optimization.name
mco = self._find_mco_by_name(mco_name)
if mco:
mco.run(self.application)
mco_data = workflow.multi_criteria_optimizer
mco_bundle = self._find_mco_bundle_by_name(mco_data.name)
if mco_bundle:
mco_model = mco_bundle.create_model(mco_data.model_data)
mco = mco_bundle.create_optimizer(self, mco_model)
mco.run()
else:
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):
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