Refactor: Code-Duplikation reduziert und Dead Code entfernt
- blake2b-Hash-Berechnung in zentrale Utility-Funktion extrahiert (src/utils.py) mit chunk-basiertem Hashing für bessere RAM-Effizienz - _transform_all_xml_files und _transform_all_xml_files_force zu einer Methode mit force-Parameter zusammengeführt - Project-Lookup-Methoden (getXsl, getJavaVm, etc.) über gemeinsame _lookup()-Hilfsmethode konsolidiert - Duplizierte XML-Sammel-Methoden entfernt, Set-basierte Duplikatsprüfung eingeführt - Ungenutzte Imports, Dead Code und wirkungslose Ausdrücke entfernt Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -579,9 +579,6 @@ class TransformationMixin:
|
||||
|
||||
# Progress Bar anzeigen
|
||||
map_key = f"{xml_file_name}|{xsl_id_str}"
|
||||
if map_key not in self.xml_item_map and self.xml_item_map:
|
||||
# Zeige erste Keys zur Diagnose
|
||||
list(self.xml_item_map.keys())[:3]
|
||||
logger.info(f"Suche TreeWidget-Item für: '{map_key}'")
|
||||
logger.info(f"Map hat {len(self.xml_item_map)} Einträge")
|
||||
tree_item = self.xml_item_map.get(map_key)
|
||||
@@ -741,10 +738,12 @@ class TransformationMixin:
|
||||
f"{successful_count} von {total_count} Transformationen erfolgreich\n{failed_count} fehlgeschlagen\n\nGesamtdauer: {duration_str}",
|
||||
)
|
||||
|
||||
def _transform_all_xml_files(self):
|
||||
def _transform_all_xml_files(self, force: bool = False):
|
||||
"""
|
||||
Transformiert ALLE XML-Dateien in allen TreeNodes des TreeWidgets.
|
||||
Nur Dateien, die nicht up-to-date sind, werden transformiert.
|
||||
|
||||
Args:
|
||||
force: Wenn True, werden alle Dateien unabhängig vom Änderungsstatus neu transformiert.
|
||||
"""
|
||||
try:
|
||||
if not self.project or not self.pdf_project:
|
||||
@@ -781,87 +780,43 @@ class TransformationMixin:
|
||||
return
|
||||
|
||||
# Frage Benutzer um Bestätigung
|
||||
if force:
|
||||
title = "Alle XML-Dateien neu transformieren (force)"
|
||||
message = (
|
||||
f"Möchten Sie wirklich ALLE {len(all_jobs)} XML-Dateien NEU transformieren?\n\n"
|
||||
f"⚠ WARNUNG: Im Force-Modus werden alle Dateien unabhängig von ihrem Status neu verarbeitet!\n"
|
||||
f"Dies kann längere Zeit in Anspruch nehmen."
|
||||
)
|
||||
default_button = QMessageBox.StandardButton.No
|
||||
else:
|
||||
title = "Alle XML-Dateien transformieren"
|
||||
message = (
|
||||
f"Möchten Sie wirklich alle {len(all_jobs)} XML-Dateien transformieren?\n\n"
|
||||
f"Nur Dateien mit Änderungen werden verarbeitet."
|
||||
)
|
||||
default_button = QMessageBox.StandardButton.Yes
|
||||
|
||||
reply = QMessageBox.question(
|
||||
self,
|
||||
"Alle XML-Dateien transformieren",
|
||||
f"Möchten Sie wirklich alle {len(all_jobs)} XML-Dateien transformieren?\n\n"
|
||||
f"Nur Dateien mit Änderungen werden verarbeitet.",
|
||||
title,
|
||||
message,
|
||||
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
|
||||
QMessageBox.StandardButton.Yes,
|
||||
default_button,
|
||||
)
|
||||
|
||||
if reply != QMessageBox.StandardButton.Yes:
|
||||
logger.info("Transformation abgebrochen durch Benutzer")
|
||||
logger.info(f"{'Force-' if force else ''}Transformation abgebrochen durch Benutzer")
|
||||
return
|
||||
|
||||
logger.info(f"Starte Transformation für alle {len(all_jobs)} XML-Dateien (nicht-force)")
|
||||
logger.info(f"Starte {'Force-' if force else ''}Transformation für alle {len(all_jobs)} XML-Dateien")
|
||||
|
||||
# Starte Transformation in separatem Thread
|
||||
self._start_transformation(all_jobs, force=False)
|
||||
self._start_transformation(all_jobs, force=force)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Transformieren aller XML-Dateien: {e}")
|
||||
QMessageBox.critical(self, "Fehler", f"Fehler beim Starten der Transformation: {str(e)}")
|
||||
|
||||
def _transform_all_xml_files_force(self):
|
||||
"""
|
||||
Transformiert ALLE XML-Dateien in allen TreeNodes des TreeWidgets (force).
|
||||
Alle Dateien werden unabhängig vom Änderungsstatus neu transformiert.
|
||||
"""
|
||||
try:
|
||||
if not self.project or not self.pdf_project:
|
||||
QMessageBox.warning(self, "Fehler", "Kein Projekt geladen")
|
||||
return
|
||||
|
||||
# Sammle alle XSL/XML-Paare aus allen Root-Nodes
|
||||
all_jobs = []
|
||||
root = self.ui.treeWidget.invisibleRootItem()
|
||||
|
||||
for i in range(root.childCount()):
|
||||
root_item = root.child(i)
|
||||
root_node = root_item.data(0, Qt.ItemDataRole.UserRole)
|
||||
|
||||
if isinstance(root_node, TreeNode):
|
||||
# Sammle alle XSL/XML-Paare rekursiv
|
||||
xsl_xml_pairs = self._collect_all_xsl_xml_pairs_recursive(root_node, root_item)
|
||||
|
||||
# Erstelle TransformationJobs
|
||||
for xsl_file_obj, xml_file_obj, xsl_file_item in xsl_xml_pairs:
|
||||
job = self._create_transformation_job(xsl_file_obj, xml_file_obj, xsl_file_item)
|
||||
if job:
|
||||
all_jobs.append(job)
|
||||
|
||||
elif isinstance(root_node, XslFile):
|
||||
# Direkt XslFile als Root-Element
|
||||
for xml_file_obj in root_node.xmls:
|
||||
job = self._create_transformation_job(root_node, xml_file_obj, root_item)
|
||||
if job:
|
||||
all_jobs.append(job)
|
||||
|
||||
if not all_jobs:
|
||||
QMessageBox.information(self, "Info", "Keine XML-Dateien zum Transformieren gefunden")
|
||||
return
|
||||
|
||||
# Frage Benutzer um Bestätigung (mit Warnung wegen force)
|
||||
reply = QMessageBox.question(
|
||||
self,
|
||||
"Alle XML-Dateien neu transformieren (force)",
|
||||
f"Möchten Sie wirklich ALLE {len(all_jobs)} XML-Dateien NEU transformieren?\n\n"
|
||||
f"⚠ WARNUNG: Im Force-Modus werden alle Dateien unabhängig von ihrem Status neu verarbeitet!\n"
|
||||
f"Dies kann längere Zeit in Anspruch nehmen.",
|
||||
QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
|
||||
QMessageBox.StandardButton.No,
|
||||
)
|
||||
|
||||
if reply != QMessageBox.StandardButton.Yes:
|
||||
logger.info("Force-Transformation abgebrochen durch Benutzer")
|
||||
return
|
||||
|
||||
logger.info(f"Starte Force-Transformation für alle {len(all_jobs)} XML-Dateien")
|
||||
|
||||
# Starte Transformation in separatem Thread (mit force=True)
|
||||
self._start_transformation(all_jobs, force=True)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Force-Transformieren aller XML-Dateien: {e}")
|
||||
QMessageBox.critical(self, "Fehler", f"Fehler beim Starten der Force-Transformation: {str(e)}")
|
||||
"""Transformiert ALLE XML-Dateien im Force-Modus."""
|
||||
self._transform_all_xml_files(force=True)
|
||||
|
||||
Reference in New Issue
Block a user