Current Version:
1.4.0

Readme

Extremely Simple WEB Reports

SourceForge.net Logo

Home Integration Konfiguration Formate Symbole Java-Doc Download Übersicht About

Hier wird Schritt für Schritt beschrieben, wie man xsreports in eine bestehende WEB Anwendung integriert.

Schritt 1 - Daten bereitstellen

Ein Report braucht Daten. xsreports kennt genau zwei Arten - Strings und Arrays. Strings werden eins zu eins in den Report übernommen. Arrays werden als Tabellen dargestellt. Zur Übergabe an den Report werden alle Daten in ein Properties Objekt verpackt. Somit hat man es immer mit Schlüssel - Wert Paaren zu tun. Das Properties Objekt wird dem Report im Rahmen der Session zu Verfügung gestellt.
Anmerkung: hier kann jedes Objekt verwendet werden das ein "Map" Interface implementiert.

Beispiel:

        Properties ReportData=new Properties();
        ReportData.put("firstname","Kalle");
        ReportData.put("name","Svenson");
        ReportData.put("password","kalle42");
        String[][] Activities={{"1","Malen"},{"2","Lesen"},{"3","Sport"}};
        ReportData.put("activities",Activities);
        // Die Daten in der Session speichern
        Session.setAttribute("reportdata",ReportData);                
						
						

Diesen Code wird mal normalerweise in die (JSP) Seite einbauen, von der aus der Report abgerufen werden kann - es muss aber nicht so sein. Damit stehen die Daten dem Report unter dem Namen "reportdata" zur Verfügung (den Namen gut merken - wird später noch gebraucht).

Schritt 2 - Link bereitstellen

Der Benutzer kann den Report mit üblichen WEB Elementen wie "Link" oder "Button" öffenen oder zum Download anfordern. Diese Elemente müssen natürlich in die Seiten der WEB Anwendung eingebaut werden, von denen aus der Report abgerufen wird.

Beispiel:

out.println("<a href='reports/Sample1Rtf'>Report</a>");
						

So, dass war's schon mit Programmieren - der Rest wird konfiguriert.

Schritt 3 - Template erstellen

Nun wir es kreativ - ein schönes Template muss her. Dazu nimmt man eine gute Textverarbeitung (also MS-WORD) und legt los. Bilder, Kopf und Fusszeile - alles was in RTF geht ist erlaubt. An den Stellen, an denen man die Daten aus der WEB-Anwendung anzeigen möchte, schreibt man Name unter dem das Datum in dem Properties Objekt gespeicht wurde in folgender Form:  ${property-name}
Beispiel: ${firstname}

Das Dokument wird dann als RTF Datei im WEB-INF/templates Verzeichnis gespeichert.

Zusaetzlich kann man noch "Properties" fuer das Template definieren. Diese werden in einer Datei abgelegt die den gleichen Name wie das Template hat.
Beispiel:

myreport.rtf
myreport.rtf.properties

Was man genau in dieser Propertiesdatei einstellen kann, ist bei den jeweiligen Report Generator beschrieben, also hier fuer den RTF Generator, hier fuer den CSV Generator und hier fuer den Text Generator.

Schritt 4 - Servlet konfigurieren

Nun muss das Servlet das den Report für uns erstellt konfiguriert werden. Das Servlet ist in dem Archive xsreports.jar enthalten - also kopieren wir diese Datei erst mal in das WEB-INF/LIB Verzeichnis der Applikation. Da dieses Servlet Log4j verwendet, muss auch die Datei log4j-<Version>.jar vorhanden sein. Anschliessent kann das Servlet in der Datei WEB.XML angelegt werden.

Der Name des Servlet kann frei gewählt werden. Die Klasse die das Servlet implementiert ist de.kl.xsreports.ReportServlet. Die folgende Tabelle beschreibt alle weiten Parameter des Servlets.

Parameter Beschreibung Beispiel
generator.class Name der Klasse die den Report-Generator implementiert. In der Datei xsreports.jar sind folgende Generatoren implementiert:
de.kl.xsreports.RtfGenerator
de.kl.xsreports.CsvGenerator
de.kl.xsreports.
RtfGenerator
session.
dataattribute
Name des Session Attributes unter dem Report Daten abgeholt werden können. reportdata
template.name Name der Datei, die als Vorlage für den Report dient. Die unter dem Parameter template.class angegebene Klasse wird verwendet, um diese Datei zu laden. Dieser Parameter ist optional. myfile.rtf

template.class Name der Klasse, die für das Laden der Template Dateien zuständig ist. In der Datei xsreports.jar ist folgende Implementierung vorhanden:
de.kl.xsreports.FileHandler
Wie der Name schon sagt, läd diese Klasse Templates aus Dateien. Dieser Parameter ist optional.
de.kl.xsreports.
FileHandler
generator.
properties
Name der Datei in der Konfigurationsdaten des Generators abgelegt sind. Fehlt dieser Parameter beim Servlet so werden Defaultwerte verwendet. Diese Werte sind in der Datei RtfGenerator.properties die Teil dieses Pakets ist definiert. 
Dieser Parameter ist optional.
myfile.properties
http.header.
set
Zusaetzlich HTTP-Header Attribute. Diese werden als eine durch "%%" getrennte Liste angegeben.

Dieser Parameter ist optional.

Content-disposition: attachment; filename=fname.ext %%
content-type: application/xml

Hier ist ein Auszug aus der Datei WEB.XML:
  <servlet>
    <servlet-name>Sample1Rtf</servlet-name>
<!-- Servlet Klasse --> <servlet-class>de.kl.xsreports.ReportServlet</servlet-class> <!-- Template Handler Klasse --> <init-param> <param-name>template.class</param-name> <param-value>de.kl.xsreports.FileHandler</param-value> </init-param>
<!-- Template Name --> <init-param> <param-name>template.name</param-name> <param-value>sample1.rtf</param-value> </init-param>
<!-- Report Generator Class --> <init-param> <param-name>generator.class</param-name> <param-value>de.kl.xsreports.RtfGenerator</param-value> </init-param>
<!-- Session Attribute mit den Report-Daten --> <init-param> <param-name>session.dataattribute</param-name> <param-value>reportdata</param-value> </init-param> </servlet>

Schritt 5 - URL konfigurieren

Zum Schluss noch schnell die URL konfigurieren, über die der Report geladen werden kann. Wie auch bei anderen Servlet's wird das mit einem "Servlet-Mapping" Eintrag erledigt:
  <servlet-mapping>
    <servlet-name>Sample1Rtf</servlet-name>
    <url-pattern>/reports/Sample1Rtf</url-pattern>
  </servlet-mapping>

Schritt 6 - Log4J

Falls die Applikation Log4J selbst nicht verwendet, ist noch ein weiteres Servlet zu konfigurieren, dessen einzige Aufgabe die Konfiguration von Log4J ist. Der Eintrag in der Datei WEB.XML sieht wie folgt aus:
  <!-- INIT von Log4J -->
  <servlet>
    <servlet-name>InitServlet</servlet-name>
    <servlet-class>de.kl.InitServlet</servlet-class>
    <!-- Logger  -->
    <init-param>
      <param-name>log4j.initfile</param-name>
      <param-value>Log4J_DefaultConfig.properties</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>