schmitzm.io.dyntxt
Class DynamicTextGenerator

java.lang.Object
  extended by schmitzm.io.dyntxt.DynamicTextGenerator

public class DynamicTextGenerator
extends Object

Diese Klasse stellt einen dynamischen Text dar. Dieser wird durch ein Text-Geruest (Template) definiert, in dem durch spezielle Tags Schleifen und Felder eingebaut sind:


Um die Tags von normalem Text zu unterscheiden, werden sie zusaetzlich von einer speziellen Zeichenfolge (TAG_INTRO) eingeleitet. Standardmaessig wird hierfuer das $-Zeichen verwendet.
Beachte:
Wird ein benutzerdefinierter Delimiter verwendet, so muss dieser evt. mit zusaetzlichen Backslashs versehen werden, wenn er Spezialzeichen der regulaeren Ausdruecke (Klasse Pattern) beinhaltet!!

Das Template wird zunaechst komplett eingelesen und dabei die Schleifen und Felder identifiziert.
Beim Aufruf von generateDynamicText(..) werden dann die Schleifen und Felder ausgewertet und der Ausgabetext erzeugt. Wann eine Schleife beendet wird, und welche Werte jeweils fuer die Felder eingesetzt werden, entscheidet ein DynamicInputProvider.
Die Ausgabe wird komplett in einem Buffer zwischengespeichert. Ueber einen InputStream kann dann beliebig darauf zugegriffen werden.

Version:
1.0
Author:
Martin Schmitz
See Also:
generateDynamicText(OutputStream,DynamicInputProvider), DynamicInputProvider, Pattern

Field Summary
static String TAG_FIELD
          Steht im Template fuer ein dynamisches Feld.
static String TAG_INTRO
          Leitet die Tags ein.
static String TAG_INTRO_REGEXPR
          Pattern-konformes TAG_INTRO.
static String TAG_LOOPEND
          Beendet im Template eine Schleife.
static String TAG_LOOPSTART
          Leitet im Template eine Schleife ein.
 
Constructor Summary
DynamicTextGenerator(InputStream template)
          Erzeugt einen neuen dynamischen Text.
DynamicTextGenerator(InputStream template, String tagIntro, String tagIntroRegExpr)
          Erzeugt einen neuen dynamischen Text.
 
Method Summary
 void generateDynamicText(OutputStream output, DynamicInputProvider inputProvider)
          Generiert einen Text, in dem die dynamischen Felder der Vorlage durch den DynamicInputProvider aufgeloest werden.
 String getTagIntro()
          Liefert die Zeichenfolge, die die Tags im Template einleitet und sie beim Parsen eindeutig vom Text unterscheidet.
 String getTagIntroForRegExpr()
          Liefert das um Sonderzeichen erweitere TagIntro.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TAG_INTRO

public static final String TAG_INTRO
Leitet die Tags ein.

See Also:
Constant Field Values

TAG_INTRO_REGEXPR

public static final String TAG_INTRO_REGEXPR
Pattern-konformes TAG_INTRO.

See Also:
TAG_INTRO, Pattern, Constant Field Values

TAG_LOOPSTART

public static final String TAG_LOOPSTART
Leitet im Template eine Schleife ein.

See Also:
Constant Field Values

TAG_LOOPEND

public static final String TAG_LOOPEND
Beendet im Template eine Schleife.

See Also:
Constant Field Values

TAG_FIELD

public static final String TAG_FIELD
Steht im Template fuer ein dynamisches Feld.

See Also:
Constant Field Values
Constructor Detail

DynamicTextGenerator

public DynamicTextGenerator(InputStream template)
                     throws IOException
Erzeugt einen neuen dynamischen Text.

Parameters:
template - Vorlage-Text mit Tags (Felder, Schleife)
Throws:
IOException - falls das Lesen aus dem Eingabe-Stream fehlschlaegt

DynamicTextGenerator

public DynamicTextGenerator(InputStream template,
                            String tagIntro,
                            String tagIntroRegExpr)
                     throws IOException
Erzeugt einen neuen dynamischen Text.

Parameters:
template - Vorlage-Text mit Tags (Felder, Schleife)
tagIntro - String, der die Tags einleitet
tagIntroRegExpr - String, der die Tags einleitet (so erweitert, dass er mit den Regulaeren Ausdruecken kompatibel ist)
Throws:
IOException - falls das Lesen aus dem Eingabe-Stream fehlschlaegt
See Also:
Pattern
Method Detail

generateDynamicText

public void generateDynamicText(OutputStream output,
                                DynamicInputProvider inputProvider)
                         throws IOException
Generiert einen Text, in dem die dynamischen Felder der Vorlage durch den DynamicInputProvider aufgeloest werden.

Parameters:
output - Ausgabe-Stream fuer den dynamischen Text
inputProvider - loest die dynamischen Elemente auf
Throws:
IOException - falls das Schreiben in den Ausgabe-Stream fehlschlaegt

getTagIntro

public String getTagIntro()
Liefert die Zeichenfolge, die die Tags im Template einleitet und sie beim Parsen eindeutig vom Text unterscheidet.


getTagIntroForRegExpr

public String getTagIntroForRegExpr()
Liefert das um Sonderzeichen erweitere TagIntro. Diese (insbesondere Backslashes) werden notwendig, wenn das TagIntro Zeichen enthaelt, die in regulaeren Ausdruecken durch die Klasse Pattern speziell interpretiert werden.

See Also:
getTagIntro(), Pattern