Zahlen zum Nachdenken

Screenshot Monopolis In der c’t 2/07 wurde monopolis.net vorgestellt. Eine Website die Zahlen zum Ungleichgewicht zwischen Arm und Reich auf dieser Welt auflistet. Die Site besticht durch ihre Fakten. Zitat: „30.000 Kinden unter fünf Jahren sterben täglich an behandelbaren Krankheiten…“

Eclipse „Read Me Trim“

Eclipse Screenshot Nach dem letzen Eclipse-Update erschien die links abgebildete Schaltfläche in der Statusleiste. Diese kann einfach entfernt werden, wenn alle Plugins mit einem example im Namen gelöscht werden. Diese beinhalten Beispiele, welche bei der Entwicklung eigener Eclipse-Erweiterungen verwendet werden können. Die Meldung selbst, kommt vom Debugger. Im Verzeichnis $ECLIPSEDIR/eclipse/plugins nach *example* suchen und alle direkt gefundenen Verzeichnisse löschen.

Schriften finden mit Opcion

Screenshot Opcion Das Java Programm Opcion listet alle auf dem Rechner installierten Schriften übersichtlich mit einer Schriftprobe auf. So finden man schnell eine passende Schrift. Den Anzeigetext, sowie Größe und Format der Vorschau können beliebig eingestellt werden.

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]