import json import sys from load import LOADERS import analyzer class LogSettings: log_format = None entry_type = None spatials = None actions = None analyzers = [] def __init__(self, json_dict): self.log_format = json_dict['logFormat'] self.entry_type = json_dict['entryType'] self.spatials = json_dict['spatials'] self.actions = json_dict['actions'] for mod in json_dict['analyzers']: for name in json_dict['analyzers'][mod]: self.analyzers.append(getattr(sys.modules[mod], name)) def __repr__(self): return str({ "logFormat": self.log_format, "entryType": self.entry_type, "spatials": self.spatials, "actions": self.actions, "analyzers": self.analyzers }) def load_settings(file:str) -> LogSettings: return LogSettings(json.load(open(file))) if __name__ == '__main__': settings = load_settings("biogames.json") print(settings) logfile = "sample.json" loader = LOADERS[settings.log_format]() try: loader.load(logfile) except BaseException as e: raise RuntimeError(e) analyzers = [] for analyzer in settings.analyzers: analyzers.append(analyzer(settings)) for entry in loader.get_entry(): for analyzer in analyzers: analyzer.process(entry) for analyzer in analyzers: print("* Result for " + str(type(analyzer))) print(analyzer.result())