com.ejie.r01f.io.filters
Class RegExpDirectiveFilterReader

java.lang.Object
  extended byjava.io.Reader
      extended bycom.ejie.r01f.io.filters.RegExpDirectiveFilterReader

public class RegExpDirectiveFilterReader
extends java.io.Reader

Filtro en busca de directivas en base a expresiones regulares... mucho mas eficiente que cargar todo en un String y luego buscar...


Constructor Summary
RegExpDirectiveFilterReader(java.io.Reader newIn)
          Constructor a partir de un reader
NOTA: Se llama al constructor de FilterReader pasando un BufferedReader
para asegurar que se pueden utilizar marks.
RegExpDirectiveFilterReader(java.io.Reader newIn, int bufferSize)
          Constructor a partir de un reader NOTA: Se llama al constructor de FilterReader pasando un BufferedReader
para asegurar que se pueden utilizar marks.
RegExpDirectiveFilterReader(java.io.Reader newIn, int bufferSize, int newMaxDirectiveLength)
          Constructor a partir de un reader, se establece también un nuevo tamaño de caracteres de la directiva,
por defecto 255 caracteres.
 
Method Summary
 void addListener(java.lang.String regExp, DirectiveListener listener)
          Añade un listener
 void close()
           
 CircularCharBuffer getBuffer()
          Devuelve el buffer interno
static void main(java.lang.String[] args)
          Test para probar el temilla...
 int read()
           
 int read(char[] cbuf)
           
 int read(char[] cbuf, int off, int len)
           
 int readBuffer(java.io.StringWriter outWriter, CircularCharBuffer circularBuffer, char[] buff, int charsReaded)
          Método que recoge los datos que se le pasan por el array buff y, tras procesarlos (si tiene directivas) lo escribe por el Writer outWriter.
static java.lang.String transformDirective(java.lang.String directive)
           
 
Methods inherited from class java.io.Reader
mark, markSupported, ready, reset, skip
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RegExpDirectiveFilterReader

public RegExpDirectiveFilterReader(java.io.Reader newIn)
Constructor a partir de un reader
NOTA: Se llama al constructor de FilterReader pasando un BufferedReader
para asegurar que se pueden utilizar marks.
Esto implica que no es necesario concatenar un BufferedReader a este filtro
ya que se está haciendo internamente.
IMPORTANTE!!!
El tamaño del buffer ha de ser al menos tan grande como la longitud de la
mayor directiva (ya que toda la directiva ha de estar en memoria)
Para establecer el tamaño llamar al constructor DirectiveFilterReader(Reader newIn,int bufferSize).

Parameters:
newIn - El Reader del que se lee

RegExpDirectiveFilterReader

public RegExpDirectiveFilterReader(java.io.Reader newIn,
                                   int bufferSize)
Constructor a partir de un reader NOTA: Se llama al constructor de FilterReader pasando un BufferedReader
para asegurar que se pueden utilizar marks.
Esto implica que no es necesario concatenar un BufferedReader a este filtro
ya que se está haciendo internamente.
IMPORTANTE!!!
El tamaño del buffer ha de ser al menos tan grande como la longitud de la
mayor directiva (ya que toda la directiva ha de estar en memoria).

Parameters:
newIn - El Reader del que se lee
bufferSize - el tamaño del buffer

RegExpDirectiveFilterReader

public RegExpDirectiveFilterReader(java.io.Reader newIn,
                                   int bufferSize,
                                   int newMaxDirectiveLength)
Constructor a partir de un reader, se establece también un nuevo tamaño de caracteres de la directiva,
por defecto 255 caracteres.
NOTA: Se llama al constructor de FilterReader pasando un BufferedReader
para asegurar que se pueden utilizar marks.
Esto implica que no es necesario concatenar un BufferedReader a este filtro
ya que se está haciendo internamente.
IMPORTANTE!!!
El tamaño del buffer ha de ser al menos tan grande como la longitud de la
mayor directiva (ya que toda la directiva ha de estar en memoria).

Parameters:
newIn - El Reader del que se lee
bufferSize - el tamaño del buffer
newMaxDirectiveLength - número máximo de caracteres de la directiva
Method Detail

addListener

public void addListener(java.lang.String regExp,
                        DirectiveListener listener)
Añade un listener

Parameters:
listener - una clase que implementa la interfaz DirectiveListener

getBuffer

public CircularCharBuffer getBuffer()
Devuelve el buffer interno

Returns:
el circular buffer que implementa el interfaz CharSequence

close

public void close()
           throws java.io.IOException
Throws:
java.io.IOException

read

public int read()
         throws java.io.IOException
Throws:
java.io.IOException

read

public int read(char[] cbuf)
         throws java.io.IOException
Throws:
java.io.IOException

read

public int read(char[] cbuf,
                int off,
                int len)
         throws java.io.IOException
Throws:
java.io.IOException

transformDirective

public static java.lang.String transformDirective(java.lang.String directive)

readBuffer

public int readBuffer(java.io.StringWriter outWriter,
                      CircularCharBuffer circularBuffer,
                      char[] buff,
                      int charsReaded)
Método que recoge los datos que se le pasan por el array buff y, tras procesarlos (si tiene directivas) lo escribe por el Writer outWriter.

Parameters:
outWriter - - Write donde se escribira la informacion procesada
circularBuffer - - Buffer que se usara en las operaciones (se trabajara basandose en sus indices y estos se actualizaran)
buff - - buffer que contiene la informacion que se tratara
charsReaded - - Numero de elementos que se deben tratar del buffer anterior (comenzando desde el principio)
Returns:
- Numero de caracteres que se deberan leer en el siguiente ciclo basandose en los tamaños del circular buffer y buffer de entrada, y en las posiciones de los indices de lectura y escritura.

main

public static void main(java.lang.String[] args)
Test para probar el temilla...

Parameters:
args -