Fehlerhandling in eigene Klasse ausgelagert
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
"""
|
||||
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 oder Warnungen 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")
|
||||
Reference in New Issue
Block a user