org.apache.wicket.util.diff
Class Diff

java.lang.Object
  extended by org.apache.wicket.util.diff.ToString
      extended by org.apache.wicket.util.diff.Diff

public class Diff
extends ToString

Implements a differencing engine that works on arrays of Object.

Within this library, the word text means a unit of information subject to version control.

Text is represented as Object[] because the diff engine is capable of handling more than plain ascci. In fact, arrays of any type that implements hashCode() and equals() correctly can be subject to differencing using this library.

This library provides a framework in which different differencing algorithms may be used. If no algorithm is specified, a default algorithm is used.

Version:
$Revision: 1.1 $ $Date: 2006/03/12 00:24:21 $
Author:
Juanco Anez
See Also:
Delta, modifications: 27 Apr 2003 bwm Added some comments whilst trying to figure out the algorithm 03 May 2003 bwm Factored out the algorithm implementation into a separate difference algorithm class to allow pluggable algorithms.

Field Summary
protected  DiffAlgorithm algorithm
          The differencing algorithm to use.
static String NL
          The standard line separator.
protected  Object[] orig
          The original sequence.
static String RCS_EOL
          The line separator to use in RCS format output.
 
Constructor Summary
Diff(Object[] original)
          Create a differencing object using the default algorithm
Diff(Object[] original, DiffAlgorithm algorithm)
          Create a differencing object using the given algorithm
 
Method Summary
static String arrayToString(Object[] o)
          Converts an array of Object to a string using Diff.NL as the line separator.
static boolean compare(Object[] orig, Object[] rev)
          Compares the two input sequences.
protected  DiffAlgorithm defaultAlgorithm()
           
 Revision diff(Object[] rev)
          compute the difference between the original and a revision.
static Revision diff(Object[] orig, Object[] rev)
          compute the difference between an original and a revision.
static Revision diff(Object[] orig, Object[] rev, DiffAlgorithm algorithm)
          compute the difference between an original and a revision.
static Object[] editAll(Object[] text)
          Edits all of the items in the input sequence.
static Object[] randomEdit(Object[] text)
          Performs random edits on the input sequence.
static Object[] randomEdit(Object[] text, long seed)
          Performs random edits on the input sequence.
static Object[] randomSequence(int size)
          Generate a random sequence of the given size.
static Object[] randomSequence(int size, long seed)
          Generate a random sequence of the given size.
static Object[] shuffle(Object[] text)
          Shuffles around the items in the input sequence.
static Object[] shuffle(Object[] text, long seed)
          Shuffles around the items in the input sequence.
 
Methods inherited from class org.apache.wicket.util.diff.ToString
arrayToString, stringToArray, toString, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NL

public static final String NL
The standard line separator.


RCS_EOL

public static final String RCS_EOL
The line separator to use in RCS format output.

See Also:
Constant Field Values

orig

protected final Object[] orig
The original sequence.


algorithm

protected DiffAlgorithm algorithm
The differencing algorithm to use.

Constructor Detail

Diff

public Diff(Object[] original)
Create a differencing object using the default algorithm

Parameters:
original - the original text that will be compared

Diff

public Diff(Object[] original,
            DiffAlgorithm algorithm)
Create a differencing object using the given algorithm

Parameters:
original - the original text that will be compared
algorithm - the difference algorithm to use.
Method Detail

defaultAlgorithm

protected DiffAlgorithm defaultAlgorithm()

diff

public static Revision diff(Object[] orig,
                            Object[] rev)
                     throws DifferentiationFailedException
compute the difference between an original and a revision.

Parameters:
orig - the original
rev - the revision to compare with the original.
Returns:
a Revision describing the differences
Throws:
DifferentiationFailedException

diff

public static Revision diff(Object[] orig,
                            Object[] rev,
                            DiffAlgorithm algorithm)
                     throws DifferentiationFailedException
compute the difference between an original and a revision.

Parameters:
orig - the original
rev - the revision to compare with the original.
algorithm - the difference algorithm to use
Returns:
a Revision describing the differences
Throws:
DifferentiationFailedException

diff

public Revision diff(Object[] rev)
              throws DifferentiationFailedException
compute the difference between the original and a revision.

Parameters:
rev - the revision to compare with the original.
Returns:
a Revision describing the differences
Throws:
DifferentiationFailedException

compare

public static boolean compare(Object[] orig,
                              Object[] rev)
Compares the two input sequences.

Parameters:
orig - The original sequence.
rev - The revised sequence.
Returns:
true if the sequences are identical. False otherwise.

arrayToString

public static String arrayToString(Object[] o)
Converts an array of Object to a string using Diff.NL as the line separator.

Parameters:
o - the array of objects.
Returns:
String

editAll

public static Object[] editAll(Object[] text)
Edits all of the items in the input sequence.

Parameters:
text - The input sequence.
Returns:
A sequence of the same length with all the lines differing from the corresponding ones in the input.

randomEdit

public static Object[] randomEdit(Object[] text)
Performs random edits on the input sequence. Useful for testing.

Parameters:
text - The input sequence.
Returns:
The sequence with random edits performed.

randomEdit

public static Object[] randomEdit(Object[] text,
                                  long seed)
Performs random edits on the input sequence. Useful for testing.

Parameters:
text - The input sequence.
seed - A seed value for the randomizer.
Returns:
The sequence with random edits performed.

shuffle

public static Object[] shuffle(Object[] text)
Shuffles around the items in the input sequence.

Parameters:
text - the input sequence.
Returns:
The shuffled sequence.

shuffle

public static Object[] shuffle(Object[] text,
                               long seed)
Shuffles around the items in the input sequence.

Parameters:
text - the input sequence.
seed - a seed value for randomizing the generation.
Returns:
The shuffled sequence.

randomSequence

public static Object[] randomSequence(int size)
Generate a random sequence of the given size.

Parameters:
size - the size of the sequence to generate.
Returns:
The generated sequence.

randomSequence

public static Object[] randomSequence(int size,
                                      long seed)
Generate a random sequence of the given size.

Parameters:
size - the size of the sequence to generate.
seed - a seed value for randomizing the generation.
Returns:
The generated sequence.


Copyright © 2004-2011 Apache Software Foundation. All Rights Reserved.