de.kl.xsreports
Class TextGenerator

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

public class TextGenerator
extends TemplateBasedGenerator
implements Generator, GeneratorConfiguration

Diese Klasse implementiert einen Report-Generator, der die Ausgabe im Text 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 den Template Properties:
 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.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

 report.symbol.hasframe   - Flag um den Rahmen um die Tabelle zu steuern. Bei
                            "0" wird kein Rahmen gezeichnet.

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

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

 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
                            TextGenerator.properties die Teil dieses Pakets ist
                            definiert.

 

Author:
nikita

Constructor Summary
TextGenerator()
          Creates a new instance of OutlookExpressReport
 
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 Text Tabelle aus einem Array.
 java.lang.String getContentType()
          Gibt den Type des Inhalts zurueck, so wie er zum Client-Browser gesendet wird.
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)
          Liest die Konfiguration aus dem Servlet.
 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

TextGenerator

public TextGenerator()
Creates a new instance of OutlookExpressReport

Method Detail

init

public void init(javax.servlet.ServletConfig Config)
          throws ConfigurationException
Liest die Konfiguration aus dem Servlet. Falls keine weiteren Einstellungen gemacht wurden, kommen die meisten Daten aus der Datei Textreport.properties.

Specified by:
init in interface GeneratorConfiguration
Parameters:
Config - Die Servlet Konfigurationsdaten.
Throws:
ConfigurationException - Bei fehlerhafter Konfiguration.

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()
Gibt den Type des Inhalts zurueck, so wie er zum Client-Browser gesendet wird.

Specified by:
getContentType in interface Generator
Returns:
text/plain

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

createTable

protected java.lang.String createTable(java.lang.String SymbolName,
                                       java.lang.Object[] Data)
                                throws ConfigurationException
Erzeugen eine Text Tabelle aus einem Array.

Specified by:
createTable in class TemplateBasedGenerator
Parameters:
SymbolName - Name des Symbols das die Daten der Tabelle geliefert hat. Wir nur zur Ausgabe von Fehlermeldungen benoetigt.
Data - Die Daten der Tabelle.
Returns:
Den Text der Tabelle.
Throws:
ConfigurationException - Falls die Tabelle falsch konfiguriert ist - beispielsweise die Anzahl der Spalten ist falsch.

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