de.kl.xsreports
Class TemplateBasedGenerator

java.lang.Object
  extended by de.kl.xsreports.TemplateBasedGenerator
All Implemented Interfaces:
Generator
Direct Known Subclasses:
RtfGenerator, TextGenerator

public abstract class TemplateBasedGenerator
extends java.lang.Object
implements Generator

Diese Klasse implementiert Funktionen die von allen Generatoren die auf Templates basierente Reports erzeugen verwendet werden koennen.

Author:
nikita

Constructor Summary
TemplateBasedGenerator()
          Creates a new instance of TempateBasedGenerator
 
Method Summary
protected abstract  java.lang.String createCheckbox(java.lang.String SymbolName, java.lang.Boolean Data)
          Erzeugt eine Checkbox fuer ein Symbol das vom Typ "boolean" ist.
protected abstract  java.lang.String createTable(java.lang.String SymbolName, java.lang.Object[] Data)
          Erzeugen eine Tabelle aus einem Array.
 void generate(java.io.Writer Destination, java.util.Map Data)
          Erzeugt den Report aus dem Template und den Daten.
protected abstract  java.lang.String getKeyPattern()
          Lesen des Markers fuer den Anfang eines Symbols
protected abstract  java.lang.String getOutputLineseperator()
          Lesen des Zeilentrenners.
protected abstract  java.lang.String getSectionEnd()
          Ende eines als ein Abschnitt zu scannende Sektion
protected abstract  int getSymbolNameGroup()
          Lesen des Indexes der Gruppe implements KeyPattern die den Namen des Symbols beinhaltet.
protected abstract  java.lang.Object getUndefindSymbolValue(java.lang.String SymbolName)
          Der Wert der fuer ein Symbol eingesetzt wird, das nicht in den Daten vorhanden ist.
protected abstract  java.lang.String getValuePattern()
          Liest den String, der als Muster fuer die Text ersetzung verwendet wird.
protected static java.lang.String replace(java.lang.String Source, java.lang.String OldValue, java.lang.String NewValue)
          Resetzen eines Wertes in einem String.
 void setTemplate(java.io.InputStream TemplateSource)
          Wird vom Framework aufgerufen, um dem Generator das Template bekannt zu machen.
 
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
getContentType
 

Constructor Detail

TemplateBasedGenerator

public TemplateBasedGenerator()
Creates a new instance of TempateBasedGenerator

Method Detail

getKeyPattern

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

Returns:
Der String, der ein Symbol beschreibt. Beispiel: ((${)([A-Z,a-z]+)(}))

getSymbolNameGroup

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


getValuePattern

protected abstract 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.


getSectionEnd

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


getOutputLineseperator

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

Returns:
Der String der in der Ausgabe als Zeilentrenner verwendet werden soll.

createTable

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

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 abstract java.lang.String createCheckbox(java.lang.String SymbolName,
                                                   java.lang.Boolean Data)
Erzeugt eine Checkbox fuer ein Symbol das vom Typ "boolean" ist.


getUndefindSymbolValue

protected abstract 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.


setTemplate

public void setTemplate(java.io.InputStream TemplateSource)
Wird vom Framework aufgerufen, um dem Generator das Template bekannt zu machen.

Parameters:
TemplateSource - Die Quelle fuer das Template. Der Generator muss die Quelle schliessen, wenn sie nicht mehr benoetigt wird.

generate

public void generate(java.io.Writer Destination,
                     java.util.Map Data)
              throws java.io.IOException,
                     ConfigurationException
Erzeugt den Report aus dem Template und den Daten.

Specified by:
generate in interface Generator
Parameters:
Destination - Aufgabe-Stream auf den geschrieben wird.
Data - Die Daten die in dem Report verwendet werden.
Throws:
java.io.IOException - Falls es beim Schreiben auf den Ausgabe-Stream zu Fehlern kam.
ConfigurationException - Falls Konfigurations-Daten fehlen.

replace

protected static java.lang.String replace(java.lang.String Source,
                                          java.lang.String OldValue,
                                          java.lang.String NewValue)
Resetzen eines Wertes in einem String. Falls der "OldValue" nicht gefunden wird, so wird der original String zurueckgegeben.