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

Merge pull request #7 from force-h2020/csv-extractor

Added CSV extractor
parents 12447326 72bbf435
No related branches found
No related tags found
No related merge requests found
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7
0,1,2,3,4,42,6,7
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7
0,1,2,3,4,5,6,7
{
"multi_criteria_optimizer": {
"name": "basic",
"model_data": {}
},
"data_sources": [
{
"name": "csv_extractor",
"model_data": {
"filename": "foo.csv",
"row": 3,
"column": 5,
"cuba_type": "PRESSURE"
}
}
]
}
......@@ -42,7 +42,7 @@ class CoreMCODriver(Plugin):
ds_model = ds_bundle.create_model(requested_ds.model_data)
data_source = ds_bundle.create_data_source(
self.application, ds_model)
data_source.run()
print(data_source.run())
else:
raise Exception("Requested data source {} but don't know "
"to find it.".format(requested_ds.name))
......
from traits.api import provides, HasStrictTraits
from traits.trait_types import String
from force_bdss.data_sources.i_data_source_bundle import IDataSourceBundle
from .csv_extractor_model import CSVExtractorModel
from .csv_extractor_data_source import CSVExtractorDataSource
@provides(IDataSourceBundle)
class CSVExtractorBundle(HasStrictTraits):
name = String("csv_extractor")
def create_model(self, model_data):
return CSVExtractorModel.from_json(model_data)
def create_ui(self, model):
pass
def create_data_source(self, application, model):
return CSVExtractorDataSource(self, application, model)
import csv
from force_bdss.data_sources.base_data_source import BaseDataSource
class CSVExtractorDataSource(BaseDataSource):
def run(self):
with open(self.model.filename) as csvfile:
reader = csv.reader(csvfile)
for rowindex, row in enumerate(reader):
if rowindex < self.model.row:
continue
if rowindex == self.model.row:
return {
self.model.cuba_type: row[self.model.column]
}
return None
return None
from traits.api import HasStrictTraits, Int, String
class CSVExtractorModel(HasStrictTraits):
filename = String()
row = Int()
column = Int()
cuba_type = String()
@classmethod
def from_json(cls, json_data):
return cls(
filename=json_data["filename"],
row=json_data["row"],
column=json_data["column"],
cuba_type=json_data["cuba_type"]
)
from envisage.plugin import Plugin
from traits.api import List
from force_bdss.data_sources.i_data_source_bundle import IDataSourceBundle
from .csv_extractor.csv_extractor_bundle import CSVExtractorBundle
class CSVExtractorPlugin(Plugin):
id = "force.bdss.data_sources.csv_extractor"
data_sources = List(
IDataSourceBundle,
contributes_to='force.bdss.data_sources.bundles'
)
def _data_sources_default(self):
return [CSVExtractorBundle()]
......@@ -14,6 +14,8 @@ setup(
"multi_criteria_optimizers_plugin:MultiCriteriaOptimizersPlugin",
"data_source = force_bdss.core_plugins.test_data_sources."
"data_sources_plugin:DataSourcesPlugin",
"csv_extractor = force_bdss.core_plugins.csv_extractor"
".csv_extractor_plugin:CSVExtractorPlugin",
]
},
packages=find_packages(),
......
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