Kategorie: Java

Software-Entwicklung mit Java

Handling von Datenbank-Updates

Logo von Liquibase

Die Verwaltung von Datenbank-Updates ist heute ein elementar Punkt innerhalb der Software-Entwicklung. In den vergangenen Jahren sind dazu eine Vielzahl von Frameworks entstanden. Wie baut man aber diese Frameworks nun richtig und flexibel in sein Projekt ein?

In diesem Artikel möchte ich kurz eine Möglichkeit beschreiben, wie man mit Liquibase (http://www.liquibase.org) und HSQLDB (http://hsqldb.org) ein einfaches Projektsetup aufsetzen kann, das automatisch Datenbank-Updates anwendet. HSQLDB dient dabei als „lokale“ Entwicklungsdatenbank, die später dann durch ein vollständiges DBMS ersetzt werden kann.

Die Idee hinter diesem Vorgehen ist jetzt einfach:

  • Jeder Entwickler soll seine eigene Datenbank zum Testen haben.
  • Die (Unit-)Testfälle sollen auf einem definierten und reproduzierbaren Datenbestand ausgeführt werden.
  • Die Datenbank-Updates sollen an einen zentralen und versionierten Ort gespeichert werden und jeder Entwickler kann diese erweitern.
  • Sie sollen automatisch bei den Entwicklern ausgeführt werden.
  • Angewendete Updates sollen nicht erneut ausgeführt werden.

Neue Bibliothek MarkDown

Wie dokumentiert man sein Projekt möglichst einfach. Eine einfache Art bietet hier die Sprache MarkDown.

Markdown ist eine vereinfachte Auszeichnungssprache, die von John Gruber und Aaron Swartz entworfen wurde. Ein Ziel von Markdown ist, dass schon die Ausgangsform ohne weitere Konvertierung leicht lesbar ist. Als Auszeichnungselemente wurden daher vor allem Auszeichnungsarten verwendet, die in Plaintext und E-Mails üblich sind.
Quelle: http://de.wikipedia.org/wiki/Markdown

Damit die Dokumentation versioniert und passend zum restlichen Quellcode abgelegt werden kann, sollte sie ebenfalls im Versionsverwaltungssystem eingecheckt werden. Da die MarkDown-Dateien auf Text basieren, sind sogar parallele Änderungen möglich.

DataBinding und Validierung mittels Eclipse RCP

Eclipse Logo

Logo von Eclipse, Quelle: https://wiki.eclipse.org

In Eclipse RCP gibt für die Bindung zwischen Model und UI ein Framework für das DataBinding. Das DataBinding Framework verbindet Eigenschaften/Properteries von Objekten. Es wird typischerweise verwendet, um Eigenschaften der Benutzeroberfläche mit Eigenschaften anderer Java-Objekte zu synchronisieren. Diese Java-Objekte repräsentieren in der Regel das Datenmodell oder Domänenmodell.

Somit synchronisiert dieses DataBinding Frameworks Veränderungen dieser Eigenschaften/Properteries zwischen UI und Modell. Es unterstützt auch eine Validierung und Umwandlung bei der Synchronisation.

Erstellen einer kleinen Demo-Anwendung für Eclipse RCP

Eclipse Logo

Logo von Eclipse, Quelle: https://wiki.eclipse.org

Um die Fähigkeiten von Eclipse RCP kurz auszuprobieren, habe ich eine kleine Anwendung für die Anzeige und Bearbeitung von Kontakten implementiert. Das Beispiel findet sich unter meinem GitHub als Tag „DemoContacts“. Zum Ausprobieren wird die Eclipse Platform IDE benötigt oder es müssen die erforderlichen Plugins in Eclipse nachinstalliert werden.

Eigene JSP-Tag-Lib für Liferay

Logo Liferay

Um in Liferay auf Daten zuzugreifen, die in der Portlet-Klasse gesetzt werden (siehe z.B. erstes Plugin) muss zuerst mit

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>
<portlet:defineObjects />

die erforderlichen Objekte initialisiert werden. Zum Zugriff auf eigene Daten muss man immer ein kleines Java-Snippet verwenden, wie z.B.:

<%
    Map<Company, List<User>> users = (Map<Company, List<User>>) renderRequest.getAttribute("users");
    int size = users.size();
    boolean found = size > 0;
%>

Dies hat aber den großen Nachteil, das man die Darstellung mit Logik vermischt. Jedoch kann man mit einer einfachen Erweiterung diesen Umstand umgehen.

Liferay-Demo

Mein erstes Liferay-Plugin

Logo Liferay

Bevor man mit dem Erstellen des Plugins starten, muss man zunächst einige Komponenten von Liferay (http://www.liferay.com/downloads) herunterladen und konfigurieren.

  • Liferay Portal 6.1 Community Edition
  • Liferay IDE 1.4
  • Liferay Plugins SDK 6.1 GA 2

Unter Hilfe findet man die Beschreibung wie die Einrichtung vorgenommen wird.

Ausschnitt des Liferay Plugins

Mein erstes Plugin für Liferay soll alle Benutzer des Liferay Servers anzeigen. Die Darstellung ist dabei bewusst sehr einfach gehalten.

Das Plugin listet alle Firmen auf, die in der lokalen Liferay-Datenbank enthalten sind. Zu jeder Firma werden dann die Nutzer in der Form: Nachname, Vorname und E-Mail angezeigt.