""" ErrorCollector - Gemeinsame Klasse zum Sammeln von Fehlern und Warnungen Diese Klasse wird von getpositions.py und drawdxf.py verwendet, um Fehler und Warnungen während der Verarbeitung zu sammeln und zu verwalten. """ import json from pathlib import Path class ErrorCollector: """Sammelt alle Fehler und Warnungen während der Verarbeitung.""" def __init__(self): self.errors = {} self.warnings = {} def add_errors(self, error_dict): """Fügt Fehler aus einem Dictionary hinzu.""" for key, value in error_dict.items(): if key in self.errors: if isinstance(self.errors[key], list) and isinstance(value, list): self.errors[key].extend(value) else: self.errors[key] = [self.errors[key], value] else: self.errors[key] = value def add_warnings(self, warning_dict): """Fügt Warnungen aus einem Dictionary hinzu.""" for key, value in warning_dict.items(): if key in self.warnings: if isinstance(self.warnings[key], list) and isinstance(value, list): self.warnings[key].extend(value) else: self.warnings[key] = [self.warnings[key], value] else: self.warnings[key] = value def has_errors_or_warnings(self): """Prüft ob Fehler oder Warnungen vorhanden sind.""" return bool(self.errors) or bool(self.warnings) def has_errors(self): """Prüft ob Fehler vorhanden sind.""" return bool(self.errors) def get_all_issues(self): """Gibt alle Fehler und Warnungen als Dictionary zurück.""" result = {} if self.errors: result["errors"] = self.errors if self.warnings: result["warnings"] = self.warnings return result def write_errorfile(self, work_dir: Path, filename: str): """Schreibt Fehlerdatei nur wenn Fehler oder Warnungen vorhanden sind.""" if self.has_errors(): print("Fehler gefunden. Schreibe Error-Datei.") all_issues = self.get_all_issues() write_json_file(all_issues, work_dir, filename) else: print("Keine Fehler gefunden. Keine Error-Datei geschrieben.") def write_json_file(data: dict, out_dir: Path, filename: str) -> None: """ Schreibt Daten in eine JSON-Datei. Args: data: Dictionary mit zu schreibenden Daten out_dir: Ausgabeverzeichnis filename: Dateiname für die JSON-Datei """ print("writing data to a json file ...") outfile = out_dir / filename if isinstance(out_dir, Path) else Path(out_dir) / filename with open(outfile, 'w', encoding='utf-8') as fh: json.dump(data, fh, indent=2, ensure_ascii=False, default=str) print("done")