diff --git a/src/ui/mixins/transformation.py b/src/ui/mixins/transformation.py index 7197f0f..efe348c 100644 --- a/src/ui/mixins/transformation.py +++ b/src/ui/mixins/transformation.py @@ -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 = {}