import java.io.File;
import java.util.List;
import java.util.Scanner;

/**
 *
 * @author davereed
 */
public class PathFinder {
    public static void main(String[] args) throws java.io.FileNotFoundException {
        FiniteStateMachine<String, String> fsm = new FiniteStateMachine<String, String>();

        Scanner input = new Scanner(System.in);
        System.out.print("Enter FSM file: ");
        String filename = input.next();
        Scanner infile = new Scanner(new File(filename));
        while (infile.hasNext()) {
            fsm.addEdge(infile.next(), infile.next(), infile.next());
        }
        infile.close();
        
        System.out.print("\nEnter a start state (* to end): ");
        String startState = input.next();
        while (!startState.equals("*")) {
            System.out.print("Enter the end state: ");
            String endState = input.next();
            List<String> path = fsm.findPath(startState, endState);
            if (path == null) {
                System.out.println("No SUCH PATH");
            }
            else {
                System.out.println("State path: " + path);
                //System.out.println("Edge path : " + fsm.findPathEdges(path));
            }
            
            System.out.print("\nEnter another start state (* to end): ");
            startState = input.next();
        }
        System.out.println("DONE");
        input.close();
    }        
}
