From 26088c9b4b0eb062a63b92607131b34353abec0a Mon Sep 17 00:00:00 2001
From: Stefano Borini <sborini@enthought.com>
Date: Thu, 13 Jul 2017 15:53:45 +0100
Subject: [PATCH] Renamed KPC to data sources

---
 examples/test_workflow.json                   |  2 +-
 force_bdss/cli/force_bdss.py                  |  6 ++--
 force_bdss/core_mco_driver.py                 | 30 +++++++++----------
 force_bdss/{kpi => data_sources}/__init__.py  |  0
 force_bdss/{kpi => data_sources}/basic.py     |  6 ++--
 .../data_sources/data_sources_plugin.py       | 22 ++++++++++++++
 .../i_data_source.py}                         |  2 +-
 force_bdss/{kpi => data_sources}/price.py     |  6 ++--
 force_bdss/{kpi => data_sources}/viscosity.py |  6 ++--
 .../kpi/key_performance_calculators_plugin.py | 22 --------------
 force_bdss/mco/i_multi_criteria_optimizers.py |  2 +-
 force_bdss/workspecs/workflow.py              |  4 +--
 12 files changed, 54 insertions(+), 54 deletions(-)
 rename force_bdss/{kpi => data_sources}/__init__.py (100%)
 rename force_bdss/{kpi => data_sources}/basic.py (64%)
 create mode 100644 force_bdss/data_sources/data_sources_plugin.py
 rename force_bdss/{kpi/i_key_performance_calculator.py => data_sources/i_data_source.py} (69%)
 rename force_bdss/{kpi => data_sources}/price.py (59%)
 rename force_bdss/{kpi => data_sources}/viscosity.py (60%)
 delete mode 100644 force_bdss/kpi/key_performance_calculators_plugin.py

diff --git a/examples/test_workflow.json b/examples/test_workflow.json
index 1bbd366..f0fa936 100644
--- a/examples/test_workflow.json
+++ b/examples/test_workflow.json
@@ -2,7 +2,7 @@
     "multi_criteria_optimization": {
         "name": "basic"
     },
-    "key_performance_indicators": [
+    "data_sources": [
         "viscosity", "price"
     ]
 }
diff --git a/force_bdss/cli/force_bdss.py b/force_bdss/cli/force_bdss.py
index 37541e6..79a7920 100644
--- a/force_bdss/cli/force_bdss.py
+++ b/force_bdss/cli/force_bdss.py
@@ -3,8 +3,8 @@ from envisage.core_plugin import CorePlugin
 
 from force_bdss.bdss_application import BDSSApplication
 from force_bdss.core_mco_driver import CoreMCODriver
-from force_bdss.kpi.key_performance_calculators_plugin import \
-    KeyPerformanceCalculatorsPlugin
+from force_bdss.data_sources.data_sources_plugin import \
+    DataSourcesPlugin
 from force_bdss.mco.multi_criteria_optimizers_plugin import \
     MultiCriteriaOptimizersPlugin
 
@@ -17,7 +17,7 @@ def run(evaluate, workflow_filepath):
     plugins = [
         CorePlugin(),
         CoreMCODriver(),
-        KeyPerformanceCalculatorsPlugin(),
+        DataSourcesPlugin(),
         MultiCriteriaOptimizersPlugin(),
     ]
 
diff --git a/force_bdss/core_mco_driver.py b/force_bdss/core_mco_driver.py
index a0409df..6bd610e 100644
--- a/force_bdss/core_mco_driver.py
+++ b/force_bdss/core_mco_driver.py
@@ -3,8 +3,8 @@ from envisage.plugin import Plugin
 from traits.has_traits import on_trait_change
 from traits.trait_types import List
 
-from force_bdss.kpi.i_key_performance_calculator import (
-    IKeyPerformanceCalculator)
+from force_bdss.data_sources.i_data_source import (
+    IDataSource)
 from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
 
 
@@ -26,21 +26,21 @@ class CoreMCODriver(Plugin):
 
     #: A list of the available Key Performance Indicator calculators.
     #: It will be populated by plugins.
-    key_performance_calculators = ExtensionPoint(
-        List(IKeyPerformanceCalculator),
-        id='force_bdss.key_performance_calculators')
+    data_sources = ExtensionPoint(
+        List(IDataSource),
+        id='force_bdss.data_sources')
 
     @on_trait_change("application:started")
     def application_started(self):
         workflow = self.application.workflow
         if self.application.evaluate:
-            for kpi in workflow.key_performance_indicators:
-                kpc = self._find_kpc_by_computes(kpi)
-                if kpc:
-                    kpc.run(self.application)
+            for requested_ds in workflow.data_sources:
+                data_source = self._find_data_source_by_computes(requested_ds)
+                if data_source:
+                    data_source.run(self.application)
                 else:
-                    raise Exception("Requested KPI {} but don't know how"
-                                    "to compute it.".format(kpi))
+                    raise Exception("Requested sata 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)
@@ -50,10 +50,10 @@ class CoreMCODriver(Plugin):
                 raise Exception("Requested MCO {} but it's not available"
                                 "to compute it.".format(mco_name))
 
-    def _find_kpc_by_computes(self, computes):
-        for kpc in self.key_performance_calculators:
-            if kpc.computes == computes:
-                return kpc
+    def _find_data_source_by_computes(self, computes):
+        for ds in self.data_sources:
+            if ds.computes == computes:
+                return ds
 
         return None
 
diff --git a/force_bdss/kpi/__init__.py b/force_bdss/data_sources/__init__.py
similarity index 100%
rename from force_bdss/kpi/__init__.py
rename to force_bdss/data_sources/__init__.py
diff --git a/force_bdss/kpi/basic.py b/force_bdss/data_sources/basic.py
similarity index 64%
rename from force_bdss/kpi/basic.py
rename to force_bdss/data_sources/basic.py
index 4e0d021..5fe2f3c 100644
--- a/force_bdss/kpi/basic.py
+++ b/force_bdss/data_sources/basic.py
@@ -1,10 +1,10 @@
 from traits.api import provides, HasStrictTraits, String
 
-from force_bdss.kpi.i_key_performance_calculator import (
-    IKeyPerformanceCalculator)
+from force_bdss.data_sources.i_data_source import (
+    IDataSource)
 
 
-@provides(IKeyPerformanceCalculator)
+@provides(IDataSource)
 class Basic(HasStrictTraits):
     computes = String("basic")
 
diff --git a/force_bdss/data_sources/data_sources_plugin.py b/force_bdss/data_sources/data_sources_plugin.py
new file mode 100644
index 0000000..2bd94d8
--- /dev/null
+++ b/force_bdss/data_sources/data_sources_plugin.py
@@ -0,0 +1,22 @@
+from envisage.plugin import Plugin
+from traits.api import List
+
+from force_bdss.data_sources.i_data_source import (
+    IDataSource)
+
+from force_bdss.data_sources.basic import Basic
+from force_bdss.data_sources.price import Price
+from force_bdss.data_sources.viscosity import Viscosity
+
+
+class DataSourcesPlugin(Plugin):
+
+    id = "force_bdss.data_sources_plugin"
+
+    data_sources = List(
+        IDataSource,
+        contributes_to='force_bdss.data_sources'
+    )
+
+    def _data_sources_default(self):
+        return [Basic(), Viscosity(), Price()]
diff --git a/force_bdss/kpi/i_key_performance_calculator.py b/force_bdss/data_sources/i_data_source.py
similarity index 69%
rename from force_bdss/kpi/i_key_performance_calculator.py
rename to force_bdss/data_sources/i_data_source.py
index 56b7205..e86f0c7 100644
--- a/force_bdss/kpi/i_key_performance_calculator.py
+++ b/force_bdss/data_sources/i_data_source.py
@@ -1,7 +1,7 @@
 from traits.api import Interface, String
 
 
-class IKeyPerformanceCalculator(Interface):
+class IDataSource(Interface):
     computes = String()
 
     def run(self):
diff --git a/force_bdss/kpi/price.py b/force_bdss/data_sources/price.py
similarity index 59%
rename from force_bdss/kpi/price.py
rename to force_bdss/data_sources/price.py
index 7911254..30fbaf7 100644
--- a/force_bdss/kpi/price.py
+++ b/force_bdss/data_sources/price.py
@@ -1,10 +1,10 @@
 from traits.api import provides, HasStrictTraits, String
 
-from force_bdss.kpi.i_key_performance_calculator import (
-    IKeyPerformanceCalculator)
+from force_bdss.data_sources.i_data_source import (
+    IDataSource)
 
 
-@provides(IKeyPerformanceCalculator)
+@provides(IDataSource)
 class Price(HasStrictTraits):
     computes = String("price")
 
diff --git a/force_bdss/kpi/viscosity.py b/force_bdss/data_sources/viscosity.py
similarity index 60%
rename from force_bdss/kpi/viscosity.py
rename to force_bdss/data_sources/viscosity.py
index d8c3f3e..1c207f4 100644
--- a/force_bdss/kpi/viscosity.py
+++ b/force_bdss/data_sources/viscosity.py
@@ -1,10 +1,10 @@
 from traits.api import provides, HasStrictTraits, String
 
-from force_bdss.kpi.i_key_performance_calculator import (
-    IKeyPerformanceCalculator)
+from force_bdss.data_sources.i_data_source import (
+    IDataSource)
 
 
-@provides(IKeyPerformanceCalculator)
+@provides(IDataSource)
 class Viscosity(HasStrictTraits):
     computes = String("viscosity")
 
diff --git a/force_bdss/kpi/key_performance_calculators_plugin.py b/force_bdss/kpi/key_performance_calculators_plugin.py
deleted file mode 100644
index 3a646d3..0000000
--- a/force_bdss/kpi/key_performance_calculators_plugin.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from envisage.plugin import Plugin
-from traits.api import List
-
-from force_bdss.kpi.i_key_performance_calculator import (
-    IKeyPerformanceCalculator)
-
-from force_bdss.kpi.basic import Basic
-from force_bdss.kpi.price import Price
-from force_bdss.kpi.viscosity import Viscosity
-
-
-class KeyPerformanceCalculatorsPlugin(Plugin):
-
-    id = "force_bdss.key_performance_calculators_plugin"
-
-    key_performance_calculators = List(
-        IKeyPerformanceCalculator,
-        contributes_to='force_bdss.key_performance_calculators'
-    )
-
-    def _key_performance_calculators_default(self):
-        return [Basic(), Viscosity(), Price()]
diff --git a/force_bdss/mco/i_multi_criteria_optimizers.py b/force_bdss/mco/i_multi_criteria_optimizers.py
index 93c6b25..9bb929a 100644
--- a/force_bdss/mco/i_multi_criteria_optimizers.py
+++ b/force_bdss/mco/i_multi_criteria_optimizers.py
@@ -1,4 +1,4 @@
-from traits.api import Interface, String
+from traits.api import Interface, String, Instance
 
 
 class IMultiCriteriaOptimizer(Interface):
diff --git a/force_bdss/workspecs/workflow.py b/force_bdss/workspecs/workflow.py
index 934c778..871e9b7 100644
--- a/force_bdss/workspecs/workflow.py
+++ b/force_bdss/workspecs/workflow.py
@@ -6,7 +6,7 @@ from .multi_criteria_optimization import MultiCriteriaOptimization
 class Workflow(HasStrictTraits):
     name = String()
     multi_criteria_optimization = Instance(MultiCriteriaOptimization)
-    key_performance_indicators = List(String)
+    data_sources = List(String)
 
     @classmethod
     def from_json(cls, json_data):
@@ -14,7 +14,7 @@ class Workflow(HasStrictTraits):
             multi_criteria_optimization=MultiCriteriaOptimization.from_json(
                     json_data["multi_criteria_optimization"]
             ),
-            key_performance_indicators=json_data["key_performance_indicators"]
+            data_sources=json_data["data_sources"]
             )
 
         return self
-- 
GitLab