PruefManager und Daten aus P41 übertragen

This commit is contained in:
2025-12-02 20:55:51 +01:00
parent 788bac2a23
commit 1881af93f8
25 changed files with 2567 additions and 295 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 115 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 160 KiB

122
assets/Objektstruktur.txt Normal file
View File

@@ -0,0 +1,122 @@
+ PluginController
└─ GUIManager
└─ PrüfManager (koordiniert alle Prüfer)
├─ Dateiprüfer
├─ Linklistenprüfer
│ └─ Zeilenprüfer[n]
│ ├─ Linkprüfer
│ └─ Stilprüfer
└─ LayerLoader
└─ Logger
Plan41_plugin/
├── plugin/ # Plugin-Code
│ ├── main_plugin.py # PluginController
│ ├── dock_widget.py # GUIManager
│ ├── pruefer/
│ │ ├── dateipruefer.py
│ │ ├── linklistenpruefer.py
│ │ ├── zeilenpruefer.py
│ │ ├── linkpruefer.py
│ │ └── stilpruefer.py
│ ├── loader.py
│ └── logger.py
├── tests/ # Unit-Tests
│ ├── __init__.py
│ ├── test_dateipruefer.py
│ ├── test_linklistenpruefer.py
│ ├── test_zeilenpruefer.py
│ ├── test_linkpruefer.py
│ ├── test_stilpruefer.py
│ ├── test_logger.py
│ └── run_tests.py # zentraler Test-Runner
├── requirements.txt
└── README.md
+------------------------------------+
| PluginController |
+------------------------------------+
| - Dock_widget: GUIManager |
| - pruef_manager: PruefManager |
| - loader: LayerLoader |
| - logger: Logger |
+------------------------------------+
| + start(): void |
+------------------------------------+
+------------------------------------+
| GUIManager |
+------------------------------------+
| - dialog: QWidget |
+------------------------------------+
| + getParameter(): dict |
+------------------------------------+
+------------------------------------+
| PruefManager |
+------------------------------------+
| - dateipruefer: Dateipruefer |
| - linklistenpruefer: Linklisten... |
+------------------------------------+
| + pruefe_alle(parameter): list |
+------------------------------------+
+------------------------------------+
| Dateipruefer |
+------------------------------------+
| + pruefe(pfad: str): PruefErgebnis |
+------------------------------------+
+------------------------------------+
| Linklistenpruefer |
+------------------------------------+
| + pruefe(pfad: str): list[Zeile] |
+------------------------------------+
+------------------------------------+
| Zeilenpruefer |
+------------------------------------+
| - linkpruefer: Linkpruefer |
| - stilpruefer: Stilpruefer |
+------------------------------------+
| + pruefe(zeile: str): LayerAuftrag |
+------------------------------------+
+------------------------------------+
| Linkpruefer |
+------------------------------------+
| + pruefe(link: str): PruefErgebnis |
+------------------------------------+
+------------------------------------+
| Stilpruefer |
+------------------------------------+
| + pruefe(stilname: str): Pruef... |
+------------------------------------+
+------------------------------------+
| LayerLoader |
+------------------------------------+
| + lade(layer_auftrag): void |
+------------------------------------+
+------------------------------------+
| Logger |
+------------------------------------+
| + schreibe(msg: str): void |
| + exportiere(): file |
+------------------------------------+
+------------------------------------+
| PruefErgebnis |
+------------------------------------+
| - erfolgreich: bool |
| - daten: dict |
| - fehler: list[str] |
| - warnungen: list[str] |
+------------------------------------+

22
assets/Pluginkonzept.md Normal file
View File

@@ -0,0 +1,22 @@
**Pluginkonzept**
Das Plugin ist grundsätzlich als modulares System gedacht. Komponenten sollen sowohl im Plugin selbst, aber auch in anderen Anwendungen verbaut werden können.
Die Module sind als Python-Objekte angelegt.
Alle Fallunterscheidungen, Exception-Management und Fehlerbehandlung sind in die "Prüfer" ausgelagert.
Der "Prüfmanager" übernimmt dabei die Interaktion mit dem Anwender, um Abfragen oder Fallunterscheidungen durchzuführen, die nicht anhand des Codes erfolgen können.
Alle Prüfer geben ein Objekt "Prüfergebnis" zurück, das das Ergebnis der Fallunterscheidung, Exceptions und Fehlermeldungen enthält. Die Prüfer haben selbst keine UI-Elemente.
| Modul | Aufgabe | Beschreibung |
|-------------------|---------------------------------------|--------------|
|PruefManager | Nutzerabfragen, Ergebnisanpassung | Der Pruefmanager wertet das Ergebnis vom Typ "PruefErgebnis" aus. Sind Entscheidungen erforderlich, fragt er den Anwender und passt das PruefErgebnis entsprechend an, bzw gibt Fehler aus|
|Dateipruefer | Auswertung der Eingaben in Dateiauswahlfeldern | Der Dateipruefer prüft die Eingaben in Dateifeldern. Dabei kann bei jeder Prüfung vorgegeben werden, ob leere Eingabefelder zulässig sind, und ob sie, wenn sie leer sind, eine Standarddatei aufrufen oder temporäre Layer erzeugen. In jedem Fall wird der Nutzer zur Entscheidung aufgefordert, ob das leere Feld beabsichtigt ist, oder ein Bedienfehler|
|Linklistenpruefer | Spezialprüfer für die Linkliste aus dem Plan41-Plugin | Damit die beiden Objekte Stilpruefer und Linkpruefer auch unabhängig voneinander verwendet werden können, fasst der Linklistenpruefer die Ergebnisse zusammen und ergänzt eine Prüfung zur Kartenreihenfolge/Layerreihenfolge|
|Linkpruefer | prüft die Quelle eines angegebenen Links technisch und entscheidet die technischen Parameter nach Typ und Quellort | Enthält eine Fallunterscheidung für lokale und remote-Quellen, sowie für unterschiedliche Datenanbieter. Der Linkpruefer gibt Fehler und Exceptions zurück, wenn die Quelle fehlerhaft oder nicht erreichbar ist.|
|Stilpruefer | Prüft verschiedene Stilquellen | Der Stilpruefer prüft .qml und eingebettete Stile und gibt Warnungen zurück, bzw. Exceptions, um Nutzerentscheidungen auszulösen|
Jedes Modul hat seinen eigenen Unittest. Die Tests werden im Unterordner "Test" zusammengefasst und können gesammelt über die "run_tests.py" aufgerufen werden.
Jedes Modul wird durch ein Mermaid-ClassDiagram beschrieben. Die Entscheidungen und Exceptions, sowie die behandelten Fehler werden visuell aufbereitet.
Zur Verarbeitung werden alle Nutzerinteraktionen und Angaben zunächst in den zuständigen Prüfer übergeben. Wenn vorhanden, mit den erforderlichen Parametern. Das Ergebnis wird zur Auswertung an den Pruefmanager übergeben. Dieser bereitet das Ergebnis auf, behandelt alle Exceptions und Anwenderentscheidungen und gibt die Daten mit den richtigen Parametern zur Weiterverarbeitung an die eigentliche Funktion.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

BIN
assets/UML_Struktur.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB