diff --git a/aosstower/l00/parser.py b/aosstower/l00/parser.py index c90d41ed1c6bd76a3cc75e9c81cf030d2d0dd99c..4b58d83551f6e7725705a35a25e3b9949a0ef134 100644 --- a/aosstower/l00/parser.py +++ b/aosstower/l00/parser.py @@ -60,13 +60,14 @@ def _make_frame(data): frame = Frame() for key, value in data: if key == 'stamp': - frame[key] = value - elif key in database: - frame[key] = database[key].type(value) - else: - frame[key] = value - - return frame + continue + if key in database: + try: + data[key] = database[key].type(data[key]) + except (ValueError, TypeError) as err: + raise LineParseError("error converting '%s' using %s", + data[key], database[key].type) + return data class ParserV0(object): diff --git a/scripts/make_database.py b/scripts/make_database.py index 51269da00efe1e990ba8b8c051c471d5d7656e7b..4b34d09a31a6ac2eef4553bf1c2d1fb3d8eba360 100755 --- a/scripts/make_database.py +++ b/scripts/make_database.py @@ -5,8 +5,8 @@ import logging from datetime import datetime from metobscommon.model import RrdModel, ModelError -from aosstower.record import Record, LineParseError -from aosstower.model import initialize_rrd, VARS +from aosstower.l00.parser import read_records +from aosstower.l00.rrd import initialize_rrd LOG = logging @@ -41,6 +41,7 @@ if __name__ == '__main__': LOG.info("Enter time ordered data files, one per line, ^D when done") args.files = sys.stdin + for each in args.files.readlines(): fpath = each.strip() if not os.path.exists(fpath): @@ -48,17 +49,9 @@ if __name__ == '__main__': continue LOG.info("adding %s", fpath) - for line in open(fpath).readlines(): - if not line.strip(): - continue - try: - record = Record.create(line) - except LineParseError as err: - LOG.error(str(err)) - continue - + for record in read_records(fpath): try: rrd.add_record(record['stamp'], record) - except ModelError: - LOG.exception("Could not insert: %s", record) + except ModelError as err: + LOG.error("Insert failed: %s", err)