Class TextManager

java.lang.Object
net.loomchild.segment.srx.TextManager

public class TextManager extends Object
Represents text manager. Responsible for managing current text, reading more text from the reader and checking if there is more text left.
  • Field Details

    • text

      private CharSequence text
    • nextCharacter

      int nextCharacter
    • reader

      private Reader reader
    • bufferLength

      private int bufferLength
  • Constructor Details

    • TextManager

      public TextManager(CharSequence text)
      Creates text manager containing given text. Reading more text is not possible when using this constructor.
      Parameters:
      text -
    • TextManager

      public TextManager(Reader reader, int bufferLength)
      Creates text manager reading text from given reader. Only specified amount of memory for buffer will be used. Managed text will never be longer than given buffer size. Text is not actually read until required (lazy initialization).
      Parameters:
      reader -
      bufferLength - read buffer size
  • Method Details

    • getBufferLength

      public int getBufferLength()
    • getText

      public CharSequence getText()
      Returns:
      current text
    • hasMoreText

      public boolean hasMoreText()
      Returns:
      true if more text can be read
    • readText

      public void readText(int amount)
      Deletes given amount of characters from current character buffer and tries to read up to given amount of new characters and stores them in current character buffer.
      Parameters:
      amount - amount of characters to read
      Throws:
      IllegalArgumentException - if hasMoreText() returns false or amount is greater than buffer size
    • initText

      private void initText()
      Reads initial text from reader if it has not been initialized yet.
    • read

      private String read(int amount)
      Reads the given amount of characters and returns them as a string. Updates nextCharacter by reading one additional character.
      Parameters:
      amount - amount to be read
      Returns:
      read characters as a string
    • read

      private int read(Reader reader, char[] buffer)
      Reads specified amount of characters. It is needed because when reading from console Reader.read(char[]) it returns after first end of line (probably it checks if characters are available).
      Parameters:
      reader - input
      buffer - buffer where read characters will be stored
      Returns:
      number of read characters