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("biogames2.json") print(settings) logfile = "data/inst_56d9b64144ab44e7b90bf766f3be32e3/instance_log.sqlite" 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: if analyzer.process(entry): break for analyzer in analyzers: print("* Result for " + str(type(analyzer))) print(analyzer.result())