package com.salto.test;

import java.io.PrintStream;
import java.util.List;

import uk.co.badgersinfoil.metaas.dom.ASClassType;
import uk.co.badgersinfoil.metaas.dom.ASField;
import uk.co.badgersinfoil.metaas.dom.ASMethod;
import uk.co.badgersinfoil.metaas.impl.ASMethodVisitor;
import uk.co.badgersinfoil.metaas.impl.ASMethodWalker;

public class GraphGenerator {

	public static void generateDotFile(PrintStream printStream, ASClassType type) throws Exception {

		printStream.println("digraph G {");
		printStream.println("	rankdir=LR");
		printStream.println("	node [fontsize=16 height=1];");

		List<ASField> fields = ((ASClassType) type).getFields();
		for (ASField field : fields) {
			printStream.println("	__field__" + field.getName() + " [label=" + field.getName() + "];");
		}
		for (ASMethod method : (List<ASMethod>) type.getMethods()) {
			ASMethodVisitor methodVisitor = new DotASVisitor(printStream, fields);
			ASMethodWalker methodWalker = new ASMethodWalker(methodVisitor);

			methodWalker.walk(method);

		}
		printStream.println("\n}\n");

	}

}
