
import java.io.*;
import java.util.*;
import project.GeometricGraph;

public class CreateGraph {

  GeometricGraph g;
  BufferedReader in;
  
  CreateGraph(int order) {
    
    g = new GeometricGraph(order);
    try {
      in = new BufferedReader(new InputStreamReader(System.in));
      String currentInput = new String("");
      
      while ((!currentInput.equals("q")) && (!currentInput.equals("quit")) && (!currentInput.equals("exit"))) {
	System.out.print(">");
	currentInput = in.readLine();
	parse(currentInput);
      }
    } catch (Exception e) {
      System.out.println("Exception: " + e);
    }
  }
  
  private void parse(String input) {
    try {	
      StringTokenizer st = new StringTokenizer(input);
      String arg0 = new String();
      String arg1 = new String();
      String arg2 = new String();
      String fileName = new String("");
      
      if (st.countTokens() == 3) {
	arg0 = st.nextToken();
	arg1 = st.nextToken();
	arg2 = st.nextToken();	
	
	if ((arg0.equals("addEdge")) || (arg0.equals("a")) || (arg0.equals("add"))) {
	  System.out.println("Adding edge " + arg1 + "," + arg2);
	  g.addEdge(new Integer(arg1).intValue(), new Integer(arg2).intValue());
	}
      } else {
	if ((input.equals("q")) || (input.equals("quit")) || (input.equals("exit")))  {
	  System.exit(0);
	} else if (input.equals("save")) {
	  System.out.print("Filename: ");
	  fileName = in.readLine();
	  g.writeToFile(fileName);
	  System.out.println("Saved to file " + fileName);
	} else if ((input.equals("s")) || (input.equals("size"))) {
	  System.out.println(g.getSize());
	} else if ((input.equals("edges")) || (input.equals("e"))) {
	  g.printEdges();
	} else if ((input.equals("h")) || (input.equals("help"))) {
	  System.out.println("addEdge|add|a  i j");
	  System.out.println("quit|exit|q");
	  System.out.println("save filename");
	  System.out.println("s|size");
	  System.out.println("e|edges");
	  System.out.println("h|help");
	} else if (input.equals("")) {
	  // null
	} else {
	  System.out.println("Unknown command: " + input);
	}
      }
    } catch (Exception e) {
      System.out.println("Exception: " + e);
      System.exit(1);
    }
  }
  
  public static void main(String[] args) {
    
    if (args.length != 1) {
      System.err.println("Error: CreateGraph order");
      System.exit(1);
    } else {
      System.out.println("			Testing...");
      CreateGraph c = new CreateGraph(new Integer(args[0]).intValue());
    }
  }
}

