Skip to content
Snippets Groups Projects
Commit bf0690df authored by Stefano Borini's avatar Stefano Borini Committed by GitHub
Browse files

Merge pull request #29 from force-h2020/extract-io-layer

Extract io layer to writer/reader class
parents 3b55f0fc d6a4ae2a
No related branches found
No related tags found
No related merge requests found
from traits.api import HasStrictTraits, Instance, String, List
from traits.api import HasStrictTraits, Instance, List
from force_bdss.workspecs.data_source import DataSource
from force_bdss.workspecs.kpi_calculator import KPICalculator
from .multi_criteria_optimizer import MultiCriteriaOptimizer
SUPPORTED_FILE_VERSIONS = ["1"]
class InvalidFileException(Exception):
pass
class InvalidVersionException(InvalidFileException):
pass
from ..data_sources.base_data_source_model import BaseDataSourceModel
from ..kpi.base_kpi_calculator_model import BaseKPICalculatorModel
from ..mco.base_mco_model import BaseMCOModel
class Workflow(HasStrictTraits):
name = String()
multi_criteria_optimizer = Instance(MultiCriteriaOptimizer)
data_sources = List(DataSource)
kpi_calculators = List(KPICalculator)
@classmethod
def from_json(cls, json_data):
try:
version = json_data["version"]
except KeyError:
raise InvalidFileException("Corrupted input file, no version"
" specified")
if version not in SUPPORTED_FILE_VERSIONS:
raise InvalidVersionException(
"File version {} not supported".format(json_data["version"]))
self = cls(
multi_criteria_optimizer=MultiCriteriaOptimizer.from_json(
json_data["multi_criteria_optimizer"]
),
data_sources=[
DataSource.from_json(data_source_data)
for data_source_data in json_data["data_sources"]],
kpi_calculators=[
KPICalculator.from_json(kpi_calculator_data)
for kpi_calculator_data in json_data["kpi_calculators"]]
)
return self
"""Model object that represents the Workflow as a whole"""
#: Contains the bundle-specific MCO Model object.
#: Can be None if no MCO has been specified yet.
multi_criteria_optimizer = Instance(BaseMCOModel, allow_none=True)
#: Contains the bundle-specific DataSource Model objects.
#: The list can be empty
data_sources = List(BaseDataSourceModel)
#: Contains the bundle-specific KPI Calculator Model objects.
#: The list can be empty
kpi_calculators = List(BaseKPICalculatorModel)
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