1a0a56a626
Replace the stale multi-module java/mss-failsafe skeleton (old user-management prototype) with the active single-module machine-safety inspection app that was living in its own standalone repo at the repo root. - Remove old java/mss-failsafe/ multi-module tree (mss, userdata, userManagement, mssfailsafe.datalayer, mssfailsafeWeblayer) incl. committed build artifacts - Add the active app (PrimeFaces 11 / JSF 2.3 / Hibernate 5.6 / iText / POI) flattened into java/mss-failsafe/ as the only mss-failsafe in git - Working tree captured = master tip 2a142b5 + in-progress uncommitted work (incl. .github/*.instructions.md AI-context files) - Archive the standalone repo's 33-commit history in GIT_HISTORY_ARCHIVE.md since its .git was not migrated This is the source of truth / base for the upcoming upgraded rewrite.
2.6 KiB
Executable File
2.6 KiB
Executable File
Domain: SecurityArea
Zweck
Abbildung eines Schutzbereichs einer Maschine mit zugehörigen Schutzeinrichtungen, Gefahrenstellen und Schaltgeräten sowie Fragebögen zur Bewertung.
Haupt-Entitäten (Ausschnitt)
SecurityAreaSecurityDevice(Liste in Area)DangerPointSwitchingDeviceSecurityAreaQuestionnaire(assoziative Entity zwischen Schutzbereich undQuestionaire)Questionaire
Lebenszyklus
- Erstellung im UI: Neues
SecurityAreaObjekt mit Fake-ID (negativ). - Bearbeitung von Eigenschaften (Name, Typen/Enums:
ProtectionType,MountingPosition,OverrunMeasurementType,ApproachSpeed). - Hinzufügen von Schutzeinrichtungen/Gefahrenstellen/Schaltgeräten (ebenfalls ggf. mit Fake-ID bis persistiert).
- Speichern: Negative IDs der neuen Objekte werden auf
nullgesetzt → Persist durchSecurityAreaManager.save/ Sammelspeicher. - Nach Persist: Re-Load (
refresh/reloadWithQuestionnaires) vor weiterer Bearbeitung.
Klonen
SecurityAreaManager.cloneArea(SecurityArea area):
- Lädt persistente Quelle (falls ID > 0) vollständig.
- Erzeugt neue Kopie via Copy-Konstruktor.
- Controller passt Namen an (
Original (Kopie)), setzt neuenullIDs für untergeordnete Objekte.
Fragebogen-Verknüpfung
Hinzufügen
- Methode:
addQuestionnaireToSecurityArea(area, questionnaire). - Erzeugt
SecurityAreaQuestionnaireWrapper. - Persist Wrapper, merge Area.
- UI aktualisiert Liste und sendet Erfolgsmeldung.
Entfernen
removeQuestionnaireFromSecurityArea(area, securityAreaQuestionnaire)entfernt Element aus Sammlung & ruftem.remove.
Verfügbare Fragebögen
getAvailableQuestionnaires(area)holt alleQuestionaireund filtert bereits zugeordnete anhand Name. Verbesserung: Nutzung ID statt Name zur Eindeutigkeit.
Konsistenz / Referentielle Integrität
Beim Löschen eines Schutzbereichs (deleteSelected() im Controller):
- Entfernen aus Maschine.
- Auflösen aller Kind-Referenzen (SwitchingDevices, DangerPoints, SecurityDevices) durch Setzen der Area auf
null. - Entfernen der Kindobjekte via entsprechende Manager (
removeAllIn). - Löschen des
SecurityAreavia Named Query (SecurityArea.DELETE).
Potentielle Verbesserungen
- Cascade Settings genauer prüfen (evtl. kann Teil der manuellen Löschlogik automatisiert werden).
- Validierung (Bean Validation) für Pflichtfelder (Name nicht leer, Enums nicht null soweit fachlich notwendig).
- Nutzung DTOs zur Entkopplung UI ↔ JPA (reduziert Lazy Probleme).
Aktualisiert: 2025-10-20