Class NaiveSequenceSlicer

java.lang.Object
com.topologi.diffx.sequence.NaiveSequenceSlicer

public final class NaiveSequenceSlicer extends Object
The slicer takes two sequences and removes the common elements from the beginning and the end of the chain so that only the smallest sequences are passed to the DiffXAlgorithmBase.

The slice does modify the original sequences.

Note: Using this class may lead to problems in the execution of the Diff-X algorithm and incorrect results, because it could potentially take off some parts that helps the Diff-X algorithm ensuring that the XML is well-formed.

Version:
6 December 2008
  • Field Details

    • sequence1

      final EventSequence sequence1
      The first sequence of events to test.
    • sequence2

      final EventSequence sequence2
      The second sequence of events to test.
    • start

      The common start between the two sequences.
    • end

      The common end between the two sequences.
  • Constructor Details

    • NaiveSequenceSlicer

      public NaiveSequenceSlicer(EventSequence seq0, EventSequence seq1)
      Creates a new sequence slicer.
      Parameters:
      seq0 - The first sequence to slice.
      seq1 - The second sequence to slice.
  • Method Details

    • sliceStart

      public int sliceStart() throws IllegalStateException
      Slices the start of both sequences.

      The common start sequence will be stroed in the class until the next formatStart(DiffXFormatter) is called.

      Returns:
      The number of common elements at the start of the sequences.
      Throws:
      IllegalStateException - If the start buffer is not empty.
    • sliceEnd

      public int sliceEnd() throws IllegalStateException
      Slices the end of both sequences.

      The common end sequence will be stored in the class until the next formatEnd(DiffXFormatter) is called.

      Returns:
      The number of common elements at the end of the sequences.
      Throws:
      IllegalStateException - If the end buffer is not empty.
    • sliceStart

      public int sliceStart(DiffXFormatter formatter) throws IllegalStateException, NullPointerException, IOException
      Slices the start of both sequences and formats the start subsequence with the specified formatter.

      Implementation note: although this is functionally equivalent to call successively the methods sliceStart() and formatStart(DiffXFormatter), this method is optimised and passes the event directly to the formatter without using a buffer.

      Parameters:
      formatter - The formatter that will handle the output.
      Returns:
      The number of common elements at the start of the sequences.
      Throws:
      IllegalStateException - If the start buffer is not empty.
      NullPointerException - If the specified formatter is null.
      IOException - If an error occurs whilst writing with the formatter.
    • sliceEnd

      public int sliceEnd(DiffXFormatter formatter) throws IllegalStateException, NullPointerException, IOException
      Slices the end of both sequences and formats the start subsequence with the specified formatter.

      Implementation note: although this is exactly equivalent to successive calls to the methods sliceEnd() and formatEnd(DiffXFormatter).

      Parameters:
      formatter - The formatter that will handle the output.
      Returns:
      The number of common elements at the end of the sequences.
      Throws:
      IllegalStateException - If the end buffer is not empty.
      NullPointerException - If the specified formatter is null.
      IOException - If an error occurs whilst writing with the formatter.
    • formatStart

      public void formatStart(DiffXFormatter formatter) throws NullPointerException, IOException
      Formats the start subsequence that has been buffered by this class.

      This method will clear the buffer, but will do nothing if the start buffer is null.

      Parameters:
      formatter - The formatter that will handle the output.
      Throws:
      NullPointerException - If the specified formatter is null.
      IOException - If an error occurs whilst writing with the formatter.
    • formatEnd

      public void formatEnd(DiffXFormatter formatter) throws NullPointerException, IOException
      Formats the end subsequence that has been buffered by this class.

      This method will clear the buffer, but will do nothing if the end buffer is null.

      Parameters:
      formatter - The formatter that will handle the output.
      Throws:
      NullPointerException - If the specified formatter is null.
      IOException - If an error occurs whilst writing with the formatter.
    • getStart

      public EventSequence getStart()
      Returns the current start sequence buffer.
      Returns:
      The current start sequence buffer or null if none.
    • getEnd

      public EventSequence getEnd()
      Returns the current end sequence buffer.
      Returns:
      The current end sequence buffer or null if none.