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
AI Instruktionen für Code-Generierung
Ziel: Ein konsistenter Kontext für zukünftige automatische Ergänzungen.
Projekt-Kurzprofil
- Typ: Java EE 8 (javax), WAR, JSF + PrimeFaces, Hibernate JPA.
- Java Version: 11 (Compiler Plugin).
- Schichten: Model (Entities), Business (Manager), Controller (JSF Beans), View (XHTML).
Wichtige Basisklassen
AbstractEntity: Basisklasse aller Entities (enthält ID – Details nicht gezeigt, aber zentral).AbstractManager<T>: Generisches CRUD mitsave,saveAll, etc.AbstractController<E>: UI State & Utilities.
Konventionen (Kurz)
- Neue Entities: extend
AbstractEntity, Named Queries definieren. - Neue Manager:
@Stateless, extendsAbstractManager<Entity>, implementiertgetEntityManager(). - Neue Controller:
@Named, Scope Annotation (@ViewScopedetc.), extendsAbstractController<Entity>, implementiertgetManager(). - Temporäre (nicht persistierte) Objekte: negative ID (Fake) bis finalem Speichern.
CRUD Muster (Beispiel)
@Stateless
public class ExampleEntityManager extends AbstractManager<ExampleEntity> {
@PersistenceContext(name = "pu_person") EntityManager em;
public ExampleEntityManager(){ super(ExampleEntity.class); }
@Override protected EntityManager getEntityManager(){ return em; }
}
Typische Aufgaben für Generierung
- Neue Domain + Entity + Manager + Controller + XHTML.
- PDF-Ausgabe Erweiterung.
- Batch-Speichern mehrerer neuer Entities.
- Klon-Operationen: Copy-Konstruktor nutzen, Child-IDs auf
nullsetzen, Referenzen neu knüpfen. - Fragebogen-Workflow: add/remove (siehe
QUESTIONNAIRE_WORKFLOW.md).
Qualitätssicherung
- Nach Code-Erzeugung: Prüfe Kompilierung (mvn -q test / package).
- Sicherstellen: Keine direkten System.out Prints in Produktionscode.
- Logging:
LOGGER.error(e)bei Exceptions.
Häufige Edge Cases
- Null Checks vor Persist/Remove.
- Negative ID Objekte dürfen nicht direkt gelöscht (erst persistieren oder aus Collection entfernen).
- Lazy Collections müssen initialisiert vor Iteration (via
refreshoderHibernate.initialize).
Verbesserungsvorschläge (safe additions)
- Service Layer Einführen (wenn Logik Manager übersteigt).
- Bean Validation (@NotNull, @Size) auf Entities.
- Einheitliche Exception Klasse.
Generierungs-Präferenzen
- Bevorzugt vorhandene Muster exakt replizieren.
- Keine neuen Frameworks ohne Bedarf.
- Code kommentieren nur bei komplexer Logik.
Anti-Pattern vermeiden
- Business Logik direkt im Controller.
- Duplizierte Query Strings ohne Named Query.
Letzte Aktualisierung: 2025-10-20