Referenzprojekt Softwareentwicklung
Automatische Generierung einer HTML-Anwendung für Adressauskünfte aus verschiedenen Datenbanken
mit Java, ApacheForrest und Apache Lucene
Aus einer oder mehreren Datenbanken wird vollautomatisch eine HTML-Anwendung mit Daten, Bildern, Navigation und Suchfunktion generiert.
Die HTML-Seiten können auf CD ausgeliefert oder über das Internet publiziert werden.
Hintergrund
Bei den Daten unseres Kunden handelt es sich um umfangreiche Adressbestände und Firmendaten. Die Daten liegen in verschiedenen Datenbanken vor.
Ziel unseres Projektes war es, aus den Datenbanken per Knopfdruck die HTML-Seiten und die Anwendung zu generieren und auf CD oder im Web zu veröffentlichen.
Aus Kostengründen sollten möglichst Open Source Werkzeuge zum Einsatz kommen.
Technische Umsetzung
Generierung der Adress-CDs
Für die Generierung der HTML-Seiten aus den Datenbanken wurde der in der Grafik dargestellte Weg gewählt.
Für die Steuerung wurde ein Java-Programm geschrieben, in dem der Benutzer die Daten auswählt sowie verschiedene statische Bestandteile wie Überschriften-Texte, Hilfe-Seiten und Layout-Vorgaben (css-Dateien) bestimmt.
Details zur Umsetzung
Die Daten aus der Datenbank werden zunächst in XML umgesetzt und gleichzeitig indiziert. Für die Indizierung und Suche kommt Apache Lucene zum Einsatz. Aus den XML-Dateien werden mittels Apache Forrest und eigener XML-Transformationen sowohl die Seiteninhalte als auch die Navigation generiert. Die statischen Bestandteile der HTML-Seite werden hinzugefügt und das Ergebnis verschlüsselt und komprimiert.
Die HTML-Seiten können auf CD ausgeliefert oder über das Internet publiziert werden.
Suchfunktion
Für die Suche kam eine Java-Script-Lösung nicht infrage, weil diese bei den vorliegenden Datenmengen bei weitem nicht schnell genug gewesen wäre. Daher wurde ein Java-Applet in die Suchseite eingebunden, bei dem Apache Lucene zum Einsatz kam. Bei der Erstellung der Anwendung wird ein Index generiert, der eine performante Suche auch bei großen Datenmengen ermöglicht.