Skip to content

Entwicklungsumgebung

Michael Massee edited this page Aug 6, 2026 · 11 revisions

Entwicklungsumgebung

Voraussetzungen

  • Java 25 (via SDKMAN empfohlen)
  • LibreOffice 25.x (ab 7.x)
  • LibreOffice SDK (für UNO-Klassen)
  • Gradle (Wrapper im Projekt enthalten: ./gradlew)

Java 25 installieren (SDKMAN)

curl -s "https://get.sdkman.io" | bash
sdk install java 25-tem

LibreOffice SDK installieren

Ubuntu/Debian:

sudo apt-get install libreoffice-dev*

Die UNO-Klassen werden aus /usr/lib/libreoffice/program/classes/ eingebunden (in gradle.properties konfiguriert).


Gradle-Tasks

./gradlew buildPlugin          # OXT bauen und Ausgabepfad anzeigen
./gradlew buildOXT             # OXT-Extension erstellen
./gradlew test                 # Unit-Tests ausführen
./gradlew reinstallExtension   # Extension in LibreOffice neu installieren
./gradlew debugLibreOffice     # Neu installieren + LibreOffice mit JDWP Port 5005 starten
./gradlew startCalc            # LibreOffice Calc starten (non-blocking)

Build-Ausgabe: build/distributions/PetanqueTurnierManager-1.0.0.oxt


Empfohlene IDEs

IntelliJ IDEA

  • Gradle-Projekt importieren
  • Java 25 SDK konfigurieren
  • Run/Debug-Konfiguration: Remote-Debugger auf localhost:5005

VS Code

  • Extension Pack for Java installieren
  • Gradle for Java installieren
  • Remote-Debugging über launch.json konfigurieren

Eclipse

  • loeclipse-Plugin installieren
  • Window → Preferences → LibreOffice Plugin → SDK Konfiguration einrichten
  • Gradle Buildship installieren
  • Projekt importieren: Import → Existing Gradle Project

Debuggen

  1. Extension installieren:

    ./gradlew reinstallExtension
  2. LibreOffice mit JDWP starten:

    ./gradlew debugLibreOffice
  3. In der IDE Remote-Debugger auf localhost:5005 verbinden (Attach-Modus).


Projektstruktur (Überblick)

src/main/java/de/petanqueturniermanager/
  comp/            – LibreOffice-Integration, Startup, Menü-Dispatch, globale Plugin-Einstellungen
  helper/          – UNO-API-Abstraktionen (SheetHelper, Lo, BorderFactory, ...)
  model/           – Datenklassen (Team, Spieler, SpielErgebnis, ...)
  basesheet/       – Basisklassen für Tabellenblatt-Typen
  algorithmen/     – Kernalgorithmen (Schweizer System, Supermêlée, Poule, Kaskaden, Formule X, ...)
  exception/       – Projektweite Exception-Klassen
  supermelee/      – Supermêlée-Turniersystem
  liga/            – Liga-Turniersystem
  jedergegenjeden/ – Jeder-gegen-Jeden-System
  schweizer/       – Schweizer System
  forme/           – K.-O.-Grundlagen (Cadrage, KO-Runden)
  ko/              – K.-O.-System
  maastrichter/    – Maastrichter System
  poule/           – Poule-A/B-System
  kaskade/         – Kaskaden-K.O.-System
  formulex/        – Formule-X-System
  triptete/        – Trip-Tête-System
  konfigdialog/    – Konfigurationsdialoge
  addin/           – Generiertes Java-Interface (XGlobal) aus IDL
  addins/          – Calc-Add-in Implementierungen (GlobalImpl, PTM.ALG.*/PTM.PLANUNG.*/...)
  ki/              – KI-Assistent (Turniererstellung, NotebookLM-Export)
  planungsrechner/ – Eigenständiger Planungsrechner (PTM.PLANUNG.*-Live-Formeln)
  webserver/       – Webserver, Composite Views, Webserver-Regie
  sidebar/         – Sidebar-Panels (Info, Sheet-Liste, Webserver-Regie)
  siegergeld/      – Siegergeld-Berechnung
  spielerdb/       – Spieler-Datenbank (SQLite, Import/Export)
  timer/           – Turnier-Timer
  toolbar/         – Toolbar-Steuerung (Spieltag-/Timer-Toolbar)

Tests

  • Unit-Tests: ./gradlew test (laufen ohne LibreOffice)
  • UI-Tests: Klassen mit Suffix UITest benötigen eine installierte Extension. Zuerst ./gradlew reinstallExtension ausführen.

Framework: JUnit 4, AssertJ, Mockito


Bekannte Build-Hinweise

Siehe BUILD_ISSUES.md im Projektverzeichnis für bekannte Probleme (u.a. IDL-zu-Java-Interface-Generierung nicht automatisiert).

Clone this wiki locally