
// EditScriptTester.java
// Andrew Davison, ad@coe.psu.ac.th, May 2023

/* Using edit sequences

  Usage:
    > compile EditScriptTester.java
    > run EditScriptTester <string1> <string2>
   e.g.
    > run EditScriptTester dogs frog
    > run EditScriptTester frog dogs
*/

import java.util.*;

import org.apache.commons.collections4.*;
import org.apache.commons.collections4.sequence.*;


public class EditScriptTester
{
  public static void main(String[] args)
  {
    if (args.length != 2) {
      System.out.println("Usage: run EditScriptTester <string1> <string2>");
      return;
    }

    String s1 = args[0];
    String s2 = args[1];
    List<String> list1 = Arrays.asList(s1.split(""));
    List<String> list2 = Arrays.asList(s2.split(""));

    System.out.println("Longest common subsequence: " +
              ListUtils.longestCommonSubsequence(list1, list2));


    System.out.println("\nEdit " + s1 + " to " + s2 + ":");
    SequencesComparator<String> sc = new SequencesComparator<>(list1, list2);
    EditScript<String> edits =  sc.getScript();

    CollectVisitor<String> v = new CollectVisitor<>();
    edits.visit(v);
    System.out.println(v.getCmds());
  } /* main */

}  // end of EditScriptTester class

