Feature: Prüfung auf Existenz von XML- und XSL-Dateien vor Transformation
- Prüfe ob XML- und XSL-Dateien existieren bevor TransformationJobs erstellt werden - Zeige detaillierte Fehlermeldungen wenn Dateien fehlen - Zähle und melde übersprungene Jobs bei Batch-Verarbeitung - Verhindere mehrfache Fehlerdialoge durch zentrale Fehlerbehandlung - Logge fehlende Dateien mit vollständigen Pfaden für einfaches Debugging
This commit is contained in:
@@ -108,6 +108,13 @@ class TransformationMixin:
|
||||
# Erstelle TransformationJob mit TreeWidgetItem-Kontext für Parameter-Sammlung
|
||||
job = self._create_transformation_job(xsl_file_obj, xml_file_obj, parent_item)
|
||||
if not job:
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
"Fehler",
|
||||
"Transformation kann nicht gestartet werden.\n\n"
|
||||
"Bitte überprüfen Sie, ob XML- und XSL-Dateien existieren.\n"
|
||||
"Details finden Sie im Log.",
|
||||
)
|
||||
return
|
||||
|
||||
# Starte Transformation in separatem Thread
|
||||
@@ -140,16 +147,35 @@ class TransformationMixin:
|
||||
|
||||
# Erstelle TransformationJobs für alle XML-Dateien
|
||||
jobs = []
|
||||
skipped_count = 0
|
||||
for xml_file_obj in xsl_file_obj.xmls:
|
||||
# Übergebe das XslFile-TreeWidgetItem für Parameter-Sammlung
|
||||
job = self._create_transformation_job(xsl_file_obj, xml_file_obj, item)
|
||||
if job:
|
||||
jobs.append(job)
|
||||
else:
|
||||
skipped_count += 1
|
||||
|
||||
if not jobs:
|
||||
QMessageBox.warning(self, "Fehler", "Konnte keine Transformations-Jobs erstellen")
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
"Fehler",
|
||||
f"Konnte keine gültigen Transformations-Jobs erstellen.\n\n"
|
||||
f"{skipped_count} XML-Datei(en) wurden übersprungen (fehlende Dateien).",
|
||||
)
|
||||
return
|
||||
|
||||
# Informiere Benutzer wenn einige Jobs übersprungen wurden
|
||||
if skipped_count > 0:
|
||||
logger.warning(f"{skipped_count} von {len(xsl_file_obj.xmls)} Jobs übersprungen (fehlende Dateien)")
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
"Warnung",
|
||||
f"{skipped_count} von {len(xsl_file_obj.xmls)} XML-Datei(en) werden übersprungen "
|
||||
f"(fehlende XML- oder XSL-Dateien).\n\n"
|
||||
f"{len(jobs)} Job(s) werden ausgeführt.",
|
||||
)
|
||||
|
||||
# Starte Transformation in separatem Thread
|
||||
self._start_transformation(jobs, force=force)
|
||||
|
||||
@@ -311,16 +337,35 @@ class TransformationMixin:
|
||||
|
||||
# Erstelle TransformationJobs für alle XML-Dateien
|
||||
jobs = []
|
||||
skipped_count = 0
|
||||
for xsl_file_obj, xml_file_obj, xsl_file_item in xsl_xml_pairs:
|
||||
# Übergebe das XslFile-TreeWidgetItem für Parameter-Sammlung
|
||||
job = self._create_transformation_job(xsl_file_obj, xml_file_obj, xsl_file_item)
|
||||
if job:
|
||||
jobs.append(job)
|
||||
else:
|
||||
skipped_count += 1
|
||||
|
||||
if not jobs:
|
||||
QMessageBox.warning(self, "Fehler", "Konnte keine Transformations-Jobs erstellen")
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
"Fehler",
|
||||
f"Konnte keine gültigen Transformations-Jobs erstellen.\n\n"
|
||||
f"{skipped_count} XML-Datei(en) wurden übersprungen (fehlende Dateien).",
|
||||
)
|
||||
return
|
||||
|
||||
# Informiere Benutzer wenn einige Jobs übersprungen wurden
|
||||
if skipped_count > 0:
|
||||
logger.warning(f"{skipped_count} von {len(xsl_xml_pairs)} Jobs übersprungen (fehlende Dateien)")
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
"Warnung",
|
||||
f"{skipped_count} von {len(xsl_xml_pairs)} XML-Datei(en) werden übersprungen "
|
||||
f"(fehlende XML- oder XSL-Dateien).\n\n"
|
||||
f"{len(jobs)} Job(s) werden ausgeführt.",
|
||||
)
|
||||
|
||||
logger.info(f"Starte Transformation für {len(jobs)} XML-Dateien unter TreeNode '{tree_node_obj.bez}'")
|
||||
|
||||
# Starte Transformation in separatem Thread
|
||||
@@ -399,6 +444,23 @@ class TransformationMixin:
|
||||
# Erstelle absoluten Pfad zur XSL-Datei
|
||||
xsl_file_abs = xsl_dir.path_to_root_dir / xsl_file_obj.xsl_file
|
||||
|
||||
# Prüfe ob XSL-Datei existiert
|
||||
if not xsl_file_abs.exists():
|
||||
error_msg = f"XSL-Datei nicht gefunden: {xsl_file_abs}"
|
||||
logger.error(error_msg)
|
||||
# Kein MessageBox hier - wird in der aufrufenden Funktion behandelt
|
||||
return None
|
||||
|
||||
# Erstelle absoluten Pfad zur XML-Datei
|
||||
xml_file_abs = self.project.project_dir / xml_file_obj.xml
|
||||
|
||||
# Prüfe ob XML-Datei existiert
|
||||
if not xml_file_abs.exists():
|
||||
error_msg = f"XML-Datei nicht gefunden: {xml_file_abs}"
|
||||
logger.error(error_msg)
|
||||
# Kein MessageBox hier - wird in der aufrufenden Funktion behandelt
|
||||
return None
|
||||
|
||||
# Sammle XSLT-Parameter hierarchisch (TreeNode-Eltern → XslFile)
|
||||
xslt_params = {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user