diff --git a/wizard/parsers/gps/__init__.py b/wizard/parsers/gps/__init__.py index 5b70550..abfd620 100644 --- a/wizard/parsers/gps/__init__.py +++ b/wizard/parsers/gps/__init__.py @@ -10,8 +10,9 @@ from .interrex import PARSERS as INTERREX from .ornitela import PARSERS as ORNITELA from .mataki import PARSERS as MATAKI +from .ecotone import PARSERS as ECOTONE PARSERS = [ GPXParser, ] + IGOUT + CATLOG + BASE + JM + UNKNOWN + PATHTRACK + \ - HO11 + AXYTREK + INTERREX + ORNITELA + MATAKI + HO11 + AXYTREK + INTERREX + ORNITELA + MATAKI + ECOTONE diff --git a/wizard/parsers/gps/ecotone.py b/wizard/parsers/gps/ecotone.py new file mode 100644 index 0000000..1daa5de --- /dev/null +++ b/wizard/parsers/gps/ecotone.py @@ -0,0 +1,17 @@ +from parsers.parser_base import CSVParser + + +class EcotoneParser(CSVParser): + DATATYPE = "gps_ecotone" + FIELDS = [x for x in range(0,9)] + SEPARATOR = ";" + HEADER = 0 + + def _check_headers(self, header): + if len(header) != len(self.FIELDS): + self._raise_not_supported(f"Stream have a header length different than expected, {len(header)} != {len(self.FIELDS)}") + + +PARSERS = [ + EcotoneParser, +] \ No newline at end of file diff --git a/wizard/parsers/parser_base.py b/wizard/parsers/parser_base.py index 75223d3..e525ae2 100644 --- a/wizard/parsers/parser_base.py +++ b/wizard/parsers/parser_base.py @@ -110,6 +110,11 @@ class CSVParser(Parser): FIELDS = [] SEPARATOR = ',' SKIP_INITIAL_SPACE = True + HEADER = 1 + + def _check_headers(self, header): + if header != self.FIELDS: + self._raise_not_supported(f"Stream have a header different than expected, {header} != {self.FIELDS}") def __init__(self, parsable: Parsable): super().__init__(parsable) @@ -120,12 +125,10 @@ def __init__(self, parsable: Parsable): reader = csv.reader(stream, delimiter=self.SEPARATOR, skipinitialspace=self.SKIP_INITIAL_SPACE) header = next(reader) - if header != self.FIELDS: - self._raise_not_supported(f"Stream have a header different than expected, {header} != {self.FIELDS}") - - stream.seek(0) + self._check_headers(header) + stream.seek(0) - self.data = pd.read_csv(stream, header=1, names=self.FIELDS, sep=self.SEPARATOR, index_col=False) + self.data = pd.read_csv(stream, header=self.HEADER, names=self.FIELDS, sep=self.SEPARATOR, index_col=False) class ExcelParser(Parser):