Class DefaultHistory

java.lang.Object
org.jline.reader.impl.history.DefaultHistory
All Implemented Interfaces:
Iterable<History.Entry>, History

public class DefaultHistory extends Object implements History
History using a file for persistent backing.

Implementers should install shutdown hook to call save() to save history to disk.

  • Field Details

    • DEFAULT_HISTORY_SIZE

      public static final int DEFAULT_HISTORY_SIZE
      See Also:
    • DEFAULT_HISTORY_FILE_SIZE

      public static final int DEFAULT_HISTORY_FILE_SIZE
      See Also:
  • Constructor Details

    • DefaultHistory

      public DefaultHistory()
    • DefaultHistory

      public DefaultHistory(LineReader reader)
  • Method Details

    • attach

      public void attach(LineReader reader)
      Description copied from interface: History
      Initialize the history for the given reader.
      Specified by:
      attach in interface History
      Parameters:
      reader - the reader to attach to
    • load

      public void load() throws IOException
      Description copied from interface: History
      Load history.
      Specified by:
      load in interface History
      Throws:
      IOException - if a problem occurs
    • read

      public void read(Path file, boolean checkDuplicates) throws IOException
      Description copied from interface: History
      Read history from the file. If checkDuplicates is true only the events that are not contained within the internal list are added.
      Specified by:
      read in interface History
      Parameters:
      file - History file
      checkDuplicates - If true, duplicate history entries will be discarded
      Throws:
      IOException - if a problem occurs
    • addHistoryLine

      protected void addHistoryLine(Path path, String line)
    • addHistoryLine

      protected void addHistoryLine(Path path, String line, boolean checkDuplicates)
    • purge

      public void purge() throws IOException
      Description copied from interface: History
      Purge history.
      Specified by:
      purge in interface History
      Throws:
      IOException - if a problem occurs
    • write

      public void write(Path file, boolean incremental) throws IOException
      Description copied from interface: History
      Write history to the file. If incremental only the events that are new since the last incremental operation to the file are added.
      Specified by:
      write in interface History
      Parameters:
      file - History file
      incremental - If true incremental write operation is performed.
      Throws:
      IOException - if a problem occurs
    • append

      public void append(Path file, boolean incremental) throws IOException
      Description copied from interface: History
      Append history to the file. If incremental only the events that are new since the last incremental operation to the file are added.
      Specified by:
      append in interface History
      Parameters:
      file - History file
      incremental - If true incremental append operation is performed.
      Throws:
      IOException - if a problem occurs
    • save

      public void save() throws IOException
      Description copied from interface: History
      Save history.
      Specified by:
      save in interface History
      Throws:
      IOException - if a problem occurs
    • trimHistory

      protected void trimHistory(Path path, int max) throws IOException
      Throws:
      IOException
    • createEntry

      protected DefaultHistory.EntryImpl createEntry(int index, Instant time, String line)
      Create a history entry. Subclasses may override to use their own entry implementations.
      Parameters:
      index - index of history entry
      time - entry creation time
      line - the entry text
      Returns:
      entry object
    • size

      public int size()
      Specified by:
      size in interface History
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface History
    • index

      public int index()
      Specified by:
      index in interface History
    • first

      public int first()
      Specified by:
      first in interface History
    • last

      public int last()
      Specified by:
      last in interface History
    • get

      public String get(int index)
      Specified by:
      get in interface History
    • add

      public void add(Instant time, String line)
      Specified by:
      add in interface History
    • matchPatterns

      protected boolean matchPatterns(String patterns, String line)
    • internalAdd

      protected void internalAdd(Instant time, String line)
    • internalAdd

      protected void internalAdd(Instant time, String line, boolean checkDuplicates)
    • iterator

      public ListIterator<History.Entry> iterator(int index)
      Specified by:
      iterator in interface History
    • spliterator

      public Spliterator<History.Entry> spliterator()
      Specified by:
      spliterator in interface Iterable<History.Entry>
    • resetIndex

      public void resetIndex()
      Description copied from interface: History
      Reset index after remove
      Specified by:
      resetIndex in interface History
    • moveToLast

      public boolean moveToLast()
      This moves the history to the last entry. This entry is one position before the moveToEnd() position.
      Specified by:
      moveToLast in interface History
      Returns:
      Returns false if there were no history iterator or the history index was already at the last entry.
    • moveTo

      public boolean moveTo(int index)
      Move to the specified index in the history
      Specified by:
      moveTo in interface History
      Parameters:
      index - The index to move to.
      Returns:
      Returns true if the index was moved.
    • moveToFirst

      public boolean moveToFirst()
      Moves the history index to the first entry.
      Specified by:
      moveToFirst in interface History
      Returns:
      Return false if there are no iterator in the history or if the history is already at the beginning.
    • moveToEnd

      public void moveToEnd()
      Move to the end of the history buffer. This will be a blank entry, after all of the other iterator.
      Specified by:
      moveToEnd in interface History
    • current

      public String current()
      Return the content of the current buffer.
      Specified by:
      current in interface History
      Returns:
      the content of the current buffer
    • previous

      public boolean previous()
      Move the pointer to the previous element in the buffer.
      Specified by:
      previous in interface History
      Returns:
      true if we successfully went to the previous element
    • next

      public boolean next()
      Move the pointer to the next element in the buffer.
      Specified by:
      next in interface History
      Returns:
      true if we successfully went to the next element
    • toString

      public String toString()
      Overrides:
      toString in class Object