JasperReports und iReport Designer

Screenshot iReportDas Projekt TrafficAnalysis wurde um eine Report-Funktion erweitert, die das Ergebnis der Berechnung automatisch in eine Html- oder PDF-Datei wandelt. Das Zielformat und die Gestaltung des Ergebnisses sollten vom Projekt unabhängig festgelegt werden können. Zum Einsatz kam JasperReports und iReport Designer (ein freies und leistungsfähiges Werkzeug zur Definition der Reports). Die JasperReports-Bibliotheken beinhalten einen umfangreichen XML-Dialekt zur Beschreibungen von Berichten (mit einfachen Berechnungen und Bedingungen). Es stehen fertige Klassen zur Verfügung mit denen die Vorlagen mit Daten befüllt werden können (SQL, CSV usw.). Es werden viele populäre Formate für die Ausgabe unterstützt (z.B. PDF, Text und HTML).

Installation

Die Suche nach den benötigten Bibliotheken gestaltete sich ungewöhlich schwierig, da eine Menge Projekte eingebunden werden und diese in verschiedenen Abhängigkeiten zu finden sind. Für die Integration in die eigenen Projekte hat sich der Weg über den iReport Designer bewährt, dessen Einrichtung – dank des Installers – denkbar einfach ist. Die folgenden Jar-Archive liegen alle im lib Verzeichnis unterhalb des iReport-Programmverzeichnisses.

jasperreports-1.2.8.jar
commons-digester-1.7.jar
commons-collections-2.1.jar
commons-beanutils-1.5.jar
commons-logging-1.0.2.jar
commons-javaflow-20060411.jar
itext-1.3.1.jar
poi-2.0-final-20040126.jar
jdt-compiler-3.1.1.jar
jfreechart-1.0.0.jar
jcommon-1.0.0.jar

Je nach Anforderung müssen noch weitere Archve eingebunden werden. So liegt dem iReport auch eine Bibliothek bei, welche die Verarbeitung von Microsoft Excel Dateien ermöglicht.

Grundlagen

Ein Report ist die tabellarische und grafische Darstellung einer Datenmenge. Jedem Report liegt eine Defiition zu Grunde. Diese wird bei der Vorbereitung mit den ermittelten Daten gefüllt und in das eigentliche Ergebnis (z.B. eine PDF-Datei) überführt.

Ablauf JasperReports

In unserem Beispiel (Code Ausschnitt) übersetzen wir die (mit iReport) erstellte Definition, legen eine HashMap mit Parametern an und lassen eine DataSource auf die zuvor erzeugte CSV-Datei zeigen. In der letzten Zeile wird alles zusammen gebracht und in ein PDF-File geschrieben.

[code lang=“java“]JasperReport jasperReport;
JasperPrint jasperPrint;

String d = „c:\\temp\\report.jrxml“;
jasperReport = JasperCompileManager.compileReport(d);

// Parameter

HashMap map = new HashMap();

map.put(„TA_REPORT_TITLE“, title);
map.put(„TA_MAX_ROWS“, new Integer(maxRows));

// Daten

JRCsvDataSource dataSource = new JRCsvDataSource(
new FileReader(„c:\\temp\\report.csv“));

dataSource.setColumnNames(
new String[]{„datum“,“ip“,“rich“,“proto“,“port“,“ges“,“emp“});
dataSource.setFieldDelimiter(‚;‘);
dataSource.setDateFormat(new SimpleDateFormat(„yyyy-MM-dd“));
dataSource.setUseFirstRowAsHeader(true);

// Report

jasperPrint = JasperFillManager.fillReport(jasperReport, map, dataSource);

String p = „c:\\temp\\report.pdf“;
JasperExportManager.exportReportToPdfFile(jasperPrint, p);[/code]

Unified Modeling Language

Die Projekte werden größer und die Abläufe komplexer. Um da den Überblick zu bewahren und neue Entwicklungen gezielt umsetzen zu können, hilft die Unified Modeling Language (UML).

Dieser Beitrag betrachtet deren Integration in die von uns eingesetzten Werkzeuge und versucht eine Empfehlung für den praktischen Einsatz zu finden.

Screenshot JudeDie Jude Community Edition ist unsere aktuelles Werkzeug bei der Arbeit mit der UML. Die sich auf das grafische Design neuer Programmteile und den Export von Diagrammen (für die Dokumentation) beschränkt. Das kostenlose Programm kennt kennt alle wichtigen Diagrammtypen und besitzt unter anderem die Möglichkeit Java-Code zu generieren. Der Import (Reverse Engineer) kommt leider noch nicht mit Java 1.5 klar.

Screenshot NetbeansDie Netbeans IDE ist seit vielen Jahren die Basis unserer Java-Entwicklungen. Um so erfreulicher sind die Fortschritte der letzten Monate. Die aktuelle Version Netbeans 5.5 hat alle Erwartungen übertroffen. Nach der Installation des Enterprise Pack, kann die UML Unterstützung über das Beta Update Center nach installiert werden. Folgende drei neue Projekttypen stehen dann zur Verfügung:

  • Platform-Independent Model: Dieser UML-Projekttyp wird fÜr reine Modellierungsprojekte ohne Sourcecode-Generierung genutzt.
  • Java Platform Model: Über die Auswahl dieses Projekttyps können optional UML-Modellierungsprojekte mit separaten NetBeans-Java-Projekten assoziiert werden. Damit kann dann eine bidirektionale Synchronisierung zwischen UML-Modell und Java-Sourcecode erfolgen.
  • Java-Platform Model by Reverse Engineering: Wenn bereits umfangreicher Sourcecode in bestehenden Java-Projekten existiert, dann kann dieser auch über Reverse Engineering des Projektes in das UML-Projekt importiert werden.

Als Diagrammtypen stehen Klassen-, Aktivitäts-, Zustandsdiagramme, Deployment-, Sequenz-, Komponenten-, Kollaborations- und Use-Case-Diagramme zur Verfügung (in denen auch UML2-Konstrukte verwendet werden können).

Aus einem UML-Projekt lassen sich komplette HTML-Dokumentationen der Modellelemente und Diagramme erzeugen. Wahlweise können einzelne Diagramme als Grafik exportiert werden.

Screenshot EclipseEclipse ist sicher mehr als ein universeller Editor. Jedoch kommt es in unseren Projekte genau in diesem Zusammenhang zum Einsatz. Die UML Integration ist mit verschiedenen Plug-In’s nachzurüsten. Wir haben uns für EclipseUML von Omondo entschieden. Das Tool beherrscht verschiedene Diagrammtypen und kann in der Free Edition begrenzt Code generieren und automatisch Modelldaten importieren.

Unser Fazit

Der bisherige Ansatz, UML ausschließlich zum Entwurf und zur Dokumentation einzusetzen, wird den aktuellen Programmöglichkeiten nicht mehr gerecht. Die Integration von UML in Netbeans fordert eine stärkere Integration in den Entwicklungsprozess.