de.kl.xsreports
Class RtfGenerator

java.lang.Object
  extended by de.kl.xsreports.TemplateBasedGenerator
      extended by de.kl.xsreports.RtfGenerator
All Implemented Interfaces:
Generator, GeneratorConfiguration

public class RtfGenerator
extends TemplateBasedGenerator
implements Generator, GeneratorConfiguration

Diese Klasse implementiert einen Report-Generator, der die Ausgabe im RTF Format erzeugt. Die Sache funktioniert wie folgt:

  1. Ein Objekt dieser Klasse wird von der Factory erezugt. Dabei wird der parameterlose Konstruktor aufgerufen.
  2. Die Factory erfragt das Interface GeneratorConfiguration
  3. Die Factory sendet das Template
Folgende Funktionen werden unterstuetzt: Tabellen
Zur Ausgabe von Tabellen muss das zugehoerige Datenobjekt folgendes Format haben: Beispiel:

 // eine Tabelle mit 3 Zeilen
 Object[]Rights=new Object[3];

 // nun die Daten fuer die Tabelle festlegen
 Rights[0]=new String[] {"Lesen","Beschreibung des Rechts Lesen","RD"};
 Rights[1]=new String[] {"Schreiben","Beschreibung des Rechts Schreiben","WR"};
 Rights[2]=new String[] {"Loeschen","Beschreibung des Rechts Loeschen","DD"};

 // Daten in einem Properities Object speichern
 Properties Data=new Properties();
 Data.put("mytable",Rights);

 
Dieser Generator liest folgende Parameter aus der WEB-XML des Servlets:
 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.

 
Der Generator liest folgende Werte aus den Properties des Templates:

 report.symbol.header     - Die Kopfzeile fuer die Tabelle durch die das 
                            Symbol "symbol" ersetzt wird. Die Zeile ist als
                            eine Kommaliste anzugeben.
                            Beispiel:
                              report.mytable.header=Index,Bezeichnung

 report.symbol.columnwidth- Breite der einzelnen Tabellenspalten der Tabelle
                            durch die das Symbol "symbol" ersetzt wird. Die 
                            Zeile ist als eine Kommaliste anzugeben.
                            Beispiel:
                              report.mytable.columnwidth=19,42

 report.symbol.body.haslines
                          - Flag um die Trennlinien im Hauptteil der Tabelle 
                            zu steuern. Bei "0" werden keine Linien gezeichnet

 report.symbol.columnmap  - Reihenfolge der Spalten der Tabelle. Die 
                            Zeile ist als eine Kommaliste anzugeben.
                            Die erste Spalte hat den Index 0
                            Beispiel:
                              report.mytable.columnmap=1,0
 

Author:
nikita

Constructor Summary
RtfGenerator()
          Erzeugt eine neue Instanz des RTF Generators.
 
Method Summary
protected  java.lang.String createCheckbox(java.lang.String SymbolName, java.lang.Boolean Data)
          Erzeugt eine "Checkbox" fuer ein Symbol von Type boolean.
protected  java.lang.String createTable(java.lang.String SymbolName, java.lang.Object[] Data)
          Erzeugen eine RTF Tabelle aus einem Array.
 java.lang.String getContentType()
          Type der Daten im HTTP Protokoll
protected  java.lang.String getKeyPattern()
          Lesen des Markers fuer den Anfang eines Symbols
protected  java.lang.String getOutputLineseperator()
          Lesen des Zeilentrenners.
protected  java.lang.String getSectionEnd()
          Ende eines als ein Abschnitt zu scannende Sektion
protected  int getSymbolNameGroup()
          Lesen des Indexes der Gruppe implements KeyPattern die den Namen des Symbols beinhaltet.
protected  java.lang.Object getUndefindSymbolValue(java.lang.String SymbolName)
          Der Wert der fuer ein Symbol eingesetzt wird, das nicht in den Daten vorhanden ist.
protected  java.lang.String getValuePattern()
          Liest den String, der als Muster fuer die Text ersetzung verwendet wird.
 void init(javax.servlet.ServletConfig Config)
          Diese Methode wird von der Factory auferufen, um dem Generator die Moeglichkeit zu geben, Daten aus der Servlet-Konfiguration zu lesen.
 void setProperties(java.util.Map Prop)
          Definiert die Eigenschaften des Reports.
 
Methods inherited from class de.kl.xsreports.TemplateBasedGenerator
generate, replace, setTemplate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.kl.xsreports.Generator
generate
 
Methods inherited from interface de.kl.xsreports.GeneratorConfiguration
setTemplate
 

Constructor Detail

RtfGenerator

public RtfGenerator()
Erzeugt eine neue Instanz des RTF Generators. Diese Methode wird von der Factory Klasse gerufen.

See Also:
Factory
Method Detail

getKeyPattern

protected java.lang.String getKeyPattern()
Lesen des Markers fuer den Anfang eines Symbols

Specified by:
getKeyPattern in class TemplateBasedGenerator
Returns:
Der String, der den Anfang eines Symbols markiert. Beispiel: ${.+}

getSymbolNameGroup

protected int getSymbolNameGroup()
Lesen des Indexes der Gruppe implements KeyPattern die den Namen des Symbols beinhaltet. Beispiel: 3

Specified by:
getSymbolNameGroup in class TemplateBasedGenerator

getValuePattern

protected java.lang.String getValuePattern()
Liest den String, der als Muster fuer die Text ersetzung verwendet wird. Diese String kann Werte aus dem urspruenglichem Text enthalten, die durch $0...$9 bezeichnet werden. Der Wert aus der Variable-Liste wird durch $V bezeichnet.

Specified by:
getValuePattern in class TemplateBasedGenerator

getSectionEnd

protected java.lang.String getSectionEnd()
Ende eines als ein Abschnitt zu scannende Sektion

Specified by:
getSectionEnd in class TemplateBasedGenerator

getOutputLineseperator

protected java.lang.String getOutputLineseperator()
Lesen des Zeilentrenners.

Specified by:
getOutputLineseperator in class TemplateBasedGenerator
Returns:
Der String der in der Ausgabe als Zeilentrenner verwendet werden soll.

getUndefindSymbolValue

protected java.lang.Object getUndefindSymbolValue(java.lang.String SymbolName)
Der Wert der fuer ein Symbol eingesetzt wird, das nicht in den Daten vorhanden ist. Folgende Moeglichkeiten gibt es: - ein konstanter String wie z.B. "???" - ein leerer String also "" - null. Dann wird das Symbol nicht ersetzt.

Specified by:
getUndefindSymbolValue in class TemplateBasedGenerator

init

public void init(javax.servlet.ServletConfig Config)
          throws ConfigurationException
Diese Methode wird von der Factory auferufen, um dem Generator die Moeglichkeit zu geben, Daten aus der Servlet-Konfiguration zu lesen.

Specified by:
init in interface GeneratorConfiguration
Parameters:
Config - Objekt mit der Servelet Konfiguration.
Throws:
ConfigurationException - Falls Fehler in den Konfigurationsdaten des Servelet festgestellt werden.

setProperties

public void setProperties(java.util.Map Prop)
                   throws ConfigurationException
Definiert die Eigenschaften des Reports.

Specified by:
setProperties in interface GeneratorConfiguration
Parameters:
Prop - Ein Object das das Map Interface implementiert Das Object speichert zusaetzlich Eigenschaften die aus Aussehen des Reports bestimmen.
Throws:
ConfigurationException

getContentType

public java.lang.String getContentType()
Type der Daten im HTTP Protokoll

Specified by:
getContentType in interface Generator
Returns:
Diese Methode gibt application/rtf zurueck, was dem Client-Brower einen Hinweis auf das Ausbabeformat liefert.

createTable

protected java.lang.String createTable(java.lang.String SymbolName,
                                       java.lang.Object[] Data)
                                throws ConfigurationException
Erzeugen eine RTF Tabelle aus einem Array. Die erste Zeile muss die gewuenschte Spaltenbeite angeben.

Specified by:
createTable in class TemplateBasedGenerator
Parameters:
SymbolName - Name des Symbols das durch die Tabelle ersetzt werden soll.
Data - Objekt mit den Daten aus denen die Tabelle erzeugt wird. Das sollte ein Array sein, in dem fuer jede Zeile der Tabelle wiederum ein Array existiert mit je einem Eintrag pro Spalte.
Returns:
Ein String, der das Ausgabeformat der Tabelle enthaelt.
Throws:
ConfigurationException - Falls die Konfigurations-Daten der Tabelle nicht zu den aktuellen Tabellendaten passen.

createCheckbox

protected java.lang.String createCheckbox(java.lang.String SymbolName,
                                          java.lang.Boolean Data)
Erzeugt eine "Checkbox" fuer ein Symbol von Type boolean. Dabei wird der Text aus dem Properties-File des Generators verwendet.

Specified by:
createCheckbox in class TemplateBasedGenerator