project/analyzer/analyzer.py

45 lines
934 B
Python

from collections import defaultdict
from log_analyzer import LogSettings
class Analyzer:
def __init__(self, settings: LogSettings):
self.settings = settings
def process(self, entry: dict) -> bool:
raise NotImplementedError()
def result(self) -> object:
raise NotImplementedError()
class LocationAnalyzer(Analyzer):
entries = []
def __init__(self, settings: LogSettings):
super().__init__(settings)
def result(self) -> object:
return self.entries
def process(self, entry: dict) -> bool:
if entry[self.settings.entry_type] in self.settings.spatials:
self.entries.append(entry)
return False
class LogEntryCountAnalyzer(Analyzer):
def result(self) -> object:
return self.store
def process(self, entry: dict) -> bool:
self.store[entry[self.settings.entry_type]] += 1
return False
def __init__(self, settings: LogSettings):
super().__init__(settings)
self.store = defaultdict(lambda: 0)