diff --git a/force_bdss/mco/parameters/base_mco_parameter_factory.py b/force_bdss/mco/parameters/base_mco_parameter_factory.py new file mode 100644 index 0000000000000000000000000000000000000000..57f16ecd5bbd3333f93fb2718e60b52ee16a1419 --- /dev/null +++ b/force_bdss/mco/parameters/base_mco_parameter_factory.py @@ -0,0 +1,15 @@ +from traits.has_traits import HasStrictTraits +from traits.trait_types import String, Type + + +class BaseMCOParameterFactory(HasStrictTraits): + id = String() + name = String("Undefined parameter") + description = String("Undefined parameter") + model_class = Type('BaseMCOParameter') + + def create_model(self, data_values=None): + if data_values is None: + data_values = {} + + return self.model_class(factory=self, **data_values) diff --git a/force_bdss/mco/parameters/i_mco_parameter_factory.py b/force_bdss/mco/parameters/i_mco_parameter_factory.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/force_bdss/mco/parameters/parameter_factory_registry.py b/force_bdss/mco/parameters/parameter_factory_registry.py index 915cd0cc8144e764bf9209c0cf1f26f492589028..8bd180ed870515a92742ebee65f70f33f404be76 100644 --- a/force_bdss/mco/parameters/parameter_factory_registry.py +++ b/force_bdss/mco/parameters/parameter_factory_registry.py @@ -1,11 +1,21 @@ -from traits.api import HasStrictTraits, Dict +from traits.api import HasStrictTraits, Dict, String + +from force_bdss.mco.parameters.base_mco_parameter_factory import \ + BaseMCOParameterFactory class ParameterFactoryRegistry(HasStrictTraits): - factories = Dict() + """Registry to keep the parameter factories and lookup them. + """ + # Temp: this will become an extension point. + factories = Dict(String, BaseMCOParameterFactory) def get_factory_by_id(self, id): + """Finds the factory by its id, so that we can obtain it as from + the id in the model file. + """ return self.factories[id] def register(self, factory): + """Registers a new factory""" self.factories[factory.id] = factory diff --git a/force_bdss/mco/parameters/tests/test_parameter_factory_registry.py b/force_bdss/mco/parameters/tests/test_parameter_factory_registry.py new file mode 100644 index 0000000000000000000000000000000000000000..39aca6b0ff9bdd379368c3de15d15f961ced0274 --- /dev/null +++ b/force_bdss/mco/parameters/tests/test_parameter_factory_registry.py @@ -0,0 +1,10 @@ +import unittest + +from force_bdss.mco.parameters.parameter_factory_registry import \ + ParameterFactoryRegistry + + +class TestParameterFactoryRegistry(unittest.TestCase): + def test_registry_init(self): + reg = ParameterFactoryRegistry() + self.assertEqual(reg.factories, {})