# Class EditScript<T>

java.lang.Object
org.apache.commons.collections4.sequence.EditScript<T>

Type Parameters:
  `T` - the type of object to apply commands.

public class EditScript<T> extends Object
This class gathers all the `commands` needed to transform one objects sequence into another objects sequence.

An edit script is the most general view of the differences between two sequences. It is built as the result of the comparison between two sequences by the `SequencesComparator` class. The user can walk through it using the visitor design pattern.

It is guaranteed that the objects embedded in the `insert commands` come from the second sequence and that the objects embedded in either the `delete commands` or `keep commands` come from the first sequence. This can be important if subclassing is used for some elements in the first sequence and the `equals` method is specialized.

Since:
  4.0
See Also:
  - `SequencesComparator`
  - `EditCommand`
  - `CommandVisitor`
  - `ReplacementsHandler`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `EditScript()`
  Simple constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `append(DeleteCommand<T> command)`
  Add a delete command to the script.
  `void`
  `append(InsertCommand<T> command)`
  Add an insert command to the script.
  `void`
  `append(KeepCommand<T> command)`
  Add a keep command to the script.
  `int`
  `getLCSLength()`
  Gets the length of the Longest Common Subsequence (LCS).
  `int`
  `getModifications()`
  Gets the number of effective modifications.
  `void`
  `visit(CommandVisitor<T> visitor)`
  Visit the script.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### EditScript

    public EditScript()
    Simple constructor. Creates a new empty script.

- ## Method Details

  - ### append

    public void append(DeleteCommand<T> command)
    Add a delete command to the script.
    Parameters:
      `command` - command to add

  - ### append

    public void append(InsertCommand<T> command)
    Add an insert command to the script.
    Parameters:
      `command` - command to add

  - ### append

    public void append(KeepCommand<T> command)
    Add a keep command to the script.
    Parameters:
      `command` - command to add

  - ### getLCSLength

    public int getLCSLength()
    Gets the length of the Longest Common Subsequence (LCS). The length of the longest common subsequence is the number of `keep commands` in the script.
    Returns:
      length of the Longest Common Subsequence

  - ### getModifications

    public int getModifications()
    Gets the number of effective modifications. The number of effective modification is the number of `delete` and `insert` commands in the script.
    Returns:
      number of effective modifications

  - ### visit

    public void visit(CommandVisitor<T> visitor)
    Visit the script. The script implements the visitor design pattern, this method is the entry point to which the user supplies its own visitor, the script will be responsible to drive it through the commands in order and call the appropriate method as each command is encountered.
    Parameters:
      `visitor` - the visitor that will visit all commands in turn