Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.ejie.r01f.io.filters
Class CircularCharBuffer

    java.lang.Object
      com.ejie.r01f.io.filters.CircularCharBuffer

All Implemented Interfaces:
  java.lang.CharSequence

public class CircularCharBuffer
extends java.lang.Object
implements java.lang.CharSequence

Buffer circular de caracteres VER: http://ostermiller.org/utils/ El buffer circular adicionalmente implementa el interfaz CharSequence, de forma que puede ser utilizado en el computo de expresiones regulares. Cuando el buffer circular se "visualiza" como CharSequence, se ve como una cadena en la que la posición de lectura es el caracter 0 y la posición de escritura corresponde al tamaño de la cadena

Field Summary
`static int` | `INFINITE_SIZE` Buffer infinito: el tamaño crece a medida que se añaden contenidos

Constructor Summary
`CircularCharBuffer()` Crea un buffer circular con la capacidad por defecto La escritura cuando el buffer está lleno bloqueará la ejecución hasta que se libere espacio (no se lanza una IOException)
`CircularCharBuffer(boolean newBlockingWrite)` Crea un nuevo buffer con una capacidad por defecto y el comportamiento especificado cuando se llena el buffer.
`CircularCharBuffer(int newSize)` Crea un nuevo buffer con la capacidad indicada La escritura cuando el buffer está lleno bloqueará la ejecución hasta que se libere espacio (no se lanza una IOException) NOTA: - El buffer puede reservar algunos caracteres para propósitos internos de forma que no toda la capacidad está disponible para la escritura - Si el buffer es de tamaño infinito (INFINITE_SIZE), su tamaño crecerá automáticamente y no se bloqueará o lanzará excepciones pero puede desbordar la memoria
`CircularCharBuffer(int newSize, boolean newBlockingWrite)` Crea un nuevo buffer con una capacidad dada y el comportamiento especificado cuando se llena el buffer.

Method Summary
`char` | `charAt(int index)` Devuelve el caracter situado en la posición indicada.
`void` | `clear()` Limpia el contenido del buffer y los streams (Reader/Writer) asociados al buffer se reabren si habían sido cerrados
`int` | `getAvailable()` Devuelve el número de caracteres disponibles para ser leidos NOTA: El número de caracteres disponibles mas el número de caracteres libres pueden no sumar el tamaño del buffer ya que se reserva espacio para uso interno.
`BufferEventListener` | `getEventListener()` Devuelve el eventListener a los eventos del buffer
`int` | `getPositionFromLineal(int linealPosition)` Devuelve la posición del array a partir del índice de lectura
`java.io.Reader` | `getReader()` Obtiene un Reader que puede ser utilizado para vaciar el buffer El Reader soporta "marcado" a consta de disminuir el tamaño del buffer (no se "machacan" los caracteres "reservados")
`int` | `getSize()` Devuelve la capacidad del buffer NOTA: El número de caracteres disponibles mas el número de caracteres libres pueden no sumar el tamaño del buffer ya que se reserva espacio para uso interno.
`int` | `getSpaceLeft()` Devuelve el número de caracteres que pueden ser escritos en el buffer NOTA: El número de caracteres disponibles mas el número de caracteres libres pueden no sumar el tamaño del buffer ya que se reserva espacio para uso interno.
`java.io.Writer` | `getWriter()` Obtiene un Writer que puede ser utilizado para llenar el buffer Una operacion de escritura puede lanzar un BufferOverflowException si el buffer NO es lo suficientemente grande.
`boolean` | `isEmpty()` Devuelve true si el buffer está vacío (no hay caracteres disponibles para ser leidos)
`boolean` | `isFull()` Devuelve true si el buffer está lleno (no hay espacio para escribir)
`int` | `length()` Devuelve el número de caracteres en el buffer circular
`static void` | `main(java.lang.String[] args)` Test para probar el temilla...
`void` | `setEventListener(BufferEventListener theEventListener)` Establece el eventListener a los eventos del buffer
`java.lang.CharSequence` | `subSequence(int start, int end)` Devuelve una subsecuencia del buffer circular NOTA: Cuando el buffer circular se ve como un CharSequence, la posición de lectura corresponde a la posición 0
`java.lang.String` | `toString()` Devuelve el buffer circular completo como string comenzando por la posición indicada por readPosition
`java.lang.String` | `toString(boolean onlyReadAvaliable)` Devuelve el buffer circular como string comenzando por la posición indicada por readPosition.

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### INFINITE_SIZE

    public static final int INFINITE_SIZE

  Buffer infinito: el tamaño crece a medida que se añaden contenidos

  See Also:
    Constant Field Values

Constructor Detail

### CircularCharBuffer

    public CircularCharBuffer()

  Crea un buffer circular con la capacidad por defecto La escritura cuando el buffer está lleno bloqueará la ejecución hasta que se libere espacio (no se lanza una IOException)

### CircularCharBuffer

    public CircularCharBuffer(int newSize)

  Crea un nuevo buffer con la capacidad indicada La escritura cuando el buffer está lleno bloqueará la ejecución hasta que se libere espacio (no se lanza una IOException) NOTA: - El buffer puede reservar algunos caracteres para propósitos internos de forma que no toda la capacidad está disponible para la escritura - Si el buffer es de tamaño infinito (INFINITE_SIZE), su tamaño crecerá automáticamente y no se bloqueará o lanzará excepciones pero puede desbordar la memoria

Parameters:
  `newSize` - tamaño del buffer circular en caracteres o CircularCharBuffer.INFINITE_SIZE si se quiere un tamaño infinito

### CircularCharBuffer

    public CircularCharBuffer(boolean newBlockingWrite)

  Crea un nuevo buffer con una capacidad por defecto y el comportamiento especificado cuando se llena el buffer.

Parameters:
  `newBlockingWrite` - true si una escritura en un buffer lleno bloquea el thread hasta que se libere espacio. false si se lanza una IOException en una operación de escritura en un buffer lleno.

### CircularCharBuffer

    public CircularCharBuffer(int newSize,
                              boolean newBlockingWrite)

  Crea un nuevo buffer con una capacidad dada y el comportamiento especificado cuando se llena el buffer. NOTA: - El buffer puede reservar algunos caracteres para propósitos internos de forma que no toda la capacidad está disponible para la escritura - Si el buffer es de tamaño infinito (INFINITE_SIZE), su tamaño crecerá automáticamente y no se bloqueará o lanzará excepciones pero puede desbordar la memoria

Parameters:
  `newSize` - tamaño del buffer circular en caracteres o CircularCharBuffer.INFINITE_SIZE si se quiere un tamaño infinito
  `newBlockingWrite` - true si una escritura en un buffer lleno bloquea el thread hasta que se libere espacio. false si se lanza una IOException en una operación de escritura en un buffer lleno.

Method Detail

### getWriter

    public java.io.Writer getWriter()

  Obtiene un Writer que puede ser utilizado para llenar el buffer Una operacion de escritura puede lanzar un BufferOverflowException si el buffer NO es lo suficientemente grande.

  Returns:
    el writer

### getReader

    public java.io.Reader getReader()

  Obtiene un Reader que puede ser utilizado para vaciar el buffer El Reader soporta "marcado" a consta de disminuir el tamaño del buffer (no se "machacan" los caracteres "reservados")

  Returns:
    el Reader al buffer

### getEventListener

    public BufferEventListener getEventListener()

  Devuelve el eventListener a los eventos del buffer

  Returns:
    el objeto que implementa la interfaz `BufferEventListener`

### setEventListener

    public void setEventListener(BufferEventListener theEventListener)

  Establece el eventListener a los eventos del buffer

  Parameters:
    `theEventListener` - el objeto que implementa el interfaz `BufferEventListener`

### clear

    public void clear()

  Limpia el contenido del buffer y los streams (Reader/Writer) asociados al buffer se reabren si habían sido cerrados

### getAvailable

    public int getAvailable()

  Devuelve el número de caracteres disponibles para ser leidos NOTA: El número de caracteres disponibles mas el número de caracteres libres pueden no sumar el tamaño del buffer ya que se reserva espacio para uso interno.

  Returns:
    los caracteres listos para ser leidos

### isEmpty

    public boolean isEmpty()

  Devuelve true si el buffer está vacío (no hay caracteres disponibles para ser leidos)

  Returns:
    true si el buffer está vacío

### getSpaceLeft

    public int getSpaceLeft()

  Devuelve el número de caracteres que pueden ser escritos en el buffer NOTA: El número de caracteres disponibles mas el número de caracteres libres pueden no sumar el tamaño del buffer ya que se reserva espacio para uso interno.

  Returns:
    el numero de caracteres que se pueden escribir

### isFull

    public boolean isFull()

  Devuelve true si el buffer está lleno (no hay espacio para escribir)

  Returns:
    true si el buffer está lleno

### getSize

    public int getSize()

  Devuelve la capacidad del buffer NOTA: El número de caracteres disponibles mas el número de caracteres libres pueden no sumar el tamaño del buffer ya que se reserva espacio para uso interno.

  Returns:
    la capacidad

### getPositionFromLineal

    public int getPositionFromLineal(int linealPosition)

  Devuelve la posición del array a partir del índice de lectura

  Parameters:
    `linealPosition` - posición virtual de un array lineal
  Returns:
    posición en el array circular

### charAt

    public char charAt(int index)
                throws java.lang.IndexOutOfBoundsException

  Devuelve el caracter situado en la posición indicada. NOTA: Cuando el buffer circular se ve como un CharSequence, la posición de lectura corresponde a la posición 0

  Specified by:
    `charAt` in interface `java.lang.CharSequence`
  Parameters:
    `index` - posición que puede ir desde 0 hasta length()
  Throws:
    `java.lang.IndexOutOfBoundsException` - si index es negativo o mayor que length()

### length

    public int length()

  Devuelve el número de caracteres en el buffer circular

  Specified by:
    `length` in interface `java.lang.CharSequence`

### subSequence

    public java.lang.CharSequence subSequence(int start,
                                              int end)
                                       throws java.lang.IndexOutOfBoundsException

  Devuelve una subsecuencia del buffer circular NOTA: Cuando el buffer circular se ve como un CharSequence, la posición de lectura corresponde a la posición 0

  Specified by:
    `subSequence` in interface `java.lang.CharSequence`
  Parameters:
    `start` - posicion inicial de la subsecuencia (la posicion de lectura es la posición 0)
    `end` - posición final de la subsecuencia (como máximo puede ser igual a length())
  Throws:
    `java.lang.IndexOutOfBoundsException`

### toString

    public java.lang.String toString()

  Devuelve el buffer circular completo como string comenzando por la posición indicada por readPosition

  Specified by:
    `toString` in interface `java.lang.CharSequence`

### toString

    public java.lang.String toString(boolean onlyReadAvaliable)

  Devuelve el buffer circular como string comenzando por la posición indicada por readPosition. Mediante el parámetro de entrada se indica si se devolverá el buffer completo o únicamente desde la posición de lectura a la de escritura.

  Parameters:
    `onlyReadAvaliable` - - boolean: true - devuelve el String formado desde la posición de lectura a la de escritura. false - devuelve el String del buffer completo a partir de la posición de lectura
  Returns:
    El String del buffer circular.

### main

    public static void main(java.lang.String[] args)

  Test para probar el temilla...

  Parameters:
    `args` -

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD