Sunday, May 2, 2010

de.courir.core

Da fast die gesamte Entwicklung im core-Plugin stattfindet, lohnt es sich dieses kurz gesondert zu betrachten. Alle anderen Plugins sind schon fast selbsterklärend..

de.courir
.... unterhalb dieser ebene befinden sich tatsächlich MEHR packages als nur core. Der Grund dafür ist -meistens, das diese packages dann eigentlich zu anderen Plugins gehören (autocompletion, reporting), ich aber derzeit keine Lust habe, für 3-4 Klassen eigene Plugins zu bauen.. Wenn Netbeans irgendwann Scala 2.8.0 zumindest rudimentär unterstützen würde, könnte sich dies ändern.
Wirklich zum Plugin gehören nur die folgenden:

de.courir.core
-> Generische, Für das Projekt benötigte Basisfunktionen, die sich auch leicht in anderen Projekten benutzen ließen. Enthält u.a. Swing- und GlazedLists Erweiterungen, io-routinen, und weiteres. Sehr wichtig ist das Form-Package, dass die Basis der Gui ist.
-> Keine der Klassen dieses Packages greift auf de.courir.dao zu!

de.courir.controller
-> Enthält die Projektspezifische Logik. Auf oberste Ebene sind dies die Controller, die direkt von der GUI aus erzeugt und verwendet werden. Des weiteren gibt es noch zahlreiche Subpackages mit Controller-Komponenten, Beans-Helpern, Internatiolisierbare Nachrichten etc.

Für eine grobe Einteilung sollte das erst mal reichen. Auf hässlichere Dinge, wie meine selbstgeschriebene (und unhandlichen) Forms- und Beanbinding-Komponenten gehe ich jetzt mal bewusst NICHT ein :-D
Auf

Saturday, May 1, 2010

Technologielandpark

Kurz eine Auflistung der technischen Basis des Programms

Technogien
  • Programmiersprache Java 1.6.x
  • Programmiersprache Scala 2.8.0
  • Datenbank: JavaPersistenceMap mit eclipselink (Objektrelaltionaler Mapper)
  • GUI: Netbeans 6.8
  • Reporting: JasperReports
  • Unzählige UtitltyBibliotheken: apache-commons, google-collections, slf4 for logging, ...

Architektur

de.courir.db
-> Enthält die Logik um die zu verwendende Datenbank auszuwählen, bindet die DataAccessObjecte ein und stellt die Gui zur Verwaltung der Datenbank bereit.

de.courir.dao
-> Enthält die JPA-Entitäten

de.courir.connector.hsqlb, .mysql, .postgresql, ...
-> Die einzelnen Connector-Plugins enthalten die Treiber für die verschiedenen Datenbanken inkl. Anpassbarer Konfigurationsoberfläche

de.courir.core
-> Enthält, wie geplant, 90% der wiederverwendbaren Logik der Applikation. Vollständig in Scala geschreiben.
-> Das Plugin hat im Moment zwei architekturell bedingte Nachteile: 1. Es enthält auch den Code für zahlreiche andere Plugins. 2. Sein Code befindet sich in einem Subplugin: de.courir.core.scala. Beides ist der Tatsache geschuldet, dass sich Scala 2.8. bisher in Netbeans nicht sinnvoll einsetzen lässt.

de.courir.gui
-> Sämtliche Grafischen Eingabekomponten, baut direkt auf core auf.

de.courir.ui
-> Etwas dämtlicher Name. EnthältGrafische Ressourcen etc für Icons, die im Sourcecode verwendet werden.

de.courir.report
-> Enthält die zu verwendenden Reports und die Reporting-Engine jars.

de.courir.autocompletion
-> Hilfsplugin. Enthält Dateien etc für die Autovervollständigung z.B. der Vornamen.

Zahlreiche externe Bibliotheken, die im Moment noch einzelne Plugins sind, zukünftig wahrscheinlich zusammengeworfen werden:
apache-commons, google-collections, glazedlists, swingx, slf4j


Entwicklungsumgebung
Die Hauptentwicklung erfolgt im plugin de.courir.core.scala, das ein Intellij Projekt ist und das jar für de.courir.core zusammenschnürt.
Die Infrastruktur hingegen wird in java als Netbeans-Projekt entwickelt - Hierbei handelt es sich nebem den üblichen Kleistercode vor allem um die GUI-Fenster, in denen auf die Logik aus dem core-Plugin zugegriffen wird.

Erster Post

Das Courir-Project hat jetzt seine eigene Webseite. Der Einfachheit wegen handelt es sich hierbei erst mal nur um einfaches Blog, und um die Sachen noch einfacher zu gestalten ist das Blog, wie auch die Applikation, auf deutsch. (Wenn doch irgendwann mal der Internationalisierungszug kommt kann man das ganze ja immer noch über einen Redirect steuern.)

Worum gehts hier? Um die Vorstellung der Applikation "courir", einer Anwendung zum verwalten von Sportereignissen, genauer: Wettläufen. (Volksläufe, Nachtläufe, .. und wie sie alle heißen.) Da diese meist von Vereinen ohne Profitziel veröffentlich werden, sie der Markt an Applikationen hierfür bisher relativ dürr aus.. Das soll sich jetzt ändern. :-)

"courir", das im Moment auf dem Weg zum ersten Release ist (bisheriger Stand: 1.0 Alpha), ist eine OpenSource Applikation nach GPL-Richtlinien, durch die es für alle Zeiten als kostenlos und nicht-kommerziell "gebrandmarkt" ist. :-)

Bereits enthaltene Features
- Theoretische Anbindung beliebiger Datenbanken. Dies schließt auch "Datei"-Datenbank ein, so dass ein Arbeiten auch ohne Datenbank nur auf Dateibasis möglich ist. (Dann quasi wie Word..)
- Auswertungssystem für Startlisten, Urkunden, ...
- Import- und Export der Daten (bisher noch rudimentär), um Backups zu machen und Daten anderer Systeme zu übernehmen.
- Mächtiges Datenmodell, dass die Auswertungen und die Pflege von Teilnehmern in beliebigen Kombinationen von Veranstaltungen und Wettbewerben möglich macht. Auch zahlreiche, bisher nicht geplante Features wären sehr leicht möglich, z.B. die Erfassung und Verfolgung der Ergebnisse über mehrere Wettbewerbe hingweg, Vereinsbasierte Auswertungen, Erfassung von anderen Werten als Zeiten..
- EINFACH: Der Benutzer muss sich mit der Komplexität des Programms nicht auseinandersetzen. Die Oberfläche wird stets so einfach wie möglich gestaltet sein.
- EFFIZIENT: Im finalen Stadium soll ein Arbeiten nur mit Tastatur problemlos möglich sein, damit die Eingaben schnell und effizient erfolgen können.


-