Class ControlTracker<T>

java.lang.Object
com.github.rvesse.airline.io.ControlTracker<T>
Type Parameters:
T - Attribute source type
Direct Known Subclasses:
OutputStreamControlTracker, WriterControlTracker

public abstract class ControlTracker<T> extends Object
Class used to track the state of a control allowing it to be lazily written to the output only if necessary and ensuring it can be appropriately reset when necessary
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private T
     
    private T
     
    protected final ControlCodeSource<T>
     
    private boolean
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    final void
    Applies the control, if the current state of the control has not been previously applied to the stream then it will be applied now
    protected abstract void
    Method that derived classes must implement to add the actual logic for applying the control to the stream
    final void
    Resets the control to the default unintialized state, if necessary this will will cause the
    protected abstract void
    Method that derived classes must implement to add the actual logic for resetting the control against the stream
    final void
    set(T value)
    Sets the value for the control

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • provider

      protected final ControlCodeSource<T> provider
    • current

      private T current
    • previous

      private T previous
    • requireWrite

      private boolean requireWrite
  • Constructor Details

  • Method Details

    • set

      public final void set(T value)
      Sets the value for the control
      Parameters:
      value - Value
    • reset

      public final void reset() throws IOException
      Resets the control to the default unintialized state, if necessary this will will cause the
      Throws:
      IOException
    • resetInternal

      protected abstract void resetInternal(T value) throws IOException
      Method that derived classes must implement to add the actual logic for resetting the control against the stream
      Parameters:
      value - Value to be reset from
      Throws:
      IOException
    • apply

      public final void apply() throws IOException
      Applies the control, if the current state of the control has not been previously applied to the stream then it will be applied now
      Throws:
      IOException
    • applyInternal

      protected abstract void applyInternal(T value) throws IOException
      Method that derived classes must implement to add the actual logic for applying the control to the stream
      Parameters:
      value - Value to be applied
      Throws:
      IOException